1!function(){"use strict";function e(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var t={exports:{}};t.exports={polyfill:function(){var e=window,t=document;if(!("scrollBehavior"in t.documentElement.style)||!0===e.__forceSmoothScrollPolyfill__){var n,r=e.HTMLElement||e.Element,o=468,i={scroll:e.scroll||e.scrollTo,scrollBy:e.scrollBy,elementScroll:r.prototype.scroll||l,scrollIntoView:r.prototype.scrollIntoView},s=e.performance&&e.performance.now?e.performance.now.bind(e.performance):Date.now,a=(n=e.navigator.userAgent,new RegExp(["MSIE ","Trident/","Edge/"].join("|")).test(n)?1:0);e.scroll=e.scrollTo=function(){void 0!==arguments[0]&&(!0!==c(arguments[0])?h.call(e,t.body,void 0!==arguments[0].left?~~arguments[0].left:e.scrollX||e.pageXOffset,void 0!==arguments[0].top?~~arguments[0].top:e.scrollY||e.pageYOffset):i.scroll.call(e,void 0!==arguments[0].left?arguments[0].left:"object"!=typeof arguments[0]?arguments[0]:e.scrollX||e.pageXOffset,void 0!==arguments[0].top?arguments[0].top:void 0!==arguments[1]?arguments[1]:e.scrollY||e.pageYOffset))},e.scrollBy=function(){void 0!==arguments[0]&&(c(arguments[0])?i.scrollBy.call(e,void 0!==arguments[0].left?arguments[0].left:"object"!=typeof arguments[0]?arguments[0]:0,void 0!==arguments[0].top?arguments[0].top:void 0!==arguments[1]?arguments[1]:0):h.call(e,t.body,~~arguments[0].left+(e.scrollX||e.pageXOffset),~~arguments[0].top+(e.scrollY||e.pageYOffset)))},r.prototype.scroll=r.prototype.scrollTo=function(){if(void 0!==arguments[0])if(!0!==c(arguments[0])){var e=arguments[0].left,t=arguments[0].top;h.call(this,this,void 0===e?this.scrollLeft:~~e,void 0===t?this.scrollTop:~~t)}else{if("number"==typeof arguments[0]&&void 0===arguments[1])throw new SyntaxError("Value could not be converted");i.elementScroll.call(this,void 0!==arguments[0].left?~~arguments[0].left:"object"!=typeof arguments[0]?~~arguments[0]:this.scrollLeft,void 0!==arguments[0].top?~~arguments[0].top:void 0!==arguments[1]?~~arguments[1]:this.scrollTop)}},r.prototype.scrollBy=function(){void 0!==arguments[0]&&(!0!==c(arguments[0])?this.scroll({left:~~arguments[0].left+this.scrollLeft,top:~~arguments[0].top+this.scrollTop,behavior:arguments[0].behavior}):i.elementScroll.call(this,void 0!==arguments[0].left?~~arguments[0].left+this.scrollLeft:~~arguments[0]+this.scrollLeft,void 0!==arguments[0].top?~~arguments[0].top+this.scrollTop:~~arguments[1]+this.scrollTop))},r.prototype.scrollIntoView=function(){if(!0!==c(arguments[0])){var n=function(e){for(;e!==t.body&&!1===p(e);)e=e.parentNode||e.host;return e}(this),r=n.getBoundingClientRect(),o=this.getBoundingClientRect();n!==t.body?(h.call(this,n,n.scrollLeft+o.left-r.left,n.scrollTop+o.top-r.top),"fixed"!==e.getComputedStyle(n).position&&e.scrollBy({left:r.left,top:r.top,behavior:"smooth"})):e.scrollBy({left:o.left,top:o.top,behavior:"smooth"})}else i.scrollIntoView.call(this,void 0===arguments[0]||arguments[0])}}function l(e,t){this.scrollLeft=e,this.scrollTop=t}function c(e){if(null===e||"object"!=typeof e||void 0===e.behavior||"auto"===e.behavior||"instant"===e.behavior)return!0;if("object"==typeof e&&"smooth"===e.behavior)return!1;throw new TypeError("behavior member of ScrollOptions "+e.behavior+" is not a valid value for enumeration ScrollBehavior.")}function u(e,t){return"Y"===t?e.clientHeight+a<e.scrollHeight:"X"===t?e.clientWidth+a<e.scrollWidth:void 0}function d(t,n){var r=e.getComputedStyle(t,null)["overflow"+n];return"auto"===r||"scroll"===r}function p(e){var t=u(e,"Y")&&d(e,"Y"),n=u(e,"X")&&d(e,"X");return t||n}function f(t){var n,r,i,a,l=(s()-t.startTime)/o;a=l=l>1?1:l,n=.5*(1-Math.cos(Math.PI*a)),r=t.startX+(t.x-t.startX)*n,i=t.startY+(t.y-t.startY)*n,t.method.call(t.scrollable,r,i),r===t.x&&i===t.y||e.requestAnimationFrame(f.bind(e,t))}function h(n,r,o){var a,c,u,d,p=s();n===t.body?(a=e,c=e.scrollX||e.pageXOffset,u=e.scrollY||e.pageYOffset,d=i.scroll):(a=n,c=n.scrollLeft,u=n.scrollTop,d=l),f({scrollable:a,method:d,startTime:p,startX:c,startY:u,x:r,y:o})}}};var n=t.exports;class r{static _sizes={p:document.body.clientHeight,x:window.innerWidth,y:window.innerHeight,o:window.pageYOffset,m:window.matchMedia&&window.matchMedia("(max-width: 768px)").matches,lg:window.matchMedia&&window.matchMedia("(max-width: 1024px)").matches,h:window.matchMedia("(hover: hover)").matches&&window.matchMedia("(pointer: fine)").matches};static get size(){return Object.assign({},this._sizes)}static get page(){return this.size.p}static get width(){return this.size.x}static get height(){return this.size.y}static get offset(){return this.size.o}static get media(){return this.size.m}static get mediaLg(){return this.size.lg}static get touch(){return this.size.t}static get hover(){return this.size.h}static scroll(){Object.assign(this._sizes,{o:window.pageYOffset})}static resize(){Object.assign(this._sizes,{p:document.body.clientHeight,x:window.innerWidth,y:window.innerHeight,m:window.matchMedia&&window.matchMedia("(max-width: 768px)").matches,lg:window.matchMedia&&window.matchMedia("(max-width: 1024px)").matches})}}var o={exports:{}};!function(e){!function(t){var n=0,r=function e(t,r){var o=this,i=this,s=!1;if(Array.isArray(t))return!!t.length&&t.map((function(t){return new e(t,r)}));var a={init:function(){this.options=Object.assign({duration:600,ariaEnabled:!0,collapse:!0,showMultiple:!1,onlyChildNodes:!0,openOnInit:[],elementClass:"ac",triggerClass:"ac-trigger",panelClass:"ac-panel",activeClass:"is-active",beforeOpen:function(){},onOpen:function(){},beforeClose:function(){},onClose:function(){}},r);var e="string"==typeof t;this.container=e?document.querySelector(t):t,this.createDefinitions(),i.attachEvents()},createDefinitions:function(){var e=this,t=this.options,r=t.elementClass,o=t.openOn
1Init,i=t.onlyChildNodes?this.container.childNodes:this.container.querySelectorAll(u(r));this.elements=Array.from(i).filter((function(e){return e.classList&&e.classList.contains(r)})),this.firstElement=this.elements[0],this.lastElement=this.elements[this.elements.length-1],this.elements.filter((function(e){return!e.classList.contains("js-enabled")})).forEach((function(t){t.classList.add("js-enabled"),e.generateIDs(t),e.setARIA(t),e.setTransition(t);var r=e.elements.indexOf(t);n++,o.includes(r)?e.showElement(t,!1):e.closeElement(t,!1)}))},setTransition:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this.options,r=n.duration,o=n.panelClass,i=e.querySelector(u(o)),s=l("transitionDuration");i.style[s]=t?null:"".concat(r,"ms")},generateIDs:function(e){var t=this.options,r=t.triggerClass,o=t.panelClass,i=e.querySelector(u(r)),s=e.querySelector(u(o));e.setAttribute("id",e.id||"ac-".concat(n)),i.setAttribute("id",i.id||"ac-trigger-".concat(n)),s.setAttribute("id",s.id||"ac-panel-".concat(n))},removeIDs:function(e){var t=this.options,n=t.triggerClass,r=t.panelClass,o=e.querySelector(u(n)),i=e.querySelector(u(r));e.id.startsWith("ac-")&&e.removeAttribute("id"),o.id.startsWith("ac-")&&o.removeAttribute("id"),i.id.startsWith("ac-")&&i.removeAttribute("id")},setARIA:function(e){var t=this.options,n=t.ariaEnabled,r=t.triggerClass,o=t.panelClass;if(n){var i=e.querySelector(u(r)),s=e.querySelector(u(o));i.setAttribute("role","button"),i.setAttribute("aria-controls",s.id),i.setAttribute("aria-disabled",!1),i.setAttribute("aria-expanded",!1),s.setAttribute("role","region"),s.setAttribute("aria-labelledby",i.id)}},updateARIA:function(e,t){var n=t.ariaExpanded,r=t.ariaDisabled,o=this.options,i=o.ariaEnabled,s=o.triggerClass;if(i){var a=e.querySelector(u(s));a.setAttribute("aria-expanded",n),a.setAttribute("aria-disabled",r)}},removeARIA:function(e){var t=this.options,n=t.ariaEnabled,r=t.triggerClass,o=t.panelClass;if(n){var i=e.querySelector(u(r)),s=e.querySelector(u(o));i.removeAttribute("role"),i.removeAttribute("aria-controls"),i.removeAttribute("aria-disabled"),i.removeAttribute("aria-expanded"),s.removeAttribute("role"),s.removeAttribute("aria-labelledby")}},focus:function(e,t){e.preventDefault();var n=this.options.triggerClass;t.querySelector(u(n)).focus()},focusFirstElement:function(e){this.focus(e,this.firstElement),this.currFocusedIdx=0},focusLastElement:function(e){this.focus(e,this.lastElement),this.currFocusedIdx=this.elements.length-1},focusNextElement:function(e){var t=this.currFocusedIdx+1;if(t>this.elements.length-1)return this.focusFirstElement(e);this.focus(e,this.elements[t]),this.currFocusedIdx=t},focusPrevElement:function(e){var t=this.currFocusedIdx-1;if(t<0)return this.focusLastElement(e);this.focus(e,this.elements[t]),this.currFocusedIdx=t},showElement:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this.options,r=n.panelClass,o=n.activeClass,i=n.collapse,s=n.beforeOpen;t&&s(e);var a=e.querySelector(u(r)),l=a.scrollHeight;e.classList.add(o),requestAnimationFrame((function(){requestAnimationFrame((function(){a.style.height=t?"".concat(l,"px"):"auto"}))})),this.updateARIA(e,{ariaExpanded:!0,ariaDisabled:!i})},closeElement:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this.options,r=n.panelClass,o=n.activeClass,i=n.beforeClose,s=e.querySelector(u(r)),a=s.scrollHeight;e.classList.remove(o),t?(i(e),requestAnimationFrame((function(){s.style.height="".concat(a,"px"),requestAnimationFrame((function(){s.style.height=0}))}))):s.style.height=0,this.updateARIA(e,{ariaExpanded:!1,ariaDisabled:!1})},toggleElement:function(e){var t=this.options,n=t.activeClass,r=t.collapse,o=e.classList.contains(n);if(!o||r)return o?this.closeElement(e):this.showElement(e)},closeElements:function(){var e=this,t=this.options,n=t.activeClass;t.showMultiple||this.elements.forEach((function(t,r){t.classList.contains(n)&&r!==e.currFocusedIdx&&e.closeElement(t)}))},handleClick:function(e){var t=this,n=e.currentTarget;this.elements.forEach((function(r,o){r.contains(n)&&"A"!==e.target.nodeName&&(t.currFocusedIdx=o,t.closeElements(),t.focus(e,r),t.toggleElement(r))}))},handleKeydown:function(e){switch(e.key){case"ArrowUp":return this.focusPrevElement(e);case"ArrowDown":return this.focusNextElement(e);case"Home":return this.focusFirstElement(e);case"End":return this.focusLastElement(e);default:return null}},handleFocus:function(e){var t=e.currentTarget,n=this.elements.find((function(e){return e.contains(t)}));this.currFocusedIdx=this.elements.indexOf(n)},handleTransitionEnd:function(e){if(e.stopPropagation(),"height"===e.propertyName){var t=this.options,n=t.onOpen,r=t.onClose,o=e.currentTarget,i=p
1arseInt(o.style.height),s=this.elements.find((function(e){return e.contains(o)}));i>0?(o.style.height="auto",n(s)):r(s)}}};this.attachEvents=function(){if(!s){var e=a.options,t=e.triggerClass,n=e.panelClass;a.handleClick=a.handleClick.bind(a),a.handleKeydown=a.handleKeydown.bind(a),a.handleFocus=a.handleFocus.bind(a),a.handleTransitionEnd=a.handleTransitionEnd.bind(a),a.elements.forEach((function(e){var r=e.querySelector(u(t)),o=e.querySelector(u(n));r.addEventListener("click",a.handleClick),r.addEventListener("keydown",a.handleKeydown),r.addEventListener("focus",a.handleFocus),o.addEventListener("webkitTransitionEnd",a.handleTransitionEnd),o.addEventListener("transitionend",a.handleTransitionEnd)})),s=!0}},this.detachEvents=function(){if(s){var e=a.options,t=e.triggerClass,n=e.panelClass;a.elements.forEach((function(e){var r=e.querySelector(u(t)),o=e.querySelector(u(n));r.removeEventListener("click",a.handleClick),r.removeEventListener("keydown",a.handleKeydown),r.removeEventListener("focus",a.handleFocus),o.removeEventListener("webkitTransitionEnd",a.handleTransitionEnd),o.removeEventListener("transitionend",a.handleTransitionEnd)})),s=!1}},this.toggle=function(e){var t=a.elements[e];t&&a.toggleElement(t)},this.open=function(e){var t=a.elements[e];t&&a.showElement(t)},this.openAll=function(){var e=a.options,t=e.activeClass,n=e.onOpen;a.elements.forEach((function(e){e.classList.contains(t)||(a.showElement(e,!1),n(e))}))},this.close=function(e){var t=a.elements[e];t&&a.closeElement(t)},this.closeAll=function(){var e=a.options,t=e.activeClass,n=e.onClose;a.elements.forEach((function(e){e.classList.contains(t)&&(a.closeElement(e,!1),n(e))}))},this.destroy=function(){o.detachEvents(),o.openAll(),a.elements.forEach((function(e){a.removeIDs(e),a.removeARIA(e),a.setTransition(e,!0)})),s=!0},this.update=function(){a.createDefinitions(),o.detachEvents(),o.attachEvents()};var l=function(e){return"string"==typeof document.documentElement.style[e]?e:(e=c(e),e="webkit".concat(e))},c=function(e){return e.charAt(0).toUpperCase()+e.slice(1)},u=function(e){return".".concat(CSS.escape(e))};a.init()};void 0!==e.exports?e.exports=r:t.Accordion=r}(window)}(o);var i=o.exports;function s(e,t,n,r){var o,i=!1,s=0;function a(){o&&clearTimeout(o)}function l(){for(var l=arguments.length,c=new Array(l),u=0;u<l;u++)c[u]=arguments[u];var d=this,p=Date.now()-s;function f(){s=Date.now(),n.apply(d,c)}i||(r&&!o&&f(),a(),void 0===r&&p>e?f():!0!==t&&(o=setTimeout(r?function(){o=void 0}:f,void 0===r?e-p:e)))}return"boolean"!=typeof t&&(r=n,n=t,t=void 0),l.cancel=function(){a(),i=!0},l}const a=new class{constructor(e=""){this.header=e?document.querySelector(e):"",this.target=""}set pos(e){this.target=document.getElementById(e)}get pos(){let e="";return this.target?(e=this.target.getBoundingClientRect().top+window.pageYOffset,e=this.header?e-this.header.offsetHeight:e,e=Math.floor(e)):e=null,e}},l=function(){this.trigger="",this.menu="",this.menuLabel="",this.openAnimate=[{opacity:0},{opacity:1}],this.openAnimateTiming={duration:200}};l.prototype={init(){window.addEventListener("DOMContentLoaded",this.registerElm.bind(this),{once:!0})},registerElm(){this.trigger=document.querySelector(".js-menu-trigger"),this.menu=document.querySelector(`#${this.trigger.getAttribute("aria-controls")}`),this.menuLabel=document.querySelector(".js-menu-label"),this.trigger.addEventListener("click",this.toggle.bind(this),{passive:!0})},toggle(){const e="false"===this.trigger.getAttribute("aria-expanded");document.body.classList.remove("is-menu-open","is-menu-close"),document.body.classList.add("is-menu-"+(e?"open":"close")),this.trigger.setAttribute("aria-expanded",e),this.trigger.disabled=!0,this.menu.setAttribute("aria-hidden",!e),this.trigger.setAttribute("aria-label",e?"ã¡ãã¥ã¼ãéãã":"ã¡ãã¥ã¼ãéã"),this.menuLabel.textContent=e?"CLOSE":"MENU",((e=!0)=>{const t=document.querySelector("html"),n=e?window.pageYOffset:parseInt(t.style.top),r={position:"fixed",left:"0px",top:-1*n+"px",overflowY:"scroll"};document.documentElement.style.setProperty("--st",`${n}px`),t.style.width="100%";for(const n in r)t.style[n]=e&&"reset"!==e?r[n]:"";e?"reset"===e&&window.scrollTo(0,0):(window.scrollTo(0,-1*n),document.documentElement.style.setProperty("--st",""))})(e),e&&(this.menu.style.display="block"),this.animate(e)},animate(e){const t=this.menu.animate(e?this.openAnimate:[...this.openAnimate].reverse(),this.openAnimateTiming);t.finished.then((()=>{this.trigger.disabled=!1,t.commitStyles(),e||(this.menu.style.display="none")}))}};const c=new l,u=function(){this.body=""};u.prototype={init(){c.init(),document.addEventListener("DOMContentLoaded",(()=>{const e=Array.from(document.querySelectorAll(".js-menu-ac-container"));if(e){const t=new i(e,{showMultiple:!0,elementClass:"js-menu-ac",triggerClass:"js-menu-ac-trigger",panelClass:"js-menu-ac-panel"});r.media||t.map((e=>e.openAll()))}}),{once:!0}),document.addEventListener("DOMContentLoaded",(()=>{this.body=document.body,this.attachSmoothScroll(),document.body.getAttribute("data-page").startsWith("mypage")&&this.mypageNav()}),{once:!0}),window.addEventListener("load",(()=>{location.hash&&this.hashScroll()}),{once:!0})},hashScroll(){let e=location.hash;e=e.replace("#",""),a.pos=e,setTimeout((()=>{window.scrollTo(0,a.pos)}),300)},attachSmoothScroll(){const e=document.querySelectorAll("a");for(let t=0;t<e.length;t++)this.smoothScroll(e[t])},smoothScroll(e){const t=e.getAttribute("href");t&&t.startsWith("#")&&e.addEventListener("click",(e=>{e.preventDefault();let n=0;"#top"!=t&&(a.pos=t.replace("#",""),n=a.pos),window.scroll({top:n,behavior:"smooth"})}),{passive:!1})},mypageNav(){let e=!1;const t=document.querySelectorAll(".js-nav-item"),n=()=>{event.preventDefault();const e=event.currentTarget.nextElementSibling;e.classList.contains("is-show")?e.classList.remove("is-show"):e.classList.add("is-show")},o=()=>{e=!0;for(const e of t){e.querySelector(".js-nav-trigger").addEventListener("click",n,{passive:!1})}};r.mediaLg&&o(),window.addEventListener("resize",s(15,(()=>{if(r.mediaLg)e||o();else if(e){e=!1;for(const e of t){e.querySelector(".js-nav-trigger").removeEventListener("click",n,{passive:!1}),e.querySelector(".js-nav-content").classList.remove("is-show")}}}),!1),{passive:!0})},fixSearchBar(){const e=document.querySelector(".js-follow"),t=document.body;if(e){let n=e.getBoundingClientRect().top+r.offset;window.addEventListener("scroll",(()=>{r.offset>n?(t.style.paddingTop=e.offsetHeight+"px",e.style.position="fixed",e.style.zIndex="999",e.style.top="0px",e.style.left="0px",e.style.width="100%"):(t.style.paddingTop="",e.style.width="",e.style.position="")}),{passive:!0}),window.addEventListener("resize",(()=>{n=e.getBoundingClientRect().top+r.offset}),{passive:!0})}}};const d=new u;function p(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function f(e={},t={}){Object.keys(t).forEach((n=>{void 0===e[n]?e[n]=t[n]:p(t[n])&&p(e[n])&&Object.keys(t[n]).length>0&&f(e[n],t[n])}))}const h={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function m(){const e="undefined"!=typeof document?document:{};return f(e,h),e}const v={document:h,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){}
vendor: 7,696 bytes, line 1
1,clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function g(){const e="undefined"!=typeof window?window:{};return f(e,v),e}class y extends Array{constructor(e){"number"==typeof e?super(e):(super(...e||[]),function(e){const t=e.__proto__;Object.defineProperty(e,"__proto__",{get:()=>t,set(e){t.__proto__=e}})}(this))}}function b(e=[]){const t=[];return e.forEach((e=>{Array.isArray(e)?t.push(...b(e)):t.push(e)})),t}function E(e,t){return Array.prototype.filter.call(e,t)}function _(e,t){const n=g(),r=m();let o=[];if(!t&&e instanceof y)return e;if(!e)return new y(o);if("string"==typeof e){const n=e.trim();if(n.indexOf("<")>=0&&n.indexOf(">")>=0){let e="div";0===n.indexOf("<li")&&(e="ul"),0===n.indexOf("<tr")&&(e="tbody"),0!==n.indexOf("<td")&&0!==n.indexOf("<th")||(e="tr"),0===n.indexOf("<tbody")&&(e="table"),0===n.indexOf("<option")&&(e="select");const t=r.createElement(e);t.innerHTML=n;for(let e=0;e<t.childNodes.length;e+=1)o.push(t.childNodes[e])}else o=function(e,t){if("string"!=typeof e)return[e];const n=[],r=t.querySelectorAll(e);for(let e=0;e<r.length;e+=1)n.push(r[e]);return n}(e.trim(),t||r)}else if(e.nodeType||e===n||e===r)o.push(e);else if(Array.isArray(e)){if(e instanceof y)return e;o=e}return new y(function(e){const t=[];for(let n=0;n<e.length;n+=1)-1===t.indexOf(e[n])&&t.push(e[n]);return t}(o))}_.fn=y.prototype;const S={addClass:function(...e){const t=b(e.map((e=>e.split(" "))));return this.forEach((e=>{e.classList.add(...t)})),this},removeClass:function(...e){const t=b(e.map((e=>e.split(" "))));return this.forEach((e=>{e.classList.remove(...t)})),this},hasClass:function(...e){const t=b(e.map((e=>e.split(" "))));return E(this,(e=>t.filter((t=>e.classList.contains(t))).length>0)).length>0},toggleClass:function(...e){const t=b(e.map((e=>e.split(" "))));this.forEach((e=>{t.forEach((t=>{e.classList.toggle(t)}))}))},attr:function(e,t){if(1===arguments.length&&"string"==typeof e)return this[0]?this[0].getAttribute(e):void 0;for(let n=0;n<this.length;n+=1)if(2===arguments.length)this[n].setAttribute(e,t);else for(const t in e)this[n][t]=e[t],this[n].setAttribute(t,e[t]);return this},removeAttr:function(e){for(let t=0;t<this.length;t+=1)this[t].removeAttribute(e);return this},transform:function(e){for(let t=0;t<this.length;t+=1)this[t].style.transform=e;return this},transition:function(e){for(let t=0;t<this.length;t+=1)this[t].style.transitionDuration="string"!=typeof e?`${e}ms`:e;return this},on:function(...e){let[t,n,r,o]=e;function i(e){const t=e.target;if(!t)return;const o=e.target.dom7EventData||[];if(o.indexOf(e)<0&&o.unshift(e),_(t).is(n))r.apply(t,o);else{const e=_(t).parents();for(let t=0;t<e.length;t+=1)_(e[t]).is(n)&&r.apply(e[t],o)}}function s(e){const t=e&&e.target&&e.target.dom7EventData||[];t.indexOf(e)<0&&t.unshift(e),r.apply(this,t)}"function"==typeof e[1]&&([t,r,o]=e,n=void 0),o||(o=!1);const a=t.split(" ");let l;for(let e=0;e<this.length;e+=1){const t=this[e];if(n)for(l=0;l<a.length;l+=1){const e=a[l];t.dom7LiveListeners||(t.dom7LiveListeners={}),t.dom7LiveListeners[e]||(t.dom7LiveListeners[e]=[]),t.dom7LiveListeners[e].push({listener:r,proxyListener:i}),t.addEventListener(e,i,o)}else for(l=0;l<a.length;l+=1){const e=a[l];t.dom7Listeners||(t.dom7Listeners={}),t.dom7Listeners[e]||(t.dom7Listeners[e]=[]),t.dom7Listeners[e].push({listener:r,proxyListener:s}),t.addEventListener(e,s,o)}}return this},off:function(...e){let[t,n,r,o]=e;"function"==typeof e[1]&&([t,r,o]=e,n=void 0),o||(o=!1);const i=t.split(" ");for(let e=0;e<i.length;e+=1){const t=i[e];for(let e=0;e<this.length;e+=1){const i=this[e];let s;if(!n&&i.dom7Listeners?s=i.dom7Listeners[t]:n&&i.dom7LiveListeners&&(s=i.dom7LiveListeners[t]),s&&s.length)for(let e=s.length-1;e>=0;e-=1){const n=s[e];r&&n.listener===r||r&&n.listener&&n.listener.dom7proxy&&n.listener.dom7proxy===r?(i.removeEventListener(t,n.proxyListener,o),s.splice(e,1)):r||(i.removeEventListener(t,n.proxyListener,o),s.splice(e,1))}}}return this},trigger:function(...e){const t=g(),n=e[0].split(" "),r=e[1];for(let o=0;o<n.length;o+=1){const i=n[o];for(let n=0;n<this.length;n+=1){const o=this[n];if(t.CustomEvent){const n=new t.CustomEvent(i,{detail:r,bubbles:!0,cancelable:!0});o.dom7EventData=e.filter(((e,t)=>t>0)),o.dispatchEvent(n),o.dom7EventData=[],delete o.dom7EventData}}}return this},transitionEnd:function(e){const t=this;return e&&t.on("transitionend",(function n(r){r.target===this&&(e.call(this,r),t.off("transitionend",n))})),this},outerWidth:function(e){if(this.length>0){if(e){const e=this.styles();return this[0].offsetWidth+parseFloat(e.getPropertyValue("margin-right"))+parseFloat(e.getPropertyValue("margin-left"))}return this[0].offsetWidth}return null},outerHeight:function(e){if(this.length>0){if(e){const e=this.styles();return this[0].offsetHeight+parseFloat(e.getPropertyValue("margin-top"))+parseFloat(e.getPropertyValue("margin-bottom"))}return this[0].offsetHeight}return null},styles:function(){const e=g();return this[0]?e.getComputedStyle(this[0],null):{}},offset:function(){if(this.length>0){const e=g(),t=m(),n=this[0],r=n.getBoundingClientRect(),o=t.body,i=n.clientTop||o.clientTop||0,s=n.clientLeft||o.clientLeft||0,a=n===e?e.scrollY:n.scrollTop,l=n===e?e.scrollX:n.scrollLeft;return{top:r.top+a-i,left:r.left+l-s}}return null},css:function(e,t){const n=g();let r;if(1===arguments.length){if("string"!=typeof e){for(r=0;r<this.length;r+=1)for(const t in e)this[r].style[t]=e[t];return this}if(this[0])return n.getComputedStyle(this[0],null).getPropertyValue(e)}if(2===arguments.length&&"string"==typeof e){for(r=0;r<this.length;r+=1)this[r].style[e]=t;return this}return this},each:function(e){return e?(this.forEach(((t,n)=>{e.apply(t,[t,n])})),this):this},html:function(e){if(void 0===e)return this[0]?this[0].innerHTML:null;for(let t=0;t<this.length;t+=1)this[t].innerHTML=e;return this},text:function(e){if(void 0===e)return this[0]?this[0].textContent.trim():null;for(let t=0;t<this.length;t+=1)this[t].textContent=e;return this},is:function(e){const t=g(),n=m(),r=this[0];let o,i;if(!r||void 0===e)return!1;if("string"==typeof e){if(r.matches)return r.matches(e);if(r.webkitMatchesSelector)return r.webkitMatchesSelector(e);if(r.msMatchesSelector)return r.msMatchesSelector(e);for(o=_(e),i=0;i<o.length;i+=1)if(o[i]===r)return!0;return!1}if(e===n)return r===n;if(e===t)return r===t;if(e.nodeType||e instanceof y){for(o=e.nodeType?[e]:e,i=0;i<o.length;i+=1)if(o[i]===r)return!0;return!1}return!1},index:function(){let e,t=this[0];if(t){for(e=0;null!==(t=t.previousSibling);)1===t.nodeType&&(e+=1);return e}},eq:function(e){if(void 0===e)return this;const t=this.length;if(e>t-1)return _([]);if(e<0){const n=t+e;return _(n<0?[]:[this[n]])}return _([this[e]])},append:function(...e){let t;const n=m();for(let r=0;r<e.length;r+=1){t=e[r];for(let e=0;e<this.length;e+=1)if("string"==typeof t){const r=n.createElement("div");for(r.innerHTML=t;r.firstChild;)this[e].appendChild(r.firstChild)}else if(t instanceof y)for(let n=0;n<t.length;n+=1)this[e].appendChild(t[n]);else this[e].appendChild(t)}return this},prepend:function(e){const t=m();let n,r;for(n=0;n<this.length;n+=1)if("string"==typeof e){const o=t.createElement("div");for(o.innerHTML=e,r=o.childNodes.length-1;r>=0;r-=1)this[n].insertBefore(o.childNodes[r],this[n].childNodes[0])}else if(e instanceof y)for(r=0;r<e.length;r+=1)this[n].insertBefore(e[r],this[n].childNodes[0]);else this[n].insertBefore(e,this[n].childNodes[0]);return this},next:function(e){return this.length>0?e?this[0].nextElementSibling&&_(this[0].nextElementSibling).is(e)?_
vendor: 4,343 bytes, line 1
1([this[0].nextElementSibling]):_([]):this[0].nextElementSibling?_([this[0].nextElementSibling]):_([]):_([])},nextAll:function(e){const t=[];let n=this[0];if(!n)return _([]);for(;n.nextElementSibling;){const r=n.nextElementSibling;e?_(r).is(e)&&t.push(r):t.push(r),n=r}return _(t)},prev:function(e){if(this.length>0){const t=this[0];return e?t.previousElementSibling&&_(t.previousElementSibling).is(e)?_([t.previousElementSibling]):_([]):t.previousElementSibling?_([t.previousElementSibling]):_([])}return _([])},prevAll:function(e){const t=[];let n=this[0];if(!n)return _([]);for(;n.previousElementSibling;){const r=n.previousElementSibling;e?_(r).is(e)&&t.push(r):t.push(r),n=r}return _(t)},parent:function(e){const t=[];for(let n=0;n<this.length;n+=1)null!==this[n].parentNode&&(e?_(this[n].parentNode).is(e)&&t.push(this[n].parentNode):t.push(this[n].parentNode));return _(t)},parents:function(e){const t=[];for(let n=0;n<this.length;n+=1){let r=this[n].parentNode;for(;r;)e?_(r).is(e)&&t.push(r):t.push(r),r=r.parentNode}return _(t)},closest:function(e){let t=this;return void 0===e?_([]):(t.is(e)||(t=t.parents(e).eq(0)),t)},find:function(e){const t=[];for(let n=0;n<this.length;n+=1){const r=this[n].querySelectorAll(e);for(let e=0;e<r.length;e+=1)t.push(r[e])}return _(t)},children:function(e){const t=[];for(let n=0;n<this.length;n+=1){const r=this[n].children;for(let n=0;n<r.length;n+=1)e&&!_(r[n]).is(e)||t.push(r[n])}return _(t)},filter:function(e){return _(E(this,e))},remove:function(){for(let e=0;e<this.length;e+=1)this[e].parentNode&&this[e].parentNode.removeChild(this[e]);return this}};function x(e,t=0){return setTimeout(e,t)}function w(){return Date.now()}function N(e,t="x"){const n=g();let r,o,i;const s=function(e){const t=g();let n;return t.getComputedStyle&&(n=t.getComputedStyle(e,null)),!n&&e.currentStyle&&(n=e.currentStyle),n||(n=e.style),n}(e);return n.WebKitCSSMatrix?(o=s.transform||s.webkitTransform,o.split(",").length>6&&(o=o.split(", ").map((e=>e.replace(",","."))).join(", ")),i=new n.WebKitCSSMatrix("none"===o?"":o)):(i=s.MozTransform||s.OTransform||s.MsTransform||s.msTransform||s.transform||s.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),r=i.toString().split(",")),"x"===t&&(o=n.WebKitCSSMatrix?i.m41:16===r.length?parseFloat(r[12]):parseFloat(r[4])),"y"===t&&(o=n.WebKitCSSMatrix?i.m42:16===r.length?parseFloat(r[13]):parseFloat(r[5])),o||0}function A(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function C(...e){const t=Object(e[0]),n=["__proto__","constructor","prototype"];for(let o=1;o<e.length;o+=1){const i=e[o];if(null!=i&&(r=i,!("undefined"!=typeof window&&void 0!==window.HTMLElement?r instanceof HTMLElement:r&&(1===r.nodeType||11===r.nodeType)))){const e=Object.keys(Object(i)).filter((e=>n.indexOf(e)<0));for(let n=0,r=e.length;n<r;n+=1){const r=e[n],o=Object.getOwnPropertyDescriptor(i,r);void 0!==o&&o.enumerable&&(A(t[r])&&A(i[r])?i[r].__swiper__?t[r]=i[r]:C(t[r],i[r]):!A(t[r])&&A(i[r])?(t[r]={},i[r].__swiper__?t[r]=i[r]:C(t[r],i[r])):t[r]=i[r])}}}var r;return t}function O(e,t,n){e.style.setProperty(t,n)}function T({swiper:e,targetPosition:t,side:n}){const r=g(),o=-e.translate;let i,s=null;const a=e.params.speed;e.wrapperEl.style.scrollSnapType="none",r.cancelAnimationFrame(e.cssModeFrameID);const l=t>o?"next":"prev",c=(e,t)=>"next"===l&&e>=t||"prev"===l&&e<=t,u=()=>{i=(new Date).getTime(),null===s&&(s=i);const l=Math.max(Math.min((i-s)/a,1),0),d=.5-Math.cos(l*Math.PI)/2;let p=o+d*(t-o);if(c(p,t)&&(p=t),e.wrapperEl.scrollTo({[n]:p}),c(p,t))return e.wrapperEl.style.overflow="hidden",e.wrapperEl.style.scrollSnapType="",setTimeout((()=>{e.wrapperEl.style.overflow="",e.wrapperEl.scrollTo({[n]:p})})),void r.cancelAnimationFrame(e.cssModeFrameID);e.cssModeFrameID=r.requestAnimationFrame(u)};u()}let $,M,D;function I(){return $||($=function(){const e=g(),t=m();return{smoothScroll:t.documentElement&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch),passiveListener:function(){let t=!1;try{const n=Object.defineProperty({},"passive",{get(){t=!0}});e.addEventListener("testPassiveListener",null,n)}catch(e){}return t}(),gestures:"ongesturestart"in e}}()),$}function L(e={}){return M||(M=function({userAgent:e}={}
1){const t=I(),n=g(),r=n.navigator.platform,o=e||n.navigator.userAgent,i={ios:!1,android:!1},s=n.screen.width,a=n.screen.height,l=o.match(/(Android);?[\s\/]+([\d.]+)?/);let c=o.match(/(iPad).*OS\s([\d_]+)/);const u=o.match(/(iPod)(.*OS\s([\d_]+))?/),d=!c&&o.match(/(iPhone\sOS|iOS)\s([\d_]+)/),p="Win32"===r;let f="MacIntel"===r;return!c&&f&&t.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${s}x${a}`)>=0&&(c=o.match(/(Version)\/([\d.]+)/),c||(c=[0,1,"13_0_0"]),f=!1),l&&!p&&(i.os="android",i.android=!0),(c||d||u)&&(i.os="ios",i.ios=!0),i}(e)),M}function k(){return D||(D=function(){const e=g();return{isSafari:function(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}(),isWebView:/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent)}}()),D}Object.keys(S).forEach((e=>{Object.defineProperty(_.fn,e,{value:S[e],writable:!0})}));var P={on(e,t,n){const r=this;if(!r.eventsListeners||r.destroyed)return r;if("function"!=typeof t)return r;const o=n?"unshift":"push";return e.split(" ").forEach((e=>{r.eventsListeners[e]||(r.eventsListeners[e]=[]),r.eventsListeners[e][o](t)})),r},once(e,t,n){const r=this;if(!r.eventsListeners||r.destroyed)return r;if("function"!=typeof t)return r;function o(...n){r.off(e,o),o.__emitterProxy&&delete o.__emitterProxy,t.apply(r,n)}return o.__emitterProxy=t,r.on(e,o,n)},onAny(e,t){const n=this;if(!n.eventsListeners||n.destroyed)return n;if("function"!=typeof e)return n;const r=t?"unshift":"push";return n.eventsAnyListeners.indexOf(e)<0&&n.eventsAnyListeners[r](e),n},offAny(e){const t=this;if(!t.eventsListeners||t.destroyed)return t;if(!t.eventsAnyListeners)return t;const n=t.eventsAnyListeners.indexOf(e);return n>=0&&t.eventsAnyListeners.splice(n,1),t},off(e,t){const n=this;return!n.eventsListeners||n.destroyed?n:n.eventsListeners?(e.split(" ").forEach((e=>{void 0===t?n.eventsListeners[e]=[]:n.eventsListeners[e]&&n.eventsListeners[e].forEach(((r,o)=>{(r===t||r.__emitterProxy&&r.__emitterProxy===t)&&n.eventsListeners[e].splice(o,1)}))})),n):n},emit(...e){const t=this;if(!t.eventsListeners||t.destroyed)return t;if(!t.eventsListeners)return t;let n,r,o;"string"==typeof e[0]||Array.isArray(e[0])?(n=e[0],r=e.slice(1,e.length),o=t):(n=e[0].events,r=e[0].data,o=e[0].context||t),r.unshift(o);return(Array.isArray(n)?n:n.split(" ")).forEach((e=>{t.eventsAnyListeners&&t.eventsAnyListeners.length&&t.eventsAnyListeners.forEach((t=>{t.apply(o,[e,...r])})),t.eventsListeners&&t.eventsListeners[e]&&t.eventsListeners[e].forEach((e=>{e.apply(o,r)}))})),t}};var R={updateSize:function(){const e=this;let t,n;const r=e.$el;t=void 0!==e.params.width&&null!==e.params.width?e.params.width:r[0].clientWidth,n=void 0!==e.params.height&&null!==e.params.height?e.params.height:r[0].clientHeight,0===t&&e.isHorizontal()||0===n&&e.isVertical()||(t=t-parseInt(r.css("padding-left")||0,10)-parseInt(r.css("padding-right")||0,10),n=n-parseInt(r.css("padding-top")||0,10)-parseInt(r.css("padding-bottom")||0,10),Number.isNaN(t)&&(t=0),Number.isNaN(n)&&(n=0),Object.assign(e,{width:t,height:n,size:e.isHorizontal()?t:n}))},updateSlides:function(){const e=this;function t(t){return e.isHorizontal()?t:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[t]}function n(e,n){return parseFloat(e.getPropertyValue(t(n))||0)}const r=e.params,{$wrapperEl:o,size:i,rtlTranslate:s,wrongRTL:a}=e,l=e.virtual&&r.virtual.enabled,c=l?e.virtual.slides.length:e.slides.length,u=o.children(`.${e.params.slideClass}`),d=l?e.virtual.slides.length:u.length;let p=[];const f=[],h=[];let m=r.slidesOffsetBefore;"function"==typeof m&&(m=r.slidesOffsetBefore.call(e));let v=r.slidesOffsetAfter;"function"==typeof v&&(v=r.slidesOffsetAfter.call(e));const g=e.snapGrid.length,y=e.slidesGrid.length;let b=r.spaceBetween,E=-m,_=0,S=0;if(void 0===i)return;"string"==typeof b&&b.indexOf("%")>
1=0&&(b=parseFloat(b.replace("%",""))/100*i),e.virtualSize=-b,s?u.css({marginLeft:"",marginBottom:"",marginTop:""}):u.css({marginRight:"",marginBottom:"",marginTop:""}),r.centeredSlides&&r.cssMode&&(O(e.wrapperEl,"--swiper-centered-offset-before",""),O(e.wrapperEl,"--swiper-centered-offset-after",""));const x=r.grid&&r.grid.rows>1&&e.grid;let w;x&&e.grid.initSlides(d);const N="auto"===r.slidesPerView&&r.breakpoints&&Object.keys(r.breakpoints).filter((e=>void 0!==r.breakpoints[e].slidesPerView)).length>0;for(let o=0;o<d;o+=1){w=0;const s=u.eq(o);if(x&&e.grid.updateSlide(o,s,d,t),"none"!==s.css("display")){if("auto"===r.slidesPerView){N&&(u[o].style[t("width")]="");const i=getComputedStyle(s[0]),a=s[0].style.transform,l=s[0].style.webkitTransform;if(a&&(s[0].style.transform="none"),l&&(s[0].style.webkitTransform="none"),r.roundLengths)w=e.isHorizontal()?s.outerWidth(!0):s.outerHeight(!0);else{const e=n(i,"width"),t=n(i,"padding-left"),r=n(i,"padding-right"),o=n(i,"margin-left"),a=n(i,"margin-right"),l=i.getPropertyValue("box-sizing");if(l&&"border-box"===l)w=e+o+a;else{const{clientWidth:n,offsetWidth:i}=s[0];w=e+t+r+o+a+(i-n)}}a&&(s[0].style.transform=a),l&&(s[0].style.webkitTransform=l),r.roundLengths&&(w=Math.floor(w))}else w=(i-(r.slidesPerView-1)*b)/r.slidesPerView,r.roundLengths&&(w=Math.floor(w)),u[o]&&(u[o].style[t("width")]=`${w}px`);u[o]&&(u[o].swiperSlideSize=w),h.push(w),r.centeredSlides?(E=E+w/2+_/2+b,0===_&&0!==o&&(E=E-i/2-b),0===o&&(E=E-i/2-b),Math.abs(E)<.001&&(E=0),r.roundLengths&&(E=Math.floor(E)),S%r.slidesPerGroup==0&&p.push(E),f.push(E)):(r.roundLengths&&(E=Math.floor(E)),(S-Math.min(e.params.slidesPerGroupSkip,S))%e.params.slidesPerGroup==0&&p.push(E),f.push(E),E=E+w+b),e.virtualSize+=w+b,_=w,S+=1}}if(e.virtualSize=Math.max(e.virtualSize,i)+v,s&&a&&("slide"===r.effect||"coverflow"===r.effect)&&o.css({width:`${e.virtualSize+r.spaceBetween}px`}),r.setWrapperSize&&o.css({[t("width")]:`${e.virtualSize+r.spaceBetween}px`}),x&&e.grid.updateWrapperSize(w,p,t),!r.centeredSlides){const t=[];for(let n=0;n<p.length;n+=1){let o=p[n];r.roundLengths&&(o=Math.floor(o)),p[n]<=e.virtualSize-i&&t.push(o)}p=t,Math.floor(e.virtualSize-i)-Math.floor(p[p.length-1])>1&&p.push(e.virtualSize-i)}if(0===p.length&&(p=[0]),0!==r.spaceBetween){const n=e.isHorizontal()&&s?"marginLeft":t("marginRight");u.filter(((e,t)=>!r.cssMode||t!==u.length-1)).css({[n]:`${b}px`})}if(r.centeredSlides&&r.centeredSlidesBounds){let e=0;h.forEach((t=>{e+=t+(r.spaceBetween?r.spaceBetween:0)})),e-=r.spaceBetween;const t=e-i;p=p.map((e=>e<0?-m:e>t?t+v:e))}if(r.centerInsufficientSlides){let e=0;if(h.forEach((t=>{e+=t+(r.spaceBetween?r.spaceBetween:0)})),e-=r.spaceBetween,e<i){const t=(i-e)/2;p.forEach(((e,n)=>{p[n]=e-t})),f.forEach(((e,n)=>{f[n]=e+t}))}}if(Object.assign(e,{slides:u,snapGrid:p,slidesGrid:f,slidesSizesGrid:h}),r.centeredSlides&&r.cssMode&&!r.centeredSlidesBounds){O(e.wrapperEl,"--swiper-centered-offset-before",-p[0]+"px"),O(e.wrapperEl,"--swiper-centered-offset-after",e.size/2-h[h.length-1]/2+"px");const t=-e.snapGrid[0],n=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map((e=>e+t)),e.slidesGrid=e.slidesGrid.map((e=>e+n))}if(d!==c&&e.emit("slidesLengthChange"),p.length!==g&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),f.length!==y&&e.emit("slidesGridLengthChange"),r.watchSlidesProgress&&e.updateSlidesOffset(),!(l||r.cssMode||"slide"!==r.effect&&"fade"!==r.effect)){const t=`${r.containerModifierClass}backface-hidden`,n=e.$el.hasClass(t);d<=r.maxBackfaceHiddenSlides?n||e.$el.addClass(t):n&&e.$el.removeClass(t)}},updateAutoHeight:function(e){const t=this,n=[],r=t.virtual&&t.params.virtual.enabled;let o,i=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const s=e=>r?t.slides.filter((t=>parseInt(t.getAttribute("data-swiper-slide-index"),10)===e))[0]:t.slides.eq(e)[0];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||_([])).each((e=>{n.push(e)}));else for(o=0;o<Math.ceil(t.params.slidesPerView);o+=1){const e=t.activeIndex+o;if(e>t.slides.length&&!r)break;n.push(s(e))}else n.push(s(t.activeIndex));for(o=0;o<n.length;o+=1)if(void 0!==n[o]){const e=n[o].offsetHeight;i=e>i?e:i}(i||0===i)&&t.$wrapperEl.css("height",`${i}px`)},updateSlidesOffset:function(){const e=this,t=e.slides;for(let n=0;n<t.length;n+=1)t[n].swiperSlideOffset=e.isHorizontal()?t[n].offsetLeft:t[n].offsetTop},updateSlidesProgress:function(e=this&&this.translate||0){const t=this,n=t.params,{slides:r,rtlTranslate:o,snapGrid:i}=t;if(0===r.length)return;void 0===r[0].swiperSlideOffset&&t.updateSlidesOffset();let s=-e;o&&(s=e),r.removeClass(n.slideVisibleClass),t.visibleSlidesIndexes=[],t.visibleSlides=[];for(let e=0;e<r.length;e+=1){const a=r[e];let l=a.swiperSlideOffset;n.cssMode&&n.centeredSlides&&(l-=r[0].swiperSlideOffset);const c=(s+(n.centeredSlides?t.minTranslate():0)-l)/(a.swiperSlideSize+n.spaceBetween),u=(s-i[0]+(n.centeredSlides?t.minTranslate():0)-l)/(a.swiperSlideSize+n.spaceBetween),d=-(s-l),p=d+t.slidesSizesGrid[e];(d>=0&&d<t.size-1||p>1&&p<=t.size||d<=0&&p>=t.size)&&(t.visibleSlides.push(a),t.visibleSlidesIndexes.push(e),r.eq(e).addClass(n.slideVisibleClass)),a.progress=o?-c:c,a.originalProgress=o?-u:u}t.visibleSlides=_(t.visibleSlides)},updateProgress:function(e){const t=this;if(void 0===e){const n=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*n||0}const n=t.params,r=t.maxTranslate()-t.minTranslate();let{progress:o,isBeginning:i,isEnd:s}=t;const a=i,l=s;0===r?(o=0,i=!0,s=!0):(o=(e-t.minTranslate())/r,i=o<=0,s=o>=1),Object.assign(t,{progress:o,isBeginning:i,isEnd:s}),(n.watchSlidesProgress||n.centeredSlides&&n.autoHeight)&&t.updateSlidesProgress(e),i&&
vendor: 4,512 bytes, line 1
1!a&&t.emit("reachBeginning toEdge"),s&&!l&&t.emit("reachEnd toEdge"),(a&&!i||l&&!s)&&t.emit("fromEdge"),t.emit("progress",o)},updateSlidesClasses:function(){const e=this,{slides:t,params:n,$wrapperEl:r,activeIndex:o,realIndex:i}=e,s=e.virtual&&n.virtual.enabled;let a;t.removeClass(`${n.slideActiveClass} ${n.slideNextClass} ${n.slidePrevClass} ${n.slideDuplicateActiveClass} ${n.slideDuplicateNextClass} ${n.slideDuplicatePrevClass}`),a=s?e.$wrapperEl.find(`.${n.slideClass}[data-swiper-slide-index="${o}"]`):t.eq(o),a.addClass(n.slideActiveClass),n.loop&&(a.hasClass(n.slideDuplicateClass)?r.children(`.${n.slideClass}:not(.${n.slideDuplicateClass})[data-swiper-slide-index="${i}"]`).addClass(n.slideDuplicateActiveClass):r.children(`.${n.slideClass}.${n.slideDuplicateClass}[data-swiper-slide-index="${i}"]`).addClass(n.slideDuplicateActiveClass));let l=a.nextAll(`.${n.slideClass}`).eq(0).addClass(n.slideNextClass);n.loop&&0===l.length&&(l=t.eq(0),l.addClass(n.slideNextClass));let c=a.prevAll(`.${n.slideClass}`).eq(0).addClass(n.slidePrevClass);n.loop&&0===c.length&&(c=t.eq(-1),c.addClass(n.slidePrevClass)),n.loop&&(l.hasClass(n.slideDuplicateClass)?r.children(`.${n.slideClass}:not(.${n.slideDuplicateClass})[data-swiper-slide-index="${l.attr("data-swiper-slide-index")}"]`).addClass(n.slideDuplicateNextClass):r.children(`.${n.slideClass}.${n.slideDuplicateClass}[data-swiper-slide-index="${l.attr("data-swiper-slide-index")}"]`).addClass(n.slideDuplicateNextClass),c.hasClass(n.slideDuplicateClass)?r.children(`.${n.slideClass}:not(.${n.slideDuplicateClass})[data-swiper-slide-index="${c.attr("data-swiper-slide-index")}"]`).addClass(n.slideDuplicatePrevClass):r.children(`.${n.slideClass}.${n.slideDuplicateClass}[data-swiper-slide-index="${c.attr("data-swiper-slide-index")}"]`).addClass(n.slideDuplicatePrevClass)),e.emitSlidesClasses()},updateActiveIndex:function(e){const t=this,n=t.rtlTranslate?t.translate:-t.translate,{slidesGrid:r,snapGrid:o,params:i,activeIndex:s,realIndex:a,snapIndex:l}=t;let c,u=e;if(void 0===u){for(let e=0;e<r.length;e+=1)void 0!==r[e+1]?n>=r[e]&&n<r[e+1]-(r[e+1]-r[e])/2?u=e:n>=r[e]&&n<r[e+1]&&(u=e+1):n>=r[e]&&(u=e);i.normalizeSlideIndex&&(u<0||void 0===u)&&(u=0)}if(o.indexOf(n)>=0)c=o.indexOf(n);else{const e=Math.min(i.slidesPerGroupSkip,u);c=e+Math.floor((u-e)/i.slidesPerGroup)}if(c>=o.length&&(c=o.length-1),u===s)return void(c!==l&&(t.snapIndex=c,t.emit("snapIndexChange")));const d=parseInt(t.slides.eq(u).attr("data-swiper-slide-index")||u,10);Object.assign(t,{snapIndex:c,realIndex:d,previousIndex:s,activeIndex:u}),t.emit("activeIndexChange"),t.emit("snapIndexChange"),a!==d&&t.emit("realIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&t.emit("slideChange")},updateClickedSlide:function(e){const t=this,n=t.params,r=_(e).closest(`.${n.slideClass}`)[0];let o,i=!1;if(r)for(let e=0;e<t.slides.length;e+=1)if(t.slides[e]===r){i=!0,o=e;break}if(!r||!i)return t.clickedSlide=void 0,void(t.clickedIndex=void 0);t.clickedSlide=r,t.virtual&&t.params.virtual.enabled?t.clickedIndex=parseInt(_(r).attr("data-swiper-slide-index"),10):t.clickedIndex=o,n.slideToClickedSlide&&void 0!==t.clickedIndex&&t.clickedIndex!==t.activeIndex&&t.slideToClickedSlide()}};var V={getTranslate:function(e=(this.isHorizontal()?"x":"y")){const{params:t,rtlTranslate:n,translate:r,$wrapperEl:o}=this;if(t.virtualTranslate)return n?-r:r;if(t.cssMode)return r;let i=N(o[0],e);return n&&(i=-i),i||0},setTranslate:function(e,t){const n=this,{rtlTranslate:r,params:o,$wrapperEl:i,wrapperEl:s,progress:a}=n;let l,c=0,u=0;n.isHorizontal()?c=r?-e:e:u=e,o.roundLengths&&(c=Math.floor(c),u=Math.floor(u)),o.cssMode?s[n.isHorizontal()?"scrollLeft":"scrollTop"]=n.isHorizontal()?-c:-u:o.virtualTranslate||i.transform(`translate3d(${c}px, ${u}px, 0px)`),n.previousTranslate=n.translate,n.translate=n.isHorizontal()?c:u;const d=n.maxTranslate()-n.minTranslate();l=0===d?0:(e-n.minTranslate())/d,l!==a&&n.updateProgress(e),n.emit("setTranslate",n.translate,t)},minTranslate:function(){return-this.snapGrid[0]},maxTranslate:function(){return-this.snapGrid[this.snapGrid.length-1]},translateTo:function(e=0,t=this.params.speed,n=!0,r=!0,o){const i=this,{params:s,wrapperEl:a}=i;if(i.animating&&s.preventInteractionOnTransition)return!1;const l=i.minTranslate(),c=i.maxTranslate();let u;if(u=r&&e>l?l:r&&e<c?c:e,i.updateProgress(u),s.cssMode){const e=i.isHorizontal();if(0===t)a[e?"scrollLeft":"scrollTop"]=-u;else{if(!i.support.smoothScroll)return T({swiper:i,targetPosition:-u,side:e?"left"
1:"top"}),!0;a.scrollTo({[e?"left":"top"]:-u,behavior:"smooth"})}return!0}return 0===t?(i.setTransition(0),i.setTranslate(u),n&&(i.emit("beforeTransitionStart",t,o),i.emit("transitionEnd"))):(i.setTransition(t),i.setTranslate(u),n&&(i.emit("beforeTransitionStart",t,o),i.emit("transitionStart")),i.animating||(i.animating=!0,i.onTranslateToWrapperTransitionEnd||(i.onTranslateToWrapperTransitionEnd=function(e){i&&!i.destroyed&&e.target===this&&(i.$wrapperEl[0].removeEventListener("transitionend",i.onTranslateToWrapperTransitionEnd),i.$wrapperEl[0].removeEventListener("webkitTransitionEnd",i.onTranslateToWrapperTransitionEnd),i.onTranslateToWrapperTransitionEnd=null,delete i.onTranslateToWrapperTransitionEnd,n&&i.emit("transitionEnd"))}),i.$wrapperEl[0].addEventListener("transitionend",i.onTranslateToWrapperTransitionEnd),i.$wrapperEl[0].addEventListener("webkitTransitionEnd",i.onTranslateToWrapperTransitionEnd))),!0}};function B({swiper:e,runCallbacks:t,direction:n,step:r}){const{activeIndex:o,previousIndex:i}=e;let s=n;if(s||(s=o>i?"next":o<i?"prev":"reset"),e.emit(`transition${r}`),t&&o!==i){if("reset"===s)return void e.emit(`slideResetTransition${r}`);e.emit(`slideChangeTransition${r}`),"next"===s?e.emit(`slideNextTransition${r}`):e.emit(`slidePrevTransition${r}`)}}var F={slideTo:function(e=0,t=this.params.speed,n=!0,r,o){if("number"!=typeof e&&"string"!=typeof e)throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof e}] given.`);if("string"==typeof e){const t=parseInt(e,10);if(!isFinite(t))throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${e}] given.`);e=t}const i=this;let s=e;s<0&&(s=0);const{params:a,snapGrid:l,slidesGrid:c,previousIndex:u,activeIndex:d,rtlTranslate:p,wrapperEl:f,enabled:h}=i;if(i.animating&&a.preventInteractionOnTransition||!h&&!r&&!o)return!1;const m=Math.min(i.params.slidesPerGroupSkip,s);let v=m+Math.floor((s-m)/i.params.slidesPerGroup);v>=l.length&&(v=l.length-1);const g=-l[v];if(a.normalizeSlideIndex)for(let e=0;e<c.length;e+=1){const t=-Math.floor(100*g),n=Math.floor(100*c[e]),r=Math.floor(100*c[e+1]);void 0!==c[e+1]?t>=n&&t<r-(r-n)/2?s=e:t>=n&&t<r&&(s=e+1):t>=n&&(s=e)}if(i.initialized&&s!==d){if(!i.allowSlideNext&&g<i.translate&&g<i.minTranslate())return!1;if(!i.allowSlidePrev&&g>i.translate&&g>i.maxTranslate()&&(d||0)!==s)return!1}let y;if(s!==(u||0)&&n&&i.emit("beforeSlideChangeStart"),i.updateProgress(g),y=s>d?"next":s<d?"prev":"reset",p&&-g===i.translate||!p&&g===i.translate)return i.updateActiveIndex(s),a.autoHeight&&i.updateAutoHeight(),i.updateSlidesClasses(),"slide"!==a.effect&&i.setTranslate(g),"reset"!==y&&(i.transitionStart(n,y),i.transitionEnd(n,y)),!1;if(a.cssMode){const e=i.isHorizontal(),n=p?g:-g;if(0===t){const t=i.virtual&&i.params.virtual.enabled;t&&(i.wrapperEl.style.scrollSnapType="none",i._immediateVirtual=!0),f[e?"scrollLeft":"scrollTop"]=n,t&&requestAnimationFrame((()=>{i.wrapperEl.style.scrollSnapType="",i._swiperImmediateVirtual=!1}))}else{if(!i.support.smoothScroll)return T({swiper:i,targetPosition:n,side:e?"left":"top"}),!0;f.scrollTo({[e?"left":"top"]:n,behavior:"smooth"})}return!0}return i.setTransition(t),i.setTranslate(g),i.updateActiveIndex(s),i.updateSlidesClasses(),i.emit("beforeTransitionStart",t,r),i.transitionStart(n,y),0===t?i.transitionEnd(n,y):i.animating||(i.animating=!0,i.onSlideToWrapperTransitionEnd||(i.onSlideToWrapperTransitionEnd=function(e){i&&!i.destroyed&&e.target===this&&(i.$wrapperEl[0].removeEventListener("transitionend",i.onSlideToWrapperTransitionEnd),i.$wrapperEl[0].removeEventListener("webkitTransitionEnd",i.onSlideToWrapperTransitionEnd),i.onSlideToWrapperTransitionEnd=null,delete i.onSlideToWrapperTransitionEnd,i.transitionEnd(n,y))}),i.$wrapperEl[0].addEventListener("transitionend",i.onSlideToWrapperTransitionEnd),i.$wrapperEl[0].addEventListener("webkitTransitionEnd",i.onSlideToWrapperTransitionEnd)),!0},slideToLoop:function(e=0,t=this.params.speed,n=!0,r){if("string"==typeof e){const t=parseInt(e,10);if(!isFinite(t))throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${e}] given.`);e=t}const o=this;let i=e;return o.params.loop&&(i+=o.loopedSlides),o.slideTo(i,t,n,r)},slideNext:function(e=this.params.speed,t=!0,n){const r=this,{animating:o,enabled:i,params:s}=r;if(!i)return r;let a=s.slidesPerGroup;"auto"===s.slidesPerView&&1===s.slidesPerGroup&&s.slidesPerGroupAuto&&(a=Math.max(r.slidesPerViewDynamic("current",!0),1));const l=r.activeIndex<s.slidesPerGroupSkip?1:a;if(s.loop){if(o&&s.loopPreventsSlide)return!1;
1r.loopFix(),r._clientLeft=r.$wrapperEl[0].clientLeft}return s.rewind&&r.isEnd?r.slideTo(0,e,t,n):r.slideTo(r.activeIndex+l,e,t,n)},slidePrev:function(e=this.params.speed,t=!0,n){const r=this,{params:o,animating:i,snapGrid:s,slidesGrid:a,rtlTranslate:l,enabled:c}=r;if(!c)return r;if(o.loop){if(i&&o.loopPreventsSlide)return!1;r.loopFix(),r._clientLeft=r.$wrapperEl[0].clientLeft}function u(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const d=u(l?r.translate:-r.translate),p=s.map((e=>u(e)));let f=s[p.indexOf(d)-1];if(void 0===f&&o.cssMode){let e;s.forEach(((t,n)=>{d>=t&&(e=n)})),void 0!==e&&(f=s[e>0?e-1:e])}let h=0;if(void 0!==f&&(h=a.indexOf(f),h<0&&(h=r.activeIndex-1),"auto"===o.slidesPerView&&1===o.slidesPerGroup&&o.slidesPerGroupAuto&&(h=h-r.slidesPerViewDynamic("previous",!0)+1,h=Math.max(h,0))),o.rewind&&r.isBeginning){const o=r.params.virtual&&r.params.virtual.enabled&&r.virtual?r.virtual.slides.length-1:r.slides.length-1;return r.slideTo(o,e,t,n)}return r.slideTo(h,e,t,n)},slideReset:function(e=this.params.speed,t=!0,n){return this.slideTo(this.activeIndex,e,t,n)},slideToClosest:function(e=this.params.speed,t=!0,n,r=.5){const o=this;let i=o.activeIndex;const s=Math.min(o.params.slidesPerGroupSkip,i),a=s+Math.floor((i-s)/o.params.slidesPerGroup),l=o.rtlTranslate?o.translate:-o.translate;if(l>=o.snapGrid[a]){const e=o.snapGrid[a];l-e>(o.snapGrid[a+1]-e)*r&&(i+=o.params.slidesPerGroup)}else{const e=o.snapGrid[a-1];l-e<=(o.snapGrid[a]-e)*r&&(i-=o.params.slidesPerGroup)}return i=Math.max(i,0),i=Math.min(i,o.slidesGrid.length-1),o.slideTo(i,e,t,n)},slideToClickedSlide:function(){const e=this,{params:t,$wrapperEl:n}=e,r="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let o,i=e.clickedIndex;if(t.loop){if(e.animating)return;o=parseInt(_(e.clickedSlide).attr("data-swiper-slide-index"),10),t.centeredSlides?i<e.loopedSlides-r/2||i>e.slides.length-e.loopedSlides+r/2?(e.loopFix(),i=n.children(`.${t.slideClass}[data-swiper-slide-index="${o}"]:not(.${t.slideDuplicateClass})`).eq(0).index(),x((()=>{e.slideTo(i)}))):e.slideTo(i):i>e.slides.length-r?(e.loopFix(),i=n.children(`.${t.slideClass}[data-swiper-slide-index="${o}"]:not(.${t.slideDuplicateClass})`).eq(0).index(),x((()=>{e.slideTo(i)}))):e.slideTo(i)}else e.slideTo(i)}};var j={loopCreate:function(){const e=this,t=m(),{params:n,$wrapperEl:r}=e,o=r.children().length>0?_(r.children()[0].parentNode):r;o.children(`.${n.slideClass}.${n.slideDuplicateClass}`).remove();let i=o.children(`.${n.slideClass}`);if(n.loopFillGroupWithBlank){const e=n.slidesPerGroup-i.length%n.slidesPerGroup;if(e!==n.slidesPerGroup){for(let r=0;r<e;r+=1){const e=_(t.createElement("div")).addClass(`${n.slideClass} ${n.slideBlankClass}`);o.append(e)}i=o.children(`.${n.slideClass}`)}}"auto"!==n.slidesPerView||n.loopedSlides||(n.loopedSlides=i.length),e.loopedSlides=Math.ceil(parseFloat(n.loopedSlides||n.slidesPerView,10)),e.loopedSlides+=n.loopAdditionalSlides,e.loopedSlides>i.length&&e.params.loopedSlidesLimit&&(e.loopedSlides=i.length);const s=[],a=[];i.each(((e,t)=>{_(e).attr("data-swiper-slide-index",t)}));for(let t=0;t<e.loopedSlides;t+=1){const e=t-Math.floor(t/i.length)*i.length;a.push(i.eq(e)[0]),s.unshift(i.eq(i.length-e-1)[0])}for(let e=0;e<a.length;e+=1)o.append(_(a[e].cloneNode(!0)).addClass(n.slideDuplicateClass));for(let e=s.length-1;e>=0;e-=1)o.prepend(_(s[e].cloneNode(!0)).addClass(n.slideDuplicateClass))},loopFix:function(){const e=this;e.emit("beforeLoopFix");const{activeIndex:t,slides:n,loopedSlides:r,allowSlidePrev:o,allowSlideNext:i,snapGrid:s,rtlTranslate:a}=e;let l;e.allowSlidePrev=!0,e.allowSlideNext=!0;const c=-s[t]-e.getTranslate();if(t<r){l=n.length-3*r+t,l+=r;e.slideTo(l,0,!1,!0)&&0!==c&&e.setTranslate((a?-e.translate:e.translate)-c)}else if(t>=n.length-r){l=-n.length+t+r,l+=r;e.slideTo(l,0,!1,!0)&&0!==c&&e.setTranslate((a?-e.translate:e.translate)-c)}e.allowSlidePrev=o,e.allowSlideNext=i,e.emit("loopFix")},loopDestroy:function(){const{$wrapperEl:e,params:t,slides:n}=this;e.children(`.${t.slideClass}.${t.slideDuplicateClass},.${t.slideClass}.${t.slideBlankClass}`).remove(),n.removeAttr("data-swiper-slide-index")}};function U(e){const t=this,n=m(),r=g(),o=t.touchEventsData,{params:i,touches:s,enabled:a}=t;if(!a)return;if(t.animating&&i.preventInteractionOnTransition)return;!t.animating&&i.cssMode&&i.loop&&t.loopFix();let l=e;l.originalEvent&&(l=l.originalEvent);let c=_(l.target);if("wrapper"===i.touchEventsTarget&&!c.closest(t.wrapperEl).length)return;if(o.isTouchEvent="touchstart"===l.type,!o.isTouchEvent&&"which"in l&&3===l.which)return;if(!o.isTouchEvent&&"button"in l&&l.button>0)return;if(o.isTouched&&o.isMoved)return;const u=!!i.noSwipingClass&&""!==i.noSwipingClass,d=e.composedPath?e.composedPath():e.path;u&&l.target&&l.target.shadowRoot&&d&&(c=_(d[0]));const p=i.noSwipingSelector?i.noSwipingSelector:`.${i.noSwipingClass}`,f=!(!l.target||!l.target.shadowRoot);if(i.noSwiping&&(f?function(e,t=this){return function t(n){if(!n||n===m()||n===g())return null;n.assignedSlot&&(n=n.assignedSlot);const r=n.closest(e);return r||n.getRootNode?r||t(n.getRootNode().host):null}(t)}(p,c[0]):c.closest(p)[0]))return void(t.allowClick=!0);if(i.swipeHandler&&!c.closest(i.swipeHandler)[0])return;s.currentX="touchstart"===l.type?l.targetTouches[0].pageX:l.pageX,s.currentY="touchstart"===l.type?l.targetTouches[0].pageY:l.pageY;const h=s.currentX,v=s.currentY,y=i.edgeSwipeDetection||i.iOSEdgeSwipeDetection,b=i.edgeSwipeThreshold||i.iOSEdgeSwipeThreshold;if(y&&(h<=b||h>=r.innerWidth-b)){if("prevent"!==y)return;e.preventDefault()}if(Object.assign(o,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),s.startX=h,s.startY=v,o.touchStartTime=w(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,i.threshold>0&&(o.allowThresholdMove=!1),"touchstart"!==l.type){let e=!0;c.is(o.focusableElements)&&(e=!1,"SELECT"===c[0].nodeName&&(o.isTouched=!1)),n.activeElement&&_(n.activeElement).is(o.focusableElements)&&n.activeElement!==c[0]&&n.activeElement.blur();const r=e&&t.allowTouchMove&&i.touchStartPreventDefault;!i.touchStartForcePreventDefault&&!r||c[0].isContentEditable||l.preventDefault()}t.params.freeMode&&t.params.freeMode.enabled&&t.freeMode&&t.animating&&!i.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",l)}function H(e){const t=m(),n=this,r=n.touchEventsData,{params:o,touches:i,rtlTranslate:s,enabled:a}=n;if(!a)return;let l=e;if(l.originalEvent&&(l=l.originalEvent),!r.isTouched)return void(r.startMoving&&r.isScrolling&&n.emit("touchMoveOpposite",l));if(r.isTouchEvent&&"touchmove"!==l.type)return;const c="touchmove"===l.type&&l.targetTouches&&(l.targetTouches[0]||l.changedTouches[0]),u="touchmove"===l.type?c.pageX:l.pageX,d="touchmove"===l.type?c.pageY:l.pageY;if(l.preventedByNestedSwiper)return i.startX=u,void(i.startY=d);if(!n.allowTouchMove)return _(l.target).is(r.focusableElements)||(n.allowClick=!1),void(r.isTouched&&(Object.assign(i,{startX:u,startY:d,currentX:u,currentY:d}),r.touchStartTime=w()));if(r.isTouchEvent&&o.touchReleaseOnEdges&&!o.loop)if(n.isVertical()){if(d<i.startY&&n.translate<=n.maxTranslate()||d>i.startY&&n.translate>=n.minTranslate())return r.isTouched=!1,void(r.isMoved=!1)}else if(u<i.startX&&n.translate<=n.maxTranslate()||u>i.startX&&n.translate>=n.minTranslate())return;if(r.isTouchEvent&&t.activeElement&&l.target===t.activeElement&&_(l.target).is(r.focusableElements))return r.isMoved=!0,void(n.allowClick=!1);if(r.allowTouchCallbacks&&n.emit("touchMove",l),l.targetTouches&&l.targetTouches.length>1)return;i.currentX=u,i.currentY=d;const p=i.currentX-i.startX,f=i.currentY-i.startY;if(n.params.threshold&&Math.sqrt(p**2+f**2)<n.params.threshold)return;if(void 0===r.isScrolling){let e;n.isHorizontal()&&i.currentY===i.startY||n.isVertical()&&i.currentX===i.startX?r.isScrolling=!1:p*p+f*f>=25&&(e=180*Math.atan2(Math.abs(f),Math.abs(p))/Math.PI,r.isScrolling=n.isHorizontal()?e>o.touchAngle:90-e>o.touchAngle)}if(r.isScrolling&&n.emit("touchMoveOpposite",l),void 0===r.startMoving&&(i.currentX===i.startX&&i.currentY===i.startY||(r.startMoving=!0)),r.isScrolling)return void(r.isTouched=!1);if(!r.startMoving)return;n.allowClick=!1,!o.cssMode&&l.cancelable&&l.preventDefault(),o.touchMoveStopPropagation&&!o.nested&&l.stopPropagation(),r.isMoved||(o.loop&&!o.cssMode&&n.loopFix(),r.startTranslate=n.getTranslate(),n.setTransition(0),n.animating&&n.$wrapperEl.trigger("webkitTransitionEnd transitionend"),r.allowMomentumBounce
vendor: 1,100 bytes, line 1
1=!1,!o.grabCursor||!0!==n.allowSlideNext&&!0!==n.allowSlidePrev||n.setGrabCursor(!0),n.emit("sliderFirstMove",l)),n.emit("sliderMove",l),r.isMoved=!0;let h=n.isHorizontal()?p:f;i.diff=h,h*=o.touchRatio,s&&(h=-h),n.swipeDirection=h>0?"prev":"next",r.currentTranslate=h+r.startTranslate;let v=!0,g=o.resistanceRatio;if(o.touchReleaseOnEdges&&(g=0),h>0&&r.currentTranslate>n.minTranslate()?(v=!1,o.resistance&&(r.currentTranslate=n.minTranslate()-1+(-n.minTranslate()+r.startTranslate+h)**g)):h<0&&r.currentTranslate<n.maxTranslate()&&(v=!1,o.resistance&&(r.currentTranslate=n.maxTranslate()+1-(n.maxTranslate()-r.startTranslate-h)**g)),v&&(l.preventedByNestedSwiper=!0),!n.allowSlideNext&&"next"===n.swipeDirection&&r.currentTranslate<r.startTranslate&&(r.currentTranslate=r.startTranslate),!n.allowSlidePrev&&"prev"===n.swipeDirection&&r.currentTranslate>r.startTranslate&&(r.currentTranslate=r.startTranslate),n.allowSlidePrev||n.allowSlideNext||(r.currentTranslate=r.startTranslate),o.threshold>0){if(!(Math.abs(h)>o.threshold||r.allowThresholdMove))return void(r.currentTranslate=r.startTranslate);
1if(!r.allowThresholdMove)return r.allowThresholdMove=!0,i.startX=i.currentX,i.startY=i.currentY,r.currentTranslate=r.startTranslate,void(i.diff=n.isHorizontal()?i.currentX-i.startX:i.currentY-i.startY)}o.followFinger&&!o.cssMode&&((o.freeMode&&o.freeMode.enabled&&n.freeMode||o.watchSlidesProgress)&&(n.updateActiveIndex(),n.updateSlidesClasses()),n.params.freeMode&&o.freeMode.enabled&&n.freeMode&&n.freeMode.onTouchMove(),n.updateProgress(r.currentTranslate),n.setTranslate(r.currentTranslate))}function Z(e){const t=this,n=t.touchEventsData,{params:r,touches:o,rtlTranslate:i,slidesGrid:s,enabled:a}=t;if(!a)return;let l=e;if(l.originalEvent&&(l=l.originalEvent),n.allowTouchCallbacks&&t.emit("touchEnd",l),n.allowTouchCallbacks=!1,!n.isTouched)return n.isMoved&&r.grabCursor&&t.setGrabCursor(!1),n.isMoved=!1,void(n.startMoving=!1);r.grabCursor&&n.isMoved&&n.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const c=w(),u=c-n.touchStartTime;if(t.allowClick){const e=l.path||l.composedPath&&l.composedPath();t.updateClickedSlide(e&&e[0]||l.target),t.emit("tap click",l),u<300&&c-n.lastClickTime<300&&t.emit("doubleTap doubleClick",l)}if(n.lastClickTime=w(),x((()=>{t.destroyed||(t.allowClick=!0)})),!n.isTouched||!n.isMoved||!t.swipeDirection||0===o.diff||n.currentTranslate===n.startTranslate)return n.isTouched=!1,n.isMoved=!1,void(n.startMoving=!1);let d;if(n.isTouched=!1,n.isMoved=!1,n.startMoving=!1,d=r.followFinger?i?t.translate:-t.translate:-n.currentTranslate,r.cssMode)return;if(t.params.freeMode&&r.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:d});let p=0,f=t.slidesSizesGrid[0];for(let e=0;e<s.length;e+=e<r.slidesPerGroupSkip?1:r.slidesPerGroup){const t=e<r.slidesPerGroupSkip-1?1:r.slidesPerGroup;void 0!==s[e+t]?d>=s[e]&&d<s[e+t]&&(p=e,f=s[e+t]-s[e]):d>=s[e]&&(p=e,f=s[s.length-1]-s[s.length-2])}let h=null,m=null;r.rewind&&(t.isBeginning?m=t.params.virtual&&t.params.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(h=0));const v=(d-s[p])/f,g=p<r.slidesPerGroupSkip-1?1:r.slidesPerGroup;if(u>r.longSwipesMs){if(!r.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(v>=r.longSwipesRatio?t.slideTo(r.rewind&&t.isEnd?h:p+g):t.slideTo(p)),"prev"===t.swipeDirection&&(v>1-r.longSwipesRatio?t.slideTo(p+g):null!==m&&v<0&&Math.abs(v)>r.longSwipesRatio?t.slideTo(m):t.slideTo(p))}else{if(!r.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(l.target===t.navigation.nextEl||l.target===t.navigation.prevEl)?l.target===t.navigation.nextEl?t.slideTo(p+g):t.slideTo(p):("next"===t.swipeDirection&&t.slideTo(null!==h?h:p+g),"prev"===t.swipeDirection&&t.slideTo(null!==m?m:p))}}function G(){const e=this,{params:t,el:n}=e;if(n&&0===n.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:r,allowSlidePrev:o,snapGrid:i}=e;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses(),("auto"===t.slidesPerView||t.slidesPerView>1)&&e.isEnd&&!e.isBeginning&&!e.params.centeredSlides?e.slideTo(e.slides.length-1,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.run(),e.allowSlidePrev=o,e.allowSlideNext=r,e.params.watchOverflow&&i!==e.snapGrid&&e.checkOverflow()}function z(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function q(){const e=this,{wrapperEl:t,rtlTranslate:n,enabled:r}=e;if(!r)return;let o;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const i=e.maxTranslate()-e.minTranslate();o=0===i?0:(e.translate-e.minTranslate())/i,o!==e.progress&&e.updateProgress(n?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}let W=!1;function K(){}const Y=(e,t)=>{const n=m(),{params:r,touchEvents:o,el:i,wrapperEl:s,device:a,support:l}=e,c=!!r.nested,u="on"===t?"addEventListener":"removeEventListener",d=t;if(l.touch){const t=!("touchstart"!==o.start||!l.passiveListener||!r.passiveListeners)&&{passive:!0,capture:!1};i[u](o.start,e.onTouchStart,t),i[u](o.move,e.onTouchMove,l.passiveListener?{passive:!1,capture:c}:c),i[u](o.end,e.onTouchEnd,t),o.cancel&&i[u](o.cancel,e.onTouchEnd,t)}else i[u](o.start,e.onTouchStart,!1),n[u](o.move,e.onTouchMove,c),n[u](o.end,e.onTouchEnd,!1);(r.preventClicks||r.preventClicksPropagation)&&i[u]("click",e.onClick,!0),r.cssMode&&s[u]("scroll",e.onScroll),r.updateOnWindowResize?e[d](a.ios||a.android?"resize orientationchange observerUpdate":"resize observerUpdate",G,!0):e[d]("observerUpdate",G,!0)};var X={attachEvents:function(){const e=this,t=m(),{params:n,support:r}=e;e.onTouchStart=U.bind(e),e.onTouchMove=H.bind(e),e.onTouchEnd=Z.bind(e),n.cssMode&&(e.onScroll=q.bind(e)),e.onClick=z.bind(e),r.touch&&!W&&(t.addEventListener("touchstart",K),W=!0),Y(e,"on")},detachEvents:function(){Y(this,"off")}};const J=(e,t)=>
1e.grid&&t.grid&&t.grid.rows>1;var Q={setBreakpoint:function(){const e=this,{activeIndex:t,initialized:n,loopedSlides:r=0,params:o,$el:i}=e,s=o.breakpoints;if(!s||s&&0===Object.keys(s).length)return;const a=e.getBreakpoint(s,e.params.breakpointsBase,e.el);if(!a||e.currentBreakpoint===a)return;const l=(a in s?s[a]:void 0)||e.originalParams,c=J(e,o),u=J(e,l),d=o.enabled;c&&!u?(i.removeClass(`${o.containerModifierClass}grid ${o.containerModifierClass}grid-column`),e.emitContainerClasses()):!c&&u&&(i.addClass(`${o.containerModifierClass}grid`),(l.grid.fill&&"column"===l.grid.fill||!l.grid.fill&&"column"===o.grid.fill)&&i.addClass(`${o.containerModifierClass}grid-column`),e.emitContainerClasses()),["navigation","pagination","scrollbar"].forEach((t=>{const n=o[t]&&o[t].enabled,r=l[t]&&l[t].enabled;n&&!r&&e[t].disable(),!n&&r&&e[t].enable()}));const p=l.direction&&l.direction!==o.direction,f=o.loop&&(l.slidesPerView!==o.slidesPerView||p);p&&n&&e.changeDirection(),C(e.params,l);const h=e.params.enabled;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),d&&!h?e.disable():!d&&h&&e.enable(),e.currentBreakpoint=a,e.emit("_beforeBreakpoint",l),f&&n&&(e.loopDestroy(),e.loopCreate(),e.updateSlides(),e.slideTo(t-r+e.loopedSlides,0,!1)),e.emit("breakpoint",l)},getBreakpoint:function(e,t="window",n){if(!e||"container"===t&&!n)return;let r=!1;const o=g(),i="window"===t?o.innerHeight:n.clientHeight,s=Object.keys(e).map((e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:i*t,point:e}}return{value:e,point:e}}));s.sort(((e,t)=>parseInt(e.value,10)-parseInt(t.value,10)));for(let e=0;e<s.length;e+=1){const{point:i,value:a}=s[e];"window"===t?o.matchMedia(`(min-width: ${a}px)`).matches&&(r=i):a<=n.clientWidth&&(r=i)}return r||"max"}};var ee={addClasses:function(){const e=this,{classNames:t,params:n,rtl:r,$el:o,device:i,support:s}=e,a=function(e,t){const n=[];return e.forEach((e=>{"object"==typeof e?Object.keys(e).forEach((r=>{e[r]&&n.push(t+r)})):"string"==typeof e&&n.push(t+e)})),n}(["initialized",n.direction,{"pointer-events":!s.touch},{"free-mode":e.params.freeMode&&n.freeMode.enabled},{autoheight:n.autoHeight},{rtl:r},{grid:n.grid&&n.grid.rows>1},{"grid-column":n.grid&&n.grid.rows>1&&"column"===n.grid.fill},{android:i.android},{ios:i.ios},{"css-mode":n.cssMode},{centered:n.cssMode&&n.centeredSlides},{"watch-progress":n.watchSlidesProgress}],n.containerModifierClass);t.push(...a),o.addClass([...t].join(" ")),e.emitContainerClasses()},removeClasses:function(){const{$el:e,classNames:t}=this;e.removeClass(t.join(" ")),this.emitContainerClasses()}};var te={loadImage:function(e,t,n,r,o,i){const s=g();let a;function l(){i&&i()}_(e).parent("picture")[0]||e.complete&&o?l():t?(a=new s.Image,a.onload=l,a.onerror=l,r&&(a.sizes=r),n&&(a.srcset=n),t&&(a.src=t)):l()},preloadImages:function(){const e=this;function t(){null!=e&&e&&!e.destroyed&&(void 0!==e.imagesLoaded&&(e.imagesLoaded+=1),e.imagesLoaded===e.imagesToLoad.length&&(e.params.updateOnImagesReady&&e.update(),e.emit("imagesReady")))}e.imagesToLoad=e.$el.find("img");for(let n=0;n<e.imagesToLoad.length;n+=1){const r=e.imagesToLoad[n];e.loadImage(r,r.currentSrc||r.getAttribute("src"),r.srcset||r.getAttribute("srcset"),r.sizes||r.getAttribute("sizes"),!0,t)}}};var ne={init:!0,direction:"horizontal",touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:0,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,preloadImages:!0,updateOnImagesReady:!0,loop:!1,loopAdditionalSlides:0,loopedSlides:null,loopedSlidesLimit:!0,loopFillGroupWithBlank:!1,loopPreventsSlide:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-invisible-blank",slideActiveClass:"swiper-slide-active",slideDuplicateActiveClass:"swiper-slide-duplicate-active",slideVisibleClass:"swiper-slide-visible",slideDuplicateClass:"swiper-slide-duplicate",slideNextClass:"swiper-slide-next",slideDuplicateNextClass:"swiper-slide-duplicate-next",slidePrevClass:"swiper-slide-prev",slideDuplicatePrevClass:"swiper-slide-duplicate-prev",wrapperClass:"swiper-wrapper",runCallbacksOnInit:!0,_emitClasses:!1};function re(e,t){return function(n={}){const r=Object.keys(n)[0],o=n[r];"object"==typeof o&&null!==o?(["navigation","pagination","scrollbar"].indexOf(r)>=0&&!0===e[r]&&(e[r]={auto:!0}),r in e&&"enabled"in o?(!0===e[r]&&(e[r]={enabled:!0}),"object"!=typeof e[r]||"enabled"in e[r]||(e[r].enabled=!0),e[r]||(e[r]={enabled:!1}),C(t,n)):C(t,n)):C(t,n)}}const oe={eventsEmitter:P,update:R,translate:V,transition:{setTransition:function(e,t){const n=this;n.params.cssMode||n.$wrapperEl.transition(e),n.emit("setTransition",e,t)},transitionStart:function(e=!0,t){const n=this,{params:r}=n;r.cssMode||(r.autoHeight&&n.updateAutoHeight(),B({swiper:n,runCallbacks:e,direction:t,step:"Start"}))},transitionEnd:function(e=!0,t){const n=this,{params:r}=n;n.animating=!1,r.cssMode||(n.setTransition(0),B({swiper:n,runCallbacks:e,direction:t,step:"End"}))}},slide:F,loop:j,grabCursor:{setGrabCursor:function(e){const t=this;
1if(t.support.touch||!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const n="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;n.style.cursor="move",n.style.cursor=e?"grabbing":"grab"},unsetGrabCursor:function(){const e=this;e.support.touch||e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="")}},events:X,breakpoints:Q,checkOverflow:{checkOverflow:function(){const e=this,{isLocked:t,params:n}=e,{slidesOffsetBefore:r}=n;if(r){const t=e.slides.length-1,n=e.slidesGrid[t]+e.slidesSizesGrid[t]+2*r;e.isLocked=e.size>n}else e.isLocked=1===e.snapGrid.length;!0===n.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===n.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}},classes:ee,images:te},ie={};class se{constructor(...e){let t,n;if(1===e.length&&e[0].constructor&&"Object"===Object.prototype.toString.call(e[0]).slice(8,-1)?n=e[0]:[t,n]=e,n||(n={}),n=C({},n),t&&!n.el&&(n.el=t),n.el&&_(n.el).length>1){const e=[];return _(n.el).each((t=>{const r=C({},n,{el:t});e.push(new se(r))})),e}const r=this;r.__swiper__=!0,r.support=I(),r.device=L({userAgent:n.userAgent}),r.browser=k(),r.eventsListeners={},r.eventsAnyListeners=[],r.modules=[...r.__modules__],n.modules&&Array.isArray(n.modules)&&r.modules.push(...n.modules);const o={};r.modules.forEach((e=>{e({swiper:r,extendParams:re(n,o),on:r.on.bind(r),once:r.once.bind(r),off:r.off.bind(r),emit:r.emit.bind(r)})}));const i=C({},ne,o);return r.params=C({},i,ie,n),r.originalParams=C({},r.params),r.passedParams=C({}
1,n),r.params&&r.params.on&&Object.keys(r.params.on).forEach((e=>{r.on(e,r.params.on[e])})),r.params&&r.params.onAny&&r.onAny(r.params.onAny),r.$=_,Object.assign(r,{enabled:r.params.enabled,el:t,classNames:[],slides:_(),slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===r.params.direction,isVertical:()=>"vertical"===r.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,allowSlideNext:r.params.allowSlideNext,allowSlidePrev:r.params.allowSlidePrev,touchEvents:function(){const e=["touchstart","touchmove","touchend","touchcancel"],t=["pointerdown","pointermove","pointerup"];return r.touchEventsTouch={start:e[0],move:e[1],end:e[2],cancel:e[3]},r.touchEventsDesktop={start:t[0],move:t[1],end:t[2]},r.support.touch||!r.params.simulateTouch?r.touchEventsTouch:r.touchEventsDesktop}(),touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:r.params.focusableElements,lastClickTime:w(),clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,isTouchEvent:void 0,startMoving:void 0},allowClick:!0,allowTouchMove:r.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),r.emit("_swiper"),r.params.init&&r.init(),r}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const n=this;e=Math.min(Math.max(e,0),1);const r=n.minTranslate(),o=(n.maxTranslate()-r)*e+r;n.translateTo(o,void 0===t?0:t),n.updateActiveIndex(),n.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=e.el.className.split(" ").filter((t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass)));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){const t=this;return t.destroyed?"":e.className.split(" ").filter((e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass))).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=[];e.slides.each((n=>{const r=e.getSlideClasses(n);t.push({slideEl:n,classNames:r}),e.emit("_slideClass",n,r)})),e.emit("_slideClasses",t)}slidesPerViewDynamic(e="current",t=!1){const{params:n,slides:r,slidesGrid:o,slidesSizesGrid:i,size:s,activeIndex:a}=this;let l=1;if(n.centeredSlides){let e,t=r[a].swiperSlideSize;for(let n=a+1;n<r.length;n+=1)r[n]&&!e&&(t+=r[n].swiperSlideSize,l+=1,t>s&&(e=!0));for(let n=a-1;n>=0;n-=1)r[n]&&!e&&(t+=r[n].swiperSlideSize,l+=1,t>s&&(e=!0))}else if("current"===e)for(let e=a+1;e<r.length;e+=1){(t?o[e]+i[e]-o[a]<s:o[e]-o[a]<s)&&(l+=1)}else for(let e=a-1;e>=0;e-=1){o[a]-o[e]<s&&(l+=1)}return l}update(){const e=this;if(!e||e.destroyed)return;const{snapGrid:t,params:n}=e;function r(){const t=e.rtlTranslate?-1*e.translate:e.translate,n=Math.min(Math.max(t,e.maxTranslate()),e.minTranslate());e.setTranslate(n),e.updateActiveIndex(),e.updateSlidesClasses()}let o;n.breakpoints&&e.setBreakpoint(),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),e.params.freeMode&&e.params.freeMode.enabled?(r(),e.params.autoHeight&&e.updateAutoHeight()):(o=("auto"===e.params.slidesPerView||e.params.slidesPerView>1)&&e.isEnd&&!e.params.centeredSlides?e.slideTo(e.slides.length-1,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0),o||r()),n.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t=!0){const n=this,r=n.params.direction;return e||(e="horizontal"===r?"vertical":"horizontal"),e===r||"horizontal"!==e&&"vertical"!==e||(n.$el.removeClass(`${n.params.containerModifierClass}${r}`).addClass(`${n.params.containerModifierClass}${e}`),n.emitContainerClasses(),n.params.direction=e,n.slides.each((t=>{"vertical"===e?t.style.width="":t.style.height=""})),n.emit("changeDirection"),t&&n.update()),n}changeLanguageDirection(e){const t=this;t.rtl&&"rtl"===e||!t.rtl&&"ltr"===e||(t.rtl="rtl"===e,t.rtlTranslate="horizontal"===t.params.direction&&t.rtl,t.rtl?(t.$el.addClass(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.$el.removeClass(`${t.params.containerModifierClass}
1rtl`),t.el.dir="ltr"),t.update())}mount(e){const t=this;if(t.mounted)return!0;const n=_(e||t.params.el);if(!(e=n[0]))return!1;e.swiper=t;const r=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let o=(()=>{if(e&&e.shadowRoot&&e.shadowRoot.querySelector){const t=_(e.shadowRoot.querySelector(r()));return t.children=e=>n.children(e),t}return n.children?n.children(r()):_(n).children(r())})();if(0===o.length&&t.params.createElements){const e=m().createElement("div");o=_(e),e.className=t.params.wrapperClass,n.append(e),n.children(`.${t.params.slideClass}`).each((e=>{o.append(e)}))}return Object.assign(t,{$el:n,el:e,$wrapperEl:o,wrapperEl:o[0],mounted:!0,rtl:"rtl"===e.dir.toLowerCase()||"rtl"===n.css("direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===e.dir.toLowerCase()||"rtl"===n.css("direction")),wrongRTL:"-webkit-box"===o.css("display")}),!0}init(e){const t=this;if(t.initialized)return t;return!1===t.mount(e)||(t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.params.loop&&t.loopCreate(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.preloadImages&&t.preloadImages(),t.params.loop?t.slideTo(t.params.initialSlide+t.loopedSlides,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.attachEvents(),t.initialized=!0,t.emit("init"),t.emit("afterInit")),t}destroy(e=!0,t=!0){const n=this,{params:r,$el:o,$wrapperEl:i,slides:s}=n;return void 0===n.params||n.destroyed||(n.emit("beforeDestroy"),n.initialized=!1,n.detachEvents(),r.loop&&n.loopDestroy(),t&&(n.removeClasses(),o.removeAttr("style"),i.removeAttr("style"),s&&s.length&&s.removeClass([r.slideVisibleClass,r.slideActiveClass,r.slideNextClass,r.slidePrevClass].join(" ")).removeAttr("style").removeAttr("data-swiper-slide-index")),n.emit("destroy"),Object.keys(n.eventsListeners).forEach((e=>{n.off(e)})),!1!==e&&(n.$el[0].swiper=null,function(e){const t=e;Object.keys(t).forEach((e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}}))}(n)),n.destroyed=!0),null}static extendDefaults(e){C(ie,e)}static get extendedDefaults(){return ie}static get defaults(){return ne}static installModule(e){se.prototype.__modules__||(se.prototype.__modules__=[]);const t=se.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach((e=>se.installModule(e))),se):(se.installModule(e),se)}}function ae(e,t,n,r){const o=m();return e.params.createElements&&Object.keys(r).forEach((i=>{if(!n[i]&&!0===n.auto){let s=e.$el.children(`.${r[i]}`)[0];s||(s=o.createElement("div"),s.className=r[i],e.$el.append(s)),n[i]=s,t[i]=s}})),n}function le({swiper:e,extendParams:t,on:n,emit:r}){function o(t){let n;return t&&(n=_(t),e.params.uniqueNavElements&&"string"==typeof t&&n.length>1&&1===e.$el.find(t).length&&(n=e.$el.find(t))),n}function i(t,n){const r=e.params.navigation;t&&t.length>0&&(t[n?"addClass":"removeClass"](r.disabledClass),t[0]&&"BUTTON"===t[0].tagName&&(t[0].disabled=n),e.params.watchOverflow&&e.enabled&&t[e.isLocked?"addClass":"removeClass"](r.lockClass))}function s(){if(e.params.loop)return;const{$nextEl:t,$prevEl:n}=e.navigation;i(n,e.isBeginning&&!e.params.rewind),i(t,e.isEnd&&!e.params.rewind)}function a(t){t.preventDefault(),(!e.isBeginning||e.params.loop||e.params.rewind)&&(e.slidePrev(),r("navigationPrev"))}function l(t){t.preventDefault(),(!e.isEnd||e.params.loop||e.params.rewind)&&(e.slideNext(),r("navigationNext"))}function c(){const t=e.params.navigation;if(e.params.navigation=ae(e,e.originalParams.navigation,e.params.navigation,{nextEl:"swiper-button-next",prevEl:"swiper-button-prev"}),!t.nextEl&&!t.prevEl)return;const n=o(t.nextEl),r=o(t.prevEl);n&&n.length>0&&n.on("click",l),r&&r.length>0&&r.on("click",a),Object.assign(e.navigation,{$nextEl:n,nextEl:n&&n[0],$prevEl:r,prevEl:r&&r[0]}),e.enabled||(n&&n.addClass(t.lockClass),r&&r.addClass(t.lockClass))}function u(){const{$nextEl:t,$prevEl:n}=e.navigation;t&&t.length&&(t.off("click",l),t.removeClass(e.params.navigation.disabledClass)),n&&n.length&&(n.off("
1click",a),n.removeClass(e.params.navigation.disabledClass))}t({navigation:{nextEl:null,prevEl:null,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock",navigationDisabledClass:"swiper-navigation-disabled"}}),e.navigation={nextEl:null,$nextEl:null,prevEl:null,$prevEl:null},n("init",(()=>{!1===e.params.navigation.enabled?d():(c(),s())})),n("toEdge fromEdge lock unlock",(()=>{s()})),n("destroy",(()=>{u()})),n("enable disable",(()=>{const{$nextEl:t,$prevEl:n}=e.navigation;t&&t[e.enabled?"removeClass":"addClass"](e.params.navigation.lockClass),n&&n[e.enabled?"removeClass":"addClass"](e.params.navigation.lockClass)})),n("click",((t,n)=>{const{$nextEl:o,$prevEl:i}=e.navigation,s=n.target;if(e.params.navigation.hideOnClick&&!_(s).is(i)&&!_(s).is(o)){if(e.pagination&&e.params.pagination&&e.params.pagination.clickable&&(e.pagination.el===s||e.pagination.el.contains(s)))return;let t;o?t=o.hasClass(e.params.navigation.hiddenClass):i&&(t=i.hasClass(e.params.navigation.hiddenClass)),r(!0===t?"navigationShow":"navigationHide"),o&&o.toggleClass(e.params.navigation.hiddenClass),i&&i.toggleClass(e.params.navigation.hiddenClass)}}));const d=()=>{e.$el.addClass(e.params.navigation.navigationDisabledClass),u()};Object.assign(e.navigation,{enable:()=>{e.$el.removeClass(e.params.navigation.navigationDisabledClass),c(),s()},disable:d,update:s,init:c,destroy:u})}function ce(e=""){return`.${e.trim().replace(/([\.:!\/])/g,"\\$1").replace(/ /g,".")}`}function ue({swiper:e,extendParams:t,on:n,emit:r}){const o="swiper-pagination";let i;t({pagination:{el:null,bulletElement:"span",clickable:!1,hideOnClick:!1,renderBullet:null,renderProgressbar:null,renderFraction:null,renderCustom:null,progressbarOpposite:!1,type:"bullets",dynamicBullets:!1,dynamicMainBullets:1,formatFractionCurrent:e=>e,formatFractionTotal:e=>e,bulletClass:`${o}-bullet`,bulletActiveClass:`${o}-bullet-active`,modifierClass:`${o}-`,currentClass:`${o}-current`,totalClass:`${o}-total`,hiddenClass:`${o}-hidden`,progressbarFillClass:`${o}-progressbar-fill`,progressbarOppositeClass:`${o}-progressbar-opposite`,clickableClass:`${o}-clickable`,lockClass:`${o}-lock`,horizontalClass:`${o}-horizontal`,verticalClass:`${o}-vertical`,paginationDisabledClass:`${o}-disabled`}}),e.pagination={el:null,$el:null,bullets:[]};let s=0;function a(){return!e.params.pagination.el||!e.pagination.el||!e.pagination.$el||0===e.pagination.$el.length}function l(t,n){const{bulletActiveClass:r}=e.params.pagination;t[n]().addClass(`${r}-${n}`)[n]().addClass(`${r}-${n}-${n}`)}function c(){const t=e.rtl,n=e.params.pagination;if(a())return;const o=e.virtual&&e.params.virtual.enabled?e.virtual.slides.length:e.slides.length,c=e.pagination.$el;let u;const d=e.params.loop?Math.ceil((o-2*e.loopedSlides)/e.params.slidesPerGroup):e.snapGrid.length;if(e.params.loop?(u=Math.ceil((e.activeIndex-e.loopedSlides)/e.params.slidesPerGroup),u>o-1-2*e.loopedSlides&&(u-=o-2*e.loopedSlides),u>d-1&&(u-=d),u<0&&"bullets"!==e.params.paginationType&&(u=d+u)):u=void 0!==e.snapIndex?e.snapIndex:e.activeIndex||0,"bullets"===n.type&&e.pagination.bullets&&e.pagination.bullets.length>0){const r=e.pagination.bullets;let o,a,d;if(n.dynamicBullets&&(i=r.eq(0)[e.isHorizontal()?"outerWidth":"outerHeight"](!0),c.css(e.isHorizontal()?"width":"height",i*(n.dynamicMainBullets+4)+"px"),n.dynamicMainBullets>1&&void 0!==e.previousIndex&&(s+=u-(e.previousIndex-e.loopedSlides||0),s>n.dynamicMainBullets-1?s=n.dynamicMainBullets-1:s<0&&(s=0)),o=Math.max(u-s,0),a=o+(Math.min(r.length,n.dynamicMainBullets)-1),d=(a+o)/2),r.removeClass(["","-next","-next-next","-prev","-prev-prev","-main"].map((e=>`${n.bulletActiveClass}${e}`)).join(" ")),c.length>1)r.each((e=>{const t=_(e),r=t.index();r===u&&t.addClass(n.bulletActiveClass),n.dynamicBullets&&(r>=o&&r<=a&&t.addClass(`${n.bulletActiveClass}-main`),r===o&&l(t,"prev"),r===a&&l(t,"next"))}));else{const t=r.eq(u),i=t.index();if(t.addClass(n.bulletActiveClass),n.dynamicBullets){const t=r.eq(o),s=r.eq(a);for(let e=o;e<=a;e+=1)r.eq(e).addClass(`${n.bulletActiveClass}-main`);if(e.params.loop)if(i>=r.length){for(let e=n.dynamicMainBullets;e>=0;e-=1)r.eq(r.length-e).addClass(`${n.bulletActiveClass}-main`);r.eq(r.length-n.dynamicMainBullets-1).addClass(`${n.bulletActiveClass}-prev`)}else l(t,"prev"),l(s,"next");else l(t,"prev"),l(s,"next")}}if(n.dynamicBullets){const o=Math.min(r.length,n.dynamicMainBullets+4),s=(i*o-i)/2-d*i,a=t?"right":"left";r.css(e.isHorizontal()?a:"top",`${s}px`)}}if("fraction"===n.type&&(c.find(ce(n.currentClass)).text(n.formatFractionCurrent(u+1)),c.find(ce(n.totalClass)).text(n.formatFractionTotal(d))),"progressbar"===n.type){let t;t=n.progressbarOpposite?e.isHorizontal()?"vertical":"horizontal":e.isHorizontal()?"horizontal":"vertical";const r=(u+1)/d;let o=1,i=1;"horizontal"===t?o=r:i=r,c.find(ce(n.progressbarFillClass)).transform(`translate3d(0,
10,0) scaleX(${o}) scaleY(${i})`).transition(e.params.speed)}"custom"===n.type&&n.renderCustom?(c.html(n.renderCustom(e,u+1,d)),r("paginationRender",c[0])):r("paginationUpdate",c[0]),e.params.watchOverflow&&e.enabled&&c[e.isLocked?"addClass":"removeClass"](n.lockClass)}function u(){const t=e.params.pagination;if(a())return;const n=e.virtual&&e.params.virtual.enabled?e.virtual.slides.length:e.slides.length,o=e.pagination.$el;let i="";if("bullets"===t.type){let r=e.params.loop?Math.ceil((n-2*e.loopedSlides)/e.params.slidesPerGroup):e.snapGrid.length;e.params.freeMode&&e.params.freeMode.enabled&&!e.params.loop&&r>n&&(r=n);for(let n=0;n<r;n+=1)t.renderBullet?i+=t.renderBullet.call(e,n,t.bulletClass):i+=`<${t.bulletElement} class="${t.bulletClass}"></${t.bulletElement}>`;o.html(i),e.pagination.bullets=o.find(ce(t.bulletClass))}"fraction"===t.type&&(i=t.renderFraction?t.renderFraction.call(e,t.currentClass,t.totalClass):`<span class="${t.currentClass}"></span> / <span class="${t.totalClass}"></span>`,o.html(i)),"progressbar"===t.type&&(i=t.renderProgressbar?t.renderProgressbar.call(e,t.progressbarFillClass):`<span class="${t.progressbarFillClass}"></span>`,o.html(i)),"custom"!==t.type&&r("paginationRender",e.pagination.$el[0])}function d(){e.params.pagination=ae(e,e.originalParams.pagination,e.params.pagination,{el:"swiper-pagination"});const t=e.params.pagination;if(!t.el)return;let n=_(t.el);0!==n.length&&(e.params.uniqueNavElements&&"string"==typeof t.el&&n.length>1&&(n=e.$el.find(t.el),n.length>1&&(n=n.filter((t=>_(t).parents(".swiper")[0]===e.el)))),"bullets"===t.type&&t.clickable&&n.addClass(t.clickableClass),n.addClass(t.modifierClass+t.type),n.addClass(e.isHorizontal()?t.horizontalClass:t.verticalClass),"bullets"===t.type&&t.dynamicBullets&&(n.addClass(`${t.modifierClass}${t.type}-dynamic`),s=0,t.dynamicMainBullets<1&&(t.dynamicMainBullets=1)),"progressbar"===t.type&&t.progressbarOpposite&&n.addClass(t.progressbarOppositeClass),t.clickable&&n.on("click",ce(t.bulletClass),(function(t){t.preventDefault();let n=_(this).index()*e.params.slidesPerGroup;e.params.loop&&(n+=e.loopedSlides),e.slideTo(n)})),Object.assign(e.pagination,{$el:n,el:n[0]}),e.enabled||n.addClass(t.lockClass))}function p(){const t=e.params.pagination;if(a())return;const n=e.pagination.$el;n.removeClass(t.hiddenClass),n.removeClass(t.modifierClass+t.type),n.removeClass(e.isHorizontal()?t.horizontalClass:t.verticalClass),e.pagination.bullets&&e.pagination.bullets.removeClass&&e.pagination.bullets.removeClass(t.bulletActiveClass),t.clickable&&n.off("click",ce(t.bulletClass))}n("init",(()=>{!1===e.params.pagination.enabled?f():(d(),u(),c())})),n("activeIndexChange",(()=>{(e.params.loop||void 0===e.snapIndex)&&c()})),n("snapIndexChange",(()=>{e.params.loop||c()})),n("slidesLengthChange",(()=>{e.params.loop&&(u(),c())})),n("snapGridLengthChange",(()=>{e.params.loop||(u(),c())})),n("destroy",(()=>{p()})),n("enable disable",(()=>{const{$el:t}=e.pagination;t&&t[e.enabled?"removeClass":"addClass"](e.params.pagination.lockClass)})),n("lock unlock",(()=>{c()})),n("click",((t,n)=>{const o=n.target,{$el:i}=e.pagination;if(e.params.pagination.el&&e.params.pagination.hideOnClick&&i&&i.length>0&&!_(o).hasClass(e.params.pagination.bulletClass)){if(e.navigation&&(e.navigation.nextEl&&o===e.navigation.nextEl||e.navigation.prevEl&&o===e.navigation.prevEl))return;const t=i.hasClass(e.params.pagination.hiddenClass);r(!0===t?"paginationShow":"paginationHide"),i.toggleClass(e.params.pagination.hiddenClass)}}));const f=()=>{e.$el.addClass(e.params.pagination.paginationDisabledClass),e.pagination.$el&&e.pagination.$el.addClass(e.params.pagination.paginationDisabledClass),p()};Object.assign(e.pagination,{enable:()=>{e.$el.removeClass(e.params.pagination.paginationDisabledClass),e.pagination.$el&&e.pagination.$el.removeClass(e.params.pagination.paginationDisabledClass),d(),u(),c()},disable:f,render:u,update:c,init:d,destroy:p})}function de({swiper:e,extendParams:t,on:n,emit:r}){let o;function i(){if(!e.size)return e.autoplay.running=!1,void(e.autoplay.paused=!1);const t=e.slides.eq(e.activeIndex);let n=e.params.autoplay.delay;t.attr("data-swiper-autoplay")&&(n=t.attr("data-swiper-autoplay")||e.params.autoplay.delay),clearTimeout(o),o=x((()=>{let t;e.params.autoplay.reverseDirection?e.params.loop?(e.loopFix(),t=e.slidePrev(e.params.speed,!0,
1!0),r("autoplay")):e.isBeginning?e.params.autoplay.stopOnLastSlide?a():(t=e.slideTo(e.slides.length-1,e.params.speed,!0,!0),r("autoplay")):(t=e.slidePrev(e.params.speed,!0,!0),r("autoplay")):e.params.loop?(e.loopFix(),t=e.slideNext(e.params.speed,!0,!0),r("autoplay")):e.isEnd?e.params.autoplay.stopOnLastSlide?a():(t=e.slideTo(0,e.params.speed,!0,!0),r("autoplay")):(t=e.slideNext(e.params.speed,!0,!0),r("autoplay")),(e.params.cssMode&&e.autoplay.running||!1===t)&&i()}),n)}function s(){return void 0===o&&(!e.autoplay.running&&(e.autoplay.running=!0,r("autoplayStart"),i(),!0))}function a(){return!!e.autoplay.running&&(void 0!==o&&(o&&(clearTimeout(o),o=void 0),e.autoplay.running=!1,r("autoplayStop"),!0))}function l(t){e.autoplay.running&&(e.autoplay.paused||(o&&clearTimeout(o),e.autoplay.paused=!0,0!==t&&e.params.autoplay.waitForTransition?["transitionend","webkitTransitionEnd"].forEach((t=>{e.$wrapperEl[0].addEventListener(t,u)})):(e.autoplay.paused=!1,i())))}function c(){const t=m();"hidden"===t.visibilityState&&e.autoplay.running&&l(),"visible"===t.visibilityState&&e.autoplay.paused&&(i(),e.autoplay.paused=!1)}function u(t){e&&!e.destroyed&&e.$wrapperEl&&t.target===e.$wrapperEl[0]&&(["transitionend","webkitTransitionEnd"].forEach((t=>{e.$wrapperEl[0].removeEventListener(t,u)})),e.autoplay.paused=!1,e.autoplay.running?i():a())}function d(){e.params.autoplay.disableOnInteraction?a():(r("autoplayPause"),l()),["transitionend","webkitTransitionEnd"].forEach((t=>{e.$wrapperEl[0].removeEventListener(t,u)}))}function p(){e.params.autoplay.disableOnInteraction||(e.autoplay.paused=!1,r("autoplayResume"),i())}e.autoplay={running:!1,paused:!1},t({autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!0,stopOnLastSlide:!1,reverseDirection:!1,pauseOnMouseEnter:!1}}),n("init",(()=>{if(e.params.autoplay.enabled){s();m().addEventListener("visibilitychange",c),e.params.autoplay.pauseOnMouseEnter&&(e.$el.on("mouseenter",d),e.$el.on("mouseleave",p))}})),n("beforeTransitionStart",((t,n,r)=>{e.autoplay.running&&(r||!e.params.autoplay.disableOnInteraction?e.autoplay.pause(n):a())})),n("sliderFirstMove",(()=>{e.autoplay.running&&(e.params.autoplay.disableOnInteraction?a():l())})),n("touchEnd",(()=>{e.params.cssMode&&e.autoplay.paused&&!e.params.autoplay.disableOnInteraction&&i()})),n("destroy",(()=>{e.$el.off("mouseenter",d),e.$el.off("mouseleave",p),e.autoplay.running&&a();m().removeEventListener("visibilitychange",c)})),Object.assign(e.autoplay,{pause:l,run:i,start:s,stop:a})}function pe(e){const t=this,{$wrapperEl:n,params:r}=t;if(r.loop&&t.loopDestroy(),"object"==typeof e&&"length"in e)for(let t=0;t<e.length;t+=1)e[t]&&n.append(e[t]);else n.append(e);r.loop&&t.loopCreate(),r.observer||t.update()}function fe(e){const t=this,{params:n,$wrapperEl:r,activeIndex:o}=t;n.loop&&t.loopDestroy();let i=o+1;if("object"==typeof e&&"length"in e){for(let t=0;t<e.length;t+=1)e[t]&&r.prepend(e[t]);i=o+e.length}else r.prepend(e);n.loop&&t.loopCreate(),n.observer||t.update(),t.slideTo(i,0,!1)}function he(e,t){const n=this,{$wrapperEl:r,params:o,activeIndex:i}=n;let s=i;o.loop&&(s-=n.loopedSlides,n.loopDestroy(),n.slides=r.children(`.${o.slideClass}`));const a=n.slides.length;if(e<=0)return void n.prependSlide(t);if(e>=a)return void n.appendSlide(t);let l=s>e?s+1:s;const c=[];for(let t=a-1;t>=e;t-=1){const e=n.slides.eq(t);e.remove(),c.unshift(e)}if("object"==typeof t&&"length"in t){for(let e=0;e<t.length;e+=1)t[e]&&r.append(t[e]);l=s>e?s+t.length:s}else r.append(t);for(let e=0;e<c.length;e+=1)r.append(c[e]);o.loop&&n.loopCreate(),o.observer||n.update(),o.loop?n.slideTo(l+n.loopedSlides,0,!1):n.slideTo(l,0,!1)}function me(e){const t=this,{params:n,$wrapperEl:r,activeIndex:o}=t;let i=o;n.loop&&(i-=t.loopedSlides,t.loopDestroy(),t.slides=r.children(`.${n.slideClass}`));let s,a=i;if("object"==typeof e&&"length"in e){for(let n=0;n<e.length;n+=1)s=e[n],t.slides[s]&&t.slides.eq(s).remove(),s<a&&(a-=1);a=Math.max(a,0)}else s=e,t.slides[s]&&t.slides.eq(s).remove(),s<a&&(a-=1),a=Math.max(a,0);n.loop&&t.loopCreate(),n.observer||t.update(),n.loop?t.slideTo(a+t.loopedSlides,0,!1):t.slideTo(a,0,!1)}function ve(){const e=this,t=[];for(let n=0;n<e.slides.length;n+=1)t.push(n);e.removeSlide(t)}function ge({swiper:e}){Object.assign(e,{appendSlide:pe.bind(e),prependSlide:fe.bind(e),addSlide:he.bind(e),removeSlide:me.bind(e),removeAllSlides:ve.bind(e)})}function ye(e){return function(e){if(Array.isArray(e))return be(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return be(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?be(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function be(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}Object.keys(oe).forEach((e=>
1{Object.keys(oe[e]).forEach((t=>{se.prototype[t]=oe[e][t]}))})),se.use([function({swiper:e,on:t,emit:n}){const r=g();let o=null,i=null;const s=()=>{e&&!e.destroyed&&e.initialized&&(n("beforeResize"),n("resize"))},a=()=>{e&&!e.destroyed&&e.initialized&&n("orientationchange")};t("init",(()=>{e.params.resizeObserver&&void 0!==r.ResizeObserver?e&&!e.destroyed&&e.initialized&&(o=new ResizeObserver((t=>{i=r.requestAnimationFrame((()=>{const{width:n,height:r}=e;let o=n,i=r;t.forEach((({contentBoxSize:t,contentRect:n,target:r})=>{r&&r!==e.el||(o=n?n.width:(t[0]||t).inlineSize,i=n?n.height:(t[0]||t).blockSize)})),o===n&&i===r||s()}))})),o.observe(e.el)):(r.addEventListener("resize",s),r.addEventListener("orientationchange",a))})),t("destroy",(()=>{i&&r.cancelAnimationFrame(i),o&&o.unobserve&&e.el&&(o.unobserve(e.el),o=null),r.removeEventListener("resize",s),r.removeEventListener("orientationchange",a)}))},function({swiper:e,extendParams:t,on:n,emit:r}){const o=[],i=g(),s=(e,t={})=>{const n=new(i.MutationObserver||i.WebkitMutationObserver)((e=>{if(1===e.length)return void r("observerUpdate",e[0]);const t=function(){r("observerUpdate",e[0])};i.requestAnimationFrame?i.requestAnimationFrame(t):i.setTimeout(t,0)}));n.observe(e,{attributes:void 0===t.attributes||t.attributes,childList:void 0===t.childList||t.childList,characterData:void 0===t.characterData||t.characterData}),o.push(n)};t({observer:!1,observeParents:!1,observeSlideChildren:!1}),n("init",(()=>{if(e.params.observer){if(e.params.observeParents){const t=e.$el.parents();for(let e=0;e<t.length;e+=1)s(t[e])}s(e.$el[0],{childList:e.params.observeSlideChildren}),s(e.$wrapperEl[0],{attributes:!1})}})),n("destroy",(()=>{o.forEach((e=>{e.disconnect()})),o.splice(0,o.length)}))}]);var Ee,_e,Se,xe,we,Ne=(Ee=["a[href]","area[href]",'input:not([disabled]):not([type="hidden"]):not([aria-hidden])',"select:not([disabled]):not([aria-hidden])","textarea:not([disabled]):not([aria-hidden])","button:not([disabled]):not([aria-hidden])","iframe","object","embed","[contenteditable]",'[tabindex]:not([tabindex^="-"])'],_e=function(){function e(t){var n=t.targetModal,r=t.triggers,o=void 0===r?[]:r,i=t.onShow,s=void 0===i?function(){}:i,a=t.onClose,l=void 0===a?function(){}:a,c=t.openTrigger,u=void 0===c?"data-micromodal-trigger":c,d=t.closeTrigger,p=void 0===d?"data-micromodal-close":d,f=t.openClass,h=void 0===f?"is-open":f,m=t.disableScroll,v=void 0!==m&&m,g=t.disableFocus,y=void 0!==g&&g,b=t.awaitCloseAnimation,E=void 0!==b&&b,_=t.awaitOpenAnimation,S=void 0!==_&&_,x=t.debugMode,w=void 0!==x&&x;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.modal=document.getElementById(n),this.config={debugMode:w,disableScroll:v,openTrigger:u,closeTrigger:p,openClass:h,onShow:s,onClose:l,awaitCloseAnimation:E,awaitOpenAnimation:S,disableFocus:y},o.length>0&&this.registerTriggers.apply(this,ye(o)),this.onClick=this.onClick.bind(this),this.onKeydown=this.onKeydown.bind(this)}var t;return(t=[{key:"registerTriggers",value:function(){for(var e=this,t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];n.filter(Boolean).forEach((function(t){t.addEventListener("click",(function(t){return e.showModal(t)}))}))}},{key:"showModal",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;if(this.activeElement=document.activeElement,this.modal.setAttribute("aria-hidden","false"),this.modal.classList.add(this.config.openClass),this.scrollBehaviour("disable"),this.addEventListeners(),this.config.awaitOpenAnimation){this.modal.addEventListener("animationend",(function t(){e.modal.removeEventListener("animationend",t,!1),e.setFocusToFirstNode()}),!1)}else this.setFocusToFirstNode();this.config.onShow(this.modal,this.activeElement,t)}},{key:"closeModal",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=this.modal;if(this.modal.setAttribute("aria-hidden","true"),this.removeEventListeners(),this.scrollBehaviour("enable"),this.activeElement&&this.activeElement.focus&&this.activeElement.focus(),this.config.onClose(this.modal,this.activeElement,e),this.config.awaitCloseAnimation){var n=this.config.openClass;this.modal.addEventListener("animationend",(function e(){t.classList.remove(n),t.removeEventListener("animationend",e,!1)}),!1)}else t.classList.remove(this.config.openClass)}},{key:"closeModalById",value:function(e){this.modal=document.getElementById(e),this.modal&&this.closeModal()}},{key:"scrollBehaviour",value:function(e){if(this.config.disableScroll){var t=document.querySelector("body");switch(e){case"enable":Object.assign(t.style,{overflow:""});break;case"disable":Object.assign(t.style,{overflow:"hidden"})}}}},{key:"addEventListeners",value:function(){this.modal.addEventListener("touchstart",this.onClick),this.modal.addEventListener("click",this.onClick),document.addEventListener("keydown",this.onKeydown)}},{key:"removeEventListeners",value:function(){this.modal.removeEventListener("touchstart",this.onClick),this.modal.removeEventListener("click",this.onClick),document.removeEventListener("keydown",this.onKeydown)}},{key:"onClick",value:function(e){(e.target.hasAttribute(this.config.closeTrigger)||e.target.parentNode.hasAttribute(this.config.closeTrigger))&&(e.preventDefault(),e.stopPropagation(),this.closeModal(e))}}
1,{key:"onKeydown",value:function(e){27===e.keyCode&&this.closeModal(e),9===e.keyCode&&this.retainFocus(e)}},{key:"getFocusableNodes",value:function(){var e=this.modal.querySelectorAll(Ee);return Array.apply(void 0,ye(e))}},{key:"setFocusToFirstNode",value:function(){var e=this;if(!this.config.disableFocus){var t=this.getFocusableNodes();if(0!==t.length){var n=t.filter((function(t){return!t.hasAttribute(e.config.closeTrigger)}));n.length>0&&n[0].focus(),0===n.length&&t[0].focus()}}}},{key:"retainFocus",value:function(e){var t=this.getFocusableNodes();if(0!==t.length)if(t=t.filter((function(e){return null!==e.offsetParent})),this.modal.contains(document.activeElement)){var n=t.indexOf(document.activeElement);e.shiftKey&&0===n&&(t[t.length-1].focus(),e.preventDefault()),!e.shiftKey&&t.length>0&&n===t.length-1&&(t[0].focus(),e.preventDefault())}else t[0].focus()}}])&&function(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}(e.prototype,t),e}(),Se=null,xe=function(e){if(!document.getElementById(e))return console.warn("MicroModal: âSeems like you have missed %c'".concat(e,"'"),"background-color: #f8f9fa;color: #50596c;font-weight: bold;","ID somewhere in your code. Refer example below to resolve it."),console.warn("%cExample:","background-color: #f8f9fa;color: #50596c;font-weight: bold;",'<div class="modal" id="'.concat(e,'"></div>')),!1},we=function(e,t){if(function(e){e.length<=0&&(console.warn("MicroModal: âPlease specify at least one %c'micromodal-trigger'","background-color: #f8f9fa;color: #50596c;font-weight: bold;","data attribute."),console.warn("%cExample:","background-color: #f8f9fa;color: #50596c;font-weight: bold;",'<a href="#" data-micromodal-trigger="my-modal"></a>'))}(e),!t)return!0;for(var n in t)xe(n);return!0},{init:function(e){var t=Object.assign({},{openTrigger:"data-micromodal-trigger"},e),n=ye(document.querySelectorAll("[".concat(t.openTrigger,"]"))),r=function(e,t){var n=[];return e.forEach((function(e){var r=e.attributes[t].value;void 0===n[r]&&(n[r]=[]),n[r].push(e)})),n}(n,t.openTrigger);if(!0!==t.debugMode||!1!==we(n,r))for(var o in r){var i=r[o];t.targetModal=o,t.triggers=ye(i),Se=new _e(t)}},show:function(e,t){var n=t||{};n.targetModal=e,!0===n.debugMode&&!1===xe(e)||(Se&&Se.removeEventListeners(),(Se=new _e(n)).showModal())},close:function(e){e?Se.closeModalById(e):Se.closeModal()}});"undefined"!=typeof window&&(window.MicroModal=Ne);const Ae=(e=!0)=>{const t=document.querySelector("html"),n=e?window.pageYOffset:parseInt(t.style.top),r={position:"fixed",left:"0px",top:-1*n+"px",overflowY:"scroll"};document.documentElement.style.setProperty("--st",`${n}px`),t.style.width="100%";for(const n in r)t.style[n]=e&&"reset"!==e?r[n]:"";e?"reset"===e&&window.scrollTo(0,0):(window.scrollTo(0,-1*n),document.documentElement.style.setProperty("--st",""))};var Ce,Oe={exports:{}},Te=function(e,t){return function(){for(var n=new Array(arguments.length),r=0;r<n.length;r++)n[r]=arguments[r];return e.apply(t,n)}},$e=Te,Me=Object.prototype.toString,De=(Ce=Object.create(null),function(e){var t=Me.call(e);return Ce[t]||(Ce[t]=t.slice(8,-1).toLowerCase())});function Ie(e){return e=e.toLowerCase(),function(t){return De(t)===e}}function Le(e){return Array.isArray(e)}function ke(e){return void 0===e}var Pe=Ie("ArrayBuffer");function Re(e){return null!==e&&"object"==typeof e}function Ve(e){if("object"!==De(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}var Be=Ie("Date"),Fe=Ie("File"),je=Ie("Blob"),Ue=Ie("FileList");function He(e){return"[object Function]"===Me.call(e)}var Ze=Ie("URLSearchParams");function Ge(e,t){if(null!=e)if("object"!=typeof e&&(e=[e]),Le(e))for(var n=0,r=e.length;n<r;n++)t.call(null,e[n],n,e);else for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.call(null,e[o],o,e)}var ze,qe=(ze="undefined"!=typeof Uint8Array&&Object.getPrototypeOf(Uint8Array),function(e){return ze&&e instanceof ze}),We={isArray:Le,isArrayBuffer:Pe,isBuffer:function(e){return null!==e&&!ke(e)&&null!==e.constructor&&!ke(e.constructor)&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)},isFormData:function(e){var t="[object FormData]";return e&&("function"==typeof FormData&&e instanceof FormData||Me.call(e)===t||He(e.toString)&&e.toString()===t)},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&Pe(e.buffer)},isString:function(e){return"string"==typeof e},isNumber:function(e){return"number"==typeof e},isObject:Re,isPlainObject:Ve,isUndefined:ke,isDate:Be,isFile:Fe,isBlob:je,isFunction:He,isStream:function(e){return Re(e)&&He(e.pipe)},isURLSearchParams:Ze,isStandardBrowserEnv:function(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)}
1,forEach:Ge,merge:function e(){var t={};function n(n,r){Ve(t[r])&&Ve(n)?t[r]=e(t[r],n):Ve(n)?t[r]=e({},n):Le(n)?t[r]=n.slice():t[r]=n}for(var r=0,o=arguments.length;r<o;r++)Ge(arguments[r],n);return t},extend:function(e,t,n){return Ge(t,(function(t,r){e[r]=n&&"function"==typeof t?$e(t,n):t})),e},trim:function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")},stripBOM:function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e},inherits:function(e,t,n,r){e.prototype=Object.create(t.prototype,r),e.prototype.constructor=e,n&&Object.assign(e.prototype,n)},toFlatObject:function(e,t,n){var r,o,i,s={};t=t||{};do{for(o=(r=Object.getOwnPropertyNames(e)).length;o-- >0;)s[i=r[o]]||(t[i]=e[i],s[i]=!0);e=Object.getPrototypeOf(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},kindOf:De,kindOfTest:Ie,endsWith:function(e,t,n){e=String(e),(void 0===n||n>e.length)&&(n=e.length),n-=t.length;var r=e.indexOf(t,n);return-1!==r&&r===n},toArray:function(e){if(!e)return null;var t=e.length;if(ke(t))return null;for(var n=new Array(t);t-- >0;)n[t]=e[t];return n},isTypedArray:qe,isFileList:Ue},Ke=We;function Ye(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var Xe=function(e,t,n){if(!t)return e;var r;if(n)r=n(t);else if(Ke.isURLSearchParams(t))r=t.toString();else{var o=[];Ke.forEach(t,(function(e,t){null!=e&&(Ke.isArray(e)?t+="[]":e=[e],Ke.forEach(e,(function(e){Ke.isDate(e)?e=e.toISOString():Ke.isObject(e)&&(e=JSON.stringify(e)),o.push(Ye(t)+"="+Ye(e))})))})),r=o.join("&")}if(r){var i=e.indexOf("#");-1!==i&&(e=e.slice(0,i)),e+=(-1===e.indexOf("?")?"?":"&")+r}return e},Je=We;function Qe(){this.handlers=[]}Qe.prototype.use=function(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1},Qe.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},Qe.prototype.forEach=function(e){Je.forEach(this.handlers,(function(t){null!==t&&e(t)}))};var et=Qe,tt="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{};function nt(){throw new Error("setTimeout has not been defined")}function rt(){throw new Error("clearTimeout has not been defined")}var ot=nt,it=rt;function st(e){if(ot===setTimeout)return setTimeout(e,0);if((ot===nt||!ot)&&setTimeout)return ot=setTimeout,setTimeout(e,0);try{return ot(e,0)}catch(t){try{return ot.call(null,e,0)}catch(t){return ot.call(this,e,0)}}}"function"==typeof tt.setTimeout&&(ot=setTimeout),"function"==typeof tt.clearTimeout&&(it=clearTimeout);var at,lt=[],ct=!1,ut=-1;function dt(){ct&&at&&(ct=!1,at.length?lt=at.concat(lt):ut=-1,lt.length&&pt())}function pt(){if(!ct){var e=st(dt);ct=!0;for(var t=lt.length;t;){for(at=lt,lt=[];++ut<t;)at&&at[ut].run();ut=-1,t=lt.length}at=null,ct=!1,function(e){if(it===clearTimeout)return clearTimeout(e);if((it===rt||!it)&&clearTimeout)return it=clearTimeout,clearTimeout(e);try{return it(e)}catch(t){try{return it.call(null,e)}catch(t){return it.call(this,e)}}}(e)}}function ft(e,t){this.fun=e,this.array=t}ft.prototype.run=function(){this.fun.apply(null,this.array)};function ht(){}var mt=ht,vt=ht,gt=ht,yt=ht,bt=ht,Et=ht,_t=ht;var St=tt.performance||{},xt=St.now||St.mozNow||St.msNow||St.oNow||St.webkitNow||function(){return(new Date).getTime()};var wt=new Date;var Nt={nextTick:function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];lt.push(new ft(e,t)),1!==lt.length||ct||st(pt)},title:"browser",browser:!0,env:{},argv:[],version:"",versions:{},on:mt,addListener:vt,once:gt,off:yt,removeListener:bt,removeAllListeners:Et,emit:_t,binding:function(e){throw new Error("process.binding is not supported")},cwd:function(){return"/"},chdir:function(e){throw new Error("process.chdir is not supported")},umask:function(){return 0},hrtime:function(e){var t=.001*xt.call(St),n=Math.floor(t),r=Math.floor(t%1*1e9);return e&&(n-=e[0],(r-=e[1])<0&&(n--,r+=1e9)),[n,r]},platform:"browser",release:{},config:{},uptime:function(){return(new Date-wt)/1e3}},At=Nt,Ct=We,Ot=We;function Tt(e,t,n,r,o){Error.call(this),this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),o&&(this.response=o)}Ot.inherits(Tt,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code,status:this.response&&this.response.status?this.response.status:null}}});var $t=Tt.prototype,Mt={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED"].forEach((function(e){Mt[e]={value:e}})),Object.defineProperties(Tt,Mt),Object.defineProperty($t,"isAxiosError",{value:!0}),Tt.from=function(e,t,n,r,o,i){var s=Object.create($t);return Ot.toFlatObject(e,s,(function(e){return e!==Error.prototype})),Tt.call(s,e.message,t,n,r,o),s.name=e.name,i&&Object.assign(s,i),s};var Dt=Tt,It={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},Lt=[],kt=[],Pt="undefined"!=typeof Uint8Array?Uint8Array:Array,Rt=!1;function Vt(){Rt=!0;for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
vendor: 5,704 bytes, line 1
1+/",t=0;t<64;++t)Lt[t]=e[t],kt[e.charCodeAt(t)]=t;kt["-".charCodeAt(0)]=62,kt["_".charCodeAt(0)]=63}function Bt(e,t,n){for(var r,o,i=[],s=t;s<n;s+=3)r=(e[s]<<16)+(e[s+1]<<8)+e[s+2],i.push(Lt[(o=r)>>18&63]+Lt[o>>12&63]+Lt[o>>6&63]+Lt[63&o]);return i.join("")}function Ft(e){var t;Rt||Vt();for(var n=e.length,r=n%3,o="",i=[],s=16383,a=0,l=n-r;a<l;a+=s)i.push(Bt(e,a,a+s>l?l:a+s));return 1===r?(t=e[n-1],o+=Lt[t>>2],o+=Lt[t<<4&63],o+="=="):2===r&&(t=(e[n-2]<<8)+e[n-1],o+=Lt[t>>10],o+=Lt[t>>4&63],o+=Lt[t<<2&63],o+="="),i.push(o),i.join("")}function jt(e,t,n,r,o){var i,s,a=8*o-r-1,l=(1<<a)-1,c=l>>1,u=-7,d=n?o-1:0,p=n?-1:1,f=e[t+d];for(d+=p,i=f&(1<<-u)-1,f>>=-u,u+=a;u>0;i=256*i+e[t+d],d+=p,u-=8);for(s=i&(1<<-u)-1,i>>=-u,u+=r;u>0;s=256*s+e[t+d],d+=p,u-=8);if(0===i)i=1-c;else{if(i===l)return s?NaN:1/0*(f?-1:1);s+=Math.pow(2,r),i-=c}return(f?-1:1)*s*Math.pow(2,i-r)}function Ut(e,t,n,r,o,i){var s,a,l,c=8*i-o-1,u=(1<<c)-1,d=u>>1,p=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,f=r?0:i-1,h=r?1:-1,m=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,s=u):(s=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-s))<1&&(s--,l*=2),(t+=s+d>=1?p/l:p*Math.pow(2,1-d))*l>=2&&(s++,l/=2),s+d>=u?(a=0,s=u):s+d>=1?(a=(t*l-1)*Math.pow(2,o),s+=d):(a=t*Math.pow(2,d-1)*Math.pow(2,o),s=0));o>=8;e[n+f]=255&a,f+=h,a/=256,o-=8);for(s=s<<o|a,c+=o;c>0;e[n+f]=255&s,f+=h,s/=256,c-=8);e[n+f-h]|=128*m}var Ht={}.toString,Zt=Array.isArray||function(e){return"[object Array]"==Ht.call(e)};function Gt(){return qt.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function zt(e,t){if(Gt()<t)throw new RangeError("Invalid typed array length");return qt.TYPED_ARRAY_SUPPORT?(e=new Uint8Array(t)).__proto__=qt.prototype:(null===e&&(e=new qt(t)),e.length=t),e}function qt(e,t,n){if(!(qt.TYPED_ARRAY_SUPPORT||this instanceof qt))return new qt(e,t,n);if("number"==typeof e){if("string"==typeof t)throw new Error("If encoding is specified then the first argument must be a string");return Yt(this,e)}return Wt(this,e,t,n)}function Wt(e,t,n,r){if("number"==typeof t)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&t instanceof ArrayBuffer?function(e,t,n,r){if(t.byteLength,n<0||t.byteLength<n)throw new RangeError("'offset' is out of bounds");if(t.byteLength<n+(r||0))throw new RangeError("'length' is out of bounds");t=void 0===n&&void 0===r?new Uint8Array(t):void 0===r?new Uint8Array(t,n):new Uint8Array(t,n,r);qt.TYPED_ARRAY_SUPPORT?(e=t).__proto__=qt.prototype:e=Xt(e,t);return e}(e,t,n,r):"string"==typeof t?function(e,t,n){"string"==typeof n&&""!==n||(n="utf8");if(!qt.isEncoding(n))throw new TypeError('"encoding" must be a valid string encoding');var r=0|en(t,n);e=zt(e,r);var o=e.write(t,n);o!==r&&(e=e.slice(0,o));return e}(e,t,n):function(e,t){if(Qt(t)){var n=0|Jt(t.length);return 0===(e=zt(e,n)).length||t.copy(e,0,0,n),e}if(t){if("undefined"!=typeof ArrayBuffer&&t.buffer instanceof ArrayBuffer||"length"in t)return"number"!=typeof t.length||(r=t.length)!=r?zt(e,0):Xt(e,t);if("Buffer"===t.type&&Zt(t.data))return Xt(e,t.data)}var r;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(e,t)}function Kt(e){if("number"!=typeof e)throw new TypeError('"size" argument must be a number');if(e<0)throw new RangeError('"size" argument must not be negative')}function Yt(e,t){if(Kt(t),e=zt(e,t<0?0:0|Jt(t)),!qt.TYPED_ARRAY_SUPPORT)for(var n=0;n<t;++n)e[n]=0;return e}function Xt(e,t){var n=t.length<0?0:0|Jt(t.length);e=zt(e,n);for(var r=0;r<n;r+=1)e[r]=255&t[r];return e}function Jt(e){if(e>=Gt())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+Gt().toString(16)+" bytes");return 0|e}function Qt(e){return!(null==e||!e._isBuffer)}function en(e,t){if(Qt(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return On(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return Tn(e).length;default:if(r)return On(e).length;t=(""+t).toLowerCase(),r=!0}}function tn(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return gn(this,t,n);case"utf8":case"utf-8":return fn(this,t,n);case"ascii":return mn(this,t,n);case"latin1":case"binary":return vn(this,t,n);case"base64":return pn(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return yn(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function nn(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function rn(e,t,n,r,o){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=o?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(o)return-1;n=e.length-1}else if(n<0){if(!o)return-1;n=0}if("string"==typeof t&&(t=qt.from(t,r)),Qt(t))return 0===t.length?-1:on(e,t,n,r,o);if("number"==typeof t)return t&=255,qt.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):on(e,[t],n,r,o);throw new TypeError("val must be string, number or Buffer")}function on(e,t,n,r,o){var i,s=1,a=e.length,l=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;
vendor: 6,155 bytes, line 1
1s=2,a/=2,l/=2,n/=2}function c(e,t){return 1===s?e[t]:e.readUInt16BE(t*s)}if(o){var u=-1;for(i=n;i<a;i++)if(c(e,i)===c(t,-1===u?0:i-u)){if(-1===u&&(u=i),i-u+1===l)return u*s}else-1!==u&&(i-=i-u),u=-1}else for(n+l>a&&(n=a-l),i=n;i>=0;i--){for(var d=!0,p=0;p<l;p++)if(c(e,i+p)!==c(t,p)){d=!1;break}if(d)return i}return-1}function sn(e,t,n,r){n=Number(n)||0;var o=e.length-n;r?(r=Number(r))>o&&(r=o):r=o;var i=t.length;if(i%2!=0)throw new TypeError("Invalid hex string");r>i/2&&(r=i/2);for(var s=0;s<r;++s){var a=parseInt(t.substr(2*s,2),16);if(isNaN(a))return s;e[n+s]=a}return s}function an(e,t,n,r){return $n(On(t,e.length-n),e,n,r)}function ln(e,t,n,r){return $n(function(e){for(var t=[],n=0;n<e.length;++n)t.push(255&e.charCodeAt(n));return t}(t),e,n,r)}function cn(e,t,n,r){return ln(e,t,n,r)}function un(e,t,n,r){return $n(Tn(t),e,n,r)}function dn(e,t,n,r){return $n(function(e,t){for(var n,r,o,i=[],s=0;s<e.length&&!((t-=2)<0);++s)r=(n=e.charCodeAt(s))>>8,o=n%256,i.push(o),i.push(r);return i}(t,e.length-n),e,n,r)}function pn(e,t,n){return 0===t&&n===e.length?Ft(e):Ft(e.slice(t,n))}function fn(e,t,n){n=Math.min(e.length,n);for(var r=[],o=t;o<n;){var i,s,a,l,c=e[o],u=null,d=c>239?4:c>223?3:c>191?2:1;if(o+d<=n)switch(d){case 1:c<128&&(u=c);break;case 2:128==(192&(i=e[o+1]))&&(l=(31&c)<<6|63&i)>127&&(u=l);break;case 3:i=e[o+1],s=e[o+2],128==(192&i)&&128==(192&s)&&(l=(15&c)<<12|(63&i)<<6|63&s)>2047&&(l<55296||l>57343)&&(u=l);break;case 4:i=e[o+1],s=e[o+2],a=e[o+3],128==(192&i)&&128==(192&s)&&128==(192&a)&&(l=(15&c)<<18|(63&i)<<12|(63&s)<<6|63&a)>65535&&l<1114112&&(u=l)}null===u?(u=65533,d=1):u>65535&&(u-=65536,r.push(u>>>10&1023|55296),u=56320|1023&u),r.push(u),o+=d}return function(e){var t=e.length;if(t<=hn)return String.fromCharCode.apply(String,e);var n="",r=0;for(;r<t;)n+=String.fromCharCode.apply(String,e.slice(r,r+=hn));return n}(r)}qt.TYPED_ARRAY_SUPPORT=void 0===tt.TYPED_ARRAY_SUPPORT||tt.TYPED_ARRAY_SUPPORT,Gt(),qt.poolSize=8192,qt._augment=function(e){return e.__proto__=qt.prototype,e},qt.from=function(e,t,n){return Wt(null,e,t,n)},qt.TYPED_ARRAY_SUPPORT&&(qt.prototype.__proto__=Uint8Array.prototype,qt.__proto__=Uint8Array),qt.alloc=function(e,t,n){return function(e,t,n,r){return Kt(t),t<=0?zt(e,t):void 0!==n?"string"==typeof r?zt(e,t).fill(n,r):zt(e,t).fill(n):zt(e,t)}(null,e,t,n)},qt.allocUnsafe=function(e){return Yt(null,e)},qt.allocUnsafeSlow=function(e){return Yt(null,e)},qt.isBuffer=function(e){return null!=e&&(!!e._isBuffer||Mn(e)||function(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&Mn(e.slice(0,0))}(e))},qt.compare=function(e,t){if(!Qt(e)||!Qt(t))throw new TypeError("Arguments must be Buffers");if(e===t)return 0;for(var n=e.length,r=t.length,o=0,i=Math.min(n,r);o<i;++o)if(e[o]!==t[o]){n=e[o],r=t[o];break}return n<r?-1:r<n?1:0},qt.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},qt.concat=function(e,t){if(!Zt(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return qt.alloc(0);var n;if(void 0===t)for(t=0,n=0;n<e.length;++n)t+=e[n].length;var r=qt.allocUnsafe(t),o=0;for(n=0;n<e.length;++n){var i=e[n];if(!Qt(i))throw new TypeError('"list" argument must be an Array of Buffers');i.copy(r,o),o+=i.length}return r},qt.byteLength=en,qt.prototype._isBuffer=!0,qt.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;t<e;t+=2)nn(this,t,t+1);return this},qt.prototype.swap32=function(){var e=this.length;if(e%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;t<e;t+=4)nn(this,t,t+3),nn(this,t+1,t+2);return this},qt.prototype.swap64=function(){var e=this.length;if(e%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;t<e;t+=8)nn(this,t,t+7),nn(this,t+1,t+6),nn(this,t+2,t+5),nn(this,t+3,t+4);return this},qt.prototype.toString=function(){var e=0|this.length;return 0===e?"":0===arguments.length?fn(this,0,e):tn.apply(this,arguments)},qt.prototype.equals=function(e){if(!Qt(e))throw new TypeError("Argument must be a Buffer");return this===e||0===qt.compare(this,e)},qt.prototype.inspect=function(){var e="";return this.length>0&&(e=this.toString("hex",0,50).match(/.{2}/g).join(" "),this.length>50&&(e+=" ... ")),"<Buffer "+e+">"},qt.prototype.compare=function(e,t,n,r,o){if(!Qt(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===o&&(o=this.length),t<0||n>e.length||r<0||o>this.length)throw new RangeError("out of range index");if(r>=o&&t>=n)return 0;if(r>=o)return-1;if(t>=n)return 1;if(this===e)return 0;for(var i=(o>>>=0)-(r>>>=0),s=(n>>>=0)-(t>>>=0),a=Math.min(i,s),l=this.slice(r,o),c=e.slice(t,n),u=0;u<a;++u)if(l[u]!==c[u]){i=l[u],s=c[u];break}return i<s?-1:s<i?1:0},qt.prototype.includes=function(e,t,n){return-1!==this.indexOf(e,t,n)},qt.prototype.indexOf=function(e,t,n){return rn(this,e,t,n,!0)},qt.prototype.lastIndexOf=function(e,t,n){return rn(this,e,t,n,!1)},qt.prototype.write=function(e,t,n,r){if(void 0===t)r="utf8",n=this.length,t=0;else if(void 0===n&&"string"==typeof t)r=t,n=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t|=0,isFinite(n)?(n|=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}var o=this.length-t;if((void 0===n||n>o)&&(n=o),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var i=!1;;)switch(r){case"hex":return sn(this,e,t,n);case"utf8":case"utf-8":return an(this,e,t,n);case"ascii":return ln(this,e,t,n);case"latin1":case"binary":return cn(this,e,t,n);case"base64":return un(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return dn(this,e,t,n);default:if(i)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),i=!0}},qt.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var hn=4096;
vendor: 8,206 bytes, line 1
1function mn(e,t,n){var r="";n=Math.min(e.length,n);for(var o=t;o<n;++o)r+=String.fromCharCode(127&e[o]);return r}function vn(e,t,n){var r="";n=Math.min(e.length,n);for(var o=t;o<n;++o)r+=String.fromCharCode(e[o]);return r}function gn(e,t,n){var r=e.length;(!t||t<0)&&(t=0),(!n||n<0||n>r)&&(n=r);for(var o="",i=t;i<n;++i)o+=Cn(e[i]);return o}function yn(e,t,n){for(var r=e.slice(t,n),o="",i=0;i<r.length;i+=2)o+=String.fromCharCode(r[i]+256*r[i+1]);return o}function bn(e,t,n){if(e%1!=0||e<0)throw new RangeError("offset is not uint");if(e+t>n)throw new RangeError("Trying to access beyond buffer length")}function En(e,t,n,r,o,i){if(!Qt(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>o||t<i)throw new RangeError('"value" argument is out of bounds');if(n+r>e.length)throw new RangeError("Index out of range")}function _n(e,t,n,r){t<0&&(t=65535+t+1);for(var o=0,i=Math.min(e.length-n,2);o<i;++o)e[n+o]=(t&255<<8*(r?o:1-o))>>>8*(r?o:1-o)}function Sn(e,t,n,r){t<0&&(t=4294967295+t+1);for(var o=0,i=Math.min(e.length-n,4);o<i;++o)e[n+o]=t>>>8*(r?o:3-o)&255}function xn(e,t,n,r,o,i){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function wn(e,t,n,r,o){return o||xn(e,0,n,4),Ut(e,t,n,r,23,4),n+4}function Nn(e,t,n,r,o){return o||xn(e,0,n,8),Ut(e,t,n,r,52,8),n+8}qt.prototype.slice=function(e,t){var n,r=this.length;if((e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t<e&&(t=e),qt.TYPED_ARRAY_SUPPORT)(n=this.subarray(e,t)).__proto__=qt.prototype;else{var o=t-e;n=new qt(o,void 0);for(var i=0;i<o;++i)n[i]=this[i+e]}return n},qt.prototype.readUIntLE=function(e,t,n){e|=0,t|=0,n||bn(e,t,this.length);for(var r=this[e],o=1,i=0;++i<t&&(o*=256);)r+=this[e+i]*o;return r},qt.prototype.readUIntBE=function(e,t,n){e|=0,t|=0,n||bn(e,t,this.length);for(var r=this[e+--t],o=1;t>0&&(o*=256);)r+=this[e+--t]*o;return r},qt.prototype.readUInt8=function(e,t){return t||bn(e,1,this.length),this[e]},qt.prototype.readUInt16LE=function(e,t){return t||bn(e,2,this.length),this[e]|this[e+1]<<8},qt.prototype.readUInt16BE=function(e,t){return t||bn(e,2,this.length),this[e]<<8|this[e+1]},qt.prototype.readUInt32LE=function(e,t){return t||bn(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},qt.prototype.readUInt32BE=function(e,t){return t||bn(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},qt.prototype.readIntLE=function(e,t,n){e|=0,t|=0,n||bn(e,t,this.length);for(var r=this[e],o=1,i=0;++i<t&&(o*=256);)r+=this[e+i]*o;return r>=(o*=128)&&(r-=Math.pow(2,8*t)),r},qt.prototype.readIntBE=function(e,t,n){e|=0,t|=0,n||bn(e,t,this.length);for(var r=t,o=1,i=this[e+--r];r>0&&(o*=256);)i+=this[e+--r]*o;return i>=(o*=128)&&(i-=Math.pow(2,8*t)),i},qt.prototype.readInt8=function(e,t){return t||bn(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},qt.prototype.readInt16LE=function(e,t){t||bn(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},qt.prototype.readInt16BE=function(e,t){t||bn(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},qt.prototype.readInt32LE=function(e,t){return t||bn(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},qt.prototype.readInt32BE=function(e,t){return t||bn(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},qt.prototype.readFloatLE=function(e,t){return t||bn(e,4,this.length),jt(this,e,!0,23,4)},qt.prototype.readFloatBE=function(e,t){return t||bn(e,4,this.length),jt(this,e,!1,23,4)},qt.prototype.readDoubleLE=function(e,t){return t||bn(e,8,this.length),jt(this,e,!0,52,8)},qt.prototype.readDoubleBE=function(e,t){return t||bn(e,8,this.length),jt(this,e,!1,52,8)},qt.prototype.writeUIntLE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||En(this,e,t,n,Math.pow(2,8*n)-1,0);var o=1,i=0;for(this[t]=255&e;++i<n&&(o*=256);)this[t+i]=e/o&255;return t+n},qt.prototype.writeUIntBE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||En(this,e,t,n,Math.pow(2,8*n)-1,0);var o=n-1,i=1;for(this[t+o]=255&e;--o>=0&&(i*=256);)this[t+o]=e/i&255;return t+n},qt.prototype.writeUInt8=function(e,t,n){return e=+e,t|=0,n||En(this,e,t,1,255,0),qt.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},qt.prototype.writeUInt16LE=function(e,t,n){return e=+e,t|=0,n||En(this,e,t,2,65535,0),qt.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):_n(this,e,t,!0),t+2},qt.prototype.writeUInt16BE=function(e,t,n){return e=+e,t|=0,n||En(this,e,t,2,65535,0),qt.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):_n(this,e,t,!1),t+2},qt.prototype.writeUInt32LE=function(e,t,n){return e=+e,t|=0,n||En(this,e,t,4,4294967295,0),qt.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):Sn(this,e,t,!0),t+4},qt.prototype.writeUInt32BE=function(e,t,n){return e=+e,t|=0,n||En(this,e,t,4,4294967295,0),qt.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):Sn(this,e,t,!1),t+4},qt.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t|=0,!r){var o=Math.pow(2,8*n-1);En(this,e,t,n,o-1,-o)}var i=0,s=1,a=0;for(this[t]=255&e;++i<n&&(s*=256);)e<0&&0===a&&0!==this[t+i-1]&&(a=1),this[t+i]=(e/s|0)-a&255;return t+n},qt.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t|=0,!r){var o=Math.pow(2,8*n-1);En(this,e,t,n,o-1,-o)}var i=n-1,s=1,a=0;for(this[t+i]=255&e;--i>=0&&(s*=256);)e<0&&0===a&&0!==this[t+i+1]&&(a=1),this[t+i]=(e/s|0)-a&255;return t+n},qt.prototype.writeInt8=function(e,t,n){return e=+e,t|=0,n||En(this,e,t,1,127,-128),qt.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},qt.prototype.writeInt16LE=function(e,t,n){return e=+e,t|=0,n||En(this,e,t,2,32767,-32768),qt.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):_n(this,e,t,!0),t+2},qt.prototype.writeInt16BE=function(e,t,n){return e=+e,t|=0,n||En(this,e,t,2,32767,-32768),qt.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):_n(this,e,t,!1),t+2},qt.prototype.writeInt32LE=function(e,t,n){return e=+e,t|=0,n||En(this,e,t,4,2147483647,-2147483648),qt.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):Sn(this,e,t,!0),t+4},qt.prototype.writeInt32BE=function(e,t,n){return e=+e,t|=0,n||En(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),qt.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):Sn(this,e,t,!1),t+4},qt.prototype.writeFloatLE=function(e,t,n){return wn(this,e,t,!0,n)},qt.prototype.writeFloatBE=function(e,t,n){return wn(this,e,t,!1,n)},qt.prototype.writeDoubleLE=function(e,t,n){return Nn(this,e,t,!0,n)},qt.prototype.writeDoubleBE=function(e,t,n){return Nn(this,e,t,!1,n)},qt.prototype.copy=function(e,t,n,r){if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r<n&&(r=n),r===n)return 0;if(0===e.length||0===this.length)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t<r-n&&(r=e.length-t+n);var o,i=r-n;if(this===e&&n<t&&t<r)for(o=i-1;o>=0;--o)e[o+t]=this[o+n];else if(i<1e3||!qt.TYPED_ARRAY_SUPPORT)for(o=0;o<i;++o)e[o+t]=this[o+n];else Uint8Array.prototype.set.call(e,this.subarray(n,n+i),t);return i},qt.prototype.fill=function(e,t,n,r){if("string"==typeof e){if("string"==typeof t?(r=t,t=0,n=this.length):"string"==typeof n&&(r=n,n=this.length),1===e.length){var o=e.charCodeAt(0);o<256&&(e=o)}if(void 0!==r&&"string"!=typeof r)throw new TypeError("encoding must be a string");if("string"==typeof r&&!qt.isEncoding(r))throw new TypeError("Unknown encoding: "+r)}else"number"==typeof e&&(e&=255);if(t<0||this.length<t||this.length<n)throw new RangeError("Out of range index");if(n<=t)return this;var i;if(t>>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(i=t;i<n;++i)this[i]=e;else{var s=Qt(e)?e:On(new qt(e,r).toString()),a=s.length;for(i=0;i<n-t;++i)this[i+t]=s[i%a]}return this};var An=/[^+\/0-9A-Za-z-_]/g;function Cn(e){return e<16?"0"+e.toString(16):e.toString(16)}function On(e,t){var n;t=t||1/0;for(var r=e.length,o=null,i=[],s=0;s<r;++s){if((n=e.charCodeAt(s))>55295&&n<57344){if(!o){if(n>56319){(t-=3)>
1-1&&i.push(239,191,189);continue}if(s+1===r){(t-=3)>-1&&i.push(239,191,189);continue}o=n;continue}if(n<56320){(t-=3)>-1&&i.push(239,191,189),o=n;continue}n=65536+(o-55296<<10|n-56320)}else o&&(t-=3)>-1&&i.push(239,191,189);if(o=null,n<128){if((t-=1)<0)break;i.push(n)}else if(n<2048){if((t-=2)<0)break;i.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;i.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return i}function Tn(e){return function(e){var t,n,r,o,i,s;Rt||Vt();var a=e.length;if(a%4>0)throw new Error("Invalid string. Length must be a multiple of 4");i="="===e[a-2]?2:"="===e[a-1]?1:0,s=new Pt(3*a/4-i),r=i>0?a-4:a;var l=0;for(t=0,n=0;t<r;t+=4,n+=3)o=kt[e.charCodeAt(t)]<<18|kt[e.charCodeAt(t+1)]<<12|kt[e.charCodeAt(t+2)]<<6|kt[e.charCodeAt(t+3)],s[l++]=o>>16&255,s[l++]=o>>8&255,s[l++]=255&o;return 2===i?(o=kt[e.charCodeAt(t)]<<2|kt[e.charCodeAt(t+1)]>>4,s[l++]=255&o):1===i&&(o=kt[e.charCodeAt(t)]<<10|kt[e.charCodeAt(t+1)]<<4|kt[e.charCodeAt(t+2)]>>2,s[l++]=o>>8&255,s[l++]=255&o),s}(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(An,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function $n(e,t,n,r){for(var o=0;o<r&&!(o+n>=t.length||o>=e.length);++o)t[o+n]=e[o];return o}function Mn(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}var Dn=We;var In=function(e,t){t=t||new FormData;var n=[];function r(e){return null===e?"":Dn.isDate(e)?e.toISOString():Dn.isArrayBuffer(e)||Dn.isTypedArray(e)?"function"==typeof Blob?new Blob([e]):qt.from(e):e}return function e(o,i){if(Dn.isPlainObject(o)||Dn.isArray(o)){if(-1!==n.indexOf(o))throw Error("Circular reference detected in "+i);n.push(o),Dn.forEach(o,(function(n,o){if(!Dn.isUndefined(n)){var s,a=i?i+"."+o:o;if(n&&!i&&"object"==typeof n)if(Dn.endsWith(o,"{}"))n=JSON.stringify(n);else if(Dn.endsWith(o,"[]")&&(s=Dn.toArray(n)))return void s.forEach((function(e){!Dn.isUndefined(e)&&t.append(a,r(e))}));e(n,a)}})),n.pop()}else t.append(i,r(o))}(e),t},Ln=Dt,kn=We,Pn=kn.isStandardBrowserEnv()?{write:function(e,t,n,r,o,i){var s=[];s.push(e+"="+encodeURIComponent(t)),kn.isNumber(n)&&s.push("expires="+new Date(n).toGMTString()),kn.isString(r)&&s.push("path="+r),kn.isString(o)&&s.push("domain="+o),!0===i&&s.push("secure"),document.cookie=s.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}},Rn=function(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)},Vn=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e},Bn=function(e,t){return e&&!Rn(t)?Vn(e,t):t},Fn=We,jn=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"],Un=We,Hn=Un.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function r(e){var r=e;return t&&(n.setAttribute("href",r),r=n.href),n.setAttribute("href",r),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return e=r(window.location.href),function(t){var n=Un.isString(t)?r(t):t;return n.protocol===e.protocol&&n.host===e.host}}():function(){return!0},Zn=Dt;function Gn(e){Zn.call(this,null==e?"canceled":e,Zn.ERR_CANCELED),this.name="CanceledError"}We.inherits(Gn,Zn,{__CANCEL__:!0});var zn=Gn,qn=We,Wn=function(e,t,n){var r=n.config.validateStatus;n.status&&r&&!r(n.status)?t(new Ln("Request failed with status code "+n.status,[Ln.ERR_BAD_REQUEST,Ln.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n)):e(n)},Kn=Pn,Yn=Xe,Xn=Bn,Jn=function(e){var t,n,r,o={};return e?(Fn.forEach(e.split("\n"),(function(e){if(r=e.indexOf(":"),t=Fn.trim(e.substr(0,r)).toLowerCase(),n=Fn.trim(e.substr(r+1)),t){if(o[t]&&jn.indexOf(t)>=0)return;o[t]="set-cookie"===t?(o[t]?o[t]:[]).concat([n]):o[t]?o[t]+", "+n:n}})),o):o},Qn=Hn,er=It,tr=Dt,nr=zn,rr=function(e){var t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""},or=function(e){return new Promise((function(t,n){var r,o=e.data,i=e.headers,s=e.responseType;function a(){e.cancelToken&&e.cancelToken.unsubscribe(r),e.signal&&e.signal.removeEventListener("abort",r)}qn.isFormData(o)&&qn.isStandardBrowserEnv()&&delete i["Content-Type"];var l=new XMLHttpRequest;if(e.auth){var c=e.auth.username||"",u=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";i.Authorization="Basic "+btoa(c+":"+u)}var d=Xn(e.baseURL,e.url);function p(){if(l){var r="getAllResponseHeaders"in l?Jn(l.getAllResponseHeaders()):null,o={data:s&&"text"!==s&&"json"!==s?l.response:l.responseText,status:l.status,statusText:l.statusText,headers:r,config:e,request:l};Wn((function(e){t(e),a()}),(function(e){n(e),a()}),o),l=null}}if(l.open(e.method.toUpperCase(),Yn(d,e.params,e.paramsSerializer),!0),l.timeout=e.timeout,"onloadend"in l?l.onloadend=p:l.onreadystatechange=function(){l&&4===l.readyState&&(0!==l.status||l.responseURL&&0===l.responseURL.indexOf("file:"))&&setTimeout(p)},l.onabort=function(){l&&(n(new tr("Request aborted",tr.ECONNABORTED,e,l)),l=null)},l.onerror=function(){n(new tr("Network Error",tr.ERR_NETWORK,e,l,l)),l=null},l.ontimeout=function(){var t=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded",r=e.transitional||er;e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),n(new tr(t,r.clarifyTimeoutError?tr.ETIMEDOUT:tr.ECONNABORTED,e,l)),l=null},qn.isStandardBrowserEnv()){var f=(e.withCredentials||Qn(d))&&e.xsrfCookieName?Kn.read(e.xsrfCookieName):void 0;f&&(i[e.xsrfHeaderName]=f)}
1"setRequestHeader"in l&&qn.forEach(i,(function(e,t){void 0===o&&"content-type"===t.toLowerCase()?delete i[t]:l.setRequestHeader(t,e)})),qn.isUndefined(e.withCredentials)||(l.withCredentials=!!e.withCredentials),s&&"json"!==s&&(l.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&l.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&l.upload&&l.upload.addEventListener("progress",e.onUploadProgress),(e.cancelToken||e.signal)&&(r=function(e){l&&(n(!e||e&&e.type?new nr:e),l.abort(),l=null)},e.cancelToken&&e.cancelToken.subscribe(r),e.signal&&(e.signal.aborted?r():e.signal.addEventListener("abort",r))),o||(o=null);var h=rr(d);h&&-1===["http","https","file"].indexOf(h)?n(new tr("Unsupported protocol "+h+":",tr.ERR_BAD_REQUEST,e)):l.send(o)}))},ir=We,sr=function(e,t){Ct.forEach(e,(function(n,r){r!==t&&r.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[r])}))},ar=Dt,lr=In,cr={"Content-Type":"application/x-www-form-urlencoded"};function ur(e,t){!ir.isUndefined(e)&&ir.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var dr,pr={transitional:It,adapter:(("undefined"!=typeof XMLHttpRequest||void 0!==At&&"[object process]"===Object.prototype.toString.call(At))&&(dr=or),dr),transformRequest:[function(e,t){if(sr(t,"Accept"),sr(t,"Content-Type"),ir.isFormData(e)||ir.isArrayBuffer(e)||ir.isBuffer(e)||ir.isStream(e)||ir.isFile(e)||ir.isBlob(e))return e;if(ir.isArrayBufferView(e))return e.buffer;if(ir.isURLSearchParams(e))return ur(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString();var n,r=ir.isObject(e),o=t&&t["Content-Type"];if((n=ir.isFileList(e))||r&&"multipart/form-data"===o){var i=this.env&&this.env.FormData;return lr(n?{"files[]":e}:e,i&&new i)}return r||"application/json"===o?(ur(t,"application/json"),function(e,t,n){if(ir.isString(e))try{return(t||JSON.parse)(e),ir.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(n||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional||pr.transitional,n=t&&t.silentJSONParsing,r=t&&t.forcedJSONParsing,o=!n&&"json"===this.responseType;if(o||r&&ir.isString(e)&&e.length)try{return JSON.parse(e)}catch(e){if(o){if("SyntaxError"===e.name)throw ar.from(e,ar.ERR_BAD_RESPONSE,this,null,this.response);throw e}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:null},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};ir.forEach(["delete","get","head"],(function(e){pr.headers[e]={}})),ir.forEach(["post","put","patch"],(function(e){pr.headers[e]=ir.merge(cr)}));var fr=pr,hr=We,mr=fr,vr=function(e){return!(!e||!e.__CANCEL__)},gr=We,yr=function(e,t,n){var r=this||mr;return hr.forEach(n,(function(n){e=n.call(r,e,t)})),e},br=vr,Er=fr,_r=zn;function Sr(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new _r}var xr=We,wr=function(e,t){t=t||{};var n={};function r(e,t){return xr.isPlainObject(e)&&xr.isPlainObject(t)?xr.merge(e,t):xr.isPlainObject(t)?xr.merge({},t):xr.isArray(t)?t.slice():t}function o(n){return xr.isUndefined(t[n])?xr.isUndefined(e[n])?void 0:r(void 0,e[n]):r(e[n],t[n])}function i(e){if(!xr.isUndefined(t[e]))return r(void 0,t[e])}function s(n){return xr.isUndefined(t[n])?xr.isUndefined(e[n])?void 0:r(void 0,e[n]):r(void 0,t[n])}function a(n){return n in t?r(e[n],t[n]):n in e?r(void 0,e[n]):void 0}var l={url:i,method:i,data:i,baseURL:s,transformRequest:s,transformResponse:s,paramsSerializer:s,timeout:s,timeoutMessage:s,withCredentials:s,adapter:s,responseType:s,xsrfCookieName:s,xsrfHeaderName:s,onUploadProgress:s,onDownloadProgress:s,decompress:s,maxContentLength:s,maxBodyLength:s,beforeRedirect:s,transport:s,httpAgent:s,httpsAgent:s,cancelToken:s,socketPath:s,responseEncoding:s,validateStatus:a};return xr.forEach(Object.keys(e).concat(Object.keys(t)),(function(e){var t=l[e]||o,r=t(e);xr.isUndefined(r)&&t!==a||(n[e]=r)})),n},Nr="0.27.2",Ar=Nr,Cr=Dt,Or={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){Or[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}}));var Tr={};Or.transitional=function(e,t,n){function r(e,t){return"[Axios v"+Ar+"] Transitional option '"+e+"'"+t+(n?". "+n:"")}return function(n,o,i){if(!1===e)throw new Cr(r(o," has been removed"+(t?" in "+t:"")),Cr.ERR_DEPRECATED);return t&&!Tr[o]&&(Tr[o]=!0,console.warn(r(o," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(n,o,i)}};var $r={assertOptions:function(e,t,n){if("object"!=typeof e)throw new Cr("options must be an object",Cr.ERR_BAD_OPTION_VALUE);for(var r=Object.keys(e),o=r.length;o-- >0;){var i=r[o],s=t[i];if(s){var a=e[i],l=void 0===a||s(a,i,e);if(!0!==l)throw new Cr("option "+i+" must be "+l,Cr.ERR_BAD_OPTION_VALUE)}else if(!0!==n)throw new Cr("Unknown option "+i,Cr.ERR_BAD_OPTION)}},validators:Or},Mr=We,Dr=Xe,Ir=et,Lr=function(e){return Sr(e),e.headers=e.headers||{},e.data=yr.call(e,e.data,e.headers,e.transformRequest),e.headers=gr.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),gr.forEach(["delete","get","head","post","put","patch","common"],(function(t){delete e.headers[t]})),(e.adapter||Er.adapter)(e).then((function(t){return Sr(e),t.data=yr.call(e,t.data,t.headers,e.transformResponse),t}),(function(t){return br(t)||(Sr(e),t&&t.response&&(t.response.data=yr.call(e,t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))},kr=wr,Pr=Bn,Rr=$r,Vr=Rr.validators;function Br(e){this.defaults=e,this.interceptors={request:new Ir,response:new Ir}}Br.prototype.request=function(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},(t=kr(this.defaults,t)).method?t.method=t.method.toLowerCase():this.defaults.method?t.method=this.defaults.method.toLowerCase():t.method="get";var n=t.transitional;void 0!==n&&Rr.assertOptions(n,{silentJSONParsing:Vr.transitional(Vr.boolean),forcedJSONParsing:Vr.transitional(Vr.boolean),clarifyTimeoutError:Vr.transitional(Vr.boolean)},!1);var r=[],o=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(o=o&&e.synchronous,r.unshift(e.fulfilled,e.rejected))}));var i,s=[];if(this.interceptors.response.forEach((function(e){s.push(e.fulfilled,e.rejected)})),!o){var a=[Lr,void 0];for(Array.prototype.unshift.apply(a,r),a=a.concat(s),i=Promise.resolve(t);a.length;)i=i.then(a.shift(),a.shift());return i}for(var l=t;r.length;){var c=r.shift(),u=r.shift();try{l=c(l)}catch(e){u(e);break}}try{i=Lr(l)}catch(e){return Promise.reject(e)}for(;s.length;)i=i.then(s.shift(),s.shift());return i},Br.prototype.getUri=function(e){e=kr(this.defaults,e);var t=Pr(e.baseURL,e.url);return Dr(t,e.params,e.paramsSerializer)},Mr.forEach(["delete","get","head","options"],(function(e){Br.prototype[e]=function(t,n){return this.request(kr(n||{},{method:e,url:t,data:(n||{}).data}))}})),Mr.forEach(["post","put","patch"],(function(e){function t(t){return function(n,r,o){return this.request(kr(o||{},{method:e,headers:t?{"Content-Type":"multipart/form-data"}:{},url:n,data:r}))}}Br.prototype[e]=t(),Br.prototype[e+"Form"]=t(!0)}));var Fr=Br,jr=zn;function Ur(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise((function(e){t=e}));var n=this;this.promise.then((function(e){if(n._listeners){var t,r=n._listeners.length;for(t=0;t<r;t++)n._listeners[t](e);n._listeners=null}})),this.promise.then=function(e){var t,r=new Promise((function(e){n.subscribe(e),t=e})).then(e);return r.cancel=function(){n.unsubscribe(t)},r},e((function(e){n.reason||(n.reason=new jr(e),t(n.reason))}))}Ur.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},Ur.prototype.subscribe=function(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]},Ur.prototype.unsubscribe=function(e){if(this._listeners){var t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}},Ur.source=function(){var e;return{token:new Ur((function(t){e=t})),cancel:e}};var Hr=Ur,Zr=We,Gr=We,zr=Te,qr=Fr,Wr=wr;var Kr=function e(t){var n=new qr(t),r=zr(qr.prototype.request,n);return Gr.extend(r,qr.prototype,n),Gr.extend(r,n),r.create=function(n){return e(Wr(t,n))},r}(fr);Kr.Axios=qr,Kr.CanceledError=zn,Kr.CancelToken=Hr,Kr.isCancel=vr,Kr.VERSION=Nr,Kr.toF
1ormData=In,Kr.AxiosError=Dt,Kr.Cancel=Kr.CanceledError,Kr.all=function(e){return Promise.all(e)},Kr.spread=function(e){return function(t){return e.apply(null,t)}},Kr.isAxiosError=function(e){return Zr.isObject(e)&&!0===e.isAxiosError},Oe.exports=Kr,Oe.exports.default=Kr;var Yr=Oe.exports;const Xr=function(){this.comparisonSlider=null,this.catalogSlider=null,this.catalogSliderThumbnail=null,this.catalogSliderOpt="",this.catalogSliderThumbnailOpt="",this.comparisonStorage=[],this.apiUrl="/async/front/modal_list"};Xr.prototype={init(){this.termsReset(),this.ac(),document.querySelector(".js-comparison-slider")&&this.slider(),document.querySelector(".js-price-attention-modal")&&this.priceAttentionModal(),window.addEventListener("load",(()=>{document.querySelector(".js-comparison-slider")&&(this.modal(),this.checkComparisonItems(),this.addComparison())}),{once:!0})},termsReset(){const e=document.querySelector(".js-terms"),t=document.querySelector(".js-reset"),n=()=>{const t=e.querySelectorAll("input, select");for(const e of t)e.value&&("checkbox"===e.getAttribute("type")?e.checked=!1:e.value="")};t&&t.addEventListener("click",n,{passve:!0})},ac(){const e=document.querySelectorAll(".js-ac-terms");if(e.length>0)for(const t of e){const e=new i(t,{elementClass:"js-ac",triggerClass:"js-ac-trigger",panelClass:"js-ac-panel"});location.search&&e.openAll()}},priceAttentionModal(){Ne.init({openClass:"is-visible",openTrigger:"data-modal-trigger-price",closeTrigger:"data-modal-close",onShow:e=>{Ae(!0)},onClose:e=>{Ae(!1)}})},modal(){const e=e=>{if(!r.media){const t=e.querySelector('[role="dialog"]').offsetHeight;e.querySelector('[role="dialog"]').style.height=t+"px"}},t=document.querySelectorAll('[data-modal="catalog"]');for(const n of t)n.addEventListener("click",(()=>{this.catalogModal(n.getAttribute("data-type"),n.getAttribute("data-id")).then((()=>{Ne.show("catalog",{openClass:"is-visible",closeTrigger:"data-modal-close",onShow:t=>{Ae(!0),e(t)},onClose:e=>{Ae(!1),e.querySelector('[role="dialog"]').style.height=""}})}))}),{passive:!0});Ne.init({openClass:"is-visible",openTrigger:"data-modal-trigger",closeTrigger:"data-modal-close",onShow:t=>{Ae(!0),e(t)},onClose:e=>{Ae(!1),e.querySelector('[role="dialog"]').style.height=""}})},async catalogModal(e,t){this.catalogSlider||(this.catalogSlider=new se(".js-catalog-slider",this.catalogSliderOpt)),this.catalogSliderThumbnail||(this.catalogSliderThumbnail=new se(".js-catalog-slider-thumbnail",this.catalogSliderThumbnailOpt)),document.querySelector(".js-catalog-error")&&document.querySelector(".js-catalog-error").remove();const n=document.querySelector(".js-catalog-slider-label");n.textContent="color"===e?"ã«ã©ã¼ããªã¨ã¼ã·ã§ã³":"ãã®ä»ã®è»ä¸¡ç»å";const o=document.querySelector(".js-catalog-slider-title"),i=document.querySelector(".js-catalog-slider-link");try{const e=(await Yr.post(this.apiUrl,{id:t},{headers:{"X-CSRF-TOKEN":document.querySelector('meta[name="csrf-token"]').getAttribute("content")}})).data;return this.catalogSlider.removeAllSlides(),this.catalogSliderThumbnail.removeAllSlides(),o.textContent=`${e.data.maker} ${e.data.name}`,i.setAttribute("href",`/buy/detail/${t}/`),Object.keys(e.image).forEach((t=>{const n=`\n <div class="slide swiper-slide">\n <div class="image"><img src="${e.image[t]}" alt=""></div>\n </div>\n `;this.catalogSlider.appendSlide(n),this.catalogSliderThumbnail.appendSlide(n)})),r.media||(this.catalogSlider.destroy(),this.catalogSliderThumbnail.destroy(),this.catalogSlider=null,this.catalogSliderThumbnail=null),Promise.resolve()}catch(e){this.catalogSlider.destroy(),this.catalogSliderThumbnail.destroy(),this.catalogSlider=null,this.catalogSliderThumbnail=null;const t='<p class="error js-catalog-error">èªã¿è¾¼ã¿ã«å¤±æãã¾ããã</p>';document.querySelector(".js-catalog-slider").insertAdjacentHTML("afterbegin",t)}},slider(){this.comparisonSlider=new se(".js-comparison-slider",{slidesPerView:1.1,modules:[le,ge],spaceBetween:20,navigation:{nextEl:".js-comparison-slider-next",prevEl:".js-comparison-slider-prev"},breakpoints:{769:{slidesPerView:3}}}),this.catalogSliderOpt={modules:[le,ge],slidesPerView:1,on:{slideChange(e){const t=document.querySelectorAll(".js-catalog-slider-thumbnail .swiper-slide");this.catalogSliderThumbnail.slideTo(e.realIndex);for(const e of t)e.classList.contains("is-current")&&e.classList.remove("is-current");t[e.realIndex].classList.add("is-current")}}},this.catalogSliderThumbnailOpt={modules:[le,ge],slidesPerView:3,spaceBetween:10,slideActiveClass:"is-current",slideToClickedSlide:!0,navigation:{nextEl:".js-catalog-slider-next",prevEl:".js-catalog-slider-prev"},on:{slideChange(e){this.catalogSlider.slideTo(e.realIndex)},click(e){this.catalogSlider.slideTo(e.clickedIndex)}}},this.catalogSlider=new se(".js-catalog-slider",this.catalogSliderOpt),this.catalogSliderThumbnail=new se(".js-catalog-slider-thumbnail",this.catalogSliderThumbnailOpt),window.addEventListener("resize",s(50,(()=>{r.media?(this.catalogSlider||(this.catalogSlider=new se(".js-catalog-slider",this.catalogSliderOpt)),this.catalogSliderThumbnail||(this.catalogSliderThumbnail=new se(".js-catalog-slider-thumbnail",this.catalogSliderThumbnailOpt))):(this.catalogSlider&&(this.catalogSlider.destroy(),this.catalogSlider=null),this.catalogSliderThumbnail&&(this.catalogSliderThumbnail.destroy(),this.catalogSliderThumbnail=null))}),!1),{passive:!0})},checkComparisonItems(){const e=sessionStorage.getItem("comparisonItems");if(e){this.comparisonStorage=JSON.parse(e);for(const e of this.comparisonStorage)this.addComparisonSlide(e).catch((()=>{}))}},async addComparisonSlide(e){try{const t=(await Yr.post(this.apiUrl,{id:e},{headers:{"X-CSRF-TOKEN":document.querySelector('meta[name="csrf-token"]').getAttribute("content")}})).data,n=`\n <div class="c-catalog -shrink swiper-slide">\n <div class="c-catalog__head">\n <div class="c-catalog__remove c-hover-fade js-comparison-remove" data-id="${e}"></div>\n <div class="c-catalog__tags">\n ${t.data.is_new>0?'<div class="c-category-outline -primary tag">æ°è»</div>':""}\n ${t.data.is_import>0?'<div class="c-category-outline -tertiary tag">æ°è»</div>':""}\n ${t.data.is_store_pickups>0?'<div class="c-category-outline -septenary tag">ç¹é¸è»</div>':""}\n </div>\n <div class="c-catalog__image">\n <a href="/buy/detail/${e}/" class="c-hover-fade">\n <img src="${t.data.image}" alt="" loading="lazy">\n </a>\n </div>\n </div>\n <div class="c-catalog__detail">\n <div class="section -maker"><span>${t.data.maker}</span></div>\n <div class="section -title"><span>${t.data.name}</span></div>\n <dl class="data -flex">\n <div class="col">\n <dt class="title">è»ä¸¡ä¾¡æ ¼</dt>\n <dd class="detail"><span class="number">${t.data.price.replace("å","")}</span>ä¸å</dd>\n </div>\n <div class="col -primary">\n <dt class="title">æ¯æç·é¡</dt>\n <dd class="detail"><span class="number">${t.data.total.replace("å","")}</span>ä¸å</dd>\n </div>\n </dl>\n <table class="spec">\n <thead>\n <tr>\n <th>å¹´å¼</th>\n <th>èµ°è¡è·é¢</th>\n <th>
1ææ°é</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>${t.data.year}</td>\n <td>${t.data.distance}</td>\n <td>${t.data.cc}</td>\n </tr>\n </tbody>\n </table>\n <a href="/buy/detail/${e}/" class="c-button -small -arrow button">詳細ãè¦ã</a>\n </div>\n </div>\n `;this.comparisonSlider.appendSlide(n);const r=document.querySelector(`.js-comparison-add[data-id="${e}"]`);if(r&&(r.classList.add("is-selected"),!this.comparisonStorage.some((t=>t===e)))){const e=r.parentNode.querySelector(".js-catalog-image");this.addAlert("æ¯è¼ãªã¹ãã«è¿½å ãã¾ãã",e)}}catch(e){return alert("æ¯è¼ãªã¹ãã¸ã®è¿½å ã«å¤±æãã¾ããã"),Promise.reject()}},addComparison(){const e=document.querySelector(".js-comparison-slider"),t=t=>{const n=e.querySelector(`[data-id="${t}"]`).closest(".swiper-slide");let r=e.querySelectorAll(".swiper-slide");r=Array.from(r);const o=r.findIndex((e=>e===n));this.comparisonSlider.removeSlide(o),document.querySelector(`.js-comparison-add[data-id="${t}"]`).classList.remove("is-selected");const i=this.comparisonStorage.findIndex((e=>e===t));this.comparisonStorage.splice(i,1),sessionStorage.setItem("comparisonItems",JSON.stringify(this.comparisonStorage)),0===this.comparisonSlider.slides.length&&Ne.close("comparison")},n=document.querySelectorAll(".js-comparison-add");for(const e of n)e.addEventListener("click",(()=>{const n=e.getAttribute("data-id");n&&(e.classList.contains("is-selected")?t(n):this.addComparisonSlide(n).then((()=>{this.comparisonStorage.push(n),sessionStorage.setItem("comparisonItems",JSON.stringify(this.comparisonStorage))})).catch((()=>{})))}),{passive:!0});e.addEventListener("click",(()=>{event.target.classList.contains("js-comparison-remove")&&t(event.target.getAttribute("data-id"))}))},addAlert(e,t){const n=document.createElement("p");n.classList.add("c-catalog__alert"),n.textContent=e,t.appendChild(n),setTimeout((()=>{n.remove()}),3e3)}};const Jr=new Xr; 2/** 3 * @vue/shared v3.4.38 4 * (c) 2018-present Yuxi (Evan) You and Vue contributors 5 * @license MIT 6 **/ 7/*! #__NO_SIDE_EFFECTS__ */function Qr(e,t){const n=new Set(e.split(","));return t?e=>n.has(e.toLowerCase()):e=>n.has(e)}const eo="production"!==At.env.NODE_ENV?Object.freeze({}):{},to="production"!==At.env.NODE_ENV?Object.freeze([]):[],no=()=>{},ro=()=>!1,oo=e=>111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),io=e=>e.startsWith("onUpdate:"),so=Object.assign,ao=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},lo=Object.prototype.hasOwnProperty,co=(e,t)=>lo.call(e,t),uo=Array.isArray,po=e=>"[object Map]"===_o(e),fo=e=>"[object Set]"===_o(e),ho=e=>"[object Date]"===_o(e),mo=e=>"function"==typeof e,vo=e=>"string"==typeof e,go=e=>"symbol"==typeof e,yo=e=>null!==e&&"object"==typeof e,bo=e=>(yo(e)||mo(e))&&mo(e.then)&&mo(e.catch),Eo=Object.prototype.toString,_o=e=>Eo.call(e),So=e=>_o(e).slice(8,-1),xo=e=>"[object Object]"===_o(e),wo=e=>vo(e)&&"NaN"!==e&&"-"!==e[0]&&""+parseInt(e,10)===e,No=Qr(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Ao=Qr("bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo"),Co=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Oo=/-(\w)/g,To=Co((e=>e.replace(Oo,((e,t)=>t?t.toUpperCase():"")))),$o=/\B([A-Z])/g,Mo=Co((e=>e.replace($o,"-$1").toLowerCase())),Do=Co((e=>e.charAt(0).toUpperCase()+e.slice(1))),Io=Co((e=>e?`on${Do(e)}`:"")),Lo=(e,t)=>!Object.is(e,t),ko=(e,...t)=>{for(let n=0;n<e.length;n++)e[n](...t)},Po=(e,t,n,r=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},Ro=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Vo=e=>{const t=vo(e)?Number(e):NaN;return isNaN(t)?e:t};let Bo;const Fo=()=>Bo||(Bo="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==tt?tt:{}),jo={1:"TEXT",2:"CLASS",4:"STYLE",8:"PROPS",16:"FULL_PROPS",32:"NEED_HYDRATION",64:"STABLE_FRAGMENT",128:"KEYED_FRAGMENT",256:"UNKEYED_FRAGMENT",512:"NEED_PATCH",1024:"DYNAMIC_SLOTS",2048:"DEV_ROOT_FRAGMENT",[-1]:"HOISTED",[-2]:"BAIL"},Uo={1:"STABLE",2:"DYNAMIC",3:"FORWARDED"},Ho=Qr("Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decode
7URI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error"),Zo=2;function Go(e){if(uo(e)){const t={};for(let n=0;n<e.length;n++){const r=e[n],o=vo(r)?Ko(r):Go(r);if(o)for(const e in o)t[e]=o[e]}return t}if(vo(e)||yo(e))return e}const zo=/;(?![^(]*\))/g,qo=/:([^]+)/,Wo=/\/\*[^]*?\*\//g;function Ko(e){const t={};return e.replace(Wo,"").split(zo).forEach((e=>{if(e){const n=e.split(qo);n.length>1&&(t[n[0].trim()]=n[1].trim())}})),t}function Yo(e){let t="";if(vo(e))t=e;else if(uo(e))for(let n=0;n<e.length;n++){const r=Yo(e[n]);r&&(t+=r+" ")}else if(yo(e))for(const n in e)e[n]&&(t+=n+" ");return t.trim()}const Xo=Qr("html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot"),Jo=Qr("svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view"),Qo=Qr("annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics"),ei=Qr("area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr"),ti="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",ni=Qr(ti),ri=Qr(ti+",async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected");function oi(e){return!!e||""===e}const ii=Qr("accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap"),si=Qr("xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radiu
7s,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xmlns:xlink,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan");function ai(e,t){if(e===t)return!0;let n=ho(e),r=ho(t);if(n||r)return!(!n||!r)&&e.getTime()===t.getTime();if(n=go(e),r=go(t),n||r)return e===t;if(n=uo(e),r=uo(t),n||r)return!(!n||!r)&&function(e,t){if(e.length!==t.length)return!1;let n=!0;for(let r=0;n&&r<e.length;r++)n=ai(e[r],t[r]);return n}(e,t);if(n=yo(e),r=yo(t),n||r){if(!n||!r)return!1;if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e){const r=e.hasOwnProperty(n),o=t.hasOwnProperty(n);if(r&&!o||!r&&o||!ai(e[n],t[n]))return!1}}return String(e)===String(t)}function li(e,t){return e.findIndex((e=>ai(e,t)))}const ci=e=>!(!e||!0!==e.__v_isRef),ui=e=>vo(e)?e:null==e?"":uo(e)||yo(e)&&(e.toString===Eo||!mo(e.toString))?ci(e)?ui(e.value):JSON.stringify(e,di,2):String(e),di=(e,t)=>ci(t)?di(e,t.value):po(t)?{[`Map(${t.size})`]:[...t.entries()].reduce(((e,[t,n],r)=>(e[pi(t,r)+" =>"]=n,e)),{})}:fo(t)?{[`Set(${t.size})`]:[...t.values()].map((e=>pi(e)))}:go(t)?pi(t):!yo(t)||uo(t)||xo(t)?t:String(t),pi=(e,t="")=>{var n;return go(e)?`Symbol(${null!=(n=e.description)?n:t})`:e};function fi(e,...t){console.warn(`[Vue warn] ${e}`,...t)}let hi,mi;class vi{constructor(e=!1){this.detached=e,this._active=!0,this.effects=[],this.cleanups=[],this.parent=hi,!e&&hi&&(this.index=(hi.scopes||(hi.scopes=[])).push(this)-1)}get active(){return this._active}run(e){if(this._active){const t=hi;try{return hi=this,e()}finally{hi=t}}else"production"!==At.env.NODE_ENV&&fi("cannot run an inactive effect scope.")}on(){hi=this}off(){hi=this.parent}stop(e){if(this._active){let t,n;for(t=0,n=this.effects.length;t<n;t++)this.effects[t].stop();for(t=0,n=this.cleanups.length;t<n;t++)this.cleanups[t]();if(this.scopes)for(t=0,n=this.scopes.length;t<n;t++)this.scopes[t].stop(!0);if(!this.detached&&this.parent&&!e){const e=this.parent.scopes.pop();e&&e!==this&&(this.parent.scopes[this.index]=e,e.index=this.index)}this.parent=void 0,this._active=!1}}}function gi(e,t=hi){t&&t.active&&t.effects.push(e)}function yi(){return hi}class bi{constructor(e,t,n,r){this.fn=e,this.trigger=t,this.scheduler=n,this.active=!0,this.deps=[],this._dirtyLevel=4,this._trackId=0,this._runnings=0,this._shouldSchedule=!1,this._depsLength=0,gi(this,r)}get dirty(){if(2===this._dirtyLevel||3===this._dirtyLevel){this._dirtyLevel=1,Ci();for(let e=0;e<this._depsLength;e++){const t=this.deps[e];if(t.computed&&(Ei(t.computed),this._dirtyLevel>=4))break}1===this._dirtyLevel&&(this._dirtyLevel=0),Oi()}return this._dirtyLevel>=4}set dirty(e){this._dirtyLevel=e?4:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let e=wi,t=mi;try{return wi=!0,mi=this,this._runnings++,_i(this),this.fn()}finally{Si(this),this._runnings--,mi=t,wi=e}}stop(){this.active&&(_i(this),Si(this),this.onStop&&this.onStop(),this.active=!1)}}function Ei(e){return e.value}function _i(e){e._trackId++,e._depsLength=0}function Si(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t<e.deps.length;t++)xi(e.deps[t],e);e.deps.length=e._depsLength}}function xi(e,t){const n=e.get(t);void 0!==n&&t._trackId!==n&&(e.delete(t),0===e.size&&e.cleanup())}let wi=!0,Ni=0;const Ai=[];function Ci(){Ai.push(wi),wi=!1}function Oi(){const e=Ai.pop();wi=void 0===e||e}function Ti(){Ni++}function $i(){for(Ni--;!Ni&&Di.length;)Di.shift()()}function Mi(e,t,n){var r;if(t.get(e)!==e._trackId){t.set(e,e._trackId);const o=e.deps[e._depsLength];o!==t?(o&&xi(o,e),e.deps[e._depsLength++]=t):e._depsLength++,"production"!==At.env.NODE_ENV&&(null==(r=e.onTrack)||r.call(e,so({effect:e},n)))}}const Di=[];function Ii(e,t,n){var r;Ti();for(const o of e.keys()){let i;o._dirtyLevel<t&&(null!=i?i:i=e.get(o)===o._trackId)&&(o._shouldSchedule||(o._shouldSchedule=0===o._dirtyLevel),o._dirtyLevel=t),o._shouldSchedule&&(null!=i?i:i=e.get(o)===o._trackId)&&("production"!==At.env.NODE_ENV&&(null==(r=o.onTrigger)||r.call(o,so({effect:o}
7,n))),o.trigger(),o._runnings&&!o.allowRecurse||2===o._dirtyLevel||(o._shouldSchedule=!1,o.scheduler&&Di.push(o.scheduler)))}$i()}const Li=(e,t)=>{const n=new Map;return n.cleanup=e,n.computed=t,n},ki=new WeakMap,Pi=Symbol("production"!==At.env.NODE_ENV?"iterate":""),Ri=Symbol("production"!==At.env.NODE_ENV?"Map key iterate":"");function Vi(e,t,n){if(wi&&mi){let r=ki.get(e);r||ki.set(e,r=new Map);let o=r.get(n);o||r.set(n,o=Li((()=>r.delete(n)))),Mi(mi,o,"production"!==At.env.NODE_ENV?{target:e,type:t,key:n}:void 0)}}function Bi(e,t,n,r,o,i){const s=ki.get(e);if(!s)return;let a=[];if("clear"===t)a=[...s.values()];else if("length"===n&&uo(e)){const e=Number(r);s.forEach(((t,n)=>{("length"===n||!go(n)&&n>=e)&&a.push(t)}))}else switch(void 0!==n&&a.push(s.get(n)),t){case"add":uo(e)?wo(n)&&a.push(s.get("length")):(a.push(s.get(Pi)),po(e)&&a.push(s.get(Ri)));break;case"delete":uo(e)||(a.push(s.get(Pi)),po(e)&&a.push(s.get(Ri)));break;case"set":po(e)&&a.push(s.get(Pi))}Ti();for(const s of a)s&&Ii(s,4,"production"!==At.env.NODE_ENV?{target:e,type:t,key:n,newValue:r,oldValue:o,oldTarget:i}:void 0);$i()}const Fi=Qr("__proto__,__v_isRef,__isVue"),ji=new Set(Object.getOwnPropertyNames(Symbol).filter((e=>"arguments"!==e&&"caller"!==e)).map((e=>Symbol[e])).filter(go)),Ui=Hi();function Hi(){const e={};return["includes","indexOf","lastIndexOf"].forEach((t=>{e[t]=function(...e){const n=Ls(this);for(let e=0,t=this.length;e<t;e++)Vi(n,"get",e+"");const r=n[t](...e);return-1===r||!1===r?n[t](...e.map(Ls)):r}})),["push","pop","shift","unshift","splice"].forEach((t=>{e[t]=function(...e){Ci(),Ti();const n=Ls(this)[t].apply(this,e);return $i(),Oi(),n}})),e}function Zi(e){go(e)||(e=String(e));const t=Ls(this);return Vi(t,"has",e),t.hasOwnProperty(e)}class Gi{constructor(e=!1,t=!1){this._isReadonly=e,this._isShallow=t}get(e,t,n){const r=this._isReadonly,o=this._isShallow;if("__v_isReactive"===t)return!r;if("__v_isReadonly"===t)return r;if("__v_isShallow"===t)return o;if("__v_raw"===t)return n===(r?o?ws:xs:o?Ss:_s).get(e)||Object.getPrototypeOf(e)===Object.getPrototypeOf(n)?e:void 0;const i=uo(e);if(!r){if(i&&co(Ui,t))return Reflect.get(Ui,t,n);if("hasOwnProperty"===t)return Zi}const s=Reflect.get(e,t,n);return(go(t)?ji.has(t):Fi(t))?s:(r||Vi(e,"get",t),o?s:js(s)?i&&wo(t)?s:s.value:yo(s)?r?Cs(s):Ns(s):s)}}class zi extends Gi{constructor(e=!1){super(!1,e)}set(e,t,n,r){let o=e[t];if(!this._isShallow){const t=Ms(o);if(Ds(n)||Ms(n)||(o=Ls(o),n=Ls(n)),!uo(e)&&js(o)&&!js(n))return!t&&(o.value=n,!0)}const i=uo(e)&&wo(t)?Number(t)<e.length:co(e,t),s=Reflect.set(e,t,n,r);return e===Ls(r)&&(i?Lo(n,o)&&Bi(e,"set",t,n,o):Bi(e,"add",t,n)),s}deleteProperty(e,t){const n=co(e,t),r=e[t],o=Reflect.deleteProperty(e,t);return o&&n&&Bi(e,"delete",t,void 0,r),o}has(e,t){const n=Reflect.has(e,t);return go(t)&&ji.has(t)||Vi(e,"has",t),n}ownKeys(e){return Vi(e,"iterate",uo(e)?"length":Pi),Reflect.ownKeys(e)}}class qi extends Gi{constructor(e=!1){super(!0,e)}set(e,t){return"production"!==At.env.NODE_ENV&&fi(`Set operation on key "${String(t)}" failed: target is readonly.`,e),!0}deleteProperty(e,t){return"production"!==At.env.NODE_ENV&&fi(`Delete operation on key "${String(t)}" failed: target is readonly.`,e),!0}}const Wi=new zi,Ki=new qi,Yi=new zi(!0),Xi=new qi(!0),Ji=e=>e,Qi=e=>Reflect.getPrototypeOf(e);function es(e,t,n=!1,r=!1){const o=Ls(e=e.__v_raw),i=Ls(t);n||(Lo(t,i)&&Vi(o,"get",t),Vi(o,"get",i));const{has:s}=Qi(o),a=r?Ji:n?Rs:Ps;return s.call(o,t)?a(e.get(t)):s.call(o,i)?a(e.get(i)):void(e!==o&&e.get(t))}function ts(e,t=!1){const n=this.__v_raw,r=Ls(n),o=Ls(e);return t||(Lo(e,o)&&Vi(r,"has",e),Vi(r,"has",o)),e===o?n.has(e):n.has(e)||n.has(o)}function ns(e,t=!1){return e=e.__v_raw,!t&&Vi(Ls(e),"iterate",Pi),Reflect.get(e,"size",e)}function rs(e,t=!1){t||Ds(e)||Ms(e)||(e=Ls(e));const n=Ls(this);return Qi(n).has.call(n,e)||(n.add(e),Bi(n,"add",e,e)),this}function os(e,t,n=!1){n||Ds(t)||Ms(t)||(t=Ls(t));const r=Ls(this),{has:o,get:i}=Qi(r);let s=o.call(r,e);s?"production"!==At.env.NODE_ENV&&Es(r,o,e):(e=Ls(e),s=o.call(r,e));const a=i.call(r,e);return r.set(e,t),s?Lo(t,a)&&Bi(r,"set",e,t,a):Bi(r,"add",e,t),this}function is(e){const t=Ls(this),{has:n,get:r}=Qi(t);let o=n.call(t,e);o?"production"!==At.env.NODE_ENV&&Es(t,n,e):(e=Ls(e),o=n.call(t,e));const i=r?r.call(t,e):void 0,s=t.delete(e);return o&&Bi(t,"delete",e,void 0,i),s}function ss(){const e=Ls(this),t=0!==e.size,n="production"!==At.env.NODE_ENV?po(e)?new Map(e):new Set(e):void 0,r=e.clear();return t&&Bi(e,"clear",void 0,void 0,n),r}function as(e,t){return function(n,r){const o=this,i=o.__v_raw,s=Ls(i),a=t?Ji:e?Rs:Ps;
7return!e&&Vi(s,"iterate",Pi),i.forEach(((e,t)=>n.call(r,a(e),a(t),o)))}}function ls(e,t,n){return function(...r){const o=this.__v_raw,i=Ls(o),s=po(i),a="entries"===e||e===Symbol.iterator&&s,l="keys"===e&&s,c=o[e](...r),u=n?Ji:t?Rs:Ps;return!t&&Vi(i,"iterate",l?Ri:Pi),{next(){const{value:e,done:t}=c.next();return t?{value:e,done:t}:{value:a?[u(e[0]),u(e[1])]:u(e),done:t}},[Symbol.iterator](){return this}}}}function cs(e){return function(...t){if("production"!==At.env.NODE_ENV){const n=t[0]?`on key "${t[0]}" `:"";fi(`${Do(e)} operation ${n}failed: target is readonly.`,Ls(this))}return"delete"!==e&&("clear"===e?void 0:this)}}function us(){const e={get(e){return es(this,e)},get size(){return ns(this)},has:ts,add:rs,set:os,delete:is,clear:ss,forEach:as(!1,!1)},t={get(e){return es(this,e,!1,!0)},get size(){return ns(this)},has:ts,add(e){return rs.call(this,e,!0)},set(e,t){return os.call(this,e,t,!0)},delete:is,clear:ss,forEach:as(!1,!0)},n={get(e){return es(this,e,!0)},get size(){return ns(this,!0)},has(e){return ts.call(this,e,!0)},add:cs("add"),set:cs("set"),delete:cs("delete"),clear:cs("clear"),forEach:as(!0,!1)},r={get(e){return es(this,e,!0,!0)},get size(){return ns(this,!0)},has(e){return ts.call(this,e,!0)},add:cs("add"),set:cs("set"),delete:cs("delete"),clear:cs("clear"),forEach:as(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach((o=>{e[o]=ls(o,!1,!1),n[o]=ls(o,!0,!1),t[o]=ls(o,!1,!0),r[o]=ls(o,!0,!0)})),[e,n,t,r]}const[ds,ps,fs,hs]=us();function ms(e,t){const n=t?e?hs:fs:e?ps:ds;return(t,r,o)=>"__v_isReactive"===r?!e:"__v_isReadonly"===r?e:"__v_raw"===r?t:Reflect.get(co(n,r)&&r in t?n:t,r,o)}const vs={get:ms(!1,!1)},gs={get:ms(!1,!0)},ys={get:ms(!0,!1)},bs={get:ms(!0,!0)};function Es(e,t,n){const r=Ls(n);if(r!==n&&t.call(e,r)){const t=So(e);fi(`Reactive ${t} contains both the raw and reactive versions of the same object${"Map"===t?" as keys":""}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`)}}const _s=new WeakMap,Ss=new WeakMap,xs=new WeakMap,ws=new WeakMap;function Ns(e){return Ms(e)?e:Ts(e,!1,Wi,vs,_s)}function As(e){return Ts(e,!1,Yi,gs,Ss)}function Cs(e){return Ts(e,!0,Ki,ys,xs)}function Os(e){return Ts(e,!0,Xi,bs,ws)}function Ts(e,t,n,r,o){if(!yo(e))return"production"!==At.env.NODE_ENV&&fi(`value cannot be made ${t?"readonly":"reactive"}: ${String(e)}`),e;if(e.__v_raw&&(!t||!e.__v_isReactive))return e;const i=o.get(e);if(i)return i;const s=(a=e).__v_skip||!Object.isExtensible(a)?0:function(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}(So(a));var a;if(0===s)return e;const l=new Proxy(e,2===s?r:n);return o.set(e,l),l}function $s(e){return Ms(e)?$s(e.__v_raw):!(!e||!e.__v_isReactive)}function Ms(e){return!(!e||!e.__v_isReadonly)}function Ds(e){return!(!e||!e.__v_isShallow)}function Is(e){return!!e&&!!e.__v_raw}function Ls(e){const t=e&&e.__v_raw;return t?Ls(t):e}function ks(e){return Object.isExtensible(e)&&Po(e,"__v_skip",!0),e}const Ps=e=>yo(e)?Ns(e):e,Rs=e=>yo(e)?Cs(e):e;class Vs{constructor(e,t,n,r){this.getter=e,this._setter=t,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new bi((()=>e(this._value)),(()=>Fs(this,2===this.effect._dirtyLevel?2:3))),this.effect.computed=this,this.effect.active=this._cacheable=!r,this.__v_isReadonly=n}get value(){const e=Ls(this);return e._cacheable&&!e.effect.dirty||!Lo(e._value,e._value=e.effect.run())||Fs(e,4),Bs(e),e.effect._dirtyLevel>=2&&("production"!==At.env.NODE_ENV&&this._warnRecursive&&fi("Computed is still dirty after getter evaluation, likely because a computed is mutating its own dependency in its getter. State mutations in computed getters should be avoided. Check the docs for more details: https://vuejs.org/guide/essentials/computed.html#getters-should-be-side-effect-free","\n\ngetter: ",this.getter),Fs(e,2)),e._value}set value(e){this._setter(e)}get _dirty(){return this.effect.dirty}set _dirty(e){this.effect.dirty=e}}function Bs(e){var t;wi&&mi&&(e=Ls(e),Mi(mi,null!=(t=e.dep)?t:e.dep=Li((()=>e.dep=void 0),e instanceof Vs?e:void 0),"production"!==At.env.NODE_ENV?{target:e,type:"get",key:"value"}:void 0))}function Fs(e,t=4,n,r){const o=(e=Ls(e)).dep;o&&Ii(o,t,"production"!==At.env.NODE_ENV?{target:e,type:"set",key:"value",newValue:n,oldValue:r}:void 0)}function js(e){return!(!e||!0!==e.__v_isRef)}function Us(e){return Hs(e,!1)}function Hs(e,t){return js(e)?e:new Zs(e,t)}class Zs{constructor(e,t){this.__v_isShallow=t,this.dep=void 0,this.__v_isRef=!0,this._rawValue=t?e:Ls(e),this._value=t?e:Ps(e)}get value(){return Bs(this),this._value}set value(e){const t=this.__v_isShallow||Ds(e)||Ms(e);if(e=t?e:Ls(e),Lo(e,this._rawValue)){const n=this._rawValue;this._rawValue=e,this._value=t?e:Ps(e),Fs(this,4,e,n)}}}function Gs(e){return js(e)?e.value:e}const zs={get:(e,t,n)=>Gs(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const o=e[t];return js(o)&&!js(n)?(o.value=n,!0):Reflect.set(e,t,n,r)}};function qs(e){return $s(e)?e:new Proxy(e,zs)}class Ws{constructor(e){this.dep=void 0,this.__v_isRef=!0;const{get:t,set:n}=e((()=>Bs(this)),(()=>Fs(this)));this._get=t,this._set=n}get value(){return this._get()}set value(e){this._set(e)}}function Ks(e){return new Ws(e)}class Ys{constructor(e,t,n){this._object=e,this._key=t,this._defaultValue=n,this.__v_isRef=!0}get value(){const e=this._object[this._key];return void 0===e?this._defaultValue:e}set value(e){this._object[this._key]=e}get dep(){return function(e,t){const n=ki.get(e);return n&&n.get(t)}(Ls(this._object),this._key)}}class Xs{constructor(e){this._getter=e,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}
7function Js(e,t,n){const r=e[t];return js(r)?r:new Ys(e,t,n)}const Qs=[];function ea(e){Qs.push(e)}function ta(){Qs.pop()}let na=!1;function ra(e,...t){if(na)return;na=!0,Ci();const n=Qs.length?Qs[Qs.length-1].component:null,r=n&&n.appContext.config.warnHandler,o=function(){let e=Qs[Qs.length-1];if(!e)return[];const t=[];for(;e;){const n=t[0];n&&n.vnode===e?n.recurseCount++:t.push({vnode:e,recurseCount:0});const r=e.component&&e.component.parent;e=r&&r.vnode}return t}();if(r)la(r,n,11,[e+t.map((e=>{var t,n;return null!=(n=null==(t=e.toString)?void 0:t.call(e))?n:JSON.stringify(e)})).join(""),n&&n.proxy,o.map((({vnode:e})=>`at <${op(n,e.type)}>`)).join("\n"),o]);else{const n=[`[Vue warn]: ${e}`,...t];o.length&&n.push("\n",...function(e){const t=[];return e.forEach(((e,n)=>{t.push(...0===n?[]:["\n"],...function({vnode:e,recurseCount:t}){const n=t>0?`... (${t} recursive calls)`:"",r=!!e.component&&null==e.component.parent,o=` at <${op(e.component,e.type,r)}`,i=">"+n;return e.props?[o,...oa(e.props),i]:[o+i]}(e))})),t}(o)),console.warn(...n)}Oi(),na=!1}function oa(e){const t=[],n=Object.keys(e);return n.slice(0,3).forEach((n=>{t.push(...ia(n,e[n]))})),n.length>3&&t.push(" ..."),t}function ia(e,t,n){return vo(t)?(t=JSON.stringify(t),n?t:[`${e}=${t}`]):"number"==typeof t||"boolean"==typeof t||null==t?n?t:[`${e}=${t}`]:js(t)?(t=ia(e,Ls(t.value),!0),n?t:[`${e}=Ref<`,t,">"]):mo(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=Ls(t),n?t:[`${e}=`,t])}function sa(e,t){"production"!==At.env.NODE_ENV&&void 0!==e&&("number"!=typeof e?ra(`${t} is not a valid number - got ${JSON.stringify(e)}.`):isNaN(e)&&ra(`${t} is NaN - the duration expression might be incorrect.`))}const aa={sp:"serverPrefetch hook",bc:"beforeCreate hook",c:"created hook",bm:"beforeMount hook",m:"mounted hook",bu:"beforeUpdate hook",u:"updated",bum:"beforeUnmount hook",um:"unmounted hook",a:"activated hook",da:"deactivated hook",ec:"errorCaptured hook",rtc:"renderTracked hook",rtg:"renderTriggered hook",0:"setup function",1:"render function",2:"watcher getter",3:"watcher callback",4:"watcher cleanup function",5:"native event handler",6:"component event handler",7:"vnode hook",8:"directive hook",9:"transition hook",10:"app errorHandler",11:"app warnHandler",12:"ref function",13:"async component loader",14:"scheduler flush",15:"component update"};function la(e,t,n,r){try{return r?e(...r):e()}catch(e){ua(e,t,n)}}function ca(e,t,n,r){if(mo(e)){const o=la(e,t,n,r);return o&&bo(o)&&o.catch((e=>{ua(e,t,n)})),o}if(uo(e)){const o=[];for(let i=0;i<e.length;i++)o.push(ca(e[i],t,n,r));return o}"production"!==At.env.NODE_ENV&&ra("Invalid value type passed to callWithAsyncErrorHandling(): "+typeof e)}function ua(e,t,n,r=!0){const o=t?t.vnode:null;if(t){let r=t.parent;const o=t.proxy,i="production"!==At.env.NODE_ENV?aa[n]:`https://vuejs.org/error-reference/#runtime-${n}`;for(;r;){const t=r.ec;if(t)for(let n=0;n<t.length;n++)if(!1===t[n](e,o,i))return;r=r.parent}const s=t.appContext.config.errorHandler;if(s)return Ci(),la(s,null,10,[e,o,i]),void Oi()}!function(e,t,n,r=!0){if("production"!==At.env.NODE_ENV){const o=aa[t];if(n&&ea(n),ra("Unhandled error"+(o?` during execution of ${o}`:"")),n&&ta(),r)throw e;console.error(e)}else console.error(e)}(e,n,o,r)}let da=!1,pa=!1;const fa=[];let ha=0;const ma=[];let va=null,ga=0;const ya=Promise.resolve();let ba=null;const Ea=100;function _a(e){const t=ba||ya;return e?t.then(this?e.bind(this):e):t}function Sa(e){fa.length&&fa.includes(e,da&&e.allowRecurse?ha+1:ha)||(null==e.id?fa.push(e):fa.splice(function(e){let t=ha+1,n=fa.length;for(;t<n;){const r=t+n>>>1,o=fa[r],i=Ca(o);i<e||i===e&&o.pre?t=r+1:n=r}return t}(e.id),0,e),xa())}function xa(){da||pa||(pa=!0,ba=ya.then(Ta))}function wa(e){uo(e)?ma.push(...e):va&&va.includes(e,e.allowRecurse?ga+1:ga)||ma.push(e),xa()}function Na(e,t,n=(da?ha+1:0)){for("production"!==At.env.NODE_ENV&&(t=t||new Map);n<fa.length;n++){const r=fa[n];if(r&&r.pre){if(e&&r.id!==e.uid)continue;if("production"!==At.env.NODE_ENV&&$a(t,r))continue;fa.splice(n,1),n--,r()}}}function Aa(e){if(ma.length){const t=[...new Set(ma)].sort(((e,t)=>Ca(e)-Ca(t)));if(ma.length=0,va)return void va.push(...t);for(va=t,"production"!==At.env.NODE_ENV&&(e=e||new Map),ga=0;ga<va.length;ga++){const t=va[ga];"production"!==At.env.NODE_ENV&&$a(e,t)||!1!==t.active&&t()}va=null,ga=0}}const Ca=e=>null==e.id?1/0:e.id,Oa=(e,t)=>{const n=Ca(e)-Ca(t);if(0===n){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function Ta(e){pa=!1,da=!0,"production"!==At.env.NODE_ENV&&(e=e||new Map),fa.sort(Oa);const t="production"!==At.env.NODE_ENV?t=>$a(e,t):no;try{for(ha=0;ha<fa.length;ha++){const e=fa[ha];if(e&&!1!==e.active){if("production"!==At.env.NODE_ENV&&t(e))continue;la(e,e.i,e.i?15:14)}}}finally{ha=0,fa.length=0,Aa(e),da=!1,ba=null,(fa.length||ma.length)&&Ta(e)}}function $a(e,t){if(e.has(t)){const n=e.get(t);if(n>Ea){const e=t.i,n=e&&rp(e.type);return ua(`Maximum recursive updates exceeded${n?` in component <${n}>`:""}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`,null,10),!0}e.set(t,n+1)}else e.set(t,1)}let Ma=!1;const Da=new Map;"production"!==At.env.NODE_ENV&&(Fo().__VUE_HMR_RUNTIME__={createRecord:Ra(La),rerender:Ra((function(e,t){const n=Ia.get(e);if(!n)return;
7n.initialDef.render=t,[...n.instances].forEach((e=>{t&&(e.render=t,ka(e.type).render=t),e.renderCache=[],Ma=!0,e.effect.dirty=!0,e.update(),Ma=!1}))})),reload:Ra((function(e,t){const n=Ia.get(e);if(!n)return;t=ka(t),Pa(n.initialDef,t);const r=[...n.instances];for(let e=0;e<r.length;e++){const o=r[e],i=ka(o.type);let s=Da.get(i);s||(i!==n.initialDef&&Pa(i,t),Da.set(i,s=new Set)),s.add(o),o.appContext.propsCache.delete(o.type),o.appContext.emitsCache.delete(o.type),o.appContext.optionsCache.delete(o.type),o.ceReload?(s.add(o),o.ceReload(t.styles),s.delete(o)):o.parent?(o.parent.effect.dirty=!0,Sa((()=>{o.parent.update(),s.delete(o)}))):o.appContext.reload?o.appContext.reload():"undefined"!=typeof window?window.location.reload():console.warn("[HMR] Root or manually mounted instance modified. Full reload required.")}wa((()=>{Da.clear()}))}))});const Ia=new Map;function La(e,t){return!Ia.has(e)&&(Ia.set(e,{initialDef:ka(t),instances:new Set}),!0)}function ka(e){return ip(e)?e.__vccOpts:e}function Pa(e,t){so(e,t);for(const n in e)"__file"===n||n in t||delete e[n]}function Ra(e){return(t,n)=>{try{return e(t,n)}catch(e){console.error(e),console.warn("[HMR] Something went wrong during Vue component hot-reload. Full reload required.")}}}let Va,Ba=[],Fa=!1;function ja(e,...t){Va?Va.emit(e,...t):Fa||Ba.push({event:e,args:t})}function Ua(e,t){var n,r;if(Va=e,Va)Va.enabled=!0,Ba.forEach((({event:e,args:t})=>Va.emit(e,...t))),Ba=[];else if("undefined"!=typeof window&&window.HTMLElement&&!(null==(r=null==(n=window.navigator)?void 0:n.userAgent)?void 0:r.includes("jsdom"))){(t.__VUE_DEVTOOLS_HOOK_REPLAY__=t.__VUE_DEVTOOLS_HOOK_REPLAY__||[]).push((e=>{Ua(e,t)})),setTimeout((()=>{Va||(t.__VUE_DEVTOOLS_HOOK_REPLAY__=null,Fa=!0,Ba=[])}),3e3)}else Fa=!0,Ba=[]}const Ha=qa("component:added"),Za=qa("component:updated"),Ga=qa("component:removed"),za=e=>{Va&&"function"==typeof Va.cleanupBuffer&&!Va.cleanupBuffer(e)&&Ga(e)}; 8/*! #__NO_SIDE_EFFECTS__ */ 9function qa(e){return t=>{ja(e,t.appContext.app,t.uid,t.parent?t.parent.uid:void 0,t)}}const Wa=Ya("perf:start"),Ka=Ya("perf:end");function Ya(e){return(t,n,r)=>{ja(e,t.appContext.app,t.uid,t,n,r)}}let Xa=null,Ja=null;function Qa(e){const t=Xa;return Xa=e,Ja=e&&e.type.__scopeId||null,t}function el(e,t=Xa,n){if(!t)return e;if(e._n)return e;const r=(...n)=>{r._d&&fd(-1);const o=Qa(t);let i;try{i=e(...n)}finally{Qa(o),r._d&&fd(1)}return("production"!==At.env.NODE_ENV||__VUE_PROD_DEVTOOLS__)&&Za(t),i};return r._n=!0,r._c=!0,r._d=!0,r}function tl(e){Ao(e)&&ra("Do not use built-in directive ids as custom directive id: "+e)}function nl(e,t,n,r){const o=e.dirs,i=t&&t.dirs;for(let s=0;s<o.length;s++){const a=o[s];i&&(a.oldValue=i[s].value);let l=a.dir[r];
9l&&(Ci(),ca(l,n,8,[e.el,a,e,t]),Oi())}}const rl=Symbol("_leaveCb"),ol=Symbol("_enterCb");function il(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Il((()=>{e.isMounted=!0})),Pl((()=>{e.isUnmounting=!0})),e}const sl=[Function,Array],al={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:sl,onEnter:sl,onAfterEnter:sl,onEnterCancelled:sl,onBeforeLeave:sl,onLeave:sl,onAfterLeave:sl,onLeaveCancelled:sl,onBeforeAppear:sl,onAppear:sl,onAfterAppear:sl,onAppearCancelled:sl},ll=e=>{const t=e.subTree;return t.component?ll(t.component):t},cl={name:"BaseTransition",props:al,setup(e,{slots:t}){const n=Pd(),r=il();return()=>{const o=t.default&&vl(t.default(),!0);if(!o||!o.length)return;let i=o[0];if(o.length>1){let e=!1;for(const t of o)if(t.type!==id){if("production"!==At.env.NODE_ENV&&e){ra("<transition> can only be used on a single element or component. Use <transition-group> for lists.");break}if(i=t,e=!0,"production"===At.env.NODE_ENV)break}}const s=Ls(e),{mode:a}=s;if("production"!==At.env.NODE_ENV&&a&&"in-out"!==a&&"out-in"!==a&&"default"!==a&&ra(`invalid <transition> mode: ${a}`),r.isLeaving)return fl(i);const l=hl(i);if(!l)return fl(i);let c=pl(l,s,r,n,(e=>c=e));ml(l,c);const u=n.subTree,d=u&&hl(u);if(d&&d.type!==id&&!gd(l,d)&&ll(n).type!==id){const e=pl(d,s,r,n);if(ml(d,e),"out-in"===a&&l.type!==id)return r.isLeaving=!0,e.afterLeave=()=>{r.isLeaving=!1,!1!==n.update.active&&(n.effect.dirty=!0,n.update())},fl(i);"in-out"===a&&l.type!==id&&(e.delayLeave=(e,t,n)=>{dl(r,d)[String(d.key)]=d,e[rl]=()=>{t(),e[rl]=void 0,delete c.delayedLeave},c.delayedLeave=n})}return i}}},ul=cl;function dl(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function pl(e,t,n,r,o){const{appear:i,mode:s,persisted:a=!1,onBeforeEnter:l,onEnter:c,onAfterEnter:u,onEnterCancelled:d,onBeforeLeave:p,onLeave:f,onAfterLeave:h,onLeaveCancelled:m,onBeforeAppear:v,onAppear:g,onAfterAppear:y,onAppearCancelled:b}=t,E=String(e.key),_=dl(n,e),S=(e,t)=>{e&&ca(e,r,9,t)},x=(e,t)=>{const n=t[1];S(e,t),uo(e)?e.every((e=>e.length<=1))&&n():e.length<=1&&n()},w={mode:s,persisted:a,beforeEnter(t){let r=l;if(!n.isMounted){if(!i)return;r=v||l}t[rl]&&t[rl](!0);const o=_[E];o&&gd(e,o)&&o.el[rl]&&o.el[rl](),S(r,[t])},enter(e){let t=c,r=u,o=d;if(!n.isMounted){if(!i)return;t=g||c,r=y||u,o=b||d}let s=!1;const a=e[ol]=t=>{s||(s=!0,S(t?o:r,[e]),w.delayedLeave&&w.delayedLeave(),e[ol]=void 0)};t?x(t,[e,a]):a()},leave(t,r){const o=String(e.key);if(t[ol]&&t[ol](!0),n.isUnmounting)return r();S(p,[t]);let i=!1;const s=t[rl]=n=>{i||(i=!0,r(),S(n?m:h,[t]),t[rl]=void 0,_[o]===e&&delete _[o])};_[o]=e,f?x(f,[t,s]):s()},clone(e){const i=pl(e,t,n,r,o);return o&&o(i),i}};return w}function fl(e){if(El(e))return(e=wd(e)).children=null,e}function hl(e){if(!El(e))return e;if("production"!==At.env.NODE_ENV&&e.component)return e.component.subTree;const{shapeFlag:t,children:n}=e;if(n){if(16&t)return n[0];if(32&t&&mo(n.default))return n.default()}}function ml(e,t){6&e.shapeFlag&&e.component?ml(e.component.subTree,t):128&e.shapeFlag?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function vl(e,t=!1,n){let r=[],o=0;for(let i=0;i<e.length;i++){let s=e[i];const a=null==n?s.key:String(n)+String(null!=s.key?s.key:i);s.type===rd?(128&s.patchFlag&&o++,r=r.concat(vl(s.children,t,a))):(t||s.type!==id)&&r.push(null!=a?wd(s,{key:a}):s)}if(o>1)for(let e=0;e<r.length;e++)r[e].patchFlag=-2;return r} 10/*! #__NO_SIDE_EFFECTS__ */function gl(e,t){return mo(e)?(()=>so({name:e.name},t,{setup:e}))():e}const yl=e=>!!e.type.__asyncLoader 11/*! #__NO_SIDE_EFFECTS__ */;function bl(e,t){const{ref:n,props:r,children:o,ce:i}=t.vnode,s=_d(e,r,o);return s.ref=n,s.ce=i,delete t.vnode.ce,s}const El=e=>e.type.__isKeepAlive,_l={name:"KeepAlive",__isKeepAlive:!0,props:{include:[String,RegExp,Array],exclude:[String,RegExp,Array],max:[String,Number]},setup(e,{slots:t}){const n=Pd(),r=n.ctx;if(!r.renderer)return()=>{const e=t.default&&t.default();return e&&1===e.length?e[0]:e};const o=new Map,i=new Set;let s=null;("production"!==At.env.NODE_ENV||__VUE_PROD_DEVTOOLS__)&&(n.__v_cache=o);const a=n.suspense,{renderer:{p:l,m:c,um:u,o:{createElement:d}}}=r,p=d("div");function f(e){Ol(e),u(e,n,a,!0)}function h(e){o.forEach(((t,n)=>{const r=rp(t.type);!r||e&&e(r)||m(n)}))}function m(e){const t=o.get(e);!t||s&&gd(t,s)?s&&Ol(s):f(t),o.delete(e),i.delete(e)}r.activate=(e,t,n,r,o)=>{const i=e.component;c(e,t,n,0,a),l(i.vnode,e,t,n,i,a,r,e.slotScopeIds,o),fu((()=>
11{i.isDeactivated=!1,i.a&&ko(i.a);const t=e.props&&e.props.onVnodeMounted;t&&Md(t,i.parent,e)}),a),("production"!==At.env.NODE_ENV||__VUE_PROD_DEVTOOLS__)&&Ha(i)},r.deactivate=e=>{const t=e.component;Su(t.m),Su(t.a),c(e,p,null,1,a),fu((()=>{t.da&&ko(t.da);const n=e.props&&e.props.onVnodeUnmounted;n&&Md(n,t.parent,e),t.isDeactivated=!0}),a),("production"!==At.env.NODE_ENV||__VUE_PROD_DEVTOOLS__)&&Ha(t)},Ou((()=>[e.include,e.exclude]),(([e,t])=>{e&&h((t=>xl(e,t))),t&&h((e=>!xl(t,e)))}),{flush:"post",deep:!0});let v=null;const g=()=>{null!=v&&(qu(n.subTree.type)?fu((()=>{o.set(v,Tl(n.subTree))}),n.subTree.suspense):o.set(v,Tl(n.subTree)))};return Il(g),kl(g),Pl((()=>{o.forEach((e=>{const{subTree:t,suspense:r}=n,o=Tl(t);if(e.type!==o.type||e.key!==o.key)f(e);else{Ol(o);const e=o.component.da;e&&fu(e,r)}}))})),()=>{if(v=null,!t.default)return null;const n=t.default(),r=n[0];if(n.length>1)return"production"!==At.env.NODE_ENV&&ra("KeepAlive should contain exactly one component child."),s=null,n;if(!(vd(r)&&(4&r.shapeFlag||128&r.shapeFlag)))return s=null,r;let a=Tl(r);if(a.type===id)return s=null,a;const l=a.type,c=rp(yl(a)?a.type.__asyncResolved||{}:l),{include:u,exclude:d,max:p}=e;if(u&&(!c||!xl(u,c))||d&&c&&xl(d,c))return s=a,r;const f=null==a.key?l:a.key,h=o.get(f);return a.el&&(a=wd(a),128&r.shapeFlag&&(r.ssContent=a)),v=f,h?(a.el=h.el,a.component=h.component,a.transition&&ml(a,a.transition),a.shapeFlag|=512,i.delete(f),i.add(f)):(i.add(f),p&&i.size>parseInt(p,10)&&m(i.values().next().value)),a.shapeFlag|=256,s=a,qu(r.type)?r:a}}},Sl=_l;function xl(e,t){return uo(e)?e.some((e=>xl(e,t))):vo(e)?e.split(",").includes(t):"[object RegExp]"===_o(e)&&e.test(t)}function wl(e,t){Al(e,"a",t)}function Nl(e,t){Al(e,"da",t)}function Al(e,t,n=kd){const r=e.__wdc||(e.__wdc=()=>{let t=n;for(;t;){if(t.isDeactivated)return;t=t.parent}return e()});if($l(t,r,n),n){let e=n.parent;for(;e&&e.parent;)El(e.parent.vnode)&&Cl(r,t,n,e),e=e.parent}}function Cl(e,t,n,r){const o=$l(t,e,r,!0);Rl((()=>{ao(r[t],o)}),n)}function Ol(e){e.shapeFlag&=-257,e.shapeFlag&=-513}function Tl(e){return 128&e.shapeFlag?e.ssContent:e}function $l(e,t,n=kd,r=!1){if(n){const o=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...r)=>{Ci();const o=Bd(n),i=ca(t,n,e,r);return o(),Oi(),i});return r?o.unshift(i):o.push(i),i}if("production"!==At.env.NODE_ENV){ra(`${Io(aa[e].replace(/ hook$/,""))} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup(). If you are using async setup(), make sure to register lifecycle hooks before the first await statement.`)}}const Ml=e=>(t,n=kd)=>{zd&&"sp"!==e||$l(e,((...e)=>t(...e)),n)},Dl=Ml("bm"),Il=Ml("m"),Ll=Ml("bu"),kl=Ml("u"),Pl=Ml("bum"),Rl=Ml("um"),Vl=Ml("sp"),Bl=Ml("rtg"),Fl=Ml("rtc");function jl(e,t=kd){$l("ec",e,t)}const Ul="components";const Hl=Symbol.for("v-ndc");function Zl(e,t,n=!0,r=!1){const o=Xa||kd;if(o){const i=o.type;if(e===Ul){const e=rp(i,!1);if(e&&(e===t||e===To(t)||e===Do(To(t))))return i}const s=Gl(o[e]||i[e],t)||Gl(o.appContext[e],t);if(!s&&r)return i;if("production"!==At.env.NODE_ENV&&n&&!s){const n=e===Ul?"\nIf this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.":"";ra(`Failed to resolve ${e.slice(0,-1)}: ${t}${n}`)}return s}"production"!==At.env.NODE_ENV&&ra(`resolve${Do(e.slice(0,-1))} can only be used in render() or setup().`)}function Gl(e,t){return e&&(e[t]||e[To(t)]||e[Do(To(t))])}function zl(e){return e.some((e=>!vd(e)||e.type!==id&&!(e.type===rd&&!zl(e.children))))?e:null}const ql=e=>e?Hd(e)?ep(e):ql(e.parent):null,Wl=so(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>"production"!==At.env.NODE_ENV?Os(e.props):e.props,$attrs:e=>"production"!==At.env.NODE_ENV?Os(e.attrs):e.attrs,$slots:e=>"production"!==At.env.NODE_ENV?Os(e.slots):e.slots,$refs:e=>"production"!==At.env.NODE_ENV?Os(e.refs):e.refs,$parent:e=>ql(e.parent),$root:e=>ql(e.root),$emit:e=>e.emit,$options:e=>__VUE_OPTIONS_API__?sc(e):e.type,$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,Sa(e.update)}),$nextTick:e=>e.n||(e.n=_a.bind(e.proxy)),$watch:e=>__VUE_OPTIONS_API__?$u.bind(e):no}),Kl=e=>"_"===e||"$"===e,Yl=(e,t)=>
11e!==eo&&!e.__isScriptSetup&&co(e,t),Xl={get({_:e},t){if("__v_skip"===t)return!0;const{ctx:n,setupState:r,data:o,props:i,accessCache:s,type:a,appContext:l}=e;if("production"!==At.env.NODE_ENV&&"__isVue"===t)return!0;let c;if("$"!==t[0]){const a=s[t];if(void 0!==a)switch(a){case 1:return r[t];case 2:return o[t];case 4:return n[t];case 3:return i[t]}else{if(Yl(r,t))return s[t]=1,r[t];if(o!==eo&&co(o,t))return s[t]=2,o[t];if((c=e.propsOptions[0])&&co(c,t))return s[t]=3,i[t];if(n!==eo&&co(n,t))return s[t]=4,n[t];__VUE_OPTIONS_API__&&!nc||(s[t]=0)}}const u=Wl[t];let d,p;return u?("$attrs"===t?(Vi(e.attrs,"get",""),"production"!==At.env.NODE_ENV&&Vu()):"production"!==At.env.NODE_ENV&&"$slots"===t&&Vi(e,"get",t),u(e)):(d=a.__cssModules)&&(d=d[t])?d:n!==eo&&co(n,t)?(s[t]=4,n[t]):(p=l.config.globalProperties,co(p,t)?p[t]:void("production"===At.env.NODE_ENV||!Xa||vo(t)&&0===t.indexOf("__v")||(o!==eo&&Kl(t[0])&&co(o,t)?ra(`Property ${JSON.stringify(t)} must be accessed via $data because it starts with a reserved character ("$" or "_") and is not proxied on the render context.`):e===Xa&&ra(`Property ${JSON.stringify(t)} was accessed during render but is not defined on instance.`))))},set({_:e},t,n){const{data:r,setupState:o,ctx:i}=e;return Yl(o,t)?(o[t]=n,!0):"production"!==At.env.NODE_ENV&&o.__isScriptSetup&&co(o,t)?(ra(`Cannot mutate <script setup> binding "${t}" from Options API.`),!1):r!==eo&&co(r,t)?(r[t]=n,!0):co(e.props,t)?("production"!==At.env.NODE_ENV&&ra(`Attempting to mutate prop "${t}". Props are readonly.`),!1):"$"===t[0]&&t.slice(1)in e?("production"!==At.env.NODE_ENV&&ra(`Attempting to mutate public property "${t}". Properties starting with $ are reserved and readonly.`),!1):("production"!==At.env.NODE_ENV&&t in e.appContext.config.globalProperties?Object.defineProperty(i,t,{enumerable:!0,configurable:!0,value:n}):i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:o,propsOptions:i}},s){let a;return!!n[s]||e!==eo&&co(e,s)||Yl(t,s)||(a=i[0])&&co(a,s)||co(r,s)||co(Wl,s)||co(o.config.globalProperties,s)},defineProperty(e,t,n){return null!=n.get?e._.accessCache[t]=0:co(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};"production"!==At.env.NODE_ENV&&(Xl.ownKeys=e=>(ra("Avoid app logic that relies on enumerating keys on a component instance. The keys will be empty in production mode to avoid performance overhead."),Reflect.ownKeys(e)));const Jl=so({},Xl,{get(e,t){if(t!==Symbol.unscopables)return Xl.get(e,t,e)},has(e,t){const n="_"!==t[0]&&!Ho(t);return"production"!==At.env.NODE_ENV&&!n&&Xl.has(e,t)&&ra(`Property ${JSON.stringify(t)} should not start with _ which is a reserved prefix for Vue internals.`),n}});const Ql=e=>ra(`${e}() is a compiler-hint helper that is only usable inside <script setup> of a single file component. Its arguments should be compiled away and passing it at runtime has no effect.`);function ec(){const e=Pd();return"production"===At.env.NODE_ENV||e||ra("useContext() called without active instance."),e.setupContext||(e.setupContext=Qd(e))}function tc(e){return uo(e)?e.reduce(((e,t)=>(e[t]=null,e)),{}):e}let nc=!0;function rc(e){const t=sc(e),n=e.proxy,r=e.ctx;nc=!1,t.beforeCreate&&oc(t.beforeCreate,e,"bc");const{data:o,computed:i,methods:s,watch:a,provide:l,inject:c,created:u,beforeMount:d,mounted:p,beforeUpdate:f,updated:h,activated:m,deactivated:v,beforeDestroy:g,beforeUnmount:y,destroyed:b,unmounted:E,render:_,renderTracked:S,renderTriggered:x,errorCaptured:w,serverPrefetch:N,expose:A,inheritAttrs:C,components:O,directives:T,filters:$}=t,M="production"!==At.env.NODE_ENV?function(){const e=Object.create(null);return(t,n)=>{e[n]?ra(`${t} property "${n}" is already defined in ${e[n]}.`):e[n]=t}}():null;if("production"!==At.env.NODE_ENV){const[t]=e.propsOptions;if(t)for(const e in t)M("Props",e)}if(c&&function(e,t,n=no){uo(e)&&(e=uc(e));for(const r in e){const o=e[r];let i;i=yo(o)?"default"in o?bc(o.from||r,o.default,!0):bc(o.from||r):bc(o),js(i)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>i.value,set:e=>i.value=e}):t[r]=i,"production"!==At.env.NODE_ENV&&n("Inject",r)}}(c,r,M),s)for(const e in s){const t=s[e];mo(t)?("production"!==At.env.NODE_ENV?Object.defineProperty(r,e,{value:t.bind(n),configurable:!0,enumerable:!0,writable:!0}):r[e]=t.bind(n),"production"!==At.env.NODE_ENV&&M("Methods",e)):"production"!==At.env.NODE_ENV&&ra(`Method "${e}" has type "${typeof t}" in the component definition. Did you reference the function correctly?`)}if(o){"production"===At.env.NODE_ENV||mo(o)||ra("The data option must be a function. Plain object usage is no longer supported.");const t=o.call(n,n);if("production"!==At.env.NODE_ENV&&bo(t)&&ra("data() returned a Promise - note data() cannot be async; If you intend to perform data fetching before component renders, use async setup() + <Suspense>."),yo(t)){if(e.data=Ns(t),"production"!==At.env.NODE_ENV)for(const e in t)M("Data",e),Kl(e[0])||Object.defineProperty(r,e,{configurable:!0,enumerable:!0,get:()=>t[e],set:no})}else"production"!==At.env.NODE_ENV&&ra("data() should return an object.")}if(nc=!0,i)for(const e in i){const t=i[e],o=mo(t)?t.bind(n,n):mo(t.get)?t.get.bind(n,n):no;"production"!==At.env.NODE_ENV&&o===no&&ra(`Computed property "${e}" has no getter.`);const s=!mo(t)&&mo(t.set)?t.set.bind(n):"production"!==At.env.NODE_ENV?()=>{ra(`Write operation failed: computed property "${e}" is readonly.`)}:no,a=sp({get:o,set:s});Object.defineProperty(r,e,{enumerable:!0,configurable:!0,get:()=>a.value,set:e=>a.value=e}),"production"!==At.env.NODE_ENV&&M("Computed",e)}if(a)for(const e in a)ic(a[e],r,n,e);if(l){const e=mo(l)?l.call(n):l;Reflect.ownKeys(e).forEach((t=>{yc(t,e[t])}))}function D(e,t){uo(t)?t.forEach((t=>e(t.bind(n)))):t&&e(t.bind(n))}if(u&&oc(u,e,"c"),D(Dl,d),D(Il,p),D(Ll,f),D(kl,h),D(wl,m),D(Nl,v),D(jl,w),D(Fl,S),D(Bl,x),D(Pl,y
11),D(Rl,E),D(Vl,N),uo(A))if(A.length){const t=e.exposed||(e.exposed={});A.forEach((e=>{Object.defineProperty(t,e,{get:()=>n[e],set:t=>n[e]=t})}))}else e.exposed||(e.exposed={});_&&e.render===no&&(e.render=_),null!=C&&(e.inheritAttrs=C),O&&(e.components=O),T&&(e.directives=T)}function oc(e,t,n){ca(uo(e)?e.map((e=>e.bind(t.proxy))):e.bind(t.proxy),t,n)}function ic(e,t,n,r){const o=r.includes(".")?Mu(n,r):()=>n[r];if(vo(e)){const n=t[e];mo(n)?Ou(o,n):"production"!==At.env.NODE_ENV&&ra(`Invalid watch handler specified by key "${e}"`,n)}else if(mo(e))Ou(o,e.bind(n));else if(yo(e))if(uo(e))e.forEach((e=>ic(e,t,n,r)));else{const r=mo(e.handler)?e.handler.bind(n):t[e.handler];mo(r)?Ou(o,r,e):"production"!==At.env.NODE_ENV&&ra(`Invalid watch handler specified by key "${e.handler}"`,r)}else"production"!==At.env.NODE_ENV&&ra(`Invalid watch option: "${r}"`,e)}function sc(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:o,optionsCache:i,config:{optionMergeStrategies:s}}=e.appContext,a=i.get(t);let l;return a?l=a:o.length||n||r?(l={},o.length&&o.forEach((e=>ac(l,e,s,!0))),ac(l,t,s)):l=t,yo(t)&&i.set(t,l),l}function ac(e,t,n,r=!1){const{mixins:o,extends:i}=t;i&&ac(e,i,n,!0),o&&o.forEach((t=>ac(e,t,n,!0)));for(const o in t)if(r&&"expose"===o)"production"!==At.env.NODE_ENV&&ra('"expose" option is ignored when declared in mixins or extends. It should only be declared in the base component itself.');else{const r=lc[o]||n&&n[o];e[o]=r?r(e[o],t[o]):t[o]}return e}const lc={data:cc,props:fc,emits:fc,methods:pc,computed:pc,beforeCreate:dc,created:dc,beforeMount:dc,mounted:dc,beforeUpdate:dc,updated:dc,beforeDestroy:dc,beforeUnmount:dc,destroyed:dc,unmounted:dc,activated:dc,deactivated:dc,errorCaptured:dc,serverPrefetch:dc,components:pc,directives:pc,watch:function(e,t){if(!e)return t;if(!t)return e;const n=so(Object.create(null),e);for(const r in t)n[r]=dc(e[r],t[r]);return n},provide:cc,inject:function(e,t){return pc(uc(e),uc(t))}};function cc(e,t){return t?e?function(){return so(mo(e)?e.call(this,this):e,mo(t)?t.call(this,this):t)}:t:e}function uc(e){if(uo(e)){const t={};for(let n=0;n<e.length;n++)t[e[n]]=e[n];return t}return e}function dc(e,t){return e?[...new Set([].concat(e,t))]:t}function pc(e,t){return e?so(Object.create(null),e,t):t}function fc(e,t){return e?uo(e)&&uo(t)?[...new Set([...e,...t])]:so(Object.create(null),tc(e),tc(null!=t?t:{})):t}function hc(){return{app:null,config:{isNativeTag:ro,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let mc=0;function vc(e,t){return function(n,r=null){mo(n)||(n=so({},n)),null==r||yo(r)||("production"!==At.env.NODE_ENV&&ra("root props passed to app.mount() must be an object."),r=null);const o=hc(),i=new WeakSet;let s=!1;const a=o.app={_uid:mc++,_component:n,_props:r,_container:null,_context:o,_instance:null,version:up,get config(){return o.config},set config(e){"production"!==At.env.NODE_ENV&&ra("app.config cannot be replaced. Modify individual options instead.")},use:(e,...t)=>(i.has(e)?"production"!==At.env.NODE_ENV&&ra("Plugin has already been applied to target app."):e&&mo(e.install)?(i.add(e),e.install(a,...t)):mo(e)?(i.add(e),e(a,...t)):"production"!==At.env.NODE_ENV&&ra('A plugin must either be a function or an object with an "install" function.'),a),mixin:e=>(__VUE_OPTIONS_API__?o.mixins.includes(e)?"production"!==At.env.NODE_ENV&&ra("Mixin has already been applied to target app"+(e.name?`: ${e.name}`:"")):o.mixins.push(e):"production"!==At.env.NODE_ENV&&ra("Mixins are only available in builds supporting Options API"),a),component:(e,t)=>("production"!==At.env.NODE_ENV&&Ud(e,o.config),t?("production"!==At.env.NODE_ENV&&o.components[e]&&ra(`Component "${e}" has already been registered in target app.`),o.components[e]=t,a):o.components[e]),directive:(e,t)=>("production"!==At.env.NODE_ENV&&tl(e),t?("production"!==At.env.NODE_ENV&&o.directives[e]&&ra(`Directive "${e}" has already been registered in target app.`),o.directives[e]=t,a):o.directives[e]),mount(i,l,c){if(!s){"production"!==At.env.NODE_ENV&&i.__vue_app__&&ra("There is already an app instance mounted on the host container.\n If you want to mount another app on the same host container, you need to unmount the previous app by calling `app.unmount()` first.");const u=_d(n,r);return u.appContext=o,!0===c?c="svg":!1===c&&(c=void 0),"production"!==At.env.NODE_ENV&&(o.reload=()=>{e(wd(u),i,c)}),l&&t?t(u,i):e(u,i,c),s=!0,a._container=i,i.__vue_app__=a,("production"!==At.env.NODE_ENV||__VUE_PROD_DEVTOOLS__)&&(a._instance=u.component,function(e,t){ja("app:init",e,t,{Fragment:rd,Text:od,Comment:id,Static:sd})}(a,up)),ep(u.component)}"production"!==At.env.NODE_ENV&&ra("App has already been mounted.\nIf you want to remount the same app, move your app creation logic into a factory function and create fresh app instances for each mount - e.g. `const createMyApp = () => createApp(App)`")},unmount(){s?(e(null,a._container),("production"!==At.env.NODE_ENV||__VUE_PROD_DEVTOOLS__)&&(a._instance=null,function(e){ja("app:unmount",e)}
11(a)),delete a._container.__vue_app__):"production"!==At.env.NODE_ENV&&ra("Cannot unmount an app that is not mounted.")},provide:(e,t)=>("production"!==At.env.NODE_ENV&&e in o.provides&&ra(`App already provides property with key "${String(e)}". It will be overwritten with the new value.`),o.provides[e]=t,a),runWithContext(e){const t=gc;gc=a;try{return e()}finally{gc=t}}};return a}}let gc=null;function yc(e,t){if(kd){let n=kd.provides;const r=kd.parent&&kd.parent.provides;r===n&&(n=kd.provides=Object.create(r)),n[e]=t}else"production"!==At.env.NODE_ENV&&ra("provide() can only be used inside setup().")}function bc(e,t,n=!1){const r=kd||Xa;if(r||gc){const o=gc?gc._context.provides:r?null==r.parent?r.vnode.appContext&&r.vnode.appContext.provides:r.parent.provides:void 0;if(o&&e in o)return o[e];if(arguments.length>1)return n&&mo(t)?t.call(r&&r.proxy):t;"production"!==At.env.NODE_ENV&&ra(`injection "${String(e)}" not found.`)}else"production"!==At.env.NODE_ENV&&ra("inject() can only be used inside setup() or functional components.")}const Ec={},_c=()=>Object.create(Ec),Sc=e=>Object.getPrototypeOf(e)===Ec;function xc(e,t,n,r){const[o,i]=e.propsOptions;let s,a=!1;if(t)for(let l in t){if(No(l))continue;const c=t[l];let u;o&&co(o,u=To(l))?i&&i.includes(u)?(s||(s={}))[u]=c:n[u]=c:Pu(e.emitsOptions,l)||l in r&&c===r[l]||(r[l]=c,a=!0)}if(i){const t=Ls(n),r=s||eo;for(let s=0;s<i.length;s++){const a=i[s];n[a]=wc(o,t,a,r[a],e,!co(r,a))}}return a}function wc(e,t,n,r,o,i){const s=e[n];if(null!=s){const e=co(s,"default");if(e&&void 0===r){const e=s.default;if(s.type!==Function&&!s.skipFactory&&mo(e)){const{propsDefaults:i}=o;if(n in i)r=i[n];else{const s=Bd(o);r=i[n]=e.call(null,t),s()}}else r=e}s[0]&&(i&&!e?r=!1:!s[1]||""!==r&&r!==Mo(n)||(r=!0))}return r}const Nc=new WeakMap;function Ac(e,t,n=!1){const r=__VUE_OPTIONS_API__&&n?Nc:t.propsCache,o=r.get(e);if(o)return o;const i=e.props,s={},a=[];let l=!1;if(__VUE_OPTIONS_API__&&!mo(e)){const r=e=>{l=!0;const[n,r]=Ac(e,t,!0);so(s,n),r&&a.push(...r)};!n&&t.mixins.length&&t.mixins.forEach(r),e.extends&&r(e.extends),e.mixins&&e.mixins.forEach(r)}if(!i&&!l)return yo(e)&&r.set(e,to),to;if(uo(i))for(let e=0;e<i.length;e++){"production"===At.env.NODE_ENV||vo(i[e])||ra("props must be strings when using array syntax.",i[e]);const t=To(i[e]);Cc(t)&&(s[t]=eo)}else if(i){"production"===At.env.NODE_ENV||yo(i)||ra("invalid props options",i);for(const e in i){const t=To(e);if(Cc(t)){const n=i[e],r=s[t]=uo(n)||mo(n)?{type:n}:so({},n),o=r.type;let l=!1,c=!0;if(uo(o))for(let e=0;e<o.length;++e){const t=o[e],n=mo(t)&&t.name;if("Boolean"===n){l=!0;break}"String"===n&&(c=!1)}else l=mo(o)&&"Boolean"===o.name;r[0]=l,r[1]=c,(l||co(r,"default"))&&a.push(t)}}}const c=[s,a];return yo(e)&&r.set(e,c),c}function Cc(e){return"$"!==e[0]&&!No(e)||("production"!==At.env.NODE_ENV&&ra(`Invalid prop name: "${e}" is a reserved property.`),!1)}function Oc(e,t,n){const r=Ls(t),o=n.propsOptions[0];for(const t in o){let n=o[t];null!=n&&Tc(t,r[t],n,"production"!==At.env.NODE_ENV?Os(r):r,!co(e,t)&&!co(e,Mo(t)))}}function Tc(e,t,n,r,o){const{type:i,required:s,validator:a,skipCheck:l}=n;if(s&&o)ra('Missing required prop: "'+e+'"');else if(null!=t||s){if(null!=i&&!0!==i&&!l){let n=!1;const r=uo(i)?i:[i],o=[];for(let e=0;e<r.length&&!n;e++){const{valid:i,expectedType:s}=Mc(t,r[e]);o.push(s||""),n=i}if(!n)return void ra(function(e,t,n){if(0===n.length)return`Prop type [] for prop "${e}" won't match anything. Did you mean to use type Array instead?`;let r=`Invalid prop: type check failed for prop "${e}". Expected ${n.map(Do).join(" | ")}`;const o=n[0],i=So(t),s=Dc(t,o),a=Dc(t,i);1===n.length&&Ic(o)&&!function(...e){return e.some((e=>"boolean"===e.toLowerCase()))}(o,i)&&(r+=` with value ${s}`);r+=`, got ${i} `,Ic(i)&&(r+=`with value ${a}.`);return r}(e,t,o))}a&&!a(t,r)&&ra('Invalid prop: custom validator check failed for prop "'+e+'".')}}const $c=Qr("String,Number,Boolean,Function,Symbol,BigInt");function Mc(e,t){let n;const r=function(e){if(null===e)return"null";if("function"==typeof e)return e.name||"";if("object"==typeof e)return e.constructor&&e.constructor.name||"";return""}(t);if($c(r)){const o=typeof e;n=o===r.toLowerCase(),n||"object"!==o||(n=e instanceof t)}else n="Object"===r?yo(e):"Array"===r?uo(e):"null"===r?null===e:e instanceof t;return{valid:n,expectedType:r}}function Dc(e,t){return"String"===t?`"${e}"`:"Number"===t?`${Number(e)}`:`${e}`}function Ic(e){return["string","number","boolean"].some((t=>e.toLowerCase()===t))}const Lc=e=>"_"===e[0]||"$stable"===e,kc=e=>uo(e)?e.map(Cd):[Cd(e)],Pc=(e,t,n)=>{if(t._n)return t;const r=el(((...r)=>("production"===At.env.NODE_ENV||!kd||n&&n.root!==kd.root||ra(`Slot "${e}" invoked outside of the render function: this will not track dependencies used in the slot. Invoke the slot function inside the render function instead.`),kc(t(...r)))),n);return r._c=!1,r},Rc=(e,t,n)=>{const r=e._ctx;for(const n in e){if(Lc(n))continue;const o=e[n];if(mo(o))t[n]=Pc(n,o,r);else if(null!=o){"production"!==At.env.NODE_ENV&&ra(`Non-function value encountered for slot "${n}". Prefer function slots for better performance.`);const e=kc(o);t[n]=()=>e}}},Vc=(e,t)=>{"production"===At.env.NODE_ENV||El(e.vnode)||ra("Non-function value encountered for default slot. Prefer function slots for better performance.");const n=kc(t);e.slots.default=()=>n},Bc=(e,t,n)=>{for(const r in t)(n||"_"!==r)&&(e[r]=t[r])},Fc=(e,t,n)=>{const r=e.slots=_c();if(32&e.vnode.shapeFlag){const e=t._;e?(Bc(r,t,n),n&&Po(r,"_",e,!0)):Rc(t,r)}else t&&Vc(e,t)},jc=(e,t,n)=>
11{const{vnode:r,slots:o}=e;let i=!0,s=eo;if(32&r.shapeFlag){const r=t._;r?"production"!==At.env.NODE_ENV&&Ma?(Bc(o,t,n),Bi(e,"set","$slots")):n&&1===r?i=!1:Bc(o,t,n):(i=!t.$stable,Rc(t,o)),s=t}else t&&(Vc(e,t),s={default:1});if(i)for(const e in o)Lc(e)||null!=s[e]||delete o[e]};function Uc(e,t,n,r,o=!1){if(uo(e))return void e.forEach(((e,i)=>Uc(e,t&&(uo(t)?t[i]:t),n,r,o)));if(yl(r)&&!o)return;const i=4&r.shapeFlag?ep(r.component):r.el,s=o?null:i,{i:a,r:l}=e;if("production"!==At.env.NODE_ENV&&!a)return void ra("Missing ref owner context. ref cannot be used on hoisted vnodes. A vnode with ref must be created inside the render function.");const c=t&&t.r,u=a.refs===eo?a.refs={}:a.refs,d=a.setupState;if(null!=c&&c!==l&&(vo(c)?(u[c]=null,co(d,c)&&(d[c]=null)):js(c)&&(c.value=null)),mo(l))la(l,a,12,[s,u]);else{const t=vo(l),r=js(l);if(t||r){const a=()=>{if(e.f){const n=t?co(d,l)?d[l]:u[l]:l.value;o?uo(n)&&ao(n,i):uo(n)?n.includes(i)||n.push(i):t?(u[l]=[i],co(d,l)&&(d[l]=u[l])):(l.value=[i],e.k&&(u[e.k]=l.value))}else t?(u[l]=s,co(d,l)&&(d[l]=s)):r?(l.value=s,e.k&&(u[e.k]=s)):"production"!==At.env.NODE_ENV&&ra("Invalid template ref type:",l,`(${typeof l})`)};s?(a.id=-1,fu(a,n)):a()}else"production"!==At.env.NODE_ENV&&ra("Invalid template ref type:",l,`(${typeof l})`)}}const Hc=Symbol("_vte"),Zc=e=>e&&(e.disabled||""===e.disabled),Gc=e=>"undefined"!=typeof SVGElement&&e instanceof SVGElement,zc=e=>"function"==typeof MathMLElement&&e instanceof MathMLElement,qc=(e,t)=>{const n=e&&e.to;if(vo(n)){if(t){const r=t(n);return"production"===At.env.NODE_ENV||r||Zc(e)||ra(`Failed to locate Teleport target with selector "${n}". Note the target element must exist before the component is mounted - i.e. the target cannot be rendered by the component itself, and ideally should be outside of the entire Vue component tree.`),r}return"production"!==At.env.NODE_ENV&&ra("Current renderer does not support string target for Teleports. (missing querySelector renderer option)"),null}return"production"===At.env.NODE_ENV||n||Zc(e)||ra(`Invalid Teleport target: ${n}`),n},Wc={name:"Teleport",__isTeleport:!0,process(e,t,n,r,o,i,s,a,l,c){const{mc:u,pc:d,pbc:p,o:{insert:f,querySelector:h,createText:m,createComment:v}}=c,g=Zc(t.props);let{shapeFlag:y,children:b,dynamicChildren:E}=t;if("production"!==At.env.NODE_ENV&&Ma&&(l=!1,E=null),null==e){const e=t.el="production"!==At.env.NODE_ENV?v("teleport start"):m(""),c=t.anchor="production"!==At.env.NODE_ENV?v("teleport end"):m("");f(e,n,r),f(c,n,r);const d=t.target=qc(t.props,h),p=Jc(d,t,m,f);d?"svg"===s||Gc(d)?s="svg":("mathml"===s||zc(d))&&(s="mathml"):"production"===At.env.NODE_ENV||g||ra("Invalid Teleport target on mount:",d,`(${typeof d})`);const E=(e,t)=>{16&y&&u(b,e,t,o,i,s,a,l)};g?E(n,c):d&&E(d,p)}else{t.el=e.el,t.targetStart=e.targetStart;const r=t.anchor=e.anchor,u=t.target=e.target,f=t.targetAnchor=e.targetAnchor,m=Zc(e.props),v=m?n:u,y=m?r:f;if("svg"===s||Gc(u)?s="svg":("mathml"===s||zc(u))&&(s="mathml"),E?(p(e.dynamicChildren,E,v,o,i,s,a),Eu(e,t,!0)):l||d(e,t,v,y,o,i,s,a,!1),g)m?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):Kc(t,n,r,c,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const e=t.target=qc(t.props,h);e?Kc(t,e,null,c,0):"production"!==At.env.NODE_ENV&&ra("Invalid Teleport target on update:",u,`(${typeof u})`)}else m&&Kc(t,u,f,c,1)}Xc(t)},remove(e,t,n,{um:r,o:{remove:o}},i){const{shapeFlag:s,children:a,anchor:l,targetStart:c,targetAnchor:u,target:d,props:p}=e;if(d&&(o(c),o(u)),i&&o(l),16&s){const e=i||!Zc(p);for(let o=0;o<a.length;o++){const i=a[o];r(i,t,n,e,!!i.dynamicChildren)}}},move:Kc,hydrate:function(e,t,n,r,o,i,{o:{nextSibling:s,parentNode:a,querySelector:l,insert:c,createText:u}},d){const p=t.target=qc(t.props,l);if(p){const l=p._lpa||p.firstChild;if(16&t.shapeFlag)if(Zc(t.props))t.anchor=d(s(e),t,a(e),n,r,o,i),t.targetStart=l,t.targetAnchor=l&&s(l);else{t.anchor=s(e);let a=l;for(;a;){if(a&&8===a.nodeType)if("teleport start anchor"===a.data)t.targetStart=a;else if("teleport anchor"===a.data){t.targetAnchor=a,p._lpa=t.targetAnchor&&s(t.targetAnchor);break}a=s(a)}t.targetAnchor||Jc(p,t,u,c),d(l&&s(l),t,p,n,r,o,i)}Xc(t)}return t.anchor&&s(t.anchor)}};function Kc(e,t,n,{o:{insert:r},m:o},i=2){0===i&&r(e.targetAnchor,t,n);const{el:s,anchor:a,shapeFlag:l,children:c,props:u}=e,d=2===i;if(d&&r(s,t,n),(!d||Zc(u))&&16&l)for(let e=0;e<c.length;e++)o(c[e],t,n,2);d&&r(a,t,n)}const Yc=Wc;function Xc(e){const t=e.ctx;if(t&&t.ut){let n=e.children[0].el;for(;n&&n!==e.targetAnchor;)1===n.nodeType&&n.setAttribute("data-v-owner",t.uid),n=n.nextSibling;t.ut()}}
11function Jc(e,t,n,r){const o=t.targetStart=n(""),i=t.targetAnchor=n("");return o[Hc]=i,e&&(r(o,e),r(i,e)),i}let Qc=!1;const eu=()=>{Qc||(console.error("Hydration completed but contains mismatches."),Qc=!0)},tu=e=>(e=>e.namespaceURI.includes("svg")&&"foreignObject"!==e.tagName)(e)?"svg":(e=>e.namespaceURI.includes("MathML"))(e)?"mathml":void 0,nu=e=>8===e.nodeType;function ru(e){const{mt:t,p:n,o:{patchProp:r,createText:o,nextSibling:i,parentNode:s,remove:a,insert:l,createComment:c}}=e,u=(n,r,a,c,y,b=!1)=>{b=b||!!r.dynamicChildren;const E=nu(n)&&"["===n.data,_=()=>h(n,r,a,c,y,E),{type:S,ref:x,shapeFlag:w,patchFlag:N}=r;let A=n.nodeType;r.el=n,("production"!==At.env.NODE_ENV||__VUE_PROD_DEVTOOLS__)&&(Po(n,"__vnode",r,!0),Po(n,"__vueParentComponent",a,!0)),-2===N&&(b=!1,r.dynamicChildren=null);let C=null;switch(S){case od:3!==A?""===r.children?(l(r.el=o(""),s(n),n),C=n):C=_():(n.data!==r.children&&(("production"!==At.env.NODE_ENV||__VUE_PROD_HYDRATION_MISMATCH_DETAILS__)&&ra("Hydration text mismatch in",n.parentNode,`\n - rendered on server: ${JSON.stringify(n.data)}\n - expected on client: ${JSON.stringify(r.children)}`),eu(),n.data=r.children),C=i(n));break;case id:g(n)?(C=i(n),v(r.el=n.content.firstChild,n,a)):C=8!==A||E?_():i(n);break;case sd:if(E&&(A=(n=i(n)).nodeType),1===A||3===A){C=n;const e=!r.children.length;for(let t=0;t<r.staticCount;t++)e&&(r.children+=1===C.nodeType?C.outerHTML:C.data),t===r.staticCount-1&&(r.anchor=C),C=i(C);return E?i(C):C}_();break;case rd:C=E?f(n,r,a,c,y,b):_();break;default:if(1&w)C=1===A&&r.type.toLowerCase()===n.tagName.toLowerCase()||g(n)?d(n,r,a,c,y,b):_();else if(6&w){r.slotScopeIds=y;const e=s(n);if(C=E?m(n):nu(n)&&"teleport start"===n.data?m(n,n.data,"teleport end"):i(n),t(r,e,null,a,c,tu(e),b),yl(r)){let t;E?(t=_d(rd),t.anchor=C?C.previousSibling:e.lastChild):t=3===n.nodeType?Ad(""):_d("div"),t.el=n,r.component.subTree=t}}else 64&w?C=8!==A?_():r.type.hydrate(n,r,a,c,y,b,e,p):128&w?C=r.type.hydrate(n,r,a,c,tu(s(n)),y,b,e,u):("production"!==At.env.NODE_ENV||__VUE_PROD_HYDRATION_MISMATCH_DETAILS__)&&ra("Invalid HostVNode type:",S,`(${typeof S})`)}return null!=x&&Uc(x,null,c,r),C},d=(e,t,n,o,i,s)=>{s=s||!!t.dynamicChildren;const{type:l,props:c,patchFlag:u,shapeFlag:d,dirs:f,transition:h}=t,m="input"===l||"option"===l;if("production"!==At.env.NODE_ENV||m||-1!==u){f&&nl(t,null,n,"created");let l,y=!1;if(g(e)){y=bu(o,h)&&n&&n.vnode.props&&n.vnode.props.appear;const r=e.content.firstChild;y&&h.beforeEnter(r),v(r,e,n),t.el=e=r}if(16&d&&(!c||!c.innerHTML&&!c.textContent)){let r=p(e.firstChild,t,e,n,o,i,s),l=!1;for(;r;){"production"===At.env.NODE_ENV&&!__VUE_PROD_HYDRATION_MISMATCH_DETAILS__||l||(ra("Hydration children mismatch on",e,"\nServer rendered element contains more child nodes than client vdom."),l=!0),eu();const t=r;r=r.nextSibling,a(t)}}else 8&d&&e.textContent!==t.children&&(("production"!==At.env.NODE_ENV||__VUE_PROD_HYDRATION_MISMATCH_DETAILS__)&&ra("Hydration text content mismatch on",e,`\n - rendered on server: ${e.textContent}\n - expected on client: ${t.children}`),eu(),e.textContent=t.children);if(c)if("production"!==At.env.NODE_ENV||__VUE_PROD_HYDRATION_MISMATCH_DETAILS__||m||!s||48&u){const o=e.tagName.includes("-");for(const i in c)"production"===At.env.NODE_ENV&&!__VUE_PROD_HYDRATION_MISMATCH_DETAILS__||f&&f.some((e=>e.dir.created))||!ou(e,i,c[i],t,n)||eu(),(m&&(i.endsWith("value")||"indeterminate"===i)||oo(i)&&!No(i)||"."===i[0]||o)&&r(e,i,null,c[i],void 0,n)}else if(c.onClick)r(e,"onClick",null,c.onClick,void 0,n);else if(4&u&&$s(c.style))for(const e in c.style)c.style[e];(l=c&&c.onVnodeBeforeMount)&&Md(l,n,t),f&&nl(t,null,n,"beforeMount"),((l=c&&c.onVnodeMounted)||f||y)&&td((()=>{l&&Md(l,n,t),y&&h.enter(e),f&&nl(t,null,n,"mounted")}),o)}return e.nextSibling},p=(e,t,r,s,a,c,d)=>{d=d||!!t.dynamicChildren;const p=t.children,f=p.length;let h=!1;for(let t=0;t<f;t++){const f=d?p[t]:p[t]=Cd(p[t]),m=f.type===od;if(e){if(m&&!d){let n=p[t+1];n&&(n=Cd(n)).type===od&&(l(o(e.data.slice(f.children.length)),r,i(e)),e.data=f.children)}e=u(e,f,s,a,c,d)}else m&&!f.children?l(f.el=o(""),r):("production"===At.env.NODE_ENV&&!__VUE_PROD_HYDRATION_MISMATCH_DETAILS__||h||(ra("Hydration children mismatch on",r,"\nServer rendered element contains fewer child nodes than client vdom."),h=!0),eu(),n(null,f,r,null,s,a,tu(r),
11c))}return e},f=(e,t,n,r,o,a)=>{const{slotScopeIds:u}=t;u&&(o=o?o.concat(u):u);const d=s(e),f=p(i(e),t,d,n,r,o,a);return f&&nu(f)&&"]"===f.data?i(t.anchor=f):(eu(),l(t.anchor=c("]"),d,f),f)},h=(e,t,r,o,l,c)=>{if(("production"!==At.env.NODE_ENV||__VUE_PROD_HYDRATION_MISMATCH_DETAILS__)&&ra("Hydration node mismatch:\n- rendered on server:",e,3===e.nodeType?"(text)":nu(e)&&"["===e.data?"(start of fragment)":"","\n- expected on client:",t.type),eu(),t.el=null,c){const t=m(e);for(;;){const n=i(e);if(!n||n===t)break;a(n)}}const u=i(e),d=s(e);return a(e),n(null,t,d,u,r,o,tu(d),l),u},m=(e,t="[",n="]")=>{let r=0;for(;e;)if((e=i(e))&&nu(e)&&(e.data===t&&r++,e.data===n)){if(0===r)return i(e);r--}return e},v=(e,t,n)=>{const r=t.parentNode;r&&r.replaceChild(e,t);let o=n;for(;o;)o.vnode.el===t&&(o.vnode.el=o.subTree.el=e),o=o.parent},g=e=>1===e.nodeType&&"template"===e.tagName.toLowerCase();return[(e,t)=>{if(!t.hasChildNodes())return("production"!==At.env.NODE_ENV||__VUE_PROD_HYDRATION_MISMATCH_DETAILS__)&&ra("Attempting to hydrate existing markup but container is empty. Performing full mount instead."),n(null,e,t),Aa(),void(t._vnode=e);u(t.firstChild,e,null,null,null),Aa(),t._vnode=e},u]}function ou(e,t,n,r,o){let i,s,a,l;if("class"===t)a=e.getAttribute("class"),l=Yo(n),function(e,t){if(e.size!==t.size)return!1;for(const n of e)if(!t.has(n))return!1;return!0}(iu(a||""),iu(l))||(i=s="class");else if("style"===t){a=e.getAttribute("style")||"",l=vo(n)?n:function(e){let t="";if(!e||vo(e))return t;for(const n in e){const r=e[n];(vo(r)||"number"==typeof r)&&(t+=`${n.startsWith("--")?n:Mo(n)}:${r};`)}return t}(Go(n));const t=su(a),c=su(l);if(r.dirs)for(const{dir:e,value:t}of r.dirs)"show"!==e.name||t||c.set("display","none");o&&au(o,r,c),function(e,t){if(e.size!==t.size)return!1;for(const[n,r]of e)if(r!==t.get(n))return!1;return!0}(t,c)||(i=s="style")}else(e instanceof SVGElement&&si(t)||e instanceof HTMLElement&&(ri(t)||ii(t)))&&(ri(t)?(a=e.hasAttribute(t),l=oi(n)):null==n?(a=e.hasAttribute(t),l=!1):(a=e.hasAttribute(t)?e.getAttribute(t):"value"===t&&"TEXTAREA"===e.tagName&&e.value,l=!!function(e){if(null==e)return!1;const t=typeof e;return"string"===t||"number"===t||"boolean"===t}(n)&&String(n)),a!==l&&(i="attribute",s=t));if(i){const t=e=>!1===e?"(not rendered)":`${s}="${e}"`;return ra(`Hydration ${i} mismatch on`,e,`\n - rendered on server: ${t(a)}\n - expected on client: ${t(l)}\n Note: this mismatch is check-only. The DOM will not be rectified in production due to performance overhead.\n You should fix the source of the mismatch.`),!0}return!1}function iu(e){return new Set(e.trim().split(/\s+/))}function su(e){const t=new Map;for(const n of e.split(";")){let[e,r]=n.split(":");
11e=e.trim(),r=r&&r.trim(),e&&r&&t.set(e,r)}return t}function au(e,t,n){const r=e.subTree;if(e.getCssVars&&(t===r||r&&r.type===rd&&r.children.includes(t))){const t=e.getCssVars();for(const e in t)n.set(`--${e}`,String(t[e]))}t===r&&e.parent&&au(e.parent,e.vnode,n)}let lu,cu;function uu(e,t){e.appContext.config.performance&&pu()&&cu.mark(`vue-${t}-${e.uid}`),("production"!==At.env.NODE_ENV||__VUE_PROD_DEVTOOLS__)&&Wa(e,t,pu()?cu.now():Date.now())}function du(e,t){if(e.appContext.config.performance&&pu()){const n=`vue-${t}-${e.uid}`,r=n+":end";cu.mark(r),cu.measure(`<${op(e,e.type)}> ${t}`,n,r),cu.clearMarks(n),cu.clearMarks(r)}("production"!==At.env.NODE_ENV||__VUE_PROD_DEVTOOLS__)&&Ka(e,t,pu()?cu.now():Date.now())}function pu(){return void 0!==lu||("undefined"!=typeof window&&window.performance?(lu=!0,cu=window.performance):lu=!1),lu}const fu=td;function hu(e){return vu(e)}function mu(e){return vu(e,ru)}function vu(e,t){!function(){const e=[];if("boolean"!=typeof __VUE_OPTIONS_API__&&("production"!==At.env.NODE_ENV&&e.push("__VUE_OPTIONS_API__"),Fo().__VUE_OPTIONS_API__=!0),"boolean"!=typeof __VUE_PROD_DEVTOOLS__&&("production"!==At.env.NODE_ENV&&e.push("__VUE_PROD_DEVTOOLS__"),Fo().__VUE_PROD_DEVTOOLS__=!1),"boolean"!=typeof __VUE_PROD_HYDRATION_MISMATCH_DETAILS__&&("production"!==At.env.NODE_ENV&&e.push("__VUE_PROD_HYDRATION_MISMATCH_DETAILS__"),Fo().__VUE_PROD_HYDRATION_MISMATCH_DETAILS__=!1),"production"!==At.env.NODE_ENV&&e.length){const t=e.length>1;console.warn(`Feature flag${t?"s":""} ${e.join(", ")} ${t?"are":"is"} not explicitly defined. You are running the esm-bundler build of Vue, which expects these compile-time feature flags to be globally injected via the bundler config in order to get better tree-shaking in the production bundle.\n\nFor more details, see https://link.vuejs.org/feature-flags.`)}}();const n=Fo();n.__VUE__=!0,("production"!==At.env.NODE_ENV||__VUE_PROD_DEVTOOLS__)&&Ua(n.__VUE_DEVTOOLS_GLOBAL_HOOK__,n);const{insert:r,remove:o,patchProp:i,createElement:s,createText:a,createComment:l,setText:c,setElementText:u,parentNode:d,nextSibling:p,setScopeId:f=no,insertStaticContent:h}=e,m=(e,t,n,r=null,o=null,i=null,s=void 0,a=null,l=("production"===At.env.NODE_ENV||!Ma)&&!!t.dynamicChildren)=>{if(e===t)return;e&&!gd(e,t)&&(r=H(e),V(e,o,i,!0),e=null),-2===t.patchFlag&&(l=!1,t.dynamicChildren=null);const{type:c,ref:u,shapeFlag:d}=t;switch(c){case od:v(e,t,n,r);break;case id:g(e,t,n,r);break;case sd:null==e?y(t,n,r,s):"production"!==At.env.NODE_ENV&&b(e,t,n,s);break;case rd:O(e,t,n,r,o,i,s,a,l);break;default:1&d?_(e,t,n,r,o,i,s,a,l):6&d?T(e,t,n,r,o,i,s,a,l):64&d||128&d?c.process(e,t,n,r,o,i,s,a,l,z):"production"!==At.env.NODE_ENV&&ra("Invalid VNode type:",c,`(${typeof c})`)}null!=u&&o&&Uc(u,e&&e.ref,i,t||e,!t)},v=(e,t,n,o)=>{if(null==e)r(t.el=a(t.children),n,o);else{const n=t.el=e.el;t.children!==e.children&&c(n,t.children)}},g=(e,t,n,o)=>{null==e?r(t.el=l(t.children||""),n,o):t.el=e.el},y=(e,t,n,r)=>{[e.el,e.anchor]=h(e.children,t,n,r,e.el,e.anchor)},b=(e,t,n,r)=>{if(t.children!==e.children){const o=p(e.anchor);E(e),[t.el,t.anchor]=h(t.children,n,o,r)}else t.el=e.el,t.anchor=e.anchor},E=({el:e,anchor:t})=>{let n;for(;e&&e!==t;)n=p(e),o(e),e=n;o(t)},_=(e,t,n,r,o,i,s,a,l)=>{"svg"===t.type?s="svg":"math"===t.type&&(s="mathml"),null==e?S(t,n,r,o,i,s,a,l):N(e,t,o,i,s,a,l)},S=(e,t,n,o,a,l,c,d)=>{let p,f;const{props:h,shapeFlag:m,transition:v,dirs:g}=e;if(p=e.el=s(e.type,l,h&&h.is,h),8&m?u(p,e.children):16&m&&w(e.children,p,null,o,a,gu(e,l),c,d),g&&nl(e,null,o,"created"),x(p,e,e.scopeId,c,o),h){for(const e in h)"value"===e||No(e)||i(p,e,null,h[e],l,o);"value"in h&&i(p,"value",null,h.value,l),(f=h.onVnodeBeforeMount)&&Md(f,o,e)}("production"!==At.env.NODE_ENV||__VUE_PROD_DEVTOOLS__)&&(Po(p,"__vnode",e,!0),Po(p,"__vueParentComponent",o,!0)),g&&nl(e,null,o,"beforeMount");const y=bu(a,v);y&&v.beforeEnter(p),r(p,t,n),((f=h&&h.onVnodeMounted)||y||g)&&fu((()=>{f&&Md(f,o,e),y&&v.enter(p),g&&nl(e,null,o,"mounted")}),a)},x=(e,t,n,r,o)=>{if(n&&f(e,n),r)for(let t=0;t<r.length;t++)f(e,r[t]);if(o){let n=o.subTree;if("production"!==At.env.NODE_ENV&&n.patchFlag>0&&2048&n.patchFlag&&(n=ju(n.children)||n),t===n){const t=o.vnode;x(e,t,t.scopeId,t.slotScopeIds,o.parent)}}},w=(e,t,n,r,o,i,s,a,l=0)=>{for(let c=l;c<e.length;c++){const l=e[c]=a?Od(e[c]):Cd(e[c]);m(null,l,t,n,r,o,i,s,a)}},N=(e,t,n,r,o,s,a)=>{const l=t.el=e.el;("production"!==At.env.NODE_ENV||__VUE_PROD_DEVTOOLS__)&&(l.__vnode=t);let{patchFlag:c,dynamicChildren:d,dirs:p}=t;c|=16&e.patchFlag;const f=e.props||eo,h=t.props||eo;let m;if(n&&yu(n,!1),(m=h.onVnodeBeforeUpdate)&&Md(m,n,t,e),p&&nl(t,e,n,"beforeUpdate"),n&&yu(n,!0),"production"!==At.env.NODE_ENV&&Ma&&(c=0,a=!1,d=null),(f.innerHTML&&null==h.innerHTML||f.textContent&&null==h.textContent)&&u(l,""),d?(A(e.dynamicChildren,d,l,n,r,gu(t,o),s),"production"!==At.env.NODE_ENV&&Eu(e,t)):a||L(e,t,l,null,n,r,gu(t,o),s,!1),c>0){if(16&c)C(l,f,h,n,o);else if(2&c&&f.class!==h.class&&i(l,"class",null,h.class,o),4&c&&i(l,"style",f.style,h.style,o),8&c){const e=t.dynamicProps;for(let t=0;t<e.length;t++){const r=e[t],s=f[r],a=h[r];a===s&&"value"!==r||i(l,r,s,a,o,n)}}1&c&&e.children!==t.children&&u(l,t.children)}else a||null!=d||C(l,f,h,n,o);((m=h.onVnodeUpdated)||p)&&fu((()=>{m&&Md(m,n,t,e),p&&nl(t,e,n,"updated")}),r)},A=(e,t,n,r,o,i,s)=>{for(let a=0;a<t.length;a++){const l=e[a],c=t[a],u=l.el&&(l.type===rd||!gd(l,c)||70&l.shapeFlag)?d(l.el):n;m(l,c,u,null,r,o,i,s,!0)}},C=(e,t,n,r,o)=>{if(t!==n){if(t!==eo)for(const s in t)No(s)||s in n||i(e,s,t[s],null,o,r);for(const s in n){if(No(s))continue;const a=n[s],l=t[s];a!==l&&"value"!==s&&i(e,s,l,a,o,r)}"value"in n&&i(e,"value",t.value,n.value,o)}},O=(e,t,n,o,i,s,l,c,u)=>{const d=t.el=e?e.el:a(""),p=t.anchor=e?e.anchor:a("");let{patchFlag:f,dynamicChildren:h,slotScopeIds:m}=t;"production"!==At.env.NODE_ENV&&(Ma||2048&f)&&(f=0,u=!1,h=null),m&&(c=c?c.concat(m):m),null==e?(r(d,n,o),r(p,n,o),w(t.children||[],n,p,i,s,l,c,u)):f>0&&64&f&&h&&e.dynamicChildren?(A(e.dynamicChildren,h,n,i,s,l,c),"production"!==At.env.NODE_ENV?Eu(e,t):(null!=t.key||i&&t===i.subTree)&&Eu(e,t,!0)):L(e,t,n,p,i,s,l,c,u)},T=(e,t,n,r,o,i,s,a,l)=>{t.slotScopeIds=a,null==e?512&t.shapeFlag?o.ctx.activate(t,n,r,s,l):$(t,n,r,o,i,s,l):M(e,t,l)},$=(e,t,n,r,o,i,s)=>{const a=e.component=Ld(e,r,o);if("production"!==At.env.NODE_ENV&&a.type.__hmrId&&function(e){const t=e.type.__hmrId;let n=Ia.get(t);n||(La(t,e.type),n=Ia.get(t)),n.instances.add(e)}(a),"production"!==At.env.NODE_ENV&&(ea(e),uu(a,"mount")),El(e)&&(a.ctx.renderer=z),"production"!==At.env.NODE_ENV&&uu(a,"init"),qd(a,!1,s),"production"!==At.env.NODE_ENV&&du(a,"init"),a.asyncDep){if(o&&o.registerDep(a,D,s),!e.el){const e=a.subTree=_d(id);g(null,e,t,n)}}else D(a,e,t,n,o,i,s);"production"!==At.env.NODE_ENV&&(ta(),du(a,"mount"))},M=(e,t,n)=>{const r=t.component=e.component;if(function(e,t,n){const{props:r,children:o,component:i}=e,{props:s,children:a,patchFlag:l}=t,c=i.emitsOptions;if("production"!==At.env.NODE_ENV&&(o||a)&&Ma)return!0;
11if(t.dirs||t.transition)return!0;if(!(n&&l>=0))return!(!o&&!a||a&&a.$stable)||r!==s&&(r?!s||Gu(r,s,c):!!s);if(1024&l)return!0;if(16&l)return r?Gu(r,s,c):!!s;if(8&l){const e=t.dynamicProps;for(let t=0;t<e.length;t++){const n=e[t];if(s[n]!==r[n]&&!Pu(c,n))return!0}}return!1}(e,t,n)){if(r.asyncDep&&!r.asyncResolved)return"production"!==At.env.NODE_ENV&&ea(t),I(r,t,n),void("production"!==At.env.NODE_ENV&&ta());r.next=t,function(e){const t=fa.indexOf(e);t>ha&&fa.splice(t,1)}(r.update),r.effect.dirty=!0,r.update()}else t.el=e.el,r.vnode=t},D=(e,t,n,r,o,i,s)=>{const a=()=>{if(e.isMounted){let{next:t,bu:n,u:r,parent:l,vnode:c}=e;{const n=_u(e);if(n)return t&&(t.el=c.el,I(e,t,s)),void n.asyncDep.then((()=>{e.isUnmounted||a()}))}let u,p=t;"production"!==At.env.NODE_ENV&&ea(t||e.vnode),yu(e,!1),t?(t.el=c.el,I(e,t,s)):t=c,n&&ko(n),(u=t.props&&t.props.onVnodeBeforeUpdate)&&Md(u,l,t,c),yu(e,!0),"production"!==At.env.NODE_ENV&&uu(e,"render");const f=Bu(e);"production"!==At.env.NODE_ENV&&du(e,"render");const h=e.subTree;e.subTree=f,"production"!==At.env.NODE_ENV&&uu(e,"patch"),m(h,f,d(h.el),H(h),e,o,i),"production"!==At.env.NODE_ENV&&du(e,"patch"),t.el=f.el,null===p&&zu(e,f.el),r&&fu(r,o),(u=t.props&&t.props.onVnodeUpdated)&&fu((()=>Md(u,l,t,c)),o),("production"!==At.env.NODE_ENV||__VUE_PROD_DEVTOOLS__)&&Za(e),"production"!==At.env.NODE_ENV&&ta()}else{let s;const{el:a,props:l}=t,{bm:c,m:u,parent:d}=e,p=yl(t);if(yu(e,!1),c&&ko(c),!p&&(s=l&&l.onVnodeBeforeMount)&&Md(s,d,t),yu(e,!0),a&&W){const n=()=>{"production"!==At.env.NODE_ENV&&uu(e,"render"),e.subTree=Bu(e),"production"!==At.env.NODE_ENV&&du(e,"render"),"production"!==At.env.NODE_ENV&&uu(e,"hydrate"),W(a,e.subTree,e,o,null),"production"!==At.env.NODE_ENV&&du(e,"hydrate")};p?t.type.__asyncLoader().then((()=>!e.isUnmounted&&n())):n()}else{"production"!==At.env.NODE_ENV&&uu(e,"render");const s=e.subTree=Bu(e);"production"!==At.env.NODE_ENV&&du(e,"render"),"production"!==At.env.NODE_ENV&&uu(e,"patch"),m(null,s,n,r,e,o,i),"production"!==At.env.NODE_ENV&&du(e,"patch"),t.el=s.el}if(u&&fu(u,o),!p&&(s=l&&l.onVnodeMounted)){const e=t;fu((()=>Md(s,d,e)),o)}(256&t.shapeFlag||d&&yl(d.vnode)&&256&d.vnode.shapeFlag)&&e.a&&fu(e.a,o),e.isMounted=!0,("production"!==At.env.NODE_ENV||__VUE_PROD_DEVTOOLS__)&&Ha(e),t=n=r=null}},l=e.effect=new bi(a,no,(()=>Sa(c)),e.scope),c=e.update=()=>{l.dirty&&l.run()};c.i=e,c.id=e.uid,yu(e,!0),"production"!==At.env.NODE_ENV&&(l.onTrack=e.rtc?t=>ko(e.rtc,t):void 0,l.onTrigger=e.rtg?t=>ko(e.rtg,t):void 0),c()},I=(e,t,n)=>{t.component=e;const r=e.vnode.props;e.vnode=t,e.next=null,function(e,t,n,r){const{props:o,attrs:i,vnode:{patchFlag:s}}=e,a=Ls(o),[l]=e.propsOptions;let c=!1;if("production"!==At.env.NODE_ENV&&function(e){for(;e;){if(e.type.__hmrId)return!0;e=e.parent}}(e)||!(r||s>0)||16&s){let r;xc(e,t,o,i)&&(c=!0);for(const i in a)t&&(co(t,i)||(r=Mo(i))!==i&&co(t,r))||(l?!n||void 0===n[i]&&void 0===n[r]||(o[i]=wc(l,a,i,void 0,e,!0)):delete o[i]);if(i!==a)for(const e in i)t&&co(t,e)||(delete i[e],c=!0)}else if(8&s){const n=e.vnode.dynamicProps;for(let r=0;r<n.length;r++){let s=n[r];if(Pu(e.emitsOptions,s))continue;const u=t[s];if(l)if(co(i,s))u!==i[s]&&(i[s]=u,c=!0);else{const t=To(s);o[t]=wc(l,a,t,u,e,!1)}else u!==i[s]&&(i[s]=u,c=!0)}}c&&Bi(e.attrs,"set",""),"production"!==At.env.NODE_ENV&&Oc(t||{},o,e)}(e,t.props,r,n),jc(e,t.children,n),Ci(),Na(e),Oi()},L=(e,t,n,r,o,i,s,a,l=!1)=>{const c=e&&e.children,d=e?e.shapeFlag:0,p=t.children,{patchFlag:f,shapeFlag:h}=t;if(f>0){if(128&f)return void P(c,p,n,r,o,i,s,a,l);if(256&f)return void k(c,p,n,r,o,i,s,a,l)}8&h?(16&d&&U(c,o,i),p!==c&&u(n,p)):16&d?16&h?P(c,p,n,r,o,i,s,a,l):U(c,o,i,!0):(8&d&&u(n,""),16&h&&w(p,n,r,o,i,s,a,l))},k=(e,t,n,r,o,i,s,a,l)=>{t=t||to;const c=(e=e||to).length,u=t.length,d=Math.min(c,u);let p;for(p=0;p<d;p++){const r=t[p]=l?Od(t[p]):Cd(t[p]);m(e[p],r,n,null,o,i,s,a,l)}c>u?U(e,o,i,!0,!1,d):w(t,n,r,o,i,s,a,l,d)},P=(e,t,n,r,o,i,s,a,l)=>{let c=0;const u=t.length;let d=e.length-1,p=u-1;for(;c<=d&&c<=p;){const r=e[c],u=t[c]=l?Od(t[c]):Cd(t[c]);if(!gd(r,u))break;m(r,u,n,null,o,i,s,a,l),c++}for(;c<=d&&c<=p;){const r=e[d],c=t[p]=l?Od(t[p]):Cd(t[p]);if(!gd(r,c))break;m(r,c,n,null,o,i,s,a,l),d--,p--}if(c>d){if(c<=p){const e=p+1,d=e<u?t[e].el:r;
11for(;c<=p;)m(null,t[c]=l?Od(t[c]):Cd(t[c]),n,d,o,i,s,a,l),c++}}else if(c>p)for(;c<=d;)V(e[c],o,i,!0),c++;else{const f=c,h=c,v=new Map;for(c=h;c<=p;c++){const e=t[c]=l?Od(t[c]):Cd(t[c]);null!=e.key&&("production"!==At.env.NODE_ENV&&v.has(e.key)&&ra("Duplicate keys found during update:",JSON.stringify(e.key),"Make sure keys are unique."),v.set(e.key,c))}let g,y=0;const b=p-h+1;let E=!1,_=0;const S=new Array(b);for(c=0;c<b;c++)S[c]=0;for(c=f;c<=d;c++){const r=e[c];if(y>=b){V(r,o,i,!0);continue}let u;if(null!=r.key)u=v.get(r.key);else for(g=h;g<=p;g++)if(0===S[g-h]&&gd(r,t[g])){u=g;break}void 0===u?V(r,o,i,!0):(S[u-h]=c+1,u>=_?_=u:E=!0,m(r,t[u],n,null,o,i,s,a,l),y++)}const x=E?function(e){const t=e.slice(),n=[0];let r,o,i,s,a;const l=e.length;for(r=0;r<l;r++){const l=e[r];if(0!==l){if(o=n[n.length-1],e[o]<l){t[r]=o,n.push(r);continue}for(i=0,s=n.length-1;i<s;)a=i+s>>1,e[n[a]]<l?i=a+1:s=a;l<e[n[i]]&&(i>0&&(t[r]=n[i-1]),n[i]=r)}}i=n.length,s=n[i-1];for(;i-- >0;)n[i]=s,s=t[s];return n}(S):to;for(g=x.length-1,c=b-1;c>=0;c--){const e=h+c,d=t[e],p=e+1<u?t[e+1].el:r;0===S[c]?m(null,d,n,p,o,i,s,a,l):E&&(g<0||c!==x[g]?R(d,n,p,2):g--)}}},R=(e,t,n,o,i=null)=>{const{el:s,type:a,transition:l,children:c,shapeFlag:u}=e;if(6&u)return void R(e.component.subTree,t,n,o);if(128&u)return void e.suspense.move(t,n,o);if(64&u)return void a.move(e,t,n,z);if(a===rd){r(s,t,n);for(let e=0;e<c.length;e++)R(c[e],t,n,o);return void r(e.anchor,t,n)}if(a===sd)return void(({el:e,anchor:t},n,o)=>{let i;for(;e&&e!==t;)i=p(e),r(e,n,o),e=i;r(t,n,o)})(e,t,n);if(2!==o&&1&u&&l)if(0===o)l.beforeEnter(s),r(s,t,n),fu((()=>l.enter(s)),i);else{const{leave:e,delayLeave:o,afterLeave:i}=l,a=()=>r(s,t,n),c=()=>{e(s,(()=>{a(),i&&i()}))};o?o(s,a,c):c()}else r(s,t,n)},V=(e,t,n,r=!1,o=!1)=>{const{type:i,props:s,ref:a,children:l,dynamicChildren:c,shapeFlag:u,patchFlag:d,dirs:p,cacheIndex:f}=e;if(-2===d&&(o=!1),null!=a&&Uc(a,null,n,e,!0),null!=f&&(t.renderCache[f]=void 0),256&u)return void t.ctx.deactivate(e);const h=1&u&&p,m=!yl(e);let v;if(m&&(v=s&&s.onVnodeBeforeUnmount)&&Md(v,t,e),6&u)j(e.component,n,r);else{if(128&u)return void e.suspense.unmount(n,r);h&&nl(e,null,t,"beforeUnmount"),64&u?e.type.remove(e,t,n,z,r):c&&!c.hasOnce&&(i!==rd||d>0&&64&d)?U(c,t,n,!1,!0):(i===rd&&384&d||!o&&16&u)&&U(l,t,n),r&&B(e)}(m&&(v=s&&s.onVnodeUnmounted)||h)&&fu((()=>{v&&Md(v,t,e),h&&nl(e,null,t,"unmounted")}),n)},B=e=>{const{type:t,el:n,anchor:r,transition:i}=e;if(t===rd)return void("production"!==At.env.NODE_ENV&&e.patchFlag>0&&2048&e.patchFlag&&i&&!i.persisted?e.children.forEach((e=>{e.type===id?o(e.el):B(e)})):F(n,r));if(t===sd)return void E(e);const s=()=>{o(n),i&&!i.persisted&&i.afterLeave&&i.afterLeave()};if(1&e.shapeFlag&&i&&!i.persisted){const{leave:t,delayLeave:r}=i,o=()=>t(n,s);r?r(e.el,s,o):o()}else s()},F=(e,t)=>{let n;for(;e!==t;)n=p(e),o(e),e=n;o(t)},j=(e,t,n)=>{"production"!==At.env.NODE_ENV&&e.type.__hmrId&&function(e){Ia.get(e.type.__hmrId).instances.delete(e)}(e);const{bum:r,scope:o,update:i,subTree:s,um:a,m:l,a:c}=e;Su(l),Su(c),r&&ko(r),o.stop(),i&&(i.active=!1,V(s,e,t,n)),a&&fu(a,t),fu((()=>{e.isUnmounted=!0}),t),t&&t.pendingBranch&&!t.isUnmounted&&e.asyncDep&&!e.asyncResolved&&e.suspenseId===t.pendingId&&(t.deps--,0===t.deps&&t.resolve()),("production"!==At.env.NODE_ENV||__VUE_PROD_DEVTOOLS__)&&za(e)},U=(e,t,n,r=!1,o=!1,i=0)=>{for(let s=i;s<e.length;s++)V(e[s],t,n,r,o)},H=e=>{if(6&e.shapeFlag)return H(e.component.subTree);if(128&e.shapeFlag)return e.suspense.next();const t=p(e.anchor||e.el),n=t&&t[Hc];return n?p(n):t};let Z=!1;const G=(e,t,n)=>{null==e?t._vnode&&V(t._vnode,null,null,!0):m(t._vnode||null,e,t,null,null,null,n),t._vnode=e,Z||(Z=!0,Na(),Aa(),Z=!1)},z={p:m,um:V,m:R,r:B,mt:$,mc:w,pc:L,pbc:A,n:H,o:e};let q,W;return t&&([q,W]=t(z)),{render:G,hydrate:q,createApp:vc(G,q)}}function gu({type:e,props:t},n){return"svg"===n&&"foreignObject"===e||"mathml"===n&&"annotation-xml"===e&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function yu({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function bu(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Eu(e,t,n=!1){const r=e.children,o=t.children;if(uo(r)&&uo(o))for(let e=0;e<r.length;e++){const t=r[e];let i=o[e];1&i.shapeFlag&&!i.dynamicChildren&&((i.patchFlag<=0||32===i.patchFlag)&&(i=o[e]=Od(o[e]),i.el=t.el),n||-2===i.patchFlag||Eu(t,i)),i.type===od&&(i.el=t.el),"production"===At.env.NODE_ENV||i.type!==id||i.el||(i.el=t.el)}}function _u(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:_u(t)}function Su(e){if(e)for(let t=0;t<e.length;t++)e[t].active=!1}const xu=Symbol.for("v-scx"),wu=()=>{{const e=bc(xu);return e||"production"!==At.env.NODE_ENV&&ra("Server rendering context not provided. Make sure to only call useSSRContext() conditionally in the server build."),e}};function Nu(e,t){return Tu(e,null,"production"!==At.env.NODE_ENV?so({},t,{flush:"post"}):{flush:"post"})}function Au(e,t){return Tu(e,null,"production"!==At.env.NODE_ENV?so({},t,{flush:"sync"}):{flush:"sync"})}const Cu={};function Ou(e,t,n){return"production"===At.env.NODE_ENV||mo(t)||ra("`watch(fn, options?)` signature has been moved to a separate API. Use `watchEffect(fn, options?)` instead. `watch` now only supports `watch(source, cb, options?) signature."),Tu(e,t,n)}function Tu(e,t,{immediate:n,deep:r,flush:o,once:i,onTrack:s,onTrigger:a}
11=eo){if(t&&i){const e=t;t=(...t)=>{e(...t),S()}}"production"!==At.env.NODE_ENV&&void 0!==r&&"number"==typeof r&&ra('watch() "deep" option with number value will be used as watch depth in future versions. Please use a boolean instead to avoid potential breakage.'),"production"===At.env.NODE_ENV||t||(void 0!==n&&ra('watch() "immediate" option is only respected when using the watch(source, callback, options?) signature.'),void 0!==r&&ra('watch() "deep" option is only respected when using the watch(source, callback, options?) signature.'),void 0!==i&&ra('watch() "once" option is only respected when using the watch(source, callback, options?) signature.'));const l=e=>{ra("Invalid watch source: ",e,"A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.")},c=kd,u=e=>!0===r?e:Du(e,!1===r?1:void 0);let d,p,f=!1,h=!1;if(js(e)?(d=()=>e.value,f=Ds(e)):$s(e)?(d=()=>u(e),f=!0):uo(e)?(h=!0,f=e.some((e=>$s(e)||Ds(e))),d=()=>e.map((e=>js(e)?e.value:$s(e)?u(e):mo(e)?la(e,c,2):void("production"!==At.env.NODE_ENV&&l(e))))):mo(e)?d=t?()=>la(e,c,2):()=>(p&&p(),ca(e,c,3,[v])):(d=no,"production"!==At.env.NODE_ENV&&l(e)),t&&r){const e=d;d=()=>Du(e())}let m,v=e=>{p=E.onStop=()=>{la(e,c,4),p=E.onStop=void 0}};if(zd){if(v=no,t?n&&ca(t,c,3,[d(),h?[]:void 0,v]):d(),"sync"!==o)return no;{const e=wu();m=e.__watcherHandles||(e.__watcherHandles=[])}}let g=h?new Array(e.length).fill(Cu):Cu;const y=()=>{if(E.active&&E.dirty)if(t){const e=E.run();(r||f||(h?e.some(((e,t)=>Lo(e,g[t]))):Lo(e,g)))&&(p&&p(),ca(t,c,3,[e,g===Cu?void 0:h&&g[0]===Cu?[]:g,v]),g=e)}else E.run()};let b;y.allowRecurse=!!t,"sync"===o?b=y:"post"===o?b=()=>fu(y,c&&c.suspense):(y.pre=!0,c&&(y.id=c.uid),b=()=>Sa(y));const E=new bi(d,no,b),_=yi(),S=()=>{E.stop(),_&&ao(_.effects,E)};return"production"!==At.env.NODE_ENV&&(E.onTrack=s,E.onTrigger=a),t?n?y():g=E.run():"post"===o?fu(E.run.bind(E),c&&c.suspense):E.run(),m&&m.push(S),S}function $u(e,t,n){const r=this.proxy,o=vo(e)?e.includes(".")?Mu(r,e):()=>r[e]:e.bind(r,r);let i;mo(t)?i=t:(i=t.handler,n=t);const s=Bd(this),a=Tu(o,i.bind(r),n);return s(),a}function Mu(e,t){const n=t.split(".");return()=>{let t=e;for(let e=0;e<n.length&&t;e++)t=t[n[e]];return t}}function Du(e,t=1/0,n){if(t<=0||!yo(e)||e.__v_skip)return e;if((n=n||new Set).has(e))return e;if(n.add(e),t--,js(e))Du(e.value,t,n);else if(uo(e))for(let r=0;r<e.length;r++)Du(e[r],t,n);else if(fo(e)||po(e))e.forEach((e=>{Du(e,t,n)}));else if(xo(e)){for(const r in e)Du(e[r],t,n);for(const r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&Du(e[r],t,n)}return e}const Iu=(e,t)=>"modelValue"===t||"model-value"===t?e.modelModifiers:e[`${t}Modifiers`]||e[`${To(t)}Modifiers`]||e[`${Mo(t)}Modifiers`];function Lu(e,t,...n){if(e.isUnmounted)return;const r=e.vnode.props||eo;if("production"!==At.env.NODE_ENV){const{emitsOptions:r,propsOptions:[o]}=e;if(r)if(t in r){const e=r[t];if(mo(e)){e(...n)||ra(`Invalid event arguments: event validation failed for event "${t}".`)}}else o&&Io(To(t))in o||ra(`Component emitted event "${t}" but it is neither declared in the emits option nor as an "${Io(To(t))}" prop.`)}let o=n;const i=t.startsWith("update:"),s=i&&Iu(r,t.slice(7));if(s&&(s.trim&&(o=n.map((e=>vo(e)?e.trim():e))),s.number&&(o=n.map(Ro))),("production"!==At.env.NODE_ENV||__VUE_PROD_DEVTOOLS__)&&function(e,t,n){ja("component:emit",e.appContext.app,e,t,n)}(e,t,o),"production"!==At.env.NODE_ENV){const n=t.toLowerCase();n!==t&&r[Io(n)]&&ra(`Event "${n}" is emitted in component ${op(e,e.type)} but the handler is registered for "${t}". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use "${Mo(t)}" instead of "${t}".`)}let a,l=r[a=Io(t)]||r[a=Io(To(t))];!l&&i&&(l=r[a=Io(Mo(t))]),l&&ca(l,e,6,o);const c=r[a+"Once"];if(c){if(e.emitted){if(e.emitted[a])return}else e.emitted={};e.emitted[a]=!0,ca(c,e,6,o)}}function ku(e,t,n=!1){const r=t.emitsCache,o=r.get(e);if(void 0!==o)return o;const i=e.emits;let s={},a=!1;if(__VUE_OPTIONS_API__&&!mo(e)){const r=e=>{const n=ku(e,t,!0);n&&(a=!0,so(s,n))};!n&&t.mixins.length&&t.mixins.forEach(r),e.extends&&r(e.extends),e.mixins&&e.mixins.forEach(r)}
11return i||a?(uo(i)?i.forEach((e=>s[e]=null)):so(s,i),yo(e)&&r.set(e,s),s):(yo(e)&&r.set(e,null),null)}function Pu(e,t){return!(!e||!oo(t))&&(t=t.slice(2).replace(/Once$/,""),co(e,t[0].toLowerCase()+t.slice(1))||co(e,Mo(t))||co(e,t))}let Ru=!1;function Vu(){Ru=!0}function Bu(e){const{type:t,vnode:n,proxy:r,withProxy:o,propsOptions:[i],slots:s,attrs:a,emit:l,render:c,renderCache:u,props:d,data:p,setupState:f,ctx:h,inheritAttrs:m}=e,v=Qa(e);let g,y;"production"!==At.env.NODE_ENV&&(Ru=!1);try{if(4&n.shapeFlag){const e=o||r,t="production"!==At.env.NODE_ENV&&f.__isScriptSetup?new Proxy(e,{get:(e,t,n)=>(ra(`Property '${String(t)}' was accessed via 'this'. Avoid using 'this' in templates.`),Reflect.get(e,t,n))}):e;g=Cd(c.call(t,e,u,"production"!==At.env.NODE_ENV?Os(d):d,f,p,h)),y=a}else{const e=t;"production"!==At.env.NODE_ENV&&a===d&&Vu(),g=Cd(e.length>1?e("production"!==At.env.NODE_ENV?Os(d):d,"production"!==At.env.NODE_ENV?{get attrs(){return Vu(),Os(a)},slots:s,emit:l}:{attrs:a,slots:s,emit:l}):e("production"!==At.env.NODE_ENV?Os(d):d,null)),y=t.props?a:Uu(a)}}catch(t){ad.length=0,ua(t,e,1),g=_d(id)}let b,E=g;if("production"!==At.env.NODE_ENV&&g.patchFlag>0&&2048&g.patchFlag&&([E,b]=Fu(g)),y&&!1!==m){const e=Object.keys(y),{shapeFlag:t}=E;if(e.length)if(7&t)i&&e.some(io)&&(y=Hu(y,i)),E=wd(E,y,!1,!0);else if("production"!==At.env.NODE_ENV&&!Ru&&E.type!==id){const e=Object.keys(a),t=[],n=[];for(let r=0,o=e.length;r<o;r++){const o=e[r];oo(o)?io(o)||t.push(o[2].toLowerCase()+o.slice(3)):n.push(o)}n.length&&ra(`Extraneous non-props attributes (${n.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes.`),t.length&&ra(`Extraneous non-emits event listeners (${t.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes. If the listener is intended to be a component custom event listener only, declare it using the "emits" option.`)}}return n.dirs&&("production"===At.env.NODE_ENV||Zu(E)||ra("Runtime directive used on component with non-element root node. The directives will not function as intended."),E=wd(E,null,!1,!0),E.dirs=E.dirs?E.dirs.concat(n.dirs):n.dirs),n.transition&&("production"===At.env.NODE_ENV||Zu(E)||ra("Component inside <Transition> renders non-element root node that cannot be animated."),E.transition=n.transition),"production"!==At.env.NODE_ENV&&b?b(E):g=E,Qa(v),g}const Fu=e=>{const t=e.children,n=e.dynamicChildren,r=ju(t,!1);if(!r)return[e,void 0];if("production"!==At.env.NODE_ENV&&r.patchFlag>0&&2048&r.patchFlag)return Fu(r);const o=t.indexOf(r),i=n?n.indexOf(r):-1;return[Cd(r),r=>{t[o]=r,n&&(i>-1?n[i]=r:r.patchFlag>0&&(e.dynamicChildren=[...n,r]))}]};function ju(e,t=!0){let n;for(let r=0;r<e.length;r++){const o=e[r];if(!vd(o))return;if(o.type!==id||"v-if"===o.children){if(n)return;if(n=o,"production"!==At.env.NODE_ENV&&t&&n.patchFlag>0&&2048&n.patchFlag)return ju(n.children)}}return n}const Uu=e=>{let t;for(const n in e)("class"===n||"style"===n||oo(n))&&((t||(t={}))[n]=e[n]);return t},Hu=(e,t)=>{const n={};for(const r in e)io(r)&&r.slice(9)in t||(n[r]=e[r]);return n},Zu=e=>7&e.shapeFlag||e.type===id;function Gu(e,t,n){const r=Object.keys(t);if(r.length!==Object.keys(e).length)return!0;for(let o=0;o<r.length;o++){const i=r[o];if(t[i]!==e[i]&&!Pu(n,i))return!0}return!1}function zu({vnode:e,parent:t},n){for(;t;){const r=t.subTree;if(r.suspense&&r.suspense.activeBranch===e&&(r.el=e.el),r!==e)break;(e=t.vnode).el=n,t=t.parent}}const qu=e=>e.__isSuspense;let Wu=0;const Ku={name:"Suspense",__isSuspense:!0,process(e,t,n,r,o,i,s,a,l,c){if(null==e)!function(e,t,n,r,o,i,s,a,l){const{p:c,o:{createElement:u}}=l,d=u("div"),p=e.suspense=Qu(e,o,r,t,d,n,i,s,a,l);c(null,p.pendingBranch=e.ssContent,d,null,r,p,i,s),p.deps>0?(Xu(e,"onPending"),Xu(e,"onFallback"),c(null,e.ssFallback,t,n,r,null,i,s),nd(p,e.ssFallback)):p.resolve(!1,!0)}(t,n,r,o,i,s,a,l,c);else{if(i&&i.deps>0&&!e.suspense.isInFallback)return t.suspense=e.suspense,t.suspense.vnode=t,void(t.el=e.el);!function(e,t,n,r,o,i,s,a,{p:l,um:c,o:{createElement:u}}){const d=t.suspense=e.suspense;d.vnode=t,t.el=e.el;const p=t.ssContent,f=t.ssFallback,{activeBranch:h,pendingBranch:m,isInFallback:v,isHydrating:g}=d;
11if(m)d.pendingBranch=p,gd(p,m)?(l(m,p,d.hiddenContainer,null,o,d,i,s,a),d.deps<=0?d.resolve():v&&(g||(l(h,f,n,r,o,null,i,s,a),nd(d,f)))):(d.pendingId=Wu++,g?(d.isHydrating=!1,d.activeBranch=m):c(m,o,d),d.deps=0,d.effects.length=0,d.hiddenContainer=u("div"),v?(l(null,p,d.hiddenContainer,null,o,d,i,s,a),d.deps<=0?d.resolve():(l(h,f,n,r,o,null,i,s,a),nd(d,f))):h&&gd(p,h)?(l(h,p,n,r,o,d,i,s,a),d.resolve(!0)):(l(null,p,d.hiddenContainer,null,o,d,i,s,a),d.deps<=0&&d.resolve()));else if(h&&gd(p,h))l(h,p,n,r,o,d,i,s,a),nd(d,p);else if(Xu(t,"onPending"),d.pendingBranch=p,512&p.shapeFlag?d.pendingId=p.component.suspenseId:d.pendingId=Wu++,l(null,p,d.hiddenContainer,null,o,d,i,s,a),d.deps<=0)d.resolve();else{const{timeout:e,pendingId:t}=d;e>0?setTimeout((()=>{d.pendingId===t&&d.fallback(f)}),e):0===e&&d.fallback(f)}}(e,t,n,r,o,s,a,l,c)}},hydrate:function(e,t,n,r,o,i,s,a,l){const c=t.suspense=Qu(t,r,n,e.parentNode,document.createElement("div"),null,o,i,s,a,!0),u=l(e,c.pendingBranch=t.ssContent,n,c,i,s);0===c.deps&&c.resolve(!1,!0);return u},normalize:function(e){const{shapeFlag:t,children:n}=e,r=32&t;e.ssContent=ed(r?n.default:n),e.ssFallback=r?ed(n.fallback):_d(id)}},Yu=Ku;function Xu(e,t){const n=e.props&&e.props[t];mo(n)&&n()}let Ju=!1;function Qu(e,t,n,r,o,i,s,a,l,c,u=!1){"production"===At.env.NODE_ENV||Ju||(Ju=!0,console[console.info?"info":"log"]("<Suspense> is an experimental feature and its API will likely change."));const{p:d,m:p,um:f,n:h,o:{parentNode:m,remove:v}}=c;let g;const y=function(e){const t=e.props&&e.props.suspensible;return null!=t&&!1!==t}(e);y&&t&&t.pendingBranch&&(g=t.pendingId,t.deps++);const b=e.props?Vo(e.props.timeout):void 0;"production"!==At.env.NODE_ENV&&sa(b,"Suspense timeout");const E=i,_={vnode:e,parent:t,parentComponent:n,namespace:s,container:r,hiddenContainer:o,deps:0,pendingId:Wu++,timeout:"number"==typeof b?b:-1,activeBranch:null,pendingBranch:null,isInFallback:!u,isHydrating:u,isUnmounted:!1,effects:[],resolve(e=!1,n=!1){if("production"!==At.env.NODE_ENV){if(!e&&!_.pendingBranch)throw new Error("suspense.resolve() is called without a pending branch.");if(_.isUnmounted)throw new Error("suspense.resolve() is called on an already unmounted suspense boundary.")}const{vnode:r,activeBranch:o,pendingBranch:s,pendingId:a,effects:l,parentComponent:c,container:u}=_;let d=!1;_.isHydrating?_.isHydrating=!1:e||(d=o&&s.transition&&"out-in"===s.transition.mode,d&&(o.transition.afterLeave=()=>{a===_.pendingId&&(p(s,u,i===E?h(o):i,0),wa(l))}),o&&(m(o.el)!==_.hiddenContainer&&(i=h(o)),f(o,c,_,!0)),d||p(s,u,i,0)),nd(_,s),_.pendingBranch=null,_.isInFallback=!1;let v=_.parent,b=!1;for(;v;){if(v.pendingBranch){v.effects.push(...l),b=!0;break}v=v.parent}b||d||wa(l),_.effects=[],y&&t&&t.pendingBranch&&g===t.pendingId&&(t.deps--,0!==t.deps||n||t.resolve()),Xu(r,"onResolve")},fallback(e){if(!_.pendingBranch)return;const{vnode:t,activeBranch:n,parentComponent:r,container:o,namespace:i}=_;Xu(t,"onFallback");const s=h(n),c=()=>{_.isInFallback&&(d(null,e,o,s,r,null,i,a,l),nd(_,e))},u=e.transition&&"out-in"===e.transition.mode;u&&(n.transition.afterLeave=c),_.isInFallback=!0,f(n,r,null,!0),u||c()},move(e,t,n){_.activeBranch&&p(_.activeBranch,e,t,n),_.container=e},next:()=>_.activeBranch&&h(_.activeBranch),registerDep(e,t,n){const r=!!_.pendingBranch;r&&_.deps++;const o=e.vnode.el;e.asyncDep.catch((t=>{ua(t,e,0)})).then((i=>{if(e.isUnmounted||_.isUnmounted||_.pendingId!==e.suspenseId)return;e.asyncResolved=!0;const{vnode:a}=e;"production"!==At.env.NODE_ENV&&ea(a),Wd(e,i,!1),o&&(a.el=o);const l=!o&&e.subTree.el;t(e,a,m(o||e.subTree.el),o?null:h(e.subTree),_,s,n),l&&v(l),zu(e,a.el),"production"!==At.env.NODE_ENV&&ta(),r&&0==--_.deps&&_.resolve()}))},unmount(e,t){_.isUnmounted=!0,_.activeBranch&&f(_.activeBranch,n,e,t),_.pendingBranch&&f(_.pendingBranch,n,e,t)}};return _}function ed(e){let t;if(mo(e)){const n=pd&&e._c;n&&(e._d=!1,cd()),e=e(),n&&(e._d=!0,t=ld,ud())}if(uo(e)){const t=ju(e);"production"!==At.env.NODE_ENV&&!t&&e.filter((e=>e!==Hl)).length>0&&ra("<Suspense> slots expect a single root node."),e=t}return e=Cd(e),t&&!e.dynamicChildren&&(e.dynamicChildren=t.filter((t=>t!==e))),e}function td(e,t){t&&t.pendingBranch?uo(e)?t.effects.push(...e):t.effects.push(e):wa(e)}
11function nd(e,t){e.activeBranch=t;const{vnode:n,parentComponent:r}=e;let o=t.el;for(;!o&&t.component;)o=(t=t.component.subTree).el;n.el=o,r&&r.subTree===n&&(r.vnode.el=o,zu(r,o))}const rd=Symbol.for("v-fgt"),od=Symbol.for("v-txt"),id=Symbol.for("v-cmt"),sd=Symbol.for("v-stc"),ad=[];let ld=null;function cd(e=!1){ad.push(ld=e?null:[])}function ud(){ad.pop(),ld=ad[ad.length-1]||null}let dd,pd=1;function fd(e){pd+=e,e<0&&ld&&(ld.hasOnce=!0)}function hd(e){return e.dynamicChildren=pd>0?ld||to:null,ud(),pd>0&&ld&&ld.push(e),e}function md(e,t,n,r,o){return hd(_d(e,t,n,r,o,!0))}function vd(e){return!!e&&!0===e.__v_isVNode}function gd(e,t){if("production"!==At.env.NODE_ENV&&6&t.shapeFlag&&e.component){const n=Da.get(t.type);if(n&&n.has(e.component))return e.shapeFlag&=-257,t.shapeFlag&=-513,!1}return e.type===t.type&&e.key===t.key}const yd=({key:e})=>null!=e?e:null,bd=({ref:e,ref_key:t,ref_for:n})=>("number"==typeof e&&(e=""+e),null!=e?vo(e)||js(e)||mo(e)?{i:Xa,r:e,k:t,f:!!n}:e:null);function Ed(e,t=null,n=null,r=0,o=null,i=(e===rd?0:1),s=!1,a=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&yd(t),ref:t&&bd(t),scopeId:Ja,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:r,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:Xa};return a?(Td(l,n),128&i&&e.normalize(l)):n&&(l.shapeFlag|=vo(n)?8:16),"production"!==At.env.NODE_ENV&&l.key!=l.key&&ra("VNode created with invalid key (NaN). VNode type:",l.type),pd>0&&!s&&ld&&(l.patchFlag>0||6&i)&&32!==l.patchFlag&&ld.push(l),l}const _d="production"!==At.env.NODE_ENV?(...e)=>Sd(...dd?dd(e,Xa):e):Sd;function Sd(e,t=null,n=null,r=0,o=null,i=!1){if(e&&e!==Hl||("production"===At.env.NODE_ENV||e||ra(`Invalid vnode type when creating vnode: ${e}.`),e=id),vd(e)){const r=wd(e,t,!0);return n&&Td(r,n),pd>0&&!i&&ld&&(6&r.shapeFlag?ld[ld.indexOf(e)]=r:ld.push(r)),r.patchFlag=-2,r}if(ip(e)&&(e=e.__vccOpts),t){t=xd(t);let{class:e,style:n}=t;e&&!vo(e)&&(t.class=Yo(e)),yo(n)&&(Is(n)&&!uo(n)&&(n=so({},n)),t.style=Go(n))}const s=vo(e)?1:qu(e)?128:(e=>e.__isTeleport)(e)?64:yo(e)?4:mo(e)?2:0;return"production"!==At.env.NODE_ENV&&4&s&&Is(e)&&ra("Vue received a Component that was made a reactive object. This can lead to unnecessary performance overhead and should be avoided by marking the component with `markRaw` or using `shallowRef` instead of `ref`.","\nComponent that was made reactive: ",e=Ls(e)),Ed(e,t,n,r,o,s,i,!0)}function xd(e){return e?Is(e)||Sc(e)?so({},e):e:null}function wd(e,t,n=!1,r=!1){const{props:o,ref:i,patchFlag:s,children:a,transition:l}=e,c=t?$d(o||{},t):o,u={__v_isVNode:!0,__v_skip:!0,type:e.type,props:c,key:c&&yd(c),ref:t&&t.ref?n&&i?uo(i)?i.concat(bd(t)):[i,bd(t)]:bd(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:"production"!==At.env.NODE_ENV&&-1===s&&uo(a)?a.map(Nd):a,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==rd?-1===s?16:16|s:s,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:l,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&wd(e.ssContent),ssFallback:e.ssFallback&&wd(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return l&&r&&ml(u,l.clone(u)),u}function Nd(e){const t=wd(e);return uo(e.children)&&(t.children=e.children.map(Nd)),t}function Ad(e=" ",t=0){return _d(od,null,e,t)}function Cd(e){return null==e||"boolean"==typeof e?_d(id):uo(e)?_d(rd,null,e.slice()):"object"==typeof e?Od(e):_d(od,null,String(e))}function Od(e){return null===e.el&&-1!==e.patchFlag||e.memo?e:wd(e)}function Td(e,t){let n=0;const{shapeFlag:r}=e;if(null==t)t=null;else if(uo(t))n=16;else if("object"==typeof t){if(65&r){const n=t.default;return void(n&&(n._c&&(n._d=!1),Td(e,n()),n._c&&(n._d=!0)))}{n=32;const r=t._;r||Sc(t)?3===r&&Xa&&(1===Xa.slots._?t._=1:(t._=2,e.patchFlag|=1024)):t._ctx=Xa}}else mo(t)?(t={default:t,_ctx:Xa},n=32):(t=String(t),64&r?(n=16,t=[Ad(t)]):n=8);e.children=t,e.shapeFlag|=n}function $d(...e){const t={};for(let n=0;n<e.length;n++){const r=e[n];for(const e in r)if("class"===e)t.class!==r.class&&(t.class=Yo([t.class,r.class]));else if("style"===e)t.style=Go([t.style,r.style]);else if(oo(e)){const n=t[e],o=r[e];!o||n===o||uo(n)&&n.includes(o)||(t[e]=n?[].concat(n,o):o)}else""!==e&&(t[e]=r[e])}return t}function Md(e,t,n,r=null){ca(e,t,7,[n,r])}const Dd=hc();let Id=0;function Ld(e,t,n){const r=e.type,o=(t?t.appContext:e.appContext)||Dd,i={uid:Id++,vnode:e,type:r,parent:t,appContext:o,root:null,next:null,subTree:null,effect:null,update:null,scope:new vi(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(o.provides),accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Ac(r,o),emitsOptions:ku(r,o),emit:null,emitted:null,propsDefaults:eo,inheritAttrs:r.inheritAttrs,ctx:eo,data:eo,props:eo,attrs:eo,slots:eo,refs:eo,setupState:eo,setupContext:null,suspense:n,suspenseId:n?n.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,
11sp:null};return"production"!==At.env.NODE_ENV?i.ctx=function(e){const t={};return Object.defineProperty(t,"_",{configurable:!0,enumerable:!1,get:()=>e}),Object.keys(Wl).forEach((n=>{Object.defineProperty(t,n,{configurable:!0,enumerable:!1,get:()=>Wl[n](e),set:no})})),t}(i):i.ctx={_:i},i.root=t?t.root:i,i.emit=Lu.bind(null,i),e.ce&&e.ce(i),i}let kd=null;const Pd=()=>kd||Xa;let Rd,Vd;{const e=Fo(),t=(t,n)=>{let r;return(r=e[t])||(r=e[t]=[]),r.push(n),e=>{r.length>1?r.forEach((t=>t(e))):r[0](e)}};Rd=t("__VUE_INSTANCE_SETTERS__",(e=>kd=e)),Vd=t("__VUE_SSR_SETTERS__",(e=>zd=e))}const Bd=e=>{const t=kd;return Rd(e),e.scope.on(),()=>{e.scope.off(),Rd(t)}},Fd=()=>{kd&&kd.scope.off(),Rd(null)},jd=Qr("slot,component");function Ud(e,{isNativeTag:t}){(jd(e)||t(e))&&ra("Do not use built-in or reserved HTML elements as component id: "+e)}function Hd(e){return 4&e.vnode.shapeFlag}let Zd,Gd,zd=!1;function qd(e,t=!1,n=!1){t&&Vd(t);const{props:r,children:o}=e.vnode,i=Hd(e);!function(e,t,n,r=!1){const o={},i=_c();e.propsDefaults=Object.create(null),xc(e,t,o,i);for(const t in e.propsOptions[0])t in o||(o[t]=void 0);"production"!==At.env.NODE_ENV&&Oc(t||{},o,e),n?e.props=r?o:As(o):e.type.props?e.props=o:e.props=i,e.attrs=i}(e,r,i,t),Fc(e,o,n);const s=i?function(e,t){var n;const r=e.type;if("production"!==At.env.NODE_ENV){if(r.name&&Ud(r.name,e.appContext.config),r.components){const t=Object.keys(r.components);for(let n=0;n<t.length;n++)Ud(t[n],e.appContext.config)}if(r.directives){const e=Object.keys(r.directives);for(let t=0;t<e.length;t++)tl(e[t])}r.compilerOptions&&Yd()&&ra('"compilerOptions" is only supported when using a build of Vue that includes the runtime compiler. Since you are using a runtime-only build, the options should be passed via your build tool config instead.')}e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Xl),"production"===At.env.NODE_ENV||function(e){const{ctx:t,propsOptions:[n]}=e;n&&Object.keys(n).forEach((n=>{Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>e.props[n],set:no})}))}(e);const{setup:o}=r;if(o){const i=e.setupContext=o.length>1?Qd(e):null,s=Bd(e);Ci();const a=la(o,e,0,["production"!==At.env.NODE_ENV?Os(e.props):e.props,i]);if(Oi(),s(),bo(a)){if(a.then(Fd,Fd),t)return a.then((n=>{Wd(e,n,t)})).catch((t=>{ua(t,e,0)}));if(e.asyncDep=a,"production"!==At.env.NODE_ENV&&!e.suspense){ra(`Component <${null!=(n=r.name)?n:"Anonymous"}>: setup function returned a promise, but no <Suspense> boundary was found in the parent component tree. A component with async setup() must be nested in a <Suspense> in order to be rendered.`)}}else Wd(e,a,t)}else Xd(e,t)}(e,t):void 0;return t&&Vd(!1),s}function Wd(e,t,n){mo(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:yo(t)?("production"!==At.env.NODE_ENV&&vd(t)&&ra("setup() should not return VNodes directly - return a render function instead."),("production"!==At.env.NODE_ENV||__VUE_PROD_DEVTOOLS__)&&(e.devtoolsRawSetupState=t),e.setupState=qs(t),"production"!==At.env.NODE_ENV&&function(e){const{ctx:t,setupState:n}=e;Object.keys(Ls(n)).forEach((e=>{if(!n.__isScriptSetup){if(Kl(e[0]))return void ra(`setup() return property ${JSON.stringify(e)} should not start with "$" or "_" which are reserved prefixes for Vue internals.`);Object.defineProperty(t,e,{enumerable:!0,configurable:!0,get:()=>n[e],set:no})}}))}(e)):"production"!==At.env.NODE_ENV&&void 0!==t&&ra("setup() should return an object. Received: "+(null===t?"null":typeof t)),Xd(e,n)}function Kd(e){Zd=e,Gd=e=>{e.render._rc&&(e.withProxy=new Proxy(e.ctx,Jl))}}const Yd=()=>!Zd;function Xd(e,t,n){const r=e.type;if(!e.render){if(!t&&Zd&&!r.render){const t=r.template||sc(e).template;if(t){"production"!==At.env.NODE_ENV&&uu(e,"compile");const{isCustomElement:n,compilerOptions:o}=e.appContext.config,{delimiters:i,compilerOptions:s}=r,a=so(so({isCustomElement:n,delimiters:i},o),s);r.render=Zd(t,a),"production"!==At.env.NODE_ENV&&du(e,"compile")}}e.render=r.render||no,Gd&&Gd(e)}if(__VUE_OPTIONS_API__){const t=Bd(e);Ci();try{rc(e)}finally{Oi(),t()}}"production"===At.env.NODE_ENV||r.render||e.render!==no||t||(!Zd&&r.template?ra('Component provided template option but runtime compilation is not supported in this build of Vue. Configure your bundler to alias "vue" to "vue/dist/vue.esm-bundler.js".'):ra("Component is missing template or render function: ",r))}const Jd="production"!==At.env.NODE_ENV?{get:(e,t)=>(Vu(),Vi(e,"get",""),e[t]),set:()=>(ra("setupContext.attrs is readonly."),!1),deleteProperty:()=>(ra("setupContext.attrs is readonly."),!1)}:{get:(e,t)=>(Vi(e,"get",""),e[t])};function Qd(e){const t=t=>
11{if("production"!==At.env.NODE_ENV&&(e.exposed&&ra("expose() should be called only once per setup()."),null!=t)){let e=typeof t;"object"===e&&(uo(t)?e="array":js(t)&&(e="ref")),"object"!==e&&ra(`expose() should be passed a plain object, received ${e}.`)}e.exposed=t||{}};if("production"!==At.env.NODE_ENV){let n,r;return Object.freeze({get attrs(){return n||(n=new Proxy(e.attrs,Jd))},get slots(){return r||(r=function(e){return new Proxy(e.slots,{get:(t,n)=>(Vi(e,"get","$slots"),t[n])})}(e))},get emit(){return(t,...n)=>e.emit(t,...n)},expose:t})}return{attrs:new Proxy(e.attrs,Jd),slots:e.slots,emit:e.emit,expose:t}}function ep(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(qs(ks(e.exposed)),{get:(t,n)=>n in t?t[n]:n in Wl?Wl[n](e):void 0,has:(e,t)=>t in e||t in Wl})):e.proxy}const tp=/(?:^|[-_])(\w)/g,np=e=>e.replace(tp,(e=>e.toUpperCase())).replace(/[-_]/g,"");function rp(e,t=!0){return mo(e)?e.displayName||e.name:e.name||t&&e.__name}function op(e,t,n=!1){let r=rp(t);if(!r&&t.__file){const e=t.__file.match(/([^/\\]+)\.\w+$/);e&&(r=e[1])}if(!r&&e&&e.parent){const n=e=>{for(const n in e)if(e[n]===t)return n};r=n(e.components||e.parent.type.components)||n(e.appContext.components)}return r?np(r):n?"App":"Anonymous"}function ip(e){return mo(e)&&"__vccOpts"in e}const sp=(e,t)=>{const n=function(e,t,n=!1){let r,o;const i=mo(e);i?(r=e,o="production"!==At.env.NODE_ENV?()=>{fi("Write operation failed: computed value is readonly")}:no):(r=e.get,o=e.set);const s=new Vs(r,o,i||!o,n);return"production"!==At.env.NODE_ENV&&t&&!n&&(s.effect.onTrack=t.onTrack,s.effect.onTrigger=t.onTrigger),s}(e,t,zd);if("production"!==At.env.NODE_ENV){const e=Pd();e&&e.appContext.config.warnRecursiveComputed&&(n._warnRecursive=!0)}return n};function ap(e,t,n){const r=arguments.length;return 2===r?yo(t)&&!uo(t)?vd(t)?_d(e,null,[t]):_d(e,t):_d(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):3===r&&vd(n)&&(n=[n]),_d(e,t,n))}function lp(){if("production"===At.env.NODE_ENV||"undefined"==typeof window)return;const e={style:"color:#3ba776"},t={style:"color:#1677ff"},n={style:"color:#f5222d"},r={style:"color:#eb2f96"},o={__vue_custom_formatter:!0,header:t=>yo(t)?t.__isVue?["div",e,"VueInstance"]:js(t)?["div",{},["span",e,u(t)],"<",a(t.value),">"]:$s(t)?["div",{},["span",e,Ds(t)?"ShallowReactive":"Reactive"],"<",a(t),">"+(Ms(t)?" (readonly)":"")]:Ms(t)?["div",{},["span",e,Ds(t)?"ShallowReadonly":"Readonly"],"<",a(t),">"]:null:null,hasBody:e=>e&&e.__isVue,body(e){if(e&&e.__isVue)return["div",{},...i(e.$)]}};function i(e){const t=[];e.type.props&&e.props&&t.push(s("props",Ls(e.props))),e.setupState!==eo&&t.push(s("setup",e.setupState)),e.data!==eo&&t.push(s("data",Ls(e.data)));const n=l(e,"computed");
11n&&t.push(s("computed",n));const o=l(e,"inject");return o&&t.push(s("injected",o)),t.push(["div",{},["span",{style:r.style+";opacity:0.66"},"$ (internal): "],["object",{object:e}]]),t}function s(e,t){return t=so({},t),Object.keys(t).length?["div",{style:"line-height:1.25em;margin-bottom:0.6em"},["div",{style:"color:#476582"},e],["div",{style:"padding-left:1.25em"},...Object.keys(t).map((e=>["div",{},["span",r,e+": "],a(t[e],!1)]))]]:["span",{}]}function a(e,o=!0){return"number"==typeof e?["span",t,e]:"string"==typeof e?["span",n,JSON.stringify(e)]:"boolean"==typeof e?["span",r,e]:yo(e)?["object",{object:o?Ls(e):e}]:["span",n,String(e)]}function l(e,t){const n=e.type;if(mo(n))return;const r={};for(const o in e.ctx)c(n,o,t)&&(r[o]=e.ctx[o]);return r}function c(e,t,n){const r=e[n];return!!(uo(r)&&r.includes(t)||yo(r)&&t in r)||(!(!e.extends||!c(e.extends,t,n))||(!(!e.mixins||!e.mixins.some((e=>c(e,t,n))))||void 0))}function u(e){return Ds(e)?"ShallowRef":e.effect?"ComputedRef":"Ref"}window.devtoolsFormatters?window.devtoolsFormatters.push(o):window.devtoolsFormatters=[o]}function cp(e,t){const n=e.memo;if(n.length!=t.length)return!1;for(let e=0;e<n.length;e++)if(Lo(n[e],t[e]))return!1;return pd>0&&ld&&ld.push(e),!0}const up="3.4.38",dp="production"!==At.env.NODE_ENV?ra:no,pp=aa,fp=(At.env.NODE_ENV,Va),hp=(At.env.NODE_ENV,Ua),mp={createComponentInstance:Ld,setupComponent:qd,renderComponentRoot:Bu,setCurrentRenderingInstance:Qa,isVNode:vd,normalizeVNode:Cd,getComponentPublicInstance:ep,ensureValidVNode:zl},vp="undefined"!=typeof document?document:null,gp=vp&&vp.createElement("template"),yp={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const o="svg"===t?vp.createElementNS("http://www.w3.org/2000/svg",e):"mathml"===t?vp.createElementNS("http://www.w3.org/1998/Math/MathML",e):n?vp.createElement(e,{is:n}):vp.createElement(e);return"select"===e&&r&&null!=r.multiple&&o.setAttribute("multiple",r.multiple),o},createText:e=>vp.createTextNode(e),createComment:e=>vp.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>
11{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>vp.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,o,i){const s=n?n.previousSibling:t.lastChild;if(o&&(o===i||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),n),o!==i&&(o=o.nextSibling););else{gp.innerHTML="svg"===r?`<svg>${e}</svg>`:"mathml"===r?`<math>${e}</math>`:e;const o=gp.content;if("svg"===r||"mathml"===r){const e=o.firstChild;for(;e.firstChild;)o.appendChild(e.firstChild);o.removeChild(e)}t.insertBefore(o,n)}return[s?s.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},bp="transition",Ep="animation",_p=Symbol("_vtc"),Sp=(e,{slots:t})=>ap(ul,Cp(e),t);Sp.displayName="Transition";const xp={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},wp=Sp.props=so({},al,xp),Np=(e,t=[])=>{uo(e)?e.forEach((e=>e(...t))):e&&e(...t)},Ap=e=>!!e&&(uo(e)?e.some((e=>e.length>1)):e.length>1);function Cp(e){const t={};for(const n in e)n in xp||(t[n]=e[n]);if(!1===e.css)return t;const{name:n="v",type:r,duration:o,enterFromClass:i=`${n}-enter-from`,enterActiveClass:s=`${n}-enter-active`,enterToClass:a=`${n}-enter-to`,appearFromClass:l=i,appearActiveClass:c=s,appearToClass:u=a,leaveFromClass:d=`${n}-leave-from`,leaveActiveClass:p=`${n}-leave-active`,leaveToClass:f=`${n}-leave-to`}=e,h=function(e){if(null==e)return null;if(yo(e))return[Op(e.enter),Op(e.leave)];{const t=Op(e);return[t,t]}}(o),m=h&&h[0],v=h&&h[1],{onBeforeEnter:g,onEnter:y,onEnterCancelled:b,onLeave:E,onLeaveCancelled:_,onBeforeAppear:S=g,onAppear:x=y,onAppearCancelled:w=b}=t,N=(e,t,n)=>{$p(e,t?u:a),$p(e,t?c:s),n&&n()},A=(e,t)=>{e._isLeaving=!1,$p(e,d),$p(e,f),$p(e,p),t&&t()},C=e=>(t,n)=>{const o=e?x:y,s=()=>N(t,e,n);Np(o,[t,s]),Mp((()=>{$p(t,e?l:i),Tp(t,e?u:a),Ap(o)||Ip(t,r,m,s)}))};return so(t,{onBeforeEnter(e){Np(g,[e]),Tp(e,i),Tp(e,s)},onBeforeAppear(e){Np(S,[e]),Tp(e,l),Tp(e,c)},onEnter:C(!1),onAppear:C(!0),onLeave(e,t){e._isLeaving=!0;const n=()=>A(e,t);Tp(e,d),Tp(e,p),Rp(),Mp((()=>{e._isLeaving&&($p(e,d),Tp(e,f),Ap(E)||Ip(e,r,v,n))})),Np(E,[e,n])},onEnterCancelled(e){N(e,!1),Np(b,[e])},onAppearCancelled(e){N(e,!0),Np(w,[e])},onLeaveCancelled(e){A(e),Np(_,[e])}})}function Op(e){const t=Vo(e);return"production"!==At.env.NODE_ENV&&sa(t,"<transition> explicit duration"),t}function Tp(e,t){t.split(/\s+/).forEach((t=>t&&e.classList.add(t))),(e[_p]||(e[_p]=new Set)).add(t)}function $p(e,t){t.split(/\s+/).forEach((t=>t&&e.classList.remove(t)));const n=e[_p];n&&(n.delete(t),n.size||(e[_p]=void 0))}function Mp(e){requestAnimationFrame((()=>{requestAnimationFrame(e)}))}let Dp=0;function Ip(e,t,n,r){const o=e._endId=++Dp,i=()=>{o===e._endId&&r()};if(n)return setTimeout(i,n);const{type:s,timeout:a,propCount:l}=Lp(e,t);if(!s)return r();const c=s+"end";let u=0;const d=()=>{e.removeEventListener(c,p),i()},p=t=>{t.target===e&&++u>=l&&d()};setTimeout((()=>{u<l&&d()}),a+1),e.addEventListener(c,p)}function Lp(e,t){const n=window.getComputedStyle(e),r=e=>(n[e]||"").split(", "),o=r(`${bp}Delay`),i=r(`${bp}Duration`),s=kp(o,i),a=r(`${Ep}Delay`),l=r(`${Ep}Duration`),c=kp(a,l);let u=null,d=0,p=0;t===bp?s>0&&(u=bp,d=s,p=i.length):t===Ep?c>0&&(u=Ep,d=c,p=l.length):(d=Math.max(s,c),u=d>0?s>c?bp:Ep:null,p=u?u===bp?i.length:l.length:0);return{type:u,timeout:d,propCount:p,hasTransform:u===bp&&/\b(transform|all)(,|$)/.test(r(`${bp}Property`).toString())}}function kp(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max(...t.map(((t,n)=>Pp(t)+Pp(e[n]))))}function Pp(e){return"auto"===e?0:1e3*Number(e.slice(0,-1).replace(",","."))}function Rp(){return document.body.offsetHeight}const Vp=Symbol("_vod"),Bp=Symbol("_vsh"),Fp={beforeMount(e,{value:t},{transition:n}){e[Vp]="none"===e.style.display?"":e.style.display,n&&t?n.beforeEnter(e):jp(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),jp(e,!0),r.enter(e)):r.leave(e,(()=>{jp(e,!1)})):jp(e,t))},beforeUnmount(e,{value:t}){jp(e,t)}};function jp(e,t){e.style.display=t?e[Vp]:"none",e[Bp]=!t}"production"!==At.env.NODE_ENV&&(Fp.name="show");const Up=Symbol("production"!==At.env.NODE_ENV?"CSS_VAR_TEXT":"");function Hp(e,t){if(128&e.shapeFlag){const n=e.suspense;e=n.activeBranch,n.pendingBranch&&!n.isHydrating&&n.effects.push((()=>{Hp(n.activeBranch,t)}))}for(;e.component;)e=e.component.subTree;if(1&e.shapeFlag&&e.el)Zp(e.el,t);
11else if(e.type===rd)e.children.forEach((e=>Hp(e,t)));else if(e.type===sd){let{el:n,anchor:r}=e;for(;n&&(Zp(n,t),n!==r);)n=n.nextSibling}}function Zp(e,t){if(1===e.nodeType){const n=e.style;let r="";for(const e in t)n.setProperty(`--${e}`,t[e]),r+=`--${e}: ${t[e]};`;n[Up]=r}}const Gp=/(^|;)\s*display\s*:/;const zp=/[^\\];\s*$/,qp=/\s*!important$/;function Wp(e,t,n){if(uo(n))n.forEach((n=>Wp(e,t,n)));else if(null==n&&(n=""),"production"!==At.env.NODE_ENV&&zp.test(n)&&dp(`Unexpected semicolon at the end of '${t}' style value: '${n}'`),t.startsWith("--"))e.setProperty(t,n);else{const r=function(e,t){const n=Yp[t];if(n)return n;let r=To(t);if("filter"!==r&&r in e)return Yp[t]=r;r=Do(r);for(let n=0;n<Kp.length;n++){const o=Kp[n]+r;if(o in e)return Yp[t]=o}return t}(e,t);qp.test(n)?e.setProperty(Mo(r),n.replace(qp,""),"important"):e[r]=n}}const Kp=["Webkit","Moz","ms"],Yp={};const Xp="http://www.w3.org/1999/xlink";function Jp(e,t,n,r,o,i=ni(t)){r&&t.startsWith("xlink:")?null==n?e.removeAttributeNS(Xp,t.slice(6,t.length)):e.setAttributeNS(Xp,t,n):null==n||i&&!oi(n)?e.removeAttribute(t):e.setAttribute(t,i?"":go(n)?String(n):n)}function Qp(e,t,n,r){e.addEventListener(t,n,r)}const ef=Symbol("_vei");function tf(e,t,n,r,o=null){const i=e[ef]||(e[ef]={}),s=i[t];if(r&&s)s.value="production"!==At.env.NODE_ENV?af(r,t):r;else{const[n,a]=function(e){let t;if(nf.test(e)){let n;for(t={};n=e.match(nf);)e=e.slice(0,e.length-n[0].length),t[n[0].toLowerCase()]=!0}const n=":"===e[2]?e.slice(3):Mo(e.slice(2));return[n,t]}(t);if(r){const s=i[t]=function(e,t){const n=e=>{if(e._vts){if(e._vts<=n.attached)return}else e._vts=Date.now();ca(function(e,t){if(uo(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map((e=>t=>!t._stopped&&e&&e(t)))}return t}(e,n.value),t,5,[e])};return n.value=e,n.attached=sf(),n}("production"!==At.env.NODE_ENV?af(r,t):r,o);Qp(e,n,s,a)}else s&&(!function(e,t,n,r){e.removeEventListener(t,n,r)}(e,n,s,a),i[t]=void 0)}}const nf=/(?:Once|Passive|Capture)$/;let rf=0;const of=Promise.resolve(),sf=()=>rf||(of.then((()=>rf=0)),rf=Date.now());function af(e,t){return mo(e)||uo(e)?e:(dp(`Wrong type passed as event handler to ${t} - did you forget @ or : in front of your prop?\nExpected function or array of functions, received type ${typeof e}.`),no)}const lf=e=>111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123; 12/*! #__NO_SIDE_EFFECTS__ */ 13function cf(e,t,n){const r=gl(e,t);class o extends df{constructor(e){super(r,e,n)}}return o.def=r,o} 14/*! #__NO_SIDE_EFFECTS__ */const uf="undefined"!=typeof HTMLElement?HTMLElement:class{};class df extends uf{constructor(e,t={},n){super(),this._def=e,this._props=t,this._instance=null,this._connected=!1,this._resolved=!1,this._numberProps=null,this._ob=null,this.shadowRoot&&n?n(this._createVNode(),this.shadowRoot):("production"!==At.env.NODE_ENV&&this.shadowRoot&&dp("Custom element has pre-rendered declarative shadow root but is not defined as hydratable. Use `defineSSRCustomElement`."),this.attachShadow({mode:"open"}),this._def.__asyncLoader||this._resolveProps(this._def))}connectedCallback(){this._connected=!0,this._instance||(this._resolved?this._update():this._resolveDef())}disconnectedCallback(){this._connected=!1,_a((()=>{this._connected||(this._ob&&(this._ob.disconnect(),this._ob=null),Zf(null,this.shadowRoot),this._instance=null)}))}_resolveDef(){this._resolved=!0;for(let e=0;e<this.attributes.length;e++)this._setAttr(this.attributes[e].name);this._ob=new MutationObserver((e=>{for(const t of e)this._setAttr(t.attributeName)})),this._ob.observe(this,{attributes:!0});const e=(e,t=!1)=>{const{props:n,styles:r}=e;let o;if(n&&!uo(n))for(const e in n){const t=n[e];(t===Number||t&&t.type===Number)&&(e in this._props&&(this._props[e]=Vo(this._props[e])),(o||(o=Object.create(null)))[To(e)]=!0)}this._numberProps=o,t&&this._resolveProps(e),this._applyStyles(r),this._update()},t=this._def.__asyncLoader;t?t().then((t=>e(t,!0))):e(this._def)}_resolveProps(e){const{props:t}=e,n=uo(t)?t:Object.keys(t||{});for(const e of Object.keys(this))"_"!==e[0]&&n.includes(e)&&this._setProp(e,this[e],!0,!1);for(const e of n.map(To))Object.defineProperty(this,e,{get(){return this._getProp(e)},set(t){this._setProp(e,t)}})}_setAttr(e){let t=this.hasAttribute(e)?this.getAttribute(e):void 0;const n=To(e);this._numberProps&&this._numberProps[n]&&(t=Vo(t)),this._setProp(n,t,!1)}_getProp(e){return this._props[e]}_setProp(e,t,n=!0,r=!0){t!==this._props[e]&&(this._props[e]=t,r&&this._instance&&this._update(),n&&(!0===t?this.setAttribute(Mo(e),""):"string"==typeof t||"number"==typeof t?this.setAttribute(Mo(e),t+""):t||this.removeAttribute(Mo(e))))}
14_update(){Zf(this._createVNode(),this.shadowRoot)}_createVNode(){const e=_d(this._def,so({},this._props));return this._instance||(e.ce=e=>{this._instance=e,e.isCE=!0,"production"!==At.env.NODE_ENV&&(e.ceReload=e=>{this._styles&&(this._styles.forEach((e=>this.shadowRoot.removeChild(e))),this._styles.length=0),this._applyStyles(e),this._instance=null,this._update()});const t=(e,t)=>{this.dispatchEvent(new CustomEvent(e,{detail:t}))};e.emit=(e,...n)=>{t(e,n),Mo(e)!==e&&t(Mo(e),n)};let n=this;for(;n=n&&(n.parentNode||n.host);)if(n instanceof df){e.parent=n._instance,e.provides=n._instance.provides;break}}),e}_applyStyles(e){e&&e.forEach((e=>{const t=document.createElement("style");t.textContent=e,this.shadowRoot.appendChild(t),"production"!==At.env.NODE_ENV&&(this._styles||(this._styles=[])).push(t)}))}}const pf=new WeakMap,ff=new WeakMap,hf=Symbol("_moveCb"),mf=Symbol("_enterCb"),vf={name:"TransitionGroup",props:so({},wp,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=Pd(),r=il();let o,i;return kl((()=>{if(!o.length)return;const t=e.moveClass||`${e.name||"v"}-move`;if(!function(e,t,n){const r=e.cloneNode(),o=e[_p];o&&o.forEach((e=>{e.split(/\s+/).forEach((e=>e&&r.classList.remove(e)))}));n.split(/\s+/).forEach((e=>e&&r.classList.add(e))),r.style.display="none";const i=1===t.nodeType?t:t.parentNode;i.appendChild(r);const{hasTransform:s}=Lp(r);return i.removeChild(r),s}(o[0].el,n.vnode.el,t))return;o.forEach(yf),o.forEach(bf);const r=o.filter(Ef);Rp(),r.forEach((e=>{const n=e.el,r=n.style;Tp(n,t),r.transform=r.webkitTransform=r.transitionDuration="";const o=n[hf]=e=>{e&&e.target!==n||e&&!/transform$/.test(e.propertyName)||(n.removeEventListener("transitionend",o),n[hf]=null,$p(n,t))};n.addEventListener("transitionend",o)}))})),()=>{const s=Ls(e),a=Cp(s);let l=s.tag||rd;if(o=[],i)for(let e=0;e<i.length;e++){const t=i[e];t.el&&t.el instanceof Element&&(o.push(t),ml(t,pl(t,a,r,n)),pf.set(t,t.el.getBoundingClientRect()))}i=t.default?vl(t.default()):[];for(let e=0;e<i.length;e++){const t=i[e];null!=t.key?ml(t,pl(t,a,r,n)):"production"!==At.env.NODE_ENV&&dp("<TransitionGroup> children must be keyed.")}return _d(l,null,i)}}},gf=vf;function yf(e){const t=e.el;t[hf]&&t[hf](),t[mf]&&t[mf]()}function bf(e){ff.set(e,e.el.getBoundingClientRect())}function Ef(e){const t=pf.get(e),n=ff.get(e),r=t.left-n.left,o=t.top-n.top;if(r||o){const t=e.el.style;return t.transform=t.webkitTransform=`translate(${r}px,${o}px)`,t.transitionDuration="0s",e}}const _f=e=>{const t=e.props["onUpdate:modelValue"]||!1;return uo(t)?e=>ko(t,e):t};function Sf(e){e.target.composing=!0}function xf(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const wf=Symbol("_assign"),Nf={created(e,{modifiers:{lazy:t,trim:n,number:r}},o){e[wf]=_f(o);const i=r||o.props&&"number"===o.props.type;Qp(e,t?"change":"input",(t=>{if(t.target.composing)return;let r=e.value;n&&(r=r.trim()),i&&(r=Ro(r)),e[wf](r)})),n&&Qp(e,"change",(()=>{e.value=e.value.trim()})),t||(Qp(e,"compositionstart",Sf),Qp(e,"compositionend",xf),Qp(e,"change",xf))},mounted(e,{value:t}){e.value=null==t?"":t},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:r,trim:o,number:i}},s){if(e[wf]=_f(s),e.composing)return;const a=null==t?"":t;if((!i&&"number"!==e.type||/^0\d/.test(e.value)?e.value:Ro(e.value))!==a){if(document.activeElement===e&&"range"!==e.type){if(r&&t===n)return;if(o&&e.value.trim()===a)return}e.value=a}}},Af={deep:!0,created(e,t,n){e[wf]=_f(n),Qp(e,"change",(()=>{const t=e._modelValue,n=Mf(e),r=e.checked,o=e[wf];if(uo(t)){const e=li(t,n),i=-1!==e;if(r&&!i)o(t.concat(n));else if(!r&&i){const n=[...t];n.splice(e,1),o(n)}}else if(fo(t)){const e=new Set(t);r?e.add(n):e.delete(n),o(e)}else o(Df(e,r))}))},mounted:Cf,beforeUpdate(e,t,n){e[wf]=_f(n),Cf(e,t,n)}};function Cf(e,{value:t,oldValue:n},r){e._modelValue=t,uo(t)?e.checked=li(t,r.props.value)>-1:fo(t)?e.checked=t.has(r.props.value):t!==n&&(e.checked=ai(t,Df(e,!0)))}const Of={created(e,{value:t},n){e.checked=ai(t,n.props.value),e[wf]=_f(n),Qp(e,"change",(()=>{e[wf](Mf(e))}))},beforeUpdate(e,{value:t,oldValue:n},r){e[wf]=_f(r),t!==n&&(e.checked=ai(t,r.props.value))}},Tf={deep:!0,created(e,{value:t,modifiers:{number:n}},r){const o=fo(t);Qp(e,"change",(()=>
14{const t=Array.prototype.filter.call(e.options,(e=>e.selected)).map((e=>n?Ro(Mf(e)):Mf(e)));e[wf](e.multiple?o?new Set(t):t:t[0]),e._assigning=!0,_a((()=>{e._assigning=!1}))})),e[wf]=_f(r)},mounted(e,{value:t,modifiers:{number:n}}){$f(e,t)},beforeUpdate(e,t,n){e[wf]=_f(n)},updated(e,{value:t,modifiers:{number:n}}){e._assigning||$f(e,t)}};function $f(e,t,n){const r=e.multiple,o=uo(t);if(!r||o||fo(t)){for(let n=0,i=e.options.length;n<i;n++){const i=e.options[n],s=Mf(i);if(r)if(o){const e=typeof s;i.selected="string"===e||"number"===e?t.some((e=>String(e)===String(s))):li(t,s)>-1}else i.selected=t.has(s);else if(ai(Mf(i),t))return void(e.selectedIndex!==n&&(e.selectedIndex=n))}r||-1===e.selectedIndex||(e.selectedIndex=-1)}else"production"!==At.env.NODE_ENV&&dp(`<select multiple v-model> expects an Array or Set value for its binding, but got ${Object.prototype.toString.call(t).slice(8,-1)}.`)}function Mf(e){return"_value"in e?e._value:e.value}function Df(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const If={created(e,t,n){kf(e,t,n,null,"created")},mounted(e,t,n){kf(e,t,n,null,"mounted")},beforeUpdate(e,t,n,r){kf(e,t,n,r,"beforeUpdate")},updated(e,t,n,r){kf(e,t,n,r,"updated")}};function Lf(e,t){switch(e){case"SELECT":return Tf;case"TEXTAREA":return Nf;default:switch(t){case"checkbox":return Af;case"radio":return Of;default:return Nf}}}function kf(e,t,n,r,o){const i=Lf(e.tagName,n.props&&n.props.type)[o];i&&i(e,t,n,r)}const Pf=["ctrl","shift","alt","meta"],Rf={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&0!==e.button,middle:e=>"button"in e&&1!==e.button,right:e=>"button"in e&&2!==e.button,exact:(e,t)=>Pf.some((n=>e[`${n}Key`]&&!t.includes(n)))},Vf={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},Bf=so({patchProp:(e,t,n,r,o,i)=>{const s="svg"===o;"class"===t?function(e,t,n){const r=e[_p];r&&(t=(t?[t,...r]:[...r]).join(" ")),null==t?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}(e,r,s):"style"===t?function(e,t,n){const r=e.style,o=vo(n);let i=!1;if(n&&!o){if(t)if(vo(t))for(const e of t.split(";")){const t=e.slice(0,e.indexOf(":")).trim();null==n[t]&&Wp(r,t,"")}else for(const e in t)null==n[e]&&Wp(r,e,"");for(const e in n)"display"===e&&(i=!0),Wp(r,e,n[e])}else if(o){if(t!==n){const e=r[Up];e&&(n+=";"+e),r.cssText=n,i=Gp.test(n)}}else t&&e.removeAttribute("style");Vp in e&&(e[Vp]=i?r.display:"",e[Bp]&&(r.display="none"))}(e,n,r):oo(t)?io(t)||tf(e,t,0,r,i):("."===t[0]?(t=t.slice(1),1):"^"===t[0]?(t=t.slice(1),0):function(e,t,n,r){if(r)return"innerHTML"===t||"textContent"===t||!!(t in e&&lf(t)&&mo(n));if("spellcheck"===t||"draggable"===t||"translate"===t)return!1;if("form"===t)return!1;if("list"===t&&"INPUT"===e.tagName)return!1;if("type"===t&&"TEXTAREA"===e.tagName)return!1;if("width"===t||"height"===t){const t=e.tagName;if("IMG"===t||"VIDEO"===t||"CANVAS"===t||"SOURCE"===t)return!1}if(lf(t)&&vo(n))return!1;return t in e}(e,t,r,s))?(!function(e,t,n){if("innerHTML"===t||"textContent"===t){if(null==n)return;return void(e[t]=n)}const r=e.tagName;if("value"===t&&"PROGRESS"!==r&&!r.includes("-")){const o="OPTION"===r?e.getAttribute("value")||"":e.value,i=null==n?"":String(n);return o===i&&"_value"in e||(e.value=i),null==n&&e.removeAttribute(t),void(e._value=n)}let o=!1;if(""===n||null==n){const r=typeof e[t];"boolean"===r?n=oi(n):null==n&&"string"===r?(n="",o=!0):"number"===r&&(n=0,o=!0)}try{e[t]=n}catch(e){"production"===At.env.NODE_ENV||o||dp(`Failed setting prop "${t}" on <${r.toLowerCase()}>: value ${n}
14 is invalid.`,e)}o&&e.removeAttribute(t)}(e,t,r),e.tagName.includes("-")||"value"!==t&&"checked"!==t&&"selected"!==t||Jp(e,t,r,s,0,"value"!==t)):("true-value"===t?e._trueValue=r:"false-value"===t&&(e._falseValue=r),Jp(e,t,r,s))}},yp);let Ff,jf=!1;function Uf(){return Ff||(Ff=hu(Bf))}function Hf(){return Ff=jf?Ff:mu(Bf),jf=!0,Ff}const Zf=(...e)=>{Uf().render(...e)},Gf=(...e)=>{Hf().hydrate(...e)},zf=(...e)=>{const t=Uf().createApp(...e);"production"!==At.env.NODE_ENV&&(Wf(t),Kf(t));const{mount:n}=t;return t.mount=e=>{const r=Yf(e);if(!r)return;const o=t._component;mo(o)||o.render||o.template||(o.template=r.innerHTML),r.innerHTML="";const i=n(r,!1,qf(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),i},t};function qf(e){return e instanceof SVGElement?"svg":"function"==typeof MathMLElement&&e instanceof MathMLElement?"mathml":void 0}function Wf(e){Object.defineProperty(e.config,"isNativeTag",{value:e=>Xo(e)||Jo(e)||Qo(e),writable:!1})}function Kf(e){if(Yd()){const t=e.config.isCustomElement;Object.defineProperty(e.config,"isCustomElement",{get:()=>t,set(){dp("The `isCustomElement` config option is deprecated. Use `compilerOptions.isCustomElement` instead.")}});const n=e.config.compilerOptions,r='The `compilerOptions` config option is only respected when using a build of Vue.js that includes the runtime compiler (aka "full build"). Since you are using the runtime-only build, `compilerOptions` must be passed to `@vue/compiler-dom` in the build setup instead.\n- For vue-loader: pass it via vue-loader\'s `compilerOptions` loader option.\n- For vue-cli: see https://cli.vuejs.org/guide/webpack.html#modifying-options-of-a-loader\n- For vite: pass it via @vitejs/plugin-vue options. See https://github.com/vitejs/vite-plugin-vue/tree/main/packages/plugin-vue#example-for-passing-options-to-vuecompiler-sfc';Object.defineProperty(e.config,"compilerOptions",{get:()=>(dp(r),n),set(){dp(r)}})}}function Yf(e){if(vo(e)){const t=document.querySelector(e);return"production"===At.env.NODE_ENV||t||dp(`Failed to mount app: mount target selector "${e}" returned null.`),t}return"production"!==At.env.NODE_ENV&&window.ShadowRoot&&e instanceof window.ShadowRoot&&"closed"===e.mode&&dp('mounting on a ShadowRoot with `{mode: "closed"}` may lead to unpredictable bugs'),e}let Xf=!1;var Jf=Object.freeze({__proto__:null,Transition:Sp,TransitionGroup:gf,VueElement:df,createApp:zf,createSSRApp:(...e)=>{const t=Hf().createApp(...e);"production"!==At.env.NODE_ENV&&(Wf(t),Kf(t));const{mount:n}=t;return t.mount=e=>{const t=Yf(e);if(t)return n(t,!0,qf(t))},t},defineCustomElement:cf,defineSSRCustomElement:(e,t)=>cf(e,t,Gf),hydrate:Gf,initDirectivesForSSR:()=>{Xf||(Xf=!0,Nf.getSSRProps=({value:e})=>({value:e}),Of.getSSRProps=({value:e},t)=>{if(t.props&&ai(t.props.value,e))return{checked:!0}},Af.getSSRProps=({value:e},t)=>{if(uo(e)){if(t.props&&li(e,t.props.value)>-1)return{checked:!0}}else if(fo(e)){if(t.props&&e.has(t.props.value))return{checked:!0}}else if(e)return{checked:!0}},If.getSSRProps=(e,t)=>{if("string"!=typeof t.type)return;const n=Lf(t.type.toUpperCase(),t.props&&t.props.type);return n.getSSRProps?n.getSSRProps(e,t):void 0},Fp.getSSRProps=({value:e})=>
14{if(!e)return{style:{display:"none"}}})},render:Zf,useCssModule:function(e="$style"){{const t=Pd();if(!t)return"production"!==At.env.NODE_ENV&&dp("useCssModule must be called inside setup()"),eo;const n=t.type.__cssModules;if(!n)return"production"!==At.env.NODE_ENV&&dp("Current instance does not have CSS modules injected."),eo;const r=n[e];return r||("production"!==At.env.NODE_ENV&&dp(`Current instance does not have CSS module named "${e}".`),eo)}},useCssVars:function(e){const t=Pd();if(!t)return void("production"!==At.env.NODE_ENV&&dp("useCssVars is called without current active component instance."));const n=t.ut=(n=e(t.proxy))=>{Array.from(document.querySelectorAll(`[data-v-owner="${t.uid}"]`)).forEach((e=>Zp(e,n)))};"production"!==At.env.NODE_ENV&&(t.getCssVars=()=>e(t.proxy));const r=()=>{const r=e(t.proxy);Hp(t.subTree,r),n(r)};Dl((()=>{Nu(r)})),Il((()=>{const e=new MutationObserver(r);e.observe(t.subTree.el.parentNode,{childList:!0}),Rl((()=>e.disconnect()))}))},vModelCheckbox:Af,vModelDynamic:If,vModelRadio:Of,vModelSelect:Tf,vModelText:Nf,vShow:Fp,withKeys:(e,t)=>{const n=e._withKeys||(e._withKeys={}),r=t.join(".");return n[r]||(n[r]=n=>{if(!("key"in n))return;const r=Mo(n.key);return t.some((e=>e===r||Vf[e]===r))?e(n):void 0})},withModifiers:(e,t)=>{const n=e._withMods||(e._withMods={}),r=t.join(".");return n[r]||(n[r]=(n,...r)=>{for(let e=0;e<t.length;e++){const r=Rf[t[e]];if(r&&r(n,t))return}return e(n,...r)})},EffectScope:vi,ReactiveEffect:bi,TrackOpTypes:{GET:"get",HAS:"has",ITERATE:"iterate"},TriggerOpTypes:{SET:"set",ADD:"add",DELETE:"delete",CLEAR:"clear"},customRef:Ks,effect:function(e,t){e.effect instanceof bi&&(e=e.effect.fn);const n=new bi(e,no,(()=>{n.dirty&&n.run()}));t&&(so(n,t),t.scope&&gi(n,t.scope)),t&&t.lazy||n.run();const r=n.run.bind(n);return r.effect=n,r},effectScope:function(e){return new vi(e)},getCurrentScope:yi,isProxy:Is,isReactive:$s,isReadonly:Ms,isRef:js,isShallow:Ds,markRaw:ks,onScopeDispose:function(e){hi?hi.cleanups.push(e):"production"!==At.env.NODE_ENV&&fi("onScopeDispose() is called when there is no active effect scope to be associated with.")},proxyRefs:qs,reactive:Ns,readonly:Cs,ref:Us,shallowReactive:As,shallowReadonly:Os,shallowRef:function(e){return Hs(e,!0)},stop:function(e){e.effect.stop()},toRaw:Ls,toRef:function(e,t,n){return js(e)?e:mo(e)?new Xs(e):yo(e)&&arguments.length>1?Js(e,t,n):Us(e)},toRefs:function(e){"production"===At.env.NODE_ENV||Is(e)||fi("toRefs() expects a reactive object but received a plain one.");const t=uo(e)?new Array(e.length):{};for(const n in e)t[n]=Js(e,n);return t},toValue:function(e){return mo(e)?e():Gs(e)},triggerRef:function(e){Fs(e,4,"production"!==At.env.NODE_ENV?e.value:void 0)},unref:Gs,camelize:To,capitalize:Do,normalizeClass:Yo,normalizeProps:function(e){if(!e)return null;let{class:t,style:n}=e;return t&&!vo(t)&&(e.class=Yo(t)),n&&(e.style=Go(n)),e},normalizeStyle:Go,toDisplayString:ui,toHandlerKey:Io,BaseTransition:ul,BaseTransitionPropsValidators:al,Comment:id,DeprecationTypes:null,ErrorCodes:{SETUP_FUNCTION:0,0:"SETUP_FUNCTION",RENDER_FUNCTION:1,1:"RENDER_FUNCTION",WATCH_GETTER:2,2:"WATCH_GETTER",WATCH_CALLBACK:3,3:"WATCH_CALLBACK",WATCH_CLEANUP:4,4:"WATCH_CLEANUP",NATIVE_EVENT_HANDLER:5,5:"NATIVE_EVENT_HANDLER",COMPONENT_EVENT_HANDLER:6,6:"COMPONENT_EVENT_HANDLER",VNODE_HOOK:7,7:"VNODE_HOOK",DIRECTIVE_HOOK:8,8:"DIRECTIVE_HOOK",TRANSITION_HOOK:9,9:"TRANSITION_HOOK",APP_ERROR_HANDLER:10,10:"APP_ERROR_HANDLER",APP_WARN_HANDLER:11,11:"APP_WARN_HANDLER",FUNCTION_REF:12,12:"FUNCTION_REF",ASYNC_COMPONENT_LOADER:13,13:"ASYNC_COMPONENT_LOADER",SCHEDULER:14,14:"SCHEDULER",COMPONENT_UPDATE:15,15:"COMPONENT_UPDATE"},ErrorTypeStrings:pp,Fragment:rd,KeepAlive:Sl,Static:sd,Suspense:Yu,Teleport:Yc,Text:od,assertNumber:sa,callWithAsyncErrorHandling:ca,callWithErrorHandling:la,cloneVNode:wd,compatUtils:null,computed:sp,createBlock:md,createCommentVNode:function(e="",t=!1){return t?(cd(),md(id,null,e)):_d(id,null,e)},createElementBlock:function(e,t,n,r,o,i){return hd(Ed(e,t,n,r,o,i,!0))},createElementVNode:Ed,createHydrationRenderer:mu,createPropsRestProxy:function(e,t){const n={};for(const r in e)t.includes(r)||Object.defineProperty(n,r,{enumerable:!0,get:()=>e[r]});return n},createRenderer:hu,createSlots:function(e,t){for(let n=0;n<t.length;n++){const r=t[n];if(uo(r))for(let t=0;t<r.length;t++)e[r[t].name]=r[t].fn;else r&&(e[r.name]=r.key?(...e)=>{const t=r.fn(...e);return t&&(t.key=r.key),t}:r.fn)}return e},createStaticVNode:function(e,t){const n=_d(sd,null,e);return n.staticCount=t,n},createTextVNode:Ad,createVNode:_d,defineAsyncComponent:function(e){mo(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:o=200,timeout:i,suspensible:s=!0,onError:a}=e;let l,c=null,u=0;const d=()=>{let e;return c||(e=c=t().catch((e=>{if(e=e instanceof Error?e:new Error(String(e)),a)return new Promise(((t,n)=>{a(e,(()=>t((u++,c=null,d()))),(()=>n(e)),u+1)}));throw e})).then((t=>{if(e!==c&&c)return c;if("production"===At.env.NODE_ENV||t||ra("Async component loader resolved to undefined. If you are using retry(), make sure to return its return value."),t&&(t.__esMo
14dule||"Module"===t[Symbol.toStringTag])&&(t=t.default),"production"!==At.env.NODE_ENV&&t&&!yo(t)&&!mo(t))throw new Error(`Invalid async component load result: ${t}`);return l=t,t})))};return gl({name:"AsyncComponentWrapper",__asyncLoader:d,get __asyncResolved(){return l},setup(){const e=kd;if(l)return()=>bl(l,e);const t=t=>{c=null,ua(t,e,13,!r)};if(s&&e.suspense||zd)return d().then((t=>()=>bl(t,e))).catch((e=>(t(e),()=>r?_d(r,{error:e}):null)));const a=Us(!1),u=Us(),p=Us(!!o);return o&&setTimeout((()=>{p.value=!1}),o),null!=i&&setTimeout((()=>{if(!a.value&&!u.value){const e=new Error(`Async component timed out after ${i}ms.`);t(e),u.value=e}}),i),d().then((()=>{a.value=!0,e.parent&&El(e.parent.vnode)&&(e.parent.effect.dirty=!0,Sa(e.parent.update))})).catch((e=>{t(e),u.value=e})),()=>a.value&&l?bl(l,e):u.value&&r?_d(r,{error:u.value}):n&&!p.value?_d(n):void 0}})},defineComponent:gl,defineEmits:function(){return"production"!==At.env.NODE_ENV&&Ql("defineEmits"),null},defineExpose:function(e){"production"!==At.env.NODE_ENV&&Ql("defineExpose")},defineModel:function(){"production"!==At.env.NODE_ENV&&Ql("defineModel")},defineOptions:function(e){"production"!==At.env.NODE_ENV&&Ql("defineOptions")},defineProps:function(){return"production"!==At.env.NODE_ENV&&Ql("defineProps"),null},defineSlots:function(){return"production"!==At.env.NODE_ENV&&Ql("defineSlots"),null},devtools:fp,getCurrentInstance:Pd,getTransitionRawChildren:vl,guardReactiveProps:xd,h:ap,handleError:ua,hasInjectionContext:function(){return!!(kd||Xa||gc)},initCustomFormatter:lp,inject:bc,isMemoSame:cp,isRuntimeOnly:Yd,isVNode:vd,mergeDefaults:function(e,t){const n=tc(e);for(const e in t){if(e.startsWith("__skip"))continue;let r=n[e];r?uo(r)||mo(r)?r=n[e]={type:r,default:t[e]}:r.default=t[e]:null===r?r=n[e]={default:t[e]}:"production"!==At.env.NODE_ENV&&ra(`props default key "${e}" has no corresponding declaration.`),r&&t[`__skip_${e}`]&&(r.skipFactory=!0)}return n},mergeModels:function(e,t){return e&&t?uo(e)&&uo(t)?e.concat(t):so({},tc(e),tc(t)):e||t},mergeProps:$d,nextTick:_a,onActivated:wl,onBeforeMount:Dl,onBeforeUnmount:Pl,onBeforeUpdate:Ll,onDeactivated:Nl,onErrorCaptured:jl,onMounted:Il,onRenderTracked:Fl,onRenderTriggered:Bl,onServerPrefetch:Vl,onUnmounted:Rl,onUpdated:kl,openBlock:cd,popScopeId:function(){Ja=null},provide:yc,pushScopeId:function(e){Ja=e},queuePostFlushCb:wa,registerRuntimeCompiler:Kd,renderList:function(e,t,n,r){let o;const i=n&&n[r];if(uo(e)||vo(e)){o=new Array(e.length);for(let n=0,r=e.length;n<r;n++)o[n]=t(e[n],n,void 0,i&&i[n])}else if("number"==typeof e){"production"===At.env.NODE_ENV||Number.isInteger(e)||ra(`The v-for range expect an integer value but got ${e}.`),o=new Array(e);for(let n=0;n<e;n++)o[n]=t(n+1,n,void 0,i&&i[n])}else if(yo(e))if(e[Symbol.iterator])o=Array.from(e,((e,n)=>t(e,n,void 0,i&&i[n])));else{const n=Object.keys(e);o=new Array(n.length);for(let r=0,s=n.length;r<s;r++){const s=n[r];o[r]=t(e[s],s,r,i&&i[r])}}else o=[];return n&&(n[r]=o),o},renderSlot:function(e,t,n={},r,o){if(Xa.isCE||Xa.parent&&yl(Xa.parent)&&Xa.parent.isCE)return"default"!==t&&(n.name=t),_d("slot",n,r&&r());let i=e[t];"production"!==At.env.NODE_ENV&&i&&i.length>1&&(ra("SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template."),i=()=>[]),i&&i._c&&(i._d=!1),cd();const s=i&&zl(i(n)),a=md(rd,{key:(n.key||s&&s.key||`_${t}`)+(!s&&r?"_fb":"")},s||(r?r():[]),s&&1===e._?64:-2);return!o&&a.scopeId&&(a.slotScopeIds=[a.scopeId+"-s"]),i&&i._c&&(i._d=!0),a},resolveComponent:function(e,t){return Zl(Ul,e,!0,t)||e},resolveDirective:function(e){return Zl("directives",e)},resolveDynamicComponent:function(e){return vo(e)?Zl(Ul,e,!1)||e:e||Hl},resolveFilter:null,resolveTransitionHooks:pl,setBlockTracking:fd,setDevtoolsHook:hp,setTransitionHooks:ml,ssrContextKey:xu,ssrUtils:mp,toHandlers:function(e,t){const n={};if("production"!==At.env.NODE_ENV&&!yo(e))return ra("v-on with no argument expects an object value."),n;for(const r in e)n[t&&/[A-Z]/.test(r)?`on:${r}`:Io(r)]=e[r];return n},transformVNodeArgs:function(e){dd=e},useAttrs:function(){return ec().attrs},useModel:function(e,t,n=eo){const r=Pd();if("production"!==At.env.NODE_ENV&&!r)return ra("useModel() called without active instance."),Us();if("production"!==At.env.NODE_ENV&&!r.propsOptions[0][t])return ra(`useModel() called with prop "${t}" which is not declared.`),Us();const o=To(t),i=Mo(t),s=Iu(e,t),a=Ks(((s,a)=>{let l,c,u=eo;return Au((()=>{const n=e[t];Lo(l,n)&&(l=n,a())})),{get:()=>(s(),n.get?n.get(l):l),set(e){const s=n.set?n.set(e):e;if(!(Lo(s,l)||u!==eo&&Lo(e,u)))return;const d=r.vnode.props;d&&(t in d||o in d||i in d)&&(`onUpdate:${t}
14`in d||`onUpdate:${o}`in d||`onUpdate:${i}`in d)||(l=e,a()),r.emit(`update:${t}`,s),Lo(e,s)&&Lo(e,u)&&!Lo(s,c)&&a(),u=e,c=s}}}));return a[Symbol.iterator]=()=>{let e=0;return{next:()=>e<2?{value:e++?s||eo:a,done:!1}:{done:!0}}},a},useSSRContext:wu,useSlots:function(){return ec().slots},useTransitionState:il,version:up,warn:dp,watch:Ou,watchEffect:function(e,t){return Tu(e,null,t)},watchPostEffect:Nu,watchSyncEffect:Au,withAsyncContext:function(e){const t=Pd();"production"===At.env.NODE_ENV||t||ra("withAsyncContext called without active current instance. This is likely a bug.");let n=e();return Fd(),bo(n)&&(n=n.catch((e=>{throw Bd(t),e}))),[n,()=>Bd(t)]},withCtx:el,withDefaults:function(e,t){return"production"!==At.env.NODE_ENV&&Ql("withDefaults"),null},withDirectives:function(e,t){if(null===Xa)return"production"!==At.env.NODE_ENV&&ra("withDirectives can only be used inside render functions."),e;const n=ep(Xa),r=e.dirs||(e.dirs=[]);for(let e=0;e<t.length;e++){let[o,i,s,a=eo]=t[e];o&&(mo(o)&&(o={mounted:o,updated:o}),o.deep&&Du(i),r.push({dir:o,instance:n,value:i,oldValue:void 0,arg:s,modifiers:a}))}return e},withMemo:function(e,t,n,r){const o=n[r];if(o&&cp(o,e))return o;const i=t();return i.memo=e.slice(),i.cacheIndex=r,n[r]=i},withScopeId:e=>el});const Qf=Symbol("production"!==At.env.NODE_ENV?"Fragment":""),eh=Symbol("production"!==At.env.NODE_ENV?"Teleport":""),th=Symbol("production"!==At.env.NODE_ENV?"Suspense":""),nh=Symbol("production"!==At.env.NODE_ENV?"KeepAlive":""),rh=Symbol("production"!==At.env.NODE_ENV?"BaseTransition":""),oh=Symbol("production"!==At.env.NODE_ENV?"openBlock":""),ih=Symbol("production"!==At.env.NODE_ENV?"createBlock":""),sh=Symbol("production"!==At.env.NODE_ENV?"createElementBlock":""),ah=Symbol("production"!==At.env.NODE_ENV?"createVNode":""),lh=Symbol("production"!==At.env.NODE_ENV?"createElementVNode":""),ch=Symbol("production"!==At.env.NODE_ENV?"createCommentVNode":""),uh=Symbol("production"!==At.env.NODE_ENV?"createTextVNode":""),dh=Symbol("production"!==At.env.NODE_ENV?"createStaticVNode":""),ph=Symbol("production"!==At.env.NODE_ENV?"resolveComponent":""),fh=Symbol("production"!==At.env.NODE_ENV?"resolveDynamicComponent":""),hh=Symbol("production"!==At.env.NODE_ENV?"resolveDirective":""),mh=Symbol("production"!==At.env.NODE_ENV?"resolveFilter":""),vh=Symbol("production"!==At.env.NODE_ENV?"withDirectives":""),gh=Symbol("production"!==At.env.NODE_ENV?"renderList":""),yh=Symbol("production"!==At.env.NODE_ENV?"renderSlot":""),bh=Symbol("production"!==At.env.NODE_ENV?"createSlots":""),Eh=Symbol("production"!==At.env.NODE_ENV?"toDisplayString":""),_h=Symbol("production"!==At.env.NODE_ENV?"mergeProps":""),Sh=Symbol("production"!==At.env.NODE_ENV?"normalizeClass":""),xh=Symbol("production"!==At.env.NODE_ENV?"normalizeStyle":""),wh=Symbol("production"!==At.env.NODE_ENV?"normalizeProps":""),Nh=Symbol("production"!==At.env.NODE_ENV?"guardReactiveProps":""),Ah=Symbol("production"!==At.env.NODE_ENV?"toHandlers":""),Ch=Symbol("production"!==At.env.NODE_ENV?"camelize":""),Oh=Symbol("production"!==At.env.NODE_ENV?"capitalize":""),Th=Symbol("production"!==At.env.NODE_ENV?"toHandlerKey":""),$h=Symbol("production"!==At.env.NODE_ENV?"setBlockTracking":""),Mh=Symbol("production"!==At.env.NODE_ENV?"pushScopeId":""),Dh=Symbol("production"!==At.env.NODE_ENV?"popScopeId":""),Ih=Symbol("production"!==At.env.NODE_ENV?"withCtx":""),Lh=Symbol("production"!==At.env.NODE_ENV?"unref":""),kh=Symbol("production"!==At.env.NODE_ENV?"isRef":""),Ph=Symbol("production"!==At.env.NODE_ENV?"withMemo":""),Rh=Symbol("production"!==At.env.NODE_ENV?"isMemoSame":""),Vh={[Qf]:"Fragment",[eh]:"Teleport",[th]:"Suspense",[nh]:"KeepAlive",[rh]:"BaseTransition",[oh]:"openBlock",[ih]:"createBlock",[sh]:"createElementBlock",[ah]:"createVNode",[lh]:"createElementVNode",[ch]:"createCommentVNode",[uh]:"createTextVNode",[dh]:"createStaticVNode",[ph]:"resolveComponent",[fh]:"resolveDynamicComponent",[hh]:"resolveDirective",[mh]:"resolveFilter",[vh]:"withDirectives",[gh]:"renderList",[yh]:"renderSlot",[bh]:"createSlots",[Eh]:"toDisplayString",[_h]:"mergeProps",[Sh]:"normalizeClass",[xh]:"normalizeStyle",[wh]:"normalizeProps",[Nh]:"guardReactiveProps",[Ah]:"toHandlers",[Ch]:"camelize",[Oh]:"capitalize",[Th]:"toHandlerKey",[$h]:"setBlockTracking",[Mh]:"pushScopeId",[Dh]:"popScopeId",[Ih]:"withCtx",[Lh]:"unref",[kh]:"isRef",[Ph]:"withMemo",[Rh]:"isMemoSame"};const Bh={start:{line:1,column:1,offset:0},end:{line:1,column:1,offset:0},source:""};function Fh(e,t,n,r,o,i,s,a=!1,l=!1,c=!1,u=Bh){return e&&(a?(e.helper(oh),e.helper(Yh(e.inSSR,c))):e.helper(Kh(e.inSSR,c)),s&&e.helper(vh)),{type:13,tag:t,props:n,children:r,patchFlag:o,dynamicProps:i,directives:s,isBlock:a,disableTracking:l,isComponent:c,loc:u}}function jh(e,t=Bh){return{type:17,loc:t,elements:e}}function Uh(e,t=Bh){return{type:15,loc:t,properties:e}}
14function Hh(e,t){return{type:16,loc:Bh,key:vo(e)?Zh(e,!0):e,value:t}}function Zh(e,t=!1,n=Bh,r=0){return{type:4,loc:n,content:e,isStatic:t,constType:t?3:r}}function Gh(e,t=Bh){return{type:8,loc:t,children:e}}function zh(e,t=[],n=Bh){return{type:14,loc:n,callee:e,arguments:t}}function qh(e,t=void 0,n=!1,r=!1,o=Bh){return{type:18,params:e,returns:t,newline:n,isSlot:r,loc:o}}function Wh(e,t,n,r=!0){return{type:19,test:e,consequent:t,alternate:n,newline:r,loc:Bh}}function Kh(e,t){return e||t?ah:lh}function Yh(e,t){return e||t?ih:sh}function Xh(e,{helper:t,removeHelper:n,inSSR:r}){e.isBlock||(e.isBlock=!0,n(Kh(r,e.isComponent)),t(oh),t(Yh(r,e.isComponent)))}const Jh=new Uint8Array([123,123]),Qh=new Uint8Array([125,125]);function em(e){return e>=97&&e<=122||e>=65&&e<=90}function tm(e){return 32===e||10===e||9===e||12===e||13===e}function nm(e){return 47===e||62===e||tm(e)}function rm(e){const t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n);return t}const om={Cdata:new Uint8Array([67,68,65,84,65,91]),CdataEnd:new Uint8Array([93,93,62]),CommentEnd:new Uint8Array([45,45,62]),ScriptEnd:new Uint8Array([60,47,115,99,114,105,112,116]),StyleEnd:new Uint8Array([60,47,115,116,121,108,101]),TitleEnd:new Uint8Array([60,47,116,105,116,108,101]),TextareaEnd:new Uint8Array([60,47,116,101,120,116,97,114,101,97])};const im
vendor: 2,117 bytes, line 14
14={COMPILER_IS_ON_ELEMENT:{message:'Platform-native elements with "is" prop will no longer be treated as components in Vue 3 unless the "is" value is explicitly prefixed with "vue:".',link:"https://v3-migration.vuejs.org/breaking-changes/custom-elements-interop.html"},COMPILER_V_BIND_SYNC:{message:e=>`.sync modifier for v-bind has been removed. Use v-model with argument instead. \`v-bind:${e}.sync\` should be changed to \`v-model:${e}\`.`,link:"https://v3-migration.vuejs.org/breaking-changes/v-model.html"},COMPILER_V_BIND_OBJECT_ORDER:{message:'v-bind="obj" usage is now order sensitive and behaves like JavaScript object spread: it will now overwrite an existing non-mergeable attribute that appears before v-bind in the case of conflict. To retain 2.x behavior, move v-bind to make it the first attribute. You can also suppress this warning if the usage is intended.',link:"https://v3-migration.vuejs.org/breaking-changes/v-bind.html"},COMPILER_V_ON_NATIVE:{message:".native modifier for v-on has been removed as is no longer necessary.",link:"https://v3-migration.vuejs.org/breaking-changes/v-on-native-modifier-removed.html"},COMPILER_V_IF_V_FOR_PRECEDENCE:{message:"v-if / v-for precedence when used on the same element has changed in Vue 3: v-if now takes higher precedence and will no longer have access to v-for scope variables. It is best to avoid the ambiguity with <template> tags or use a computed property that filters v-for data source.",link:"https://v3-migration.vuejs.org/breaking-changes/v-if-v-for.html"},COMPILER_NATIVE_TEMPLATE:{message:"<template> with no special directives will render as a native template element instead of its inner content in Vue 3."},COMPILER_INLINE_TEMPLATE:{message:'"inline-template" has been removed in Vue 3.',link:"https://v3-migration.vuejs.org/breaking-changes/inline-template-attribute.html"},COMPILER_FILTERS:{message:'filters have been removed in Vue 3. The "|" symbol will be treated as native JavaScript bitwise OR operator. Use method calls or computed properties instead.',link:"https://v3-migration.vuejs.org/breaking-changes/filters.html"}};function
14sm(e,{compatConfig:t}){const n=t&&t[e];return"MODE"===e?n||3:n}function am(e,t){const n=sm("MODE",t),r=sm(e,t);return 3===n?!0===r:!1!==r}function lm(e,t,n,...r){const o=am(e,t);return"production"!==At.env.NODE_ENV&&o&&cm(e,t,n,...r),o}function cm(e,t,n,...r){if("suppress-warning"===sm(e,t))return;const{message:o,link:i}=im[e],s=`(deprecation ${e}) ${"function"==typeof o?o(...r):o}${i?`\n Details: ${i}`:""}`,a=new SyntaxError(s);a.code=e,n&&(a.loc=n),t.onWarn(a)}function um(e){throw e}function dm(e){"production"!==At.env.NODE_ENV&&console.warn(`[Vue warn] ${e.message}`)}function pm(e,t,n,r){const o="production"!==At.env.NODE_ENV?(n||fm)[e]+(r||""):`https://vuejs.org/error-reference/#compiler-${e}`,i=new SyntaxError(String(o));return i.code=e,i.loc=t,i}const fm={0:"Illegal comment.",1:"CDATA section is allowed only in XML context.",2:"Duplicate attribute.",3:"End tag cannot have attributes.",4:"Illegal '/' in tags.",5:"Unexpected EOF in tag.",6:"Unexpected EOF in CDATA section.",7:"Unexpected EOF in comment.",8:"Unexpected EOF in script.",9:"Unexpected EOF in tag.",10:"Incorrectly closed comment.",11:"Incorrectly opened comment.",12:"Illegal tag name. Use '<' to print '<'.",13:"Attribute value was expected.",14:"End tag name was expected.",15:"Whitespace was expected.",16:"Unexpected '\x3c!--' in comment.",17:"Attribute name cannot contain U+0022 (\"), U+0027 ('), and U+003C (<).",18:"Unquoted attribute value cannot contain U+0022 (\"), U+0027 ('), U+003C (<), U+003D (=), and U+0060 (`).",19:"Attribute name cannot start with '='.",21:"'<?' is allowed only in XML context.",20:"Unexpected null character.",22:"Illegal '/' in tags.",23:"Invalid end tag.",24:"Element is missing end tag.",25:"Interpolation end sign was not found.",27:"End bracket for dynamic directive argument was not found. Note that dynamic directive argument cannot contain spaces.",26:"Legal directive name was expected.",28:"v-if/v-else-if is missing expression.",29:"v-if/else branches must use unique keys.",30:"v-else/v-else-if has no adjacent v-if or v-else-if.",31:"v-for is missing expression.",32:"v-for has invalid expression.",33:"<template v-for> key should be placed on the <template> tag.",34:"v-bind is missing expression.",52:"v-bind with same-name shorthand only allows static argument.",35:"v-on is missing expression.",36:"Unexpected custom directive on <slot> outlet.",37:"Mixed v-slot usage on both the component and nested <template>. When there are multiple named slots, all slots should use <template> syntax to avoid scope ambiguity.",38:"Duplicate slot names found. ",39:"Extraneous children found when component already has explicitly named default slot. These children will be ignored.",40:"v-slot can only be used on components or <template> tags.",41:"v-model is missing expression.",42:"v-model value must be a valid JavaScript member expression.",43:"v-model cannot be used on v-for or v-slot scope variables because they are not writable.",44:"v-model cannot be used on a prop, because local prop bindings are not writable.\nUse a v-bind binding combined with a v-on listener that emits update:x event instead.",45:"Error parsing JavaScript expression: ",46:"<KeepAlive> expects exactly one child component.",51:"@vnode-* hooks in templates are no longer supported. Use the vue: prefix instead. For example, @vnode-mounted should be changed to @vue:mounted. @vnode-* hooks support has been removed in 3.4.",47:'"prefixIdentifiers" option is not supported in this build of compiler.',48:"ES module mode is not supported in this build of compiler.",49:'"cacheHandlers" option is only supported when the "prefixIdentifiers" option is enabled.',50:'"scopeId" option is only supported in module mode.',53:""},hm=e=>4===e.type&&e.isStatic;function mm(e){switch(e){case"Teleport":case"teleport":return eh;case"Suspense":case"suspense":return th;case"KeepAlive":case"keep-alive":return nh;case"BaseTransition":case"base-transition":return rh}}const vm=/^\d|[^\$\w\xA0-\uFFFF]/,gm=e=>!vm.test(e),ym=/[A-Za-z_$\xA0-\uFFFF]/,bm=/[\.\?\w$\xA0-\uFFFF]/,Em=/\s+[.[]\s*|\s*[.[]\s+/g,_m=e=>4===e.type?e.content:e.loc.source,Sm=e=>
14{const t=_m(e).trim().replace(Em,(e=>e.trim()));let n=0,r=[],o=0,i=0,s=null;for(let e=0;e<t.length;e++){const a=t.charAt(e);switch(n){case 0:if("["===a)r.push(n),n=1,o++;else if("("===a)r.push(n),n=2,i++;else if(!(0===e?ym:bm).test(a))return!1;break;case 1:"'"===a||'"'===a||"`"===a?(r.push(n),n=3,s=a):"["===a?o++:"]"===a&&(--o||(n=r.pop()));break;case 2:if("'"===a||'"'===a||"`"===a)r.push(n),n=3,s=a;else if("("===a)i++;else if(")"===a){if(e===t.length-1)return!1;--i||(n=r.pop())}break;case 3:a===s&&(n=r.pop(),s=null)}}return!o&&!i},xm=/^\s*(async\s*)?(\([^)]*?\)|[\w$_]+)\s*(:[^=]+)?=>|^\s*(async\s+)?function(?:\s+[\w$]+)?\s*\(/,wm=e=>xm.test(_m(e));function Nm(e,t){if(!e)throw new Error(t||"unexpected compiler condition")}function Am(e,t,n=!1){for(let r=0;r<e.props.length;r++){const o=e.props[r];if(7===o.type&&(n||o.exp)&&(vo(t)?o.name===t:t.test(o.name)))return o}}function Cm(e,t,n=!1,r=!1){for(let o=0;o<e.props.length;o++){const i=e.props[o];if(6===i.type){if(n)continue;if(i.name===t&&(i.value||r))return i}else if("bind"===i.name&&(i.exp||r)&&Om(i.arg,t))return i}}function Om(e,t){return!(!e||!hm(e)||e.content!==t)}function Tm(e){return 5===e.type||2===e.type}function $m(e){return 7===e.type&&"slot"===e.name}function Mm(e){return 1===e.type&&3===e.tagType}function Dm(e){return 1===e.type&&2===e.tagType}const Im=new Set([wh,Nh]);function Lm(e,t=[]){if(e&&!vo(e)&&14===e.type){const n=e.callee;if(!vo(n)&&Im.has(n))return Lm(e.arguments[0],t.concat(e))}return[e,t]}function km(e,t,n){let r,o,i=13===e.type?e.props:e.arguments[2],s=[];if(i&&!vo(i)&&14===i.type){const e=Lm(i);i=e[0],s=e[1],o=s[s.length-1]}if(null==i||vo(i))r=Uh([t]);else if(14===i.type){const e=i.arguments[0];vo(e)||15!==e.type?i.callee===Ah?r=zh(n.helper(_h),[Uh([t]),i]):i.arguments.unshift(Uh([t])):Pm(t,e)||e.properties.unshift(t),!r&&(r=i)}else 15===i.type?(Pm(t,i)||i.properties.unshift(t),r=i):(r=zh(n.helper(_h),[Uh([t]),i]),o&&o.callee===Nh&&(o=s[s.length-2]));13===e.type?o?o.arguments[0]=r:e.props=r:o?o.arguments[0]=r:e.arguments[2]=r}function Pm(e,t){let n=!1;if(4===e.key.type){const r=e.key.content;n=t.properties.some((e=>4===e.key.type&&e.key.content===r))}return n}function Rm(e,t){return`_${t}_${e.replace(/[^\w]/g,((t,n)=>"-"===t?"_":e.charCodeAt(n).toString()))}`}const Vm=/([\s\S]*?)\s+(?:in|of)\s+(\S[\s\S]*)/,Bm={parseMode:"base",ns:0,delimiters:["{{","}}"],getNamespace:()=>0,isVoidTag:ro,isPreTag:ro,isCustomElement:ro,onError:um,onWarn:dm,comments:!("production"===At.env.NODE_ENV),prefixIdentifiers:!1};let Fm=Bm,jm=null,Um="",Hm=null,Zm=null,Gm="",zm=-1,qm=-1,Wm=0,Km=!1,Ym=null;const Xm=[],Jm=new class{constructor(e,t){this.stack=e,this.cbs=t,this.state=1,this.buffer="",this.sectionStart=0,this.index=0,this.entityStart=0,this.baseState=1,this.inRCDATA=!1,this.inXML=!1,this.inVPre=!1,this.newlines=[],this.mode=0,this.delimiterOpen=Jh,this.delimiterClose=Qh,this.delimiterIndex=-1,this.currentSequence=void 0,this.sequenceIndex=0}get inSFCRoot(){return 2===this.mode&&0===this.stack.length}reset(){this.state=1,this.mode=0,this.buffer="",this.sectionStart=0,this.index=0,this.baseState=1,this.inRCDATA=!1,this.currentSequence=void 0,this.newlines.length=0,this.delimiterOpen=Jh,this.delimiterClose=Qh}getPos(e){let t=1,n=e+1;for(let r=this.newlines.length-1;r>=0;r--){const o=this.newlines[r];if(e>o){t=r+2,n=e-o;break}}return{column:n,line:t,offset:e}}peek(){return this.buffer.charCodeAt(this.index+1)}stateText(e){60===e?(this.index>this.sectionStart&&this.cbs.ontext(this.sectionStart,this.index),this.state=5,this.sectionStart=this.index):this.inVPre||e!==this.delimiterOpen[0]||(this.state=2,this.delimiterIndex=0,this.stateInterpolationOpen(e))}stateInterpolationOpen(e){if(e===this.delimiterOpen[this.delimiterIndex])if(this.delimiterIndex===this.delimiterOpen.length-1){const e=this.index+1-this.delimiterOpen.length;e>this.sectionStart&&this.cbs.ontext(this.sectionStart,e),this.state=3,this.sectionStart=e}else this.delimiterIndex++;else this.inRCDATA?(this.state=32,this.stateInRCDATA(e)):(this.state=1,this.stateText(e))}stateInterpolation(e){e===this.delimiterClose[0]&&(this.state=4,this.delimiterIndex=0,this.stateInterpolationClose(e))}stateInterpolationClose(e){e===this.delimiterClose[this.delimiterIndex]?this.delimiterIndex===this.delimiterClose.length-1?(this.cbs.oninterpolation(this.sectionStart,this.index+1),this.inRCDATA?this.state=32:this.state=1,this.sectionStart=this.index+1):this.delimiterIndex++:(this.state=3,this.stateInterpolation(e))}stateSpecialStartSequence(e){const t=this.sequenceIndex===this.currentSequence.length;if(t?nm(e):(32|e)===this.currentSequence[this.sequenceIndex]){if(!t)return void this.sequenceIndex++}else this.inRCDATA=!1;this.sequenceIndex=0,this.state=6,this.stateInTagName(e)}stateInRCDATA(e){if(this.sequenceIndex===this.currentSequence.length){if(62===e||tm(e)){const t=this.index-this.currentSequence.length;if(this.sectionStart<t){const e=this.index;this.index=t,this.cbs.ontext(this.sectionStart,t),this.index=e}return this.sectionStart=t+2,this.stateInClosingTagName(e),void(this.inRCDATA=!1)}this.sequenceIndex=0}(32|e)===this.currentSequence[this.sequenceIndex]?this.sequenceIndex+=1:0===this.sequenceIndex?this.currentSequence===om.TitleEnd||this.currentSequence===om.TextareaEnd&&!this.inSFCRoot?e===this.delimiterOpen[0]&&(this.state=2,this.delimiterIndex=0,this.stateInterpolationOpen(e)):this.fastForwardTo(60)&&(this.sequenceIndex=1):this.sequenceIndex=Number(60===e)}stateCDATASequence(e){e===om.Cdata[this.sequenceIndex]?++this.sequenceIndex===om.Cdata.length&&(this.state=28,this.currentSequence=om.CdataEnd,this.sequenceIndex=0,this.sectionStart=this.index+1):(this.sequenceIndex=0,this.state=23,this.stateInDeclaration(e))}fastForwardTo(e){for(;++this.index<this.buffer.length;){const t=this.buffer.charCodeAt(this.index);if(10===t&&this.newlines.push(this.index),t===e)return!0}return this.index=this.buffer.length-1,!1}stateInCommentLike(e){e===this.currentSequence[this.sequenceIndex]?++this.sequenceIndex===this.currentSequence.length&&(this.currentSequence===om.CdataEnd?this.cbs.oncdata(this.sectionStart,this.index-2):this.cbs.oncomment(this.sectionStart,this.index-2),this.sequenceIndex=0,this.sectionStart=this.index+1,this.state=1):0===this.sequenceIndex?this.fastForwardTo(this.currentSequence[0])&&(this.sequenceIndex=1):e!==this.currentSequence[this.sequenceIndex-1]&&(this.sequenceIndex=0)}startSpecial(e,t){this.enterRCDATA(e,t),this.state=31}enterRCDATA(e,t){this.inRCDATA=!0,this.currentSequence=e,this.sequenceIndex=t}stateBeforeTagName(e){33===e?(this.state=22,this.sectionStart=this.index+1):63===e?(this.state=24,this.sectionStart=this.index+1):em(e)?(this.sectionStart=this.index,0===this.mode?this.state=6:this.inSFCRoot?this.state=34:this.inXML?this.state=6:this.state=116===e?30:115===e?29:6):47===e?this.state=8:(this.state=1,this.stateText(e))}stateInTagName(e){nm(e)&&this.handleTagName(e)}stateInSFCRootTagName(e){if(nm(e)){const t=this.buffer.slice(this.sectionStart,this.index);"template"!==t&&this.enterRCDATA(rm("</"+t),0),this.handleTagName(e)}}handleTagName(e){this.cbs.onopentagname(this.sectionStart,this.index),this.sectionStart=-1,this.state=11,this.stateBeforeAttrName(e)}stateBeforeClosingTagName(e){tm(e)||(62===e?("production"!==At.env.NODE_ENV&&this.cbs.onerr(14,this.index),this.state=1,this.sectionStart=this.index+1):(this.state=em(e)?9:27,this.sectionStart=this.index))}stateInClosingTagName(e){(62===e||tm(e))&&(this.cbs.onclosetag(this.sectionStart,this.index),this.sectionStart=-1,this.state=10,this.stateAfterClosingTagName(e))}stateAfterClosingTagName(e){62===e&&(this.state=1,this.sectionStart=this.index+1)}stateBeforeAttrName(e){62===e?(this.cbs.onopentagend(this.index),this.inRCDATA?this.state=32:this.state=1,this.sectionStart=this.index+1):47===e?
14(this.state=7,"production"!==At.env.NODE_ENV&&62!==this.peek()&&this.cbs.onerr(22,this.index)):60===e&&47===this.peek()?(this.cbs.onopentagend(this.index),this.state=5,this.sectionStart=this.index):tm(e)||("production"!==At.env.NODE_ENV&&61===e&&this.cbs.onerr(19,this.index),this.handleAttrStart(e))}handleAttrStart(e){118===e&&45===this.peek()?(this.state=13,this.sectionStart=this.index):46===e||58===e||64===e||35===e?(this.cbs.ondirname(this.index,this.index+1),this.state=14,this.sectionStart=this.index+1):(this.state=12,this.sectionStart=this.index)}stateInSelfClosingTag(e){62===e?(this.cbs.onselfclosingtag(this.index),this.state=1,this.sectionStart=this.index+1,this.inRCDATA=!1):tm(e)||(this.state=11,this.stateBeforeAttrName(e))}stateInAttrName(e){61===e||nm(e)?(this.cbs.onattribname(this.sectionStart,this.index),this.handleAttrNameEnd(e)):"production"===At.env.NODE_ENV||34!==e&&39!==e&&60!==e||this.cbs.onerr(17,this.index)}stateInDirName(e){61===e||nm(e)?(this.cbs.ondirname(this.sectionStart,this.index),this.handleAttrNameEnd(e)):58===e?(this.cbs.ondirname(this.sectionStart,this.index),this.state=14,this.sectionStart=this.index+1):46===e&&(this.cbs.ondirname(this.sectionStart,this.index),this.state=16,this.sectionStart=this.index+1)}stateInDirArg(e){61===e||nm(e)?(this.cbs.ondirarg(this.sectionStart,this.index),this.handleAttrNameEnd(e)):91===e?this.state=15:46===e&&(this.cbs.ondirarg(this.sectionStart,this.index),this.state=16,this.sectionStart=this.index+1)}stateInDynamicDirArg(e){93===e?this.state=14:(61===e||nm(e))&&(this.cbs.ondirarg(this.sectionStart,this.index+1),this.handleAttrNameEnd(e),"production"!==At.env.NODE_ENV&&this.cbs.onerr(27,this.index))}stateInDirModifier(e){61===e||nm(e)?(this.cbs.ondirmodifier(this.sectionStart,this.index),this.handleAttrNameEnd(e)):46===e&&(this.cbs.ondirmodifier(this.sectionStart,this.index),this.sectionStart=this.index+1)}handleAttrNameEnd(e){this.sectionStart=this.index,this.state=17,this.cbs.onattribnameend(this.index),this.stateAfterAttrName(e)}stateAfterAttrName(e){61===e?this.state=18:47===e||62===e?(this.cbs.onattribend(0,this.sectionStart),this.sectionStart=-1,this.state=11,this.stateBeforeAttrName(e)):tm(e)||(this.cbs.onattribend(0,this.sectionStart),this.handleAttrStart(e))}stateBeforeAttrValue(e){34===e?(this.state=19,this.sectionStart=this.index+1):39===e?(this.state=20,this.sectionStart=this.index+1):tm(e)||(this.sectionStart=this.index,this.state=21,this.stateInAttrValueNoQuotes(e))}handleInAttrValue(e,t){(e===t||this.fastForwardTo(t))&&(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=-1,this.cbs.onattribend(34===t?3:2,this.index+1),this.state=11)}stateInAttrValueDoubleQuotes(e){this.handleInAttrValue(e,34)}stateInAttrValueSingleQuotes(e){this.handleInAttrValue(e,39)}stateInAttrValueNoQuotes(e){tm(e)||62===e?(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=-1,this.cbs.onattribend(1,this.index),this.state=11,this.stateBeforeAttrName(e)):("production"!==At.env.NODE_ENV&&34===e||39===e||60===e||61===e||96===e)&&this.cbs.onerr(18,this.index)}stateBeforeDeclaration(e){91===e?(this.state=26,this.sequenceIndex=0):this.state=45===e?25:23}stateInDeclaration(e){(62===e||this.fastForwardTo(62))&&(this.state=1,this.sectionStart=this.index+1)}stateInProcessingInstruction(e){(62===e||this.fastForwardTo(62))&&(this.cbs.onprocessinginstruction(this.sectionStart,this.index),this.state=1,this.sectionStart=this.index+1)}stateBeforeComment(e){45===e?(this.state=28,this.currentSequence=om.CommentEnd,this.sequenceIndex=2,this.sectionStart=this.index+1):this.state=23}stateInSpecialComment(e){(62===e||this.fastForwardTo(62))&&(this.cbs.oncomment(this.sectionStart,this.index),this.state=1,this.sectionStart=this.index+1)}stateBeforeSpecialS(e){e===om.ScriptEnd[3]?this.startSpecial(om.ScriptEnd,4):e===om.StyleEnd[3]?this.startSpecial(om.StyleEnd,4):(this.state=6,this.stateInTagName(e))}stateBeforeSpecialT(e){e===om.TitleEnd[3]?this.startSpecial(om.TitleEnd,4):e===om.TextareaEnd[3]?this.startSpecial(om.TextareaEnd,4):(this.state=6,this.stateInTagName(e))}startEntity(){}stateInEntity(){}parse(e){for(this.buffer=e;this.index<this.buffer.length;){const e=this.buffer.charCodeAt(this.index);switch(10===e&&this.newlines.push(this.index),this.state){case 1:this.stateText(e);break;case 2:this.stateInterpolationOpen(e);break;case 3:this.stateInterpolation(e);break;case 4:this.stateInterpolationClose(e);break;case 31:this.stateSpecialStartSequence(e);break;case 32:this.stateInRCDATA(e);break;case 26:this.stateCDATASequence(e);break;case 19:this.stateInAttrValueDoubleQuotes(e);break;case 12:this.stateInAttrName(e);break;case 13:this.stateInDirName(e);break;case 14:this.stateInDirArg(e);break;case 15:this.stateInDynamicDirArg(e);break;case 16:this.stateInDirModifier(e);break;case 28:this.stateInCommentLike(e);break;case 27:this.stateInSpecialComment(e);break;case 11:this.stateBeforeAttrName(e);break;case 6:this.stateInTagName(e);break;case 34:this.stateInSFCRootTagName(e);break;case 9:this.stateInClosingTagName(e);break;case 5:this.stateBeforeTagName(e);break;case 17:this.stateAfterAttrName(e);break;case 20:this.stateInAttrValueSingleQuotes(e);break;case 18:this.stateBeforeAttrValue(e);break;case 8:this.stateBeforeClosingTagName(e);break;case 10:this.stateAfterClosingTagName(e);break;case 29:this.stateBeforeSpecialS(e);break;case 30:this.stateBeforeSpecialT(e);break;case 21:this.stateInAttrValueNoQuotes(e);break;case 7:this.stateInSelfClosingTag(e);break;case 23:this.stateInDeclaration(e);break;case 22:this.stateBeforeDeclaration(e);break;case 25:this.stateBeforeComment(e);break;case 24:this.stateInProcessingInstruction(e);break;case 33:this.stateInEntity()}this.index++}this.cleanup(),this.finish()}cleanup(){this.sectionStart!==this.index&&(1===this.state||32===this.state&&0===this.sequenceIndex?(this.cbs.ontext(this.sectionStart,this.index),this.sectionStart=this.index):19!==this.state&&20!==this.state&&21!==this.state||(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=this.index))}finish(){this.handleTrailingData(),this.cbs.onend()}handleTrailingData(){const e=this.buffer.length;this.sectionStart>=e||(28===this.state?this.currentSequence===om.CdataEnd?this.cbs.oncdata(this.sectionStart,e):this.cbs.oncomment(this.sectionStart,e):6===this.state||11===this.state||18===this.state||17===this.state||12===this.state||13===this.state||14===this.state||15===this.state||16===this.state||20===this.state||19===this.state||21===this.state||9===this.state||this.cbs.ontext(this.sectionStart,e))}emitCodePoint(e,t){}}(Xm,{onerr:yv,ontext(e,t){rv(tv(e,t),e,t)}
14,ontextentity(e,t,n){rv(e,t,n)},oninterpolation(e,t){if(Km)return rv(tv(e,t),e,t);let n=e+Jm.delimiterOpen.length,r=t-Jm.delimiterClose.length;for(;tm(Um.charCodeAt(n));)n++;for(;tm(Um.charCodeAt(r-1));)r--;let o=tv(n,r);o.includes("&")&&(o=Fm.decodeEntities(o,!1)),fv({type:5,content:gv(o,!1,hv(n,r)),loc:hv(e,t)})},onopentagname(e,t){const n=tv(e,t);Hm={type:1,tag:n,ns:Fm.getNamespace(n,Xm[0],Fm.ns),tagType:0,props:[],children:[],loc:hv(e-1,t),codegenNode:void 0}},onopentagend(e){nv(e)},onclosetag(e,t){const n=tv(e,t);if(!Fm.isVoidTag(n)){let r=!1;for(let e=0;e<Xm.length;e++){if(Xm[e].tag.toLowerCase()===n.toLowerCase()){r=!0,e>0&&yv(24,Xm[0].loc.start.offset);for(let n=0;n<=e;n++){ov(Xm.shift(),t,n<e)}break}}r||yv(23,iv(e,60))}},onselfclosingtag(e){const t=Hm.tag;Hm.isSelfClosing=!0,nv(e),Xm[0]&&Xm[0].tag===t&&ov(Xm.shift(),e)},onattribname(e,t){Zm={type:6,name:tv(e,t),nameLoc:hv(e,t),value:void 0,loc:hv(e)}},ondirname(e,t){const n=tv(e,t),r="."===n||":"===n?"bind":"@"===n?"on":"#"===n?"slot":n.slice(2);if(Km||""!==r||yv(26,e),Km||""===r)Zm={type:6,name:n,nameLoc:hv(e,t),value:void 0,loc:hv(e)};else if(Zm={type:7,name:r,rawName:n,exp:void 0,arg:void 0,modifiers:"."===n?["prop"]:[],loc:hv(e)},"pre"===r){Km=Jm.inVPre=!0,Ym=Hm;const e=Hm.props;for(let t=0;t<e.length;t++)7===e[t].type&&(e[t]=vv(e[t]))}},ondirarg(e,t){if(e===t)return;const n=tv(e,t);if(Km)Zm.name+=n,mv(Zm.nameLoc,t);else{const r="["!==n[0];Zm.arg=gv(r?n:n.slice(1,-1),r,hv(e,t),r?3:0)}},ondirmodifier(e,t){const n=tv(e,t);if(Km)Zm.name+="."+n,mv(Zm.nameLoc,t);else if("slot"===Zm.name){const e=Zm.arg;e&&(e.content+="."+n,mv(e.loc,t))}else Zm.modifiers.push(n)},onattribdata(e,t){Gm+=tv(e,t),zm<0&&(zm=e),qm=t},onattribentity(e,t,n){Gm+=e,zm<0&&(zm=t),qm=n},onattribnameend(e){const t=Zm.loc.start.offset,n=tv(t,e);7===Zm.type&&(Zm.rawName=n),Hm.props.some((e=>(7===e.type?e.rawName:e.name)===n))&&yv(2,t)},onattribend(e,t){if(Hm&&Zm){if(mv(Zm.loc,t),0!==e)if(Gm.includes("&")&&(Gm=Fm.decodeEntities(Gm,!0)),6===Zm.type)"class"===Zm.name&&(Gm=pv(Gm).trim()),1!==e||Gm||yv(13,t),Zm.value={type:2,content:Gm,loc:1===e?hv(zm,qm):hv(zm-1,qm+1)},Jm.inSFCRoot&&"template"===Hm.tag&&"lang"===Zm.name&&Gm&&"html"!==Gm&&Jm.enterRCDATA(rm("</template"),0);else{let e=0;Zm.exp=gv(Gm,!1,hv(zm,qm),0,e),"for"===Zm.name&&(Zm.forParseResult=function(e){const t=e.loc,n=e.content,r=n.match(Vm);if(!r)return;const[,o,i]=r,s=(e,n,r=!1)=>{const o=t.start.offset+n;return gv(e,!1,hv(o,o+e.length),0,r?1:0)},a={source:s(i.trim(),n.indexOf(i,o.length)),value:void 0,key:void 0,index:void 0,finalized:!1};let l=o.trim().replace(ev,"").trim();const c=o.indexOf(l),u=l.match(Qm);if(u){l=l.replace(Qm,"").trim();const e=u[1].trim();let t;if(e&&(t=n.indexOf(e,c+l.length),a.key=s(e,t,!0)),u[2]){const r=u[2].trim();r&&(a.index=s(r,n.indexOf(r,a.key?t+e.length:c+l.length),!0))}}l&&(a.value=s(l,c,!0));return a}(Zm.exp));let t=-1;"bind"===Zm.name&&(t=Zm.modifiers.indexOf("sync"))>-1&&lm("COMPILER_V_BIND_SYNC",Fm,Zm.loc,Zm.rawName)&&(Zm.name="model",Zm.modifiers.splice(t,1))}7===Zm.type&&"pre"===Zm.name||Hm.props.push(Zm)}Gm="",zm=qm=-1},oncomment(e,t){Fm.comments&&fv({type:3,content:tv(e,t),loc:hv(e-4,t+3)})},onend(){const e=Um.length;if("production"!==At.env.NODE_ENV&&1!==Jm.state)switch(Jm.state){case 5:case 8:yv(5,e);break;case 3:case 4:yv(25,Jm.sectionStart);break;case 28:Jm.currentSequence===om.CdataEnd?yv(6,e):yv(7,e);break;case 6:case 7:case 9:case 11:case 12:case 13:case 14:case 15:case 16:case 17:case 18:case 19:case 20:case 21:yv(9,e)}for(let t=0;t<Xm.length;t++)ov(Xm[t],e-1),yv(24,Xm[t].loc.start.offset)},oncdata(e,t){0!==Xm[0].ns?rv(tv(e,t),e,t):yv(1,e-9)},onprocessinginstruction(e){0===(Xm[0]?Xm[0].ns:Fm.ns)&&yv(21,e-1)}}),Qm=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,ev=/^\(|\)$/g;function tv(e,t){return Um.slice(e,t)}function nv(e){Jm.inSFCRoot&&(Hm.innerLoc=hv(e+1,e+1)),fv(Hm);const{tag:t,ns:n}=Hm;0===n&&Fm.isPreTag(t)&&Wm++,Fm.isVoidTag(t)?ov(Hm,e):(Xm.unshift(Hm),1!==n&&2!==n||(Jm.inXML=!0)),Hm=null}function rv(e,t,n){{const t=Xm[0]&&Xm[0].tag;"script"!==t&&"style"!==t&&e.includes("&")&&(e=Fm.decodeEntities(e,!1))}const r=Xm[0]||jm,o=r.children[r.children.length-1];o&&2===o.type?(o.content+=e,mv(o.loc,n)):r.children.push({type:2,content:e,loc:hv(t,n)})}function ov(e,t,n=!1){mv(e.loc,n?iv(t,60):function(e,t){let n=e;for(;Um.charCodeAt(n)!==t&&n<Um.length-1;)n++;return n}(t,62)+1),Jm.inSFCRoot&&(e.children.length?e.innerLoc.end=so({},e.children[e.children.length-1].loc.end):e.innerLoc.end=so({},e.innerLoc.start),e.innerLoc.source=tv(e.innerLoc.start.offset,e.innerLoc.end.offset));const{tag:r,ns:o}=e;Km||("slot"===r?e.tagType=2:av(e)?e.tagType=3:function({tag:e,props:t}){if(Fm.isCustomElement(e))return!1;if("component"===e||(n=e.charCodeAt(0),n>64&&n<91)||mm(e)||Fm.isBuiltInComponent&&Fm.isBuiltInComponent(e)||Fm.isNativeTag&&!Fm.isNativeTag(e))return!0;var n;for(let e=0;e<t.length;e++){const n=t[e];if(6===n.type){if("is"===n.name&&n.value){if(n.value.content.startsWith("vue:"))return!0;
14if(lm("COMPILER_IS_ON_ELEMENT",Fm,n.loc))return!0}}else if("bind"===n.name&&Om(n.arg,"is")&&lm("COMPILER_IS_ON_ELEMENT",Fm,n.loc))return!0}return!1}(e)&&(e.tagType=1)),Jm.inRCDATA||(e.children=cv(e.children,e.tag)),0===o&&Fm.isPreTag(r)&&Wm--,Ym===e&&(Km=Jm.inVPre=!1,Ym=null),Jm.inXML&&0===(Xm[0]?Xm[0].ns:Fm.ns)&&(Jm.inXML=!1);{const t=e.props;if("production"!==At.env.NODE_ENV&&am("COMPILER_V_IF_V_FOR_PRECEDENCE",Fm)){let n=!1,r=!1;for(let o=0;o<t.length;o++){const i=t[o];if(7===i.type&&("if"===i.name?n=!0:"for"===i.name&&(r=!0)),n&&r){cm("COMPILER_V_IF_V_FOR_PRECEDENCE",Fm,e.loc);break}}}if(!Jm.inSFCRoot&&am("COMPILER_NATIVE_TEMPLATE",Fm)&&"template"===e.tag&&!av(e)){"production"!==At.env.NODE_ENV&&cm("COMPILER_NATIVE_TEMPLATE",Fm,e.loc);const t=Xm[0]||jm,n=t.children.indexOf(e);t.children.splice(n,1,...e.children)}const n=t.find((e=>6===e.type&&"inline-template"===e.name));n&&lm("COMPILER_INLINE_TEMPLATE",Fm,n.loc)&&e.children.length&&(n.value={type:2,content:tv(e.children[0].loc.start.offset,e.children[e.children.length-1].loc.end.offset),loc:n.loc})}}function iv(e,t){let n=e;for(;Um.charCodeAt(n)!==t&&n>=0;)n--;return n}const sv=new Set(["if","else","else-if","for","slot"]);function av({tag:e,props:t}){if("template"===e)for(let e=0;e<t.length;e++)if(7===t[e].type&&sv.has(t[e].name))return!0;return!1}const lv=/\r\n/g;function cv(e,t){const n="preserve"!==Fm.whitespace;let r=!1;for(let t=0;t<e.length;t++){const o=e[t];if(2===o.type)if(Wm)o.content=o.content.replace(lv,"\n");else if(uv(o.content)){const i=e[t-1]&&e[t-1].type,s=e[t+1]&&e[t+1].type;!i||!s||n&&(3===i&&(3===s||1===s)||1===i&&(3===s||1===s&&dv(o.content)))?(r=!0,e[t]=null):o.content=" "}else n&&(o.content=pv(o.content))}if(Wm&&t&&Fm.isPreTag(t)){const t=e[0];t&&2===t.type&&(t.content=t.content.replace(/^\r?\n/,""))}return r?e.filter(Boolean):e}function uv(e){for(let t=0;t<e.length;t++)if(!tm(e.charCodeAt(t)))return!1;return!0}function dv(e){for(let t=0;t<e.length;t++){const n=e.charCodeAt(t);if(10===n||13===n)return!0}return!1}function pv(e){let t="",n=!1;for(let r=0;r<e.length;r++)tm(e.charCodeAt(r))?n||(t+=" ",n=!0):(t+=e[r],n=!1);return t}function fv(e){(Xm[0]||jm).children.push(e)}function hv(e,t){return{start:Jm.getPos(e),end:null==t?t:Jm.getPos(t),source:null==t?t:tv(e,t)}}function mv(e,t){e.end=Jm.getPos(t),e.source=tv(e.start.offset,t)}function vv(e){const t={type:6,name:e.rawName,nameLoc:hv(e.loc.start.offset,e.loc.start.offset+e.rawName.length),value:void 0,loc:e.loc};if(e.exp){const n=e.exp.loc;n.end.offset<e.loc.end.offset&&(n.start.offset--,n.start.column--,n.end.offset++,n.end.column++),t.value={type:2,content:e.exp.content,loc:n}}return t}function gv(e,t=!1,n,r=0,o=0){return Zh(e,t,n,r)}function yv(e,t,n){Fm.onError(pm(e,hv(t,t),void 0,n))}function bv(e,t){if(Jm.reset(),Hm=null,Zm=null,Gm="",zm=-1,qm=-1,Xm.length=0,Um=e,Fm=so({},Bm),t){let e;for(e in t)null!=t[e]&&(Fm[e]=t[e])}if("production"!==At.env.NODE_ENV&&!Fm.decodeEntities)throw new Error("[@vue/compiler-core] decodeEntities option is required in browser builds.");Jm.mode="html"===Fm.parseMode?1:"sfc"===Fm.parseMode?2:0,Jm.inXML=1===Fm.ns||2===Fm.ns;const n=t&&t.delimiters;n&&(Jm.delimiterOpen=rm(n[0]),Jm.delimiterClose=rm(n[1]));const r=jm=function(e,t=""){return{type:0,source:t,children:e,helpers:new Set,components:[],directives:[],hoists:[],imports:[],cached:0,temps:0,codegenNode:void 0,loc:Bh}}([],e);return Jm.parse(Um),r.loc=hv(0,e.length),r.children=cv(r.children),jm=null,r}function Ev(e,t){Sv(e,t,_v(e,e.children[0]))}function _v(e,t){const{children:n}=e;return 1===n.length&&1===t.type&&!Dm(t)}function Sv(e,t,n=!1){const{children:r}=e,o=r.length;let i=0;for(let e=0;e<r.length;e++){const o=r[e];if(1===o.type&&0===o.tagType){const e=n?0:xv(o,t);if(e>0){if(e>=2){o.codegenNode.patchFlag=-1,o.codegenNode=t.hoist(o.codegenNode),i++;continue}}else{const e=o.codegenNode;if(13===e.type){const n=e.patchFlag;if((void 0===n||512===n||1===n)&&Av(o,t)>=2){const n=Cv(o);n&&(e.props=t.hoist(n))}e.dynamicProps&&(e.dynamicProps=t.hoist(e.dynamicProps))}}}if(1===o.type){const e=1===o.tagType;e&&t.scopes.vSlot++,Sv(o,t),e&&t.scopes.vSlot--}else if(11===o.type)Sv(o,t,1===o.children.length);else if(9===o.type)for(let e=0;e<o.branches.length;e++)Sv(o.branches[e],t,1===o.branches[e].children.length)}if(i&&t.transformHoist&&t.transformHoist(r,t,e),i&&i===o&&1===e.type&&0===e.tagType&&e.codegenNode&&13===e.codegenNode.type&&uo(e.codegenNode.children)){const n=t.hoist(jh(e.codegenNode.children));t.hmr&&(n.content=`[...${n.content}]`),e.codegenNode.children=n}}function xv(e,t){const{constantCache:n}=t;switch(e.type){case 1:if(0!==e.tagType)return 0;const r=n.get(e);if(void 0!==r)return r;const o=e.codegenNode;if(13!==o.type)return 0;if(o.isBlock&&"svg"!==e.tag&&"foreignObject"!==e.tag&&"math"!==e.tag)return 0;if(void 0===o.patchFlag){let r=3;const i=Av(e,t);if(0===i)return n.set(e,0),0;i<r&&(r=i);for(let o=0;o<e.children.length;o++){const i=xv(e.children[o],t);if(0===i)return n.set(e,0),0;i<r&&(r=i)}if(r>1)for(let o=0;o<e.props.length;o++){const i=e.props[o];if(7===i.type&&"bind"===i.name&&i.exp){const o=xv(i.exp,t);if(0===o)return n.set(e,0),0;o<r&&(r=o)}}if(o.isBlock){for(let t=0;t<e.props.length;t++){if(7===e.props[t].type)return n.set(e,0),0}t.removeHelper(oh),t.removeHelper(Yh(t.inSSR,o.isComponent)),o.isBlock=!1,t.helper(Kh(t.inSSR,o.isComponent))}return n.set(e,r),r}return n.set(e,0),0;case 2:case 3:return 3;case 9:case 11:case 10:return 0;case 5:case 12:return xv(e.content,t);case 4:return e.constType;case 8:let i=3;for(let n=0;n<e.children.length;n++){const r=e.children[n];if(vo(r)||go(r))continue;const o=xv(r,t);if(0===o)return 0;o<i&&(i=o)}return i;
14default:return At.env.NODE_ENV,0}}const wv=new Set([Sh,xh,wh,Nh]);function Nv(e,t){if(14===e.type&&!vo(e.callee)&&wv.has(e.callee)){const n=e.arguments[0];if(4===n.type)return xv(n,t);if(14===n.type)return Nv(n,t)}return 0}function Av(e,t){let n=3;const r=Cv(e);if(r&&15===r.type){const{properties:e}=r;for(let r=0;r<e.length;r++){const{key:o,value:i}=e[r],s=xv(o,t);if(0===s)return s;let a;if(s<n&&(n=s),a=4===i.type?xv(i,t):14===i.type?Nv(i,t):0,0===a)return a;a<n&&(n=a)}}return n}function Cv(e){const t=e.codegenNode;if(13===t.type)return t.props}function Ov(e,{filename:t="",prefixIdentifiers:n=!1,hoistStatic:r=!1,hmr:o=!1,cacheHandlers:i=!1,nodeTransforms:s=[],directiveTransforms:a={},transformHoist:l=null,isBuiltInComponent:c=no,isCustomElement:u=no,expressionPlugins:d=[],scopeId:p=null,slotted:f=!0,ssr:h=!1,inSSR:m=!1,ssrCssVars:v="",bindingMetadata:g=eo,inline:y=!1,isTS:b=!1,onError:E=um,onWarn:_=dm,compatConfig:S}){const x=t.replace(/\?.*$/,"").match(/([^/\\]+)\.\w+$/),w={filename:t,selfName:x&&Do(To(x[1])),prefixIdentifiers:n,hoistStatic:r,hmr:o,cacheHandlers:i,nodeTransforms:s,directiveTransforms:a,transformHoist:l,isBuiltInComponent:c,isCustomElement:u,expressionPlugins:d,scopeId:p,slotted:f,ssr:h,inSSR:m,ssrCssVars:v,bindingMetadata:g,inline:y,isTS:b,onError:E,onWarn:_,compatConfig:S,root:e,helpers:new Map,components:new Set,directives:new Set,hoists:[],imports:[],constantCache:new WeakMap,temps:0,cached:0,identifiers:Object.create(null),scopes:{vFor:0,vSlot:0,vPre:0,vOnce:0},parent:null,grandParent:null,currentNode:e,childIndex:0,inVOnce:!1,helper(e){const t=w.helpers.get(e)||0;return w.helpers.set(e,t+1),e},removeHelper(e){const t=w.helpers.get(e);if(t){const n=t-1;n?w.helpers.set(e,n):w.helpers.delete(e)}},helperString:e=>`_${Vh[w.helper(e)]}`,replaceNode(e){if("production"!==At.env.NODE_ENV){if(!w.currentNode)throw new Error("Node being replaced is already removed.");
14if(!w.parent)throw new Error("Cannot replace root node.")}w.parent.children[w.childIndex]=w.currentNode=e},removeNode(e){if("production"!==At.env.NODE_ENV&&!w.parent)throw new Error("Cannot remove root node.");const t=w.parent.children,n=e?t.indexOf(e):w.currentNode?w.childIndex:-1;if("production"!==At.env.NODE_ENV&&n<0)throw new Error("node being removed is not a child of current parent");e&&e!==w.currentNode?w.childIndex>n&&(w.childIndex--,w.onNodeRemoved()):(w.currentNode=null,w.onNodeRemoved()),w.parent.children.splice(n,1)},onNodeRemoved:no,addIdentifiers(e){},removeIdentifiers(e){},hoist(e){vo(e)&&(e=Zh(e)),w.hoists.push(e);const t=Zh(`_hoisted_${w.hoists.length}`,!1,e.loc,2);return t.hoisted=e,t},cache:(e,t=!1)=>function(e,t,n=!1){return{type:20,index:e,value:t,isVOnce:n,loc:Bh}}(w.cached++,e,t)};return w.filters=new Set,w}function Tv(e,t){const n=Ov(e,t);$v(e,n),t.hoistStatic&&Ev(e,n),t.ssr||function(e,t){const{helper:n}=t,{children:r}=e;if(1===r.length){const n=r[0];if(_v(e,n)&&n.codegenNode){const r=n.codegenNode;13===r.type&&Xh(r,t),e.codegenNode=r}else e.codegenNode=n}else if(r.length>1){let o=64,i=jo[64];"production"!==At.env.NODE_ENV&&1===r.filter((e=>3!==e.type)).length&&(o|=2048,i+=`, ${jo[2048]}`),e.codegenNode=Fh(t,n(Qf),void 0,e.children,o,void 0,void 0,!0,void 0,!1)}}(e,n),e.helpers=new Set([...n.helpers.keys()]),e.components=[...n.components],e.directives=[...n.directives],e.imports=n.imports,e.hoists=n.hoists,e.temps=n.temps,e.cached=n.cached,e.transformed=!0,e.filters=[...n.filters]}function $v(e,t){t.currentNode=e;const{nodeTransforms:n}=t,r=[];for(let o=0;o<n.length;o++){const i=n[o](e,t);if(i&&(uo(i)?r.push(...i):r.push(i)),!t.currentNode)return;e=t.currentNode}switch(e.type){case 3:t.ssr||t.helper(ch);break;case 5:t.ssr||t.helper(Eh);break;case 9:for(let n=0;n<e.branches.length;n++)$v(e.branches[n],t);break;case 10:case 11:case 1:case 0:!function(e,t){let n=0;const r=()=>{n--};for(;n<e.children.length;n++){const o=e.children[n];vo(o)||(t.grandParent=t.parent,t.parent=e,t.childIndex=n,t.onNodeRemoved=r,$v(o,t))}}(e,t)}t.currentNode=e;let o=r.length;for(;o--;)r[o]()}function Mv(e,t){const n=vo(e)?t=>t===e:t=>e.test(t);return(e,r)=>{if(1===e.type){const{props:o}=e;if(3===e.tagType&&o.some($m))return;const i=[];for(let s=0;s<o.length;s++){const a=o[s];if(7===a.type&&n(a.name)){o.splice(s,1),s--;const n=t(e,a,r);n&&i.push(n)}}return i}}}const Dv="/*#__PURE__*/",Iv=e=>`${Vh[e]}: _${Vh[e]}`;function Lv(e,t={}){const n=function(e,{mode:t="function",prefixIdentifiers:n="module"===t,sourceMap:r=!1,filename:o="template.vue.html",scopeId:i=null,optimizeImports:s=!1,runtimeGlobalName:a="Vue",runtimeModuleName:l="vue",ssrRuntimeModuleName:c="vue/server-renderer",ssr:u=!1,isTS:d=!1,inSSR:p=!1}){const f={mode:t,prefixIdentifiers:n,sourceMap:r,filename:o,scopeId:i,optimizeImports:s,runtimeGlobalName:a,runtimeModuleName:l,ssrRuntimeModuleName:c,ssr:u,isTS:d,inSSR:p,source:e.source,code:"",column:1,line:1,offset:0,indentLevel:0,pure:!1,map:void 0,helper:e=>`_${Vh[e]}`,push(e,t=-2,n){f.code+=e},indent(){h(++f.indentLevel)},deindent(e=!1){e?--f.indentLevel:h(--f.indentLevel)},newline(){h(f.indentLevel)}};function h(e){f.push("\n"+" ".repeat(e),0)}return f}(e,t);t.onContextCreated&&t.onContextCreated(n);const{mode:r,push:o,prefixIdentifiers:i,indent:s,deindent:a,newline:l,scopeId:c,ssr:u}=n,d=Array.from(e.helpers),p=d.length>0,f=!i&&"module"!==r;!function(e,t){const{ssr:n,prefixIdentifiers:r,push:o,newline:i,runtimeModuleName:s,runtimeGlobalName:a,ssrRuntimeModuleName:l}=t,c=a,u=Array.from(e.helpers);if(u.length>0&&(o(`const _Vue = ${c}\n`,-1),e.hoists.length)){o(`const { ${[ah,lh,ch,uh,dh].filter((e=>u.includes(e))).map(Iv).join(", ")} } = _Vue\n`,-1)}(function(e,t){if(!e.length)return;t.pure=!0;const{push:n,newline:r,helper:o,scopeId:i,mode:s}=t;r();for(let o=0;o<e.length;o++){const i=e[o];i&&(n(`const _hoisted_${o+1} = `),Vv(i,t),r())}t.pure=!1})(e.hoists,t),i(),o("return ")}(e,n);if(o(`function ${u?"ssrRender":"render"}(${(u?["_ctx","_push","_parent","_attrs"]:["_ctx","_cache"]).join(", ")}) {`),s(),f&&(o("with (_ctx) {"),s(),p&&(o(`const { ${d.map(Iv).join(", ")} } = _Vue\n`,-1),l())),e.components.length&&(kv(e.components,"component",n),(e.directives.length||e.temps>0)&&l()),e.directives.length&&(kv(e.directives,"directive",n),e.temps>0&&l()),e.filters&&e.filters.length&&(l(),kv(e.filters,"filter",n),l()),e.temps>0){o("let ");for(let t=0;t<e.temps;t++)o(`${t>0?", ":""}_temp${t}`)}return(e.components.length||e.directives.length||e.temps)&&(o("\n",0),l()),u||o("return "),e.codegenNode?Vv(e.codegenNode,n):o("null"),f&&(a(),o("}")),a(),o("}"),{ast:e,code:n.code,preamble:"",map:n.map?n.map.toJSON():void 0}}function kv(e,t,{helper:n,push:r,newline:o,isTS:i}){const s=n("filter"===t?mh:"component"===t?ph:hh);for(let n=0;n<e.length;n++){let a=e[n];const l=a.endsWith("__self");l&&(a=a.slice(0,-6)),r(`const ${Rm(a,t)} = ${s}(${JSON.stringify(a)}${l?", true":""})${i?"!":""}`),n<e.length-1&&o()}}function Pv(e,t){const n=e.length>3||!("production"===At.env.NODE_ENV)&&e.some((e=>uo(e)||!function(e){return vo(e)||4===e.type||2===e.type||5===e.type||8===e.type}(e)));t.push("["),n&&t.indent(),Rv(e,t,n),n&&t.deindent(),t.push("]")}function Rv(e,t,n=!1,r=!0){const{push:o,newline:i}=t;
14for(let s=0;s<e.length;s++){const a=e[s];vo(a)?o(a,-3):uo(a)?Pv(a,t):Vv(a,t),s<e.length-1&&(n?(r&&o(","),i()):r&&o(", "))}}function Vv(e,t){if(vo(e))t.push(e,-3);else if(go(e))t.push(t.helper(e));else switch(e.type){case 1:case 9:case 11:"production"!==At.env.NODE_ENV&&Nm(null!=e.codegenNode,"Codegen node is missing for element/if/for node. Apply appropriate transforms first."),Vv(e.codegenNode,t);break;case 2:!function(e,t){t.push(JSON.stringify(e.content),-3,e)}(e,t);break;case 4:Bv(e,t);break;case 5:!function(e,t){const{push:n,helper:r,pure:o}=t;o&&n(Dv);n(`${r(Eh)}(`),Vv(e.content,t),n(")")}(e,t);break;case 12:Vv(e.codegenNode,t);break;case 8:Fv(e,t);break;case 3:!function(e,t){const{push:n,helper:r,pure:o}=t;o&&n(Dv);n(`${r(ch)}(${JSON.stringify(e.content)})`,-3,e)}(e,t);break;case 13:!function(e,t){const{push:n,helper:r,pure:o}=t,{tag:i,props:s,children:a,patchFlag:l,dynamicProps:c,directives:u,isBlock:d,disableTracking:p,isComponent:f}=e;let h;if(l)if("production"!==At.env.NODE_ENV)if(l<0)h=l+` /* ${jo[l]} */`;else{const e=Object.keys(jo).map(Number).filter((e=>e>0&&l&e)).map((e=>jo[e])).join(", ");h=l+` /* ${e} */`}else h=String(l);u&&n(r(vh)+"(");d&&n(`(${r(oh)}(${p?"true":""}), `);o&&n(Dv);const m=d?Yh(t.inSSR,f):Kh(t.inSSR,f);n(r(m)+"(",-2,e),Rv(function(e){let t=e.length;for(;t--&&null==e[t];);return e.slice(0,t+1).map((e=>e||"null"))}([i,s,a,h,c]),t),n(")"),d&&n(")");u&&(n(", "),Vv(u,t),n(")"))}(e,t);break;case 14:!function(e,t){const{push:n,helper:r,pure:o}=t,i=vo(e.callee)?e.callee:r(e.callee);o&&n(Dv);n(i+"(",-2,e),Rv(e.arguments,t),n(")")}(e,t);break;case 15:!function(e,t){const{push:n,indent:r,deindent:o,newline:i}=t,{properties:s}=e;if(!s.length)return void n("{}",-2,e);const a=s.length>1||!("production"===At.env.NODE_ENV)&&s.some((e=>4!==e.value.type));n(a?"{":"{ "),a&&r();for(let e=0;e<s.length;e++){const{key:r,value:o}=s[e];jv(r,t),n(": "),Vv(o,t),e<s.length-1&&(n(","),i())}a&&o(),n(a?"}":" }")}(e,t);break;case 17:!function(e,t){Pv(e.elements,t)}(e,t);break;case 18:!function(e,t){const{push:n,indent:r,deindent:o}=t,{params:i,returns:s,body:a,newline:l,isSlot:c}=e;c&&n(`_${Vh[Ih]}(`);n("(",-2,e),uo(i)?Rv(i,t):i&&Vv(i,t);n(") => "),(l||a)&&(n("{"),r());s?(l&&n("return "),uo(s)?Pv(s,t):Vv(s,t)):a&&Vv(a,t);(l||a)&&(o(),n("}"));c&&(e.isNonScopedSlot&&n(", undefined, true"),n(")"))}(e,t);break;case 19:!function(e,t){const{test:n,consequent:r,alternate:o,newline:i}=e,{push:s,indent:a,deindent:l,newline:c}=t;if(4===n.type){const e=!gm(n.content);e&&s("("),Bv(n,t),e&&s(")")}else s("("),Vv(n,t),s(")");i&&a(),t.indentLevel++,i||s(" "),s("? "),Vv(r,t),t.indentLevel--,i&&c(),i||s(" "),s(": ");const u=19===o.type;u||t.indentLevel++;Vv(o,t),u||t.indentLevel--;i&&l(!0)}(e,t);break;case 20:!function(e,t){const{push:n,helper:r,indent:o,deindent:i,newline:s}=t;n(`_cache[${e.index}] || (`),e.isVOnce&&(o(),n(`${r($h)}(-1),`),s(),n("("));n(`_cache[${e.index}] = `),Vv(e.value,t),e.isVOnce&&(n(`).cacheIndex = ${e.index},`),s(),n(`${r($h)}(1),`),s(),n(`_cache[${e.index}]`),i());n(")")}(e,t);break;case 21:Rv(e.body,t,!0,!1);break;case 22:case 23:case 24:case 25:case 26:case 10:break;default:if("production"!==At.env.NODE_ENV){Nm(!1,`unhandled codegen node type: ${e.type}`);return e}}}function Bv(e,t){const{content:n,isStatic:r}=e;t.push(r?JSON.stringify(n):n,-3,e)}function Fv(e,t){for(let n=0;n<e.children.length;n++){const r=e.children[n];vo(r)?t.push(r,-3):Vv(r,t)}}function jv(e,t){const{push:n}=t;if(8===e.type)n("["),Fv(e,t),n("]");else if(e.isStatic){n(gm(e.content)?e.content:JSON.stringify(e.content),-2,e)}else n(`[${e.content}]`,-3,e)}const Uv=new RegExp("\\b"+"arguments,await,break,case,catch,class,const,continue,debugger,default,delete,do,else,export,extends,finally,for,function,if,import,let,new,return,super,switch,throw,try,var,void,while,with,yield".split(",").join("\\b|\\b")+"\\b"),Hv=/'(?:[^'\\]|\\.)*'|"(?:[^"\\]|\\.)*"|`(?:[^`\\]|\\.)*\$\{|\}(?:[^`\\]|\\.)*`|`(?:[^`\\]|\\.)*`/g;function Zv(e,t,n=!1,r=!1){const o=e.content;if(o.trim())try{new Function(r?` ${o} `:"return "+(n?`(${o}) => {}`:`(${o})`))}catch(n){let r=n.message;const i=o.replace(Hv,"").match(Uv);i&&(r=`avoid using JavaScript keyword as property name: "${i[0]}"`),t.onError(pm(45,e.loc,void 0,r))}}const Gv=(e,t)=>
14{if(5===e.type)e.content=zv(e.content,t);else if(1===e.type)for(let n=0;n<e.props.length;n++){const r=e.props[n];if(7===r.type&&"for"!==r.name){const e=r.exp,n=r.arg;!e||4!==e.type||"on"===r.name&&n||(r.exp=zv(e,t,"slot"===r.name)),n&&4===n.type&&!n.isStatic&&(r.arg=zv(n,t))}}};function zv(e,t,n=!1,r=!1,o=Object.create(t.identifiers)){return"production"!==At.env.NODE_ENV&&Zv(e,t,n,r),e}const qv=Mv(/^(if|else|else-if)$/,((e,t,n)=>function(e,t,n,r){if(!("else"===t.name||t.exp&&t.exp.content.trim())){const r=t.exp?t.exp.loc:e.loc;n.onError(pm(28,t.loc)),t.exp=Zh("true",!1,r)}"production"!==At.env.NODE_ENV&&t.exp&&Zv(t.exp,n);if("if"===t.name){const o=Wv(e,t),i={type:9,loc:e.loc,branches:[o]};if(n.replaceNode(i),r)return r(i,o,!0)}else{const o=n.parent.children,i=[];let s=o.indexOf(e);for(;s-- >=-1;){const a=o[s];if(a&&3===a.type)n.removeNode(a),"production"!==At.env.NODE_ENV&&i.unshift(a);else{if(!a||2!==a.type||a.content.trim().length){if(a&&9===a.type){"else-if"===t.name&&void 0===a.branches[a.branches.length-1].condition&&n.onError(pm(30,e.loc)),n.removeNode();const o=Wv(e,t);if("production"!==At.env.NODE_ENV&&i.length&&(!n.parent||1!==n.parent.type||"transition"!==n.parent.tag&&"Transition"!==n.parent.tag)&&(o.children=[...i,...o.children]),"production"!==At.env.NODE_ENV){const e=o.userKey;e&&a.branches.forEach((({userKey:t})=>{Xv(t,e)&&n.onError(pm(29,o.userKey.loc))}))}a.branches.push(o);const s=r&&r(a,o,!1);$v(o,n),s&&s(),n.currentNode=null}else n.onError(pm(30,e.loc));break}n.removeNode(a)}}}}(e,t,n,((e,t,r)=>{const o=n.parent.children;let i=o.indexOf(e),s=0;for(;i-- >=0;){const e=o[i];e&&9===e.type&&(s+=e.branches.length)}return()=>{if(r)e.codegenNode=Kv(t,s,n);else{const r=function(e){for(;;)if(19===e.type){if(19!==e.alternate.type)return e;e=e.alternate}else 20===e.type&&(e=e.value)}(e.codegenNode);r.alternate=Kv(t,s+e.branches.length-1,n)}}}))));function Wv(e,t){const n=3===e.tagType;return{type:10,loc:e.loc,condition:"else"===t.name?void 0:t.exp,children:n&&!Am(e,"for")?e.children:[e],userKey:Cm(e,"key"),isTemplateIf:n}}function Kv(e,t,n){return e.condition?Wh(e.condition,Yv(e,t,n),zh(n.helper(ch),["production"!==At.env.NODE_ENV?'"v-if"':'""',"true"])):Yv(e,t,n)}function Yv(e,t,n){const{helper:r}=n,o=Hh("key",Zh(`${t}`,!1,Bh,2)),{children:i}=e,s=i[0];if(1!==i.length||1!==s.type){if(1===i.length&&11===s.type){const e=s.codegenNode;return km(e,o,n),e}{let t=64,s=jo[64];return"production"===At.env.NODE_ENV||e.isTemplateIf||1!==i.filter((e=>3!==e.type)).length||(t|=2048,s+=`, ${jo[2048]}`),Fh(n,r(Qf),Uh([o]),i,t,void 0,void 0,!0,!1,!1,e.loc)}}{const e=s.codegenNode,t=14===(a=e).type&&a.callee===Ph?a.arguments[1].returns:a;return 13===t.type&&Xh(t,n),km(t,o,n),e}var a}function Xv(e,t){if(!e||e.type!==t.type)return!1;if(6===e.type){if(e.value.content!==t.value.content)return!1}else{const n=e.exp,r=t.exp;if(n.type!==r.type)return!1;if(4!==n.type||n.isStatic!==r.isStatic||n.content!==r.content)return!1}return!0}const Jv=(e,t,n)=>{const{modifiers:r,loc:o}=e,i=e.arg;let{exp:s}=e;if(s&&4===s.type&&!s.content.trim()&&(s=void 0),!s){if(4!==i.type||!i.isStatic)return n.onError(pm(52,i.loc)),{props:[Hh(i,Zh("",!0,o))]};Qv(e),s=e.exp}return 4!==i.type?(i.children.unshift("("),i.children.push(') || ""')):i.isStatic||(i.content=`${i.content} || ""`),r.includes("camel")&&(4===i.type?i.isStatic?i.content=To(i.content):i.content=`${n.helperString(Ch)}(${i.content})`:(i.children.unshift(`${n.helperString(Ch)}(`),i.children.push(")"))),n.inSSR||(r.includes("prop")&&eg(i,"."),r.includes("attr")&&eg(i,"^")),{props:[Hh(i,s)]}},Qv=(e,t)=>{const n=e.arg,r=To(n.content);e.exp=Zh(r,!1,n.loc)},eg=(e,t)=>{4===e.type?e.isStatic?e.content=t+e.content:e.content=`\`${t}\${${e.content}}\``:(e.children.unshift(`'${t}' + (`),e.children.push(")"))},tg=Mv("for",((e,t,n)=>{const{helper:r,removeHelper:o}=n;return function(e,t,n,r){if(!t.exp)return void n.onError(pm(31,t.loc));const o=t.forParseResult;if(!o)return void n.onError(pm(32,t.loc));ng(o,n);const{addIdentifiers:i,removeIdentifiers:s,scopes:a}=n,{source:l,value:c,key:u,index:d}=o,p={type:11,loc:t.loc,source:l,valueAlias:c,keyAlias:u,objectIndexAlias:d,parseResult:o,children:Mm(e)?e.children:[e]};n.replaceNode(p),a.vFor++;const f=r&&r(p);return()=>{a.vFor--,f&&f()}}(e,t,n,(t=>{const i=zh(r(gh),[t.source]),s=Mm(e),a=Am(e,"memo"),l=Cm(e,"key",!1,!0);l&&7===l.type&&!l.exp&&Qv(l);const c=l&&(6===l.type?l.value?Zh(l.value.content,!0):void 0:l.exp),u=l&&c?Hh("key",c):null,d=4===t.source.type&&t.source.constType>0,p=d?64:l?128:256;return t.codegenNode=Fh(n,r(Qf),void 0,i,p,void 0,void 0,!0,!d,!1,e.loc),()=>{let l;const{children:p}=t;"production"!==At.env.NODE_ENV&&s&&e.children.some((e=>{if(1===e.type){const t=Cm(e,"key");if(t)return n.onError(pm(33,t.loc)),!0}}));const f=1!==p.length||1!==p[0].type,h=Dm(e)?e:s&&1===e.children.length&&Dm(e.children[0])?e.children[0]:null;if(h?(l=h.codegenNode,s&&u&&km(l,u,n)):f?l=Fh(n,r(Qf),u?Uh([u]):void 0,e.children,64,void 0,void 0,!0,void 0,!1):(l=p[0].codegenNode,s&&u&&km(l,u,n),l.isBlock!==!d&&(l.isBlock?(o(oh),o(Yh(n.inSSR,l.isComponent))):o(Kh(n.inSSR,l.isComponent))),l.isBlock=!d,l.isBlock?(r(oh),r(Yh(n.inSSR,l.isComponent))):r(Kh(n.inSSR,l.isComponent))),a){const e=qh(rg(t.parseResult,[Zh("_cached")]));e.body={type:21,body:[Gh(["const _memo = (",a.exp,")"]),Gh(["if (_cached",...c?[" && _cached.key === ",c]:[],` && ${n.helperString(Rh)}(_cached, _memo)) return _cached`]),Gh(["const _item = ",l]),Zh("_item.memo = _memo"),Zh("return _item")],loc:Bh},i.arguments.push(e,Zh("_cache"),Zh(String(n.cached++)))}else i.arguments.push(qh(rg(t.parseResult),l,!0))}}))}));function ng(e,t){e.finalized||("production"!==At.env.NODE_ENV&&(Zv(e.source,t),e.key&&Zv(e.key,t,!0),e.index&&Zv(e.index,t,!0),e.value&&Zv(e.value,t,!0)),e.finalized=!0)}function rg({value:e,key:t,index:n},r=[]){return function(e){let t=e.length;for(;t--&&!e[t];);return e.slice(0,t+1).map(((e,t)=>e||Zh("_".repeat(t+1),!1)))}([e,t,n,...r])}const og=Zh("undefined",!1),ig=(e,t)=>
14{if(1===e.type&&(1===e.tagType||3===e.tagType)){const n=Am(e,"slot");if(n)return n.exp,t.scopes.vSlot++,()=>{t.scopes.vSlot--}}},sg=(e,t,n,r)=>qh(e,n,!1,!0,n.length?n[0].loc:r);function ag(e,t,n=sg){t.helper(Ih);const{children:r,loc:o}=e,i=[],s=[];let a=t.scopes.vSlot>0||t.scopes.vFor>0;const l=Am(e,"slot",!0);if(l){const{arg:e,exp:t}=l;e&&!hm(e)&&(a=!0),i.push(Hh(e||Zh("default",!0),n(t,void 0,r,o)))}let c=!1,u=!1;const d=[],p=new Set;let f=0;for(let e=0;e<r.length;e++){const o=r[e];let h;if(!Mm(o)||!(h=Am(o,"slot",!0))){3!==o.type&&d.push(o);continue}if(l){t.onError(pm(37,h.loc));break}c=!0;const{children:m,loc:v}=o,{arg:g=Zh("default",!0),exp:y,loc:b}=h;let E;hm(g)?E=g?g.content:"default":a=!0;const _=Am(o,"for"),S=n(y,_,m,v);let x,w;if(x=Am(o,"if"))a=!0,s.push(Wh(x.exp,lg(g,S,f++),og));else if(w=Am(o,/^else(-if)?$/,!0)){let n,o=e;for(;o--&&(n=r[o],3===n.type););if(n&&Mm(n)&&Am(n,/^(else-)?if$/)){let e=s[s.length-1];for(;19===e.alternate.type;)e=e.alternate;e.alternate=w.exp?Wh(w.exp,lg(g,S,f++),og):lg(g,S,f++)}else t.onError(pm(30,w.loc))}else if(_){a=!0;const e=_.forParseResult;e?(ng(e,t),s.push(zh(t.helper(gh),[e.source,qh(rg(e),lg(g,S),!0)]))):t.onError(pm(32,_.loc))}else{if(E){if(p.has(E)){t.onError(pm(38,b));continue}p.add(E),"default"===E&&(u=!0)}i.push(Hh(g,S))}}if(!l){const e=(e,r)=>{const i=n(e,void 0,r,o);return t.compatConfig&&(i.isNonScopedSlot=!0),Hh("default",i)};c?d.length&&d.some((e=>ug(e)))&&(u?t.onError(pm(39,d[0].loc)):i.push(e(void 0,d))):i.push(e(void 0,r))}const h=a?2:cg(e.children)?3:1;let m=Uh(i.concat(Hh("_",Zh(h+("production"!==At.env.NODE_ENV?` /* ${Uo[h]} */`:""),!1))),o);return s.length&&(m=zh(t.helper(bh),[m,jh(s)])),{slots:m,hasDynamicSlots:a}}function lg(e,t,n){const r=[Hh("name",e),Hh("fn",t)];return null!=n&&r.push(Hh("key",Zh(String(n),!0))),Uh(r)}function cg(e){for(let t=0;t<e.length;t++){const n=e[t];switch(n.type){case 1:if(2===n.tagType||cg(n.children))return!0;break;case 9:if(cg(n.branches))return!0;break;case 10:case 11:if(cg(n.children))return!0}}return!1}function ug(e){return 2!==e.type&&12!==e.type||(2===e.type?!!e.content.trim():ug(e.content))}const dg=new WeakMap,pg=(e,t)=>function(){if(1!==(e=t.currentNode).type||0!==e.tagType&&1!==e.tagType)return;const{tag:n,props:r}=e,o=1===e.tagType;let i=o?function(e,t,n=!1){let{tag:r}=e;const o=vg(r),i=Cm(e,"is",!1,!0);if(i)if(o||am("COMPILER_IS_ON_ELEMENT",t)){let e;if(6===i.type?e=i.value&&Zh(i.value.content,!0):(e=i.exp,e||(e=Zh("is",!1,i.arg.loc))),e)return zh(t.helper(fh),[e])}else 6===i.type&&i.value.content.startsWith("vue:")&&(r=i.value.content.slice(4));const s=mm(r)||t.isBuiltInComponent(r);if(s)return n||t.helper(s),s;return t.helper(ph),t.components.add(r),Rm(r,"component")}(e,t):`"${n}"`;const s=yo(i)&&i.callee===fh;let a,l,c,u,d,p=0,f=s||i===eh||i===th||!o&&("svg"===n||"foreignObject"===n||"math"===n);if(r.length>0){const n=fg(e,t,void 0,o,s);a=n.props,p=n.patchFlag,u=n.dynamicPropNames;const r=n.directives;d=r&&r.length?jh(r.map((e=>function(e,t){const n=[],r=dg.get(e);r?n.push(t.helperString(r)):(t.helper(hh),t.directives.add(e.name),n.push(Rm(e.name,"directive")));const{loc:o}=e;e.exp&&n.push(e.exp);e.arg&&(e.exp||n.push("void 0"),n.push(e.arg));if(Object.keys(e.modifiers).length){e.arg||(e.exp||n.push("void 0"),n.push("void 0"));const t=Zh("true",!1,o);n.push(Uh(e.modifiers.map((e=>Hh(e,t))),o))}return jh(n,e.loc)}(e,t)))):void 0,n.shouldUseBlock&&(f=!0)}if(e.children.length>0){i===nh&&(f=!0,p|=1024,"production"!==At.env.NODE_ENV&&e.children.length>1&&t.onError(pm(46,{start:e.children[0].loc.start,end:e.children[e.children.length-1].loc.end,source:""})));if(o&&i!==eh&&i!==nh){const{slots:n,hasDynamicSlots:r}=ag(e,t);l=n,r&&(p|=1024)}else if(1===e.children.length&&i!==eh){const n=e.children[0],r=n.type,o=5===r||8===r;o&&0===xv(n,t)&&(p|=1),l=o||2===r?n:e.children}else l=e.children}u&&u.length&&(c=function(e){let t="[";for(let n=0,r=e.length;n<r;n++)t+=JSON.stringify(e[n]),n<r-1&&(t+=", ");return t+"]"}(u)),e.codegenNode=Fh(t,i,a,l,0===p?void 0:p,c,d,!!f,!1,o,e.loc)};function fg(e,t,n=e.props,r,o,i=!1){const{tag:s,loc:a,children:l}=e;let c=[];const u=[],d=[],p=l.length>0;let f=!1,h=0,m=!1,v=!1,g=!1,y=!1,b=!1,E=!1;const _=[],S=e=>
14{c.length&&(u.push(Uh(hg(c),a)),c=[]),e&&u.push(e)},x=()=>{t.scopes.vFor>0&&c.push(Hh(Zh("ref_for",!0),Zh("true")))},w=({key:e,value:n})=>{if(hm(e)){const i=e.content,s=oo(i);if(!s||r&&!o||"onclick"===i.toLowerCase()||"onUpdate:modelValue"===i||No(i)||(y=!0),s&&No(i)&&(E=!0),s&&14===n.type&&(n=n.arguments[0]),20===n.type||(4===n.type||8===n.type)&&xv(n,t)>0)return;"ref"===i?m=!0:"class"===i?v=!0:"style"===i?g=!0:"key"===i||_.includes(i)||_.push(i),!r||"class"!==i&&"style"!==i||_.includes(i)||_.push(i)}else b=!0};for(let o=0;o<n.length;o++){const l=n[o];if(6===l.type){const{loc:e,name:n,nameLoc:r,value:o}=l;let i=!0;if("ref"===n&&(m=!0,x()),"is"===n&&(vg(s)||o&&o.content.startsWith("vue:")||am("COMPILER_IS_ON_ELEMENT",t)))continue;c.push(Hh(Zh(n,!0,r),Zh(o?o.content:"",i,o?o.loc:e)))}else{const{name:n,arg:o,exp:m,loc:v,modifiers:g}=l,y="bind"===n,E="on"===n;if("slot"===n){r||t.onError(pm(40,v));continue}if("once"===n||"memo"===n)continue;if("is"===n||y&&Om(o,"is")&&(vg(s)||am("COMPILER_IS_ON_ELEMENT",t)))continue;if(E&&i)continue;if((y&&Om(o,"key")||E&&p&&Om(o,"vue:before-update"))&&(f=!0),y&&Om(o,"ref")&&x(),!o&&(y||E)){if(b=!0,m)if(y){if(x(),S(),"production"!==At.env.NODE_ENV){u.some((e=>15!==e.type||e.properties.some((({key:e})=>4!==e.type||!e.isStatic||"class"!==e.content&&"style"!==e.content&&!oo(e.content)))))&&lm("COMPILER_V_BIND_OBJECT_ORDER",t,v)}if(am("COMPILER_V_BIND_OBJECT_ORDER",t)){u.unshift(m);continue}u.push(m)}else S({type:14,loc:v,callee:t.helper(Ah),arguments:r?[m]:[m,"true"]});else t.onError(pm(y?34:35,v));continue}y&&g.includes("prop")&&(h|=32);const _=t.directiveTransforms[n];if(_){const{props:n,needRuntime:r}=_(l,e,t);!i&&n.forEach(w),E&&o&&!hm(o)?S(Uh(n,a)):c.push(...n),r&&(d.push(l),go(r)&&dg.set(l,r))}else Ao(n)||(d.push(l),p&&(f=!0))}}let N;if(u.length?(S(),N=u.length>1?zh(t.helper(_h),u,a):u[0]):c.length&&(N=Uh(hg(c),a)),b?h|=16:(v&&!r&&(h|=2),g&&!r&&(h|=4),_.length&&(h|=8),y&&(h|=32)),f||0!==h&&32!==h||!(m||E||d.length>0)||(h|=512),!t.inSSR&&N)switch(N.type){case 15:let e=-1,n=-1,r=!1;for(let t=0;t<N.properties.length;t++){const o=N.properties[t].key;hm(o)?"class"===o.content?e=t:"style"===o.content&&(n=t):o.isHandlerKey||(r=!0)}const o=N.properties[e],i=N.properties[n];r?N=zh(t.helper(wh),[N]):(o&&!hm(o.value)&&(o.value=zh(t.helper(Sh),[o.value])),i&&(g||4===i.value.type&&"["===i.value.content.trim()[0]||17===i.value.type)&&(i.value=zh(t.helper(xh),[i.value])));break;case 14:break;default:N=zh(t.helper(wh),[zh(t.helper(Nh),[N])])}return{props:N,directives:d,patchFlag:h,dynamicPropNames:_,shouldUseBlock:f}}function hg(e){const t=new Map,n=[];for(let r=0;r<e.length;r++){const o=e[r];if(8===o.key.type||!o.key.isStatic){n.push(o);continue}const i=o.key.content,s=t.get(i);s?("style"===i||"class"===i||oo(i))&&mg(s,o):(t.set(i,o),n.push(o))}return n}function mg(e,t){17===e.value.type?e.value.elements.push(t.value):e.value=jh([e.value,t.value],e.loc)}function vg(e){return"component"===e||"Component"===e}const gg=(e,t)=>{if(Dm(e)){const{children:n,loc:r}=e,{slotName:o,slotProps:i}=function(e,t){let n,r='"default"';const o=[];for(let t=0;t<e.props.length;t++){const n=e.props[t];if(6===n.type)n.value&&("name"===n.name?r=JSON.stringify(n.value.content):(n.name=To(n.name),o.push(n)));else if("bind"===n.name&&Om(n.arg,"name")){if(n.exp)r=n.exp;else if(n.arg&&4===n.arg.type){const e=To(n.arg.content);r=n.exp=Zh(e,!1,n.arg.loc)}}else"bind"===n.name&&n.arg&&hm(n.arg)&&(n.arg.content=To(n.arg.content)),o.push(n)}if(o.length>0){const{props:r,directives:i}=fg(e,t,o,!1,!1);n=r,i.length&&t.onError(pm(36,i[0].loc))}return{slotName:r,slotProps:n}}(e,t),s=[t.prefixIdentifiers?"_ctx.$slots":"$slots",o,"{}","undefined","true"];let a=2;i&&(s[2]=i,a=3),n.length&&(s[3]=qh([],n,!1,!1,r),a=4),t.scopeId&&!t.slotted&&(a=5),s.splice(a),e.codegenNode=zh(t.helper(yh),s,r)}};const yg=(e,t,n,r)=>{const{loc:o,modifiers:i,arg:s}=e;let a;if(e.exp||i.length||n.onError(pm(35,o)),4===s.type)if(s.isStatic){let e=s.content;"production"!==At.env.NODE_ENV&&e.startsWith("vnode")&&n.onError(pm(51,s.loc)),e.startsWith("vue:")&&(e=`vnode-${e.slice(4)}`);a=Zh(0!==t.tagType||e.startsWith("vnode")||!/[A-Z]/.test(e)?Io(To(e)):`on:${e}`,!0,s.loc)}else a=Gh([`${n.helperString(Th)}(`,s,")"]);else a=s,a.children.unshift(`${n.helperString(Th)}(`),a.children.push(")");let l=e.exp;l&&!l.content.trim()&&(l=void 0);let c=n.cacheHandlers&&!l&&!n.inVOnce;if(l){const e=Sm(l),t=!(e||wm(l)),r=l.content.includes(";");"production"!==At.env.NODE_ENV&&Zv(l,n,!1,r),(t||c&&e)&&(l=Gh([`${t?"$event":"(...args)"} => ${r?"{":"("}`,l,r?"}":")"]))}let u={props:[Hh(a,l||Zh("() => {}",!1,o))]};return r&&(u=r(u)),c&&(u.props[0].value=n.cache(u.props[0].value)),u.props.forEach((e=>e.key.isHandlerKey=!0)),u},bg=(e,t)=>{if(0===e.type||1===e.type||11===e.type||10===e.type)return()=>{const n=e.children;let r,o=!1;for(let e=0;e<n.length;e++){const t=n[e];if(Tm(t)){o=!0;for(let o=e+1;o<n.length;o++){const i=n[o];if(!Tm(i)){r=void 0;break}r||(r=n[e]=Gh([t],t.loc)),r.children.push(" + ",i),n.splice(o,1),o--}}}if(o&&(1!==n.length||0!==e.type&&(1!==e.type||0!==e.tagType||e.props.find((e=>7===e.type&&!t.directiveTransforms[e.name]))||"template"===e.tag)))for(let e=0;e<n.length;e++){const r=n[e];if(Tm(r)||8===r.type){const o=[];2===r.type&&" "===r.content||o.push(r),t.ssr||0!==xv(r,t)||o.push(1+("production"!==At.env.NODE_ENV?` /* ${jo[1]} */`:"")),n[e]={type:12,content:r,loc:r.loc,codegenNode:zh(t.helper(uh),o)}}}}},Eg=new WeakSet,_g=(e,t)=>{if(1===e.type&&Am(e,"once",!0)){if(Eg.has(e)||t.inVOnce||t.inSSR)return;return Eg.add(e),t.inVOnce=!0,t.helper($h),()=>{t.inVOnce=!1;const e=t.currentNode;e.codegenNode&&(e.codegenNode=t.cache(e.codegenNode,!0))}}}
14,Sg=(e,t,n)=>{const{exp:r,arg:o}=e;if(!r)return n.onError(pm(41,e.loc)),xg();const i=r.loc.source,s=4===r.type?r.content:i,a=n.bindingMetadata[i];if("props"===a||"props-aliased"===a)return n.onError(pm(44,r.loc)),xg();if(!s.trim()||!Sm(r))return n.onError(pm(42,r.loc)),xg();const l=o||Zh("modelValue",!0),c=o?hm(o)?`onUpdate:${To(o.content)}`:Gh(['"onUpdate:" + ',o]):"onUpdate:modelValue";let u;u=Gh([`${n.isTS?"($event: any)":"$event"} => ((`,r,") = $event)"]);const d=[Hh(l,e.exp),Hh(c,u)];if(e.modifiers.length&&1===t.tagType){const t=e.modifiers.map((e=>(gm(e)?e:JSON.stringify(e))+": true")).join(", "),n=o?hm(o)?`${o.content}Modifiers`:Gh([o,' + "Modifiers"']):"modelModifiers";d.push(Hh(n,Zh(`{ ${t} }`,!1,e.loc,2)))}return xg(d)};function xg(e=[]){return{props:e}}const wg=/[\w).+\-_$\]]/,Ng=(e,t)=>{am("COMPILER_FILTERS",t)&&(5===e.type?Ag(e.content,t):1===e.type&&e.props.forEach((e=>{7===e.type&&"for"!==e.name&&e.exp&&Ag(e.exp,t)})))};function Ag(e,t){if(4===e.type)Cg(e,t);else for(let n=0;n<e.children.length;n++){const r=e.children[n];"object"==typeof r&&(4===r.type?Cg(r,t):8===r.type?Ag(e,t):5===r.type&&Ag(r.content,t))}}function Cg(e,t){const n=e.content;let r,o,i,s,a=!1,l=!1,c=!1,u=!1,d=0,p=0,f=0,h=0,m=[];for(i=0;i<n.length;i++)if(o=r,r=n.charCodeAt(i),a)39===r&&92!==o&&(a=!1);else if(l)34===r&&92!==o&&(l=!1);else if(c)96===r&&92!==o&&(c=!1);else if(u)47===r&&92!==o&&(u=!1);else if(124!==r||124===n.charCodeAt(i+1)||124===n.charCodeAt(i-1)||d||p||f){switch(r){case 34:l=!0;break;case 39:a=!0;break;case 96:c=!0;break;case 40:f++;break;case 41:f--;break;case 91:p++;break;case 93:p--;break;case 123:d++;break;case 125:d--}if(47===r){let e,t=i-1;for(;t>=0&&(e=n.charAt(t)," "===e);t--);e&&wg.test(e)||(u=!0)}}else void 0===s?(h=i+1,s=n.slice(0,i).trim()):v();function v(){m.push(n.slice(h,i).trim()),h=i+1}if(void 0===s?s=n.slice(0,i).trim():0!==h&&v(),m.length){for("production"!==At.env.NODE_ENV&&cm("COMPILER_FILTERS",t,e.loc),i=0;i<m.length;i++)s=Og(s,m[i],t);e.content=s,e.ast=void 0}}function Og(e,t,n){n.helper(mh);const r=t.indexOf("(");if(r<0)return n.filters.add(t),`${Rm(t,"filter")}(${e})`;{const o=t.slice(0,r),i=t.slice(r+1);return n.filters.add(o),`${Rm(o,"filter")}(${e}${")"!==i?","+i:i}`}}const Tg=new WeakSet,$g=(e,t)=>{if(1===e.type){const n=Am(e,"memo");if(!n||Tg.has(e))return;return Tg.add(e),()=>{const r=e.codegenNode||t.currentNode.codegenNode;r&&13===r.type&&(1!==e.tagType&&Xh(r,t),e.codegenNode=zh(t.helper(Ph),[n.exp,qh(void 0,r),"_cache",String(t.cached++)]))}}};function Mg(e,t={}){const n=t.onError||um,r="module"===t.mode;!0===t.prefixIdentifiers?n(pm(47)):r&&n(pm(48));t.cacheHandlers&&n(pm(49)),t.scopeId&&!r&&n(pm(50));const o=so({},t,{prefixIdentifiers:!1}),i=vo(e)?bv(e,o):e,[s,a]=[[_g,qv,$g,tg,Ng,..."production"!==At.env.NODE_ENV?[Gv]:[],gg,pg,ig,bg],{on:yg,bind:Jv,model:Sg}];return Tv(i,so({},o,{nodeTransforms:[...s,...t.nodeTransforms||[]],directiveTransforms:so({},a,t.directiveTransforms||{})})),Lv(i,o)}const Dg=Symbol("production"!==At.env.NODE_ENV?"vModelRadio":""),Ig=Symbol("production"!==At.env.NODE_ENV?"vModelCheckbox":""),Lg=Symbol("production"!==At.env.NODE_ENV?"vModelText":""),kg=Symbol("production"!==At.env.NODE_ENV?"vModelSelect":""),Pg=Symbol("production"!==At.env.NODE_ENV?"vModelDynamic":""),Rg=Symbol("production"!==At.env.NODE_ENV?"vOnModifiersGuard":""),Vg=Symbol("production"!==At.env.NODE_ENV?"vOnKeysGuard":""),Bg=Symbol("production"!==At.env.NODE_ENV?"vShow":""),Fg=Symbol("production"!==At.env.NODE_ENV?"Transition":""),jg=Symbol("production"!==At.env.NODE_ENV?"TransitionGroup":"");var Ug;let Hg;Ug={[Dg]:"vModelRadio",[Ig]:"vModelCheckbox",[Lg]:"vModelText",[kg]:"vModelSelect",[Pg]:"vModelDynamic",[Rg]:"withModifiers",[Vg]:"withKeys",[Bg]:"vShow",[Fg]:"Transition",[jg]:"TransitionGroup"},Object.getOwnPropertySymbols(Ug).forEach((e=>{Vh[e]=Ug[e]}));const Zg={parseMode:"html",isVoidTag:ei,isNativeTag:e=>Xo(e)||Jo(e)||Qo(e),isPreTag:e=>"pre"===e,decodeEntities:function(e,t=!1){return Hg||(Hg=document.createElement("div")),t?(Hg.innerHTML=`<div foo="${e.replace(/"/g,""")}">`,Hg.children[0].getAttribute("foo")):(Hg.innerHTML=e,Hg.textContent)},isBuiltInComponent:e=>"Transition"===e||"transition"===e?Fg:"TransitionGroup"===e||"transition-group"===e?jg:void 0,getNamespace(e,t,n){let r=t?t.ns:n;if(t&&2===r)if("annotation-xml"===t.tag){if("svg"===e)return 1;t.props.some((e=>6===e.type&&"encoding"===e.name&&null!=e.value&&("text/html"===e.value.content||"application/xhtml+xml"===e.value.content)))&&(r=0)}else/^m(?:[ions]|text)$/.test(t.tag)&&"mglyph"!==e&&"malignmark"!==e&&(r=0);else t&&1===r&&("foreignObject"!==t.tag&&"desc"!==t.tag&&"title"!==t.tag||(r=0));if(0===r){if("svg"===e)return 1;if("math"===e)return 2}return r}},Gg=(e,t)=>{const n=Ko(e);return Zh(JSON.stringify(n),!1,t,3)};function zg(e,t){return pm(e,t,"production"!==At.env.NODE_ENV?qg:void 0)}const qg={53:"v-html is missing expression.",54:"v-html will override element children.",55:"v-text is missing expression.",56:"v-text will override element children.",57:"v-model can only be used on <input>, <textarea> and <select> elements.",58:"v-model argument is not supported on plain elements.",59:"v-model cannot be used on file inputs since they are read-only. Use a v-on:change listener instead.",60:"Unnecessary value binding used alongside v-model. It will interfere with v-model's behavior.",61:"v-show is missing expression.",62:"<Transition> expects exactly one child element or component.",63:"Tags with side effect (<script> and <style>) are ignored in client component templates."},Wg=Qr("passive,once,capture"),Kg=Qr("stop,prevent,self,ctrl,shift,alt,meta,exact,middle"),Yg=Qr("left,right"),Xg=Qr("onkeyup,onkeydown,onkeypress",!0),Jg=(e,t)=>hm(e)&&"onclick"===e.content.toLowerCase()?Zh(t,!0):4!==e.type?Gh(["(",e,`) === "onClick" ? "${t}" : (`,e,")"]):e;function Qg(e){const t=e.children=e.children.filter((e=>3!==e.type&&!(2===e.type&&!e.content.trim()))),n=t[0];return 1!==t.length||11===n.type||9===n.type&&n.branches.some(Qg)}
14const ey=(e,t)=>{1!==e.type||0!==e.tagType||"script"!==e.tag&&"style"!==e.tag||("production"!==At.env.NODE_ENV&&t.onError(zg(63,e.loc)),t.removeNode())},ty=[e=>{1===e.type&&e.props.forEach(((t,n)=>{6===t.type&&"style"===t.name&&t.value&&(e.props[n]={type:7,name:"bind",arg:Zh("style",!0,t.loc),exp:Gg(t.value.content,t.loc),modifiers:[],loc:t.loc})}))},..."production"!==At.env.NODE_ENV?[(e,t)=>{if(1===e.type&&1===e.tagType){if(t.isBuiltInComponent(e.tag)===Fg)return()=>{if(!e.children.length)return;Qg(e)&&t.onError(zg(62,{start:e.children[0].loc.start,end:e.children[e.children.length-1].loc.end,source:""}));const n=e.children[0];if(1===n.type)for(const t of n.props)7===t.type&&"show"===t.name&&e.props.push({type:6,name:"persisted",nameLoc:e.loc,value:void 0,loc:e.loc})}}}]:[]],ny={cloak:()=>({props:[]}),html:(e,t,n)=>{const{exp:r,loc:o}=e;return r||n.onError(zg(53,o)),t.children.length&&(n.onError(zg(54,o)),t.children.length=0),{props:[Hh(Zh("innerHTML",!0,o),r||Zh("",!0))]}},text:(e,t,n)=>{const{exp:r,loc:o}=e;return r||n.onError(zg(55,o)),t.children.length&&(n.onError(zg(56,o)),t.children.length=0),{props:[Hh(Zh("textContent",!0),r?xv(r,n)>0?r:zh(n.helperString(Eh),[r],o):Zh("",!0))]}},model:(e,t,n)=>{const r=Sg(e,t,n);if(!r.props.length||1===t.tagType)return r;function o(){const e=Am(t,"bind");e&&Om(e.arg,"value")&&n.onError(zg(60,e.loc))}e.arg&&n.onError(zg(58,e.arg.loc));const{tag:i}=t,s=n.isCustomElement(i);if("input"===i||"textarea"===i||"select"===i||s){let a=Lg,l=!1;if("input"===i||s){const r=Cm(t,"type");if(r){if(7===r.type)a=Pg;else if(r.value)switch(r.value.content){case"radio":a=Dg;break;case"checkbox":a=Ig;break;case"file":l=!0,n.onError(zg(59,e.loc));break;default:"production"!==At.env.NODE_ENV&&o()}}else!function(e){return e.props.some((e=>!(7!==e.type||"bind"!==e.name||e.arg&&4===e.arg.type&&e.arg.isStatic)))}(t)?"production"!==At.env.NODE_ENV&&o():a=Pg}else"select"===i?a=kg:"production"!==At.env.NODE_ENV&&o();l||(r.needRuntime=n.helper(a))}else n.onError(zg(57,e.loc));return r.props=r.props.filter((e=>!(4===e.key.type&&"modelValue"===e.key.content))),r},on:(e,t,n)=>yg(e,t,n,(t=>{const{modifiers:r}=e;if(!r.length)return t;let{key:o,value:i}=t.props[0];const{keyModifiers:s,nonKeyModifiers:a,eventOptionModifiers:l}=((e,t,n,r)=>{const o=[],i=[],s=[];for(let a=0;a<t.length;a++){const l=t[a];"native"===l&&lm("COMPILER_V_ON_NATIVE",n,r)||Wg(l)?s.push(l):Yg(l)?hm(e)?Xg(e.content)?o.push(l):i.push(l):(o.push(l),i.push(l)):Kg(l)?i.push(l):o.push(l)}return{keyModifiers:o,nonKeyModifiers:i,eventOptionModifiers:s}})(o,r,n,e.loc);if(a.includes("right")&&(o=Jg(o,"onContextmenu")),a.includes("middle")&&(o=Jg(o,"onMouseup")),a.length&&(i=zh(n.helper(Rg),[i,JSON.stringify(a)])),!s.length||hm(o)&&!Xg(o.content)||(i=zh(n.helper(Vg),[i,JSON.stringify(s)])),l.length){const e=l.map(Do).join("");o=hm(o)?Zh(`${o.content}${e}`,!0):Gh(["(",o,`) + "${e}"`])}return{props:[Hh(o,i)]}})),show:(e,t,n)=>{const{exp:r,loc:o}=e;return r||n.onError(zg(61,o)),{props:[],needRuntime:n.helper(Bg)}}};"production"!==At.env.NODE_ENV&&lp();const ry=new WeakMap;Kd((function(e,t){if(!vo(e)){if(!e.nodeType)return"production"!==At.env.NODE_ENV&&dp("invalid template option: ",e),no;e=e.innerHTML}const n=e,r=function(e){let t=ry.get(null!=e?e:eo);return t||(t=Object.create(null),ry.set(null!=e?e:eo,t)),t}(t),o=r[n];if(o)return o;if("#"===e[0]){const t=document.querySelector(e);"production"===At.env.NODE_ENV||t||dp(`Template element not found or is empty: ${e}`),e=t?t.innerHTML:""}const i=so({hoistStatic:!0,onError:"production"!==At.env.NODE_ENV?a:void 0,onWarn:"production"!==At.env.NODE_ENV?e=>a(e,!0):no},t);i.isCustomElement||"undefined"==typeof customElements||(i.isCustomElement=e=>!!customElements.get(e));const{code:s}=function(e,t={}){return Mg(e,so({},Zg,t,{nodeTransforms:[ey,...ty,...t.nodeTransforms||[]],directiveTransforms:so({},ny,t.directiveTransforms||{}),transformHoist:null}))}(e,i);function a(t,n=!1){const r=n?t.message:`Template compilation error: ${t.message}`,o=t.loc&&function(e,t=0,n=e.length){if((t=Math.max(0,Math.min(t,e.length)))>(n=Math.max(0,Math.min(n,e.length))))return"";let r=e.split(/(\r?\n)/);const o=r.filter(((e,t)=>t%2==1));r=r.filter(((e,t)=>t%2==0));let i=0;const s=[];for(let e=0;e<r.length;e++)if(i+=r[e].length+(o[e]&&o[e].length||0),i>=t){for(let a=e-Zo;a<=e+Zo||n>i;a++){if(a<0||a>=r.length)continue;const l=a+1;s.push(`${l}${" ".repeat(Math.max(3-String(l).length,0))}| ${r[a]}`);const c=r[a].length,u=o[a]&&o[a].length||0;if(a===e){const e=t-(i-(c+u)),r=Math.max(1,n>i?c-e:n-t);s.push(" | "+" ".repeat(e)+"^".repeat(r))}else if(a>e){if(n>i){const e=Math.max(Math.min(n-i,c),1);s.push(" | "+"^".repeat(e))}i+=c+u}}break}return s.join("\n")}(e,t.loc.start.offset,t.loc.end.offset);dp(o?`${r}\n${o}`:r)}const l=new Function("Vue",s)(Jf);return l._rc=!0,r[n]=l}));const oy=()=>{const e=zf({setup(){const e=Us(""),t=Us(""),n=Us(""),r=[],o=Us(""),i=Us(!0),s=Us(!1),a=Us(),l=Us([]),c={date:"",time:"",dayID:""},u=Ns({...c}),d=location.host.includes("bikekan.jp")?{"X-CSRF-TOKEN":document.querySelector('meta[name="csrf-token"]').getAttribute("content")}:{};let p,f="",h=Us(0);const m=()=>{p=Math.ceil(t.value.clientWidth-n.value.scrollWidth),f=r[0].clientWidth},v=(e,t)=>
14{const n=new Date(`2023-01-01T${e}:00`),r=new Date(`2023-01-01T${t}:00`);let o=n.getTime()-r.getTime();o=Math.floor(Math.abs(o/18e5));const i={hour12:!1,hour:"2-digit",minute:"2-digit"};l.value=[...Array(o+1)].reduce(((e,t,o)=>{const s=e[o-1]?new Date(e[o-1].end):n,a=s.toLocaleString(),l=s.toLocaleString("en",i);s.setMinutes(s.getMinutes()+30);const c=s.toLocaleString(),u=s.toLocaleString("en",i);return s<=r&&e.push({start:a,end:c,format:`${l}ã${u}`}),e}),[])};return Il((()=>{window.matchMedia("(max-width: 768px)").addEventListener("change",(e=>{e.matches?(s.value=!1,i.value=!0,h.value=0):(m(),t.value.scrollLeft=0)}))})),{dateList:t,dateInner:n,addDateItem:e=>{e&&r.push(e)},storePulldown:e,storeID:o,timeList:l,reserveData:u,onSelectStore:async()=>{if(Object.assign(u,c),r.length=0,o.value){const e=await Yr.get("/async/front/reserve_form",{params:{id:o.value},headers:d}).catch((({response:e})=>e));a.value=e,a.value.data=200===e.status?a.value.data.data:"",_a((()=>{p||m()}))}else a.value=""},onSelectDate:(e,t,n)=>{l.value.splice(0),u.date=e,u.time="",v(t,n)},onMove:e=>{"next"===e?(s.value=!0,h.value-=f,i.value=!(p>=h.value)):"prev"===e&&(i.value=!0,h.value+=f,s.value=!(0<=h.value))},progress:h,nextEnable:i,prevEnable:s,storeData:a,getBusinessHours:v}}});e.component("storeDay",{template:'\n <div\n :ref="dateItem"\n class="p-form-date__item"\n :class="[{\'is-selected\': reserveDate === date}, {\'is-disable\': isTel || isClosed }]\n ">\n <p class="p-form-date__item-day" :class="[days[dayId].mod, {\'p-form-date__item-day--holiday\': isHoliday}]">{{ days[Number(dayId)].name }}</p>\n <div class="p-form-date__item-wrap">\n <p class="p-form-date__item-num">{{ new Date(date).toLocaleDateString(\'ja-JP\', { month: \'2-digit\', day: \'2-digit\'}) }}</p>\n <div class="p-form-date__item-mark">\n <svg v-if="isClosed" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 14 2" class="p-form-date__item-blank" aria-label="å®ä¼æ¥">\n <rect width="14" height="2" x="0" y="0"></rect>\n </svg>\n <svg v-else-if="isTel" class="p-form-date__item-tel" aria-label="é»è©±ã§ãåãåãããã ãã"><use xlink:href="#tel" /></svg>\n <svg v-else xmlns="http://www.w3.org/2000/svg" viewbox="0 0 8 8" class="p-form-date__item-circle" aria-label="å¶æ¥æ¥">\n <circle cx="4" cy="4" r="4"></circle>\n </svg>\n </div>\n </div>\n </div>\n ',props:["date","dayId","isClosed","isHoliday","isTel","reserveDate"],setup:(e,{emit:t})=>({days:[{name:"æ¥",mod:"p-form-date__item-day--sun"},{name:"æ"},{name:"ç«"},{name:"æ°´"},{name:"æ¨"},{name:"é"},{name:"å",mod:"p-form-date__item-day--sat"}],dateItem:e=>{t("date-item",e)}})}),e.mount("#date")};class iy{constructor(e,t){this.default={height:!0},this.tab=document.querySelector(e),this.tabTriggers=this.tab.querySelectorAll(".js-tab-trigger"),this.tabPanel=this.tab.querySelector(".js-tab-panel"),this.tabPanels=this.tab.querySelectorAll("[data-tab-panel]"),this.opt=Object.assign(this.default,t),this.init()}init(){if(this.opt.height)for(const e of this.tabTriggers)if("true"===e.getAttribute("aria-selected")){const t=e.getAttribute("aria-controls");this.tabPanel.style.height=this.tab.querySelector(`[data-tab-panel="${t}"]`).offsetHeight+"px"}for(const e of this.tabTriggers)e.addEventListener("click",(()=>{const t=e.getAttribute("aria-controls"),n=this.tab.querySelector(`[data-tab-panel="${t}"]`);n&&(this.reset(),this.opt.height&&(this.tabPanel.style.height=n.offsetHeight+"px"),n.setAttribute("aria-hidden",!1),e.setAttribute("aria-selected",!0))}),{paddive:!0});window.addEventListener("resize",this.resize.bind(this),{passive:!0})}reset(){for(const e of this.tabTriggers)e.setAttribute("aria-selected",!1);for(const e of this.tabPanels)e.setAttribute("aria-hidden",!0)}resize(){const e=this.tab.querySelector('[data-tab-panel][aria-hidden="false"]');this.opt.height&&(this.tabPanel.style.height=e.offsetHeight+"px")}destroy(){window.removeEventListener("resize",this.resize.bind(this),{passive:!0}),this.tabPanel.style.height=""}}var sy={exports:{}},ay={exports:{}},ly={exports:{}};!function(e,t){function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}
14Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t="string"==typeof e||e instanceof String;if(!t){var r=n(e);throw null===e?r="null":"object"===r&&(r=e.constructor.name),new TypeError("Expected a string but received a ".concat(r))}},e.exports=t.default,e.exports.default=t.default}(ly,ly.exports),function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return(0,r.default)(e),e=Date.parse(e),isNaN(e)?null:new Date(e)};var n,r=(n=ly.exports)&&n.__esModule?n:{default:n};e.exports=t.default,e.exports.default=t.default}(ay,ay.exports);var cy={exports:{}},uy={},dy={};Object.defineProperty(dy,"__esModule",{value:!0}),dy.farsiLocales=dy.englishLocales=dy.dotDecimal=dy.decimal=dy.commaDecimal=dy.bengaliLocales=dy.arabicLocales=dy.alphanumeric=dy.alpha=void 0;for(var py,fy=dy.alpha={"en-US":/^[A-Z]+$/i,"az-AZ":/^[A-VXYZÃÆÄİıÃÅÃ]+$/i,"bg-BG":/^[Ð-Я]+$/i,"cs-CZ":/^[A-ZÃÄÄÃÄÃÅÃÅŠŤÃŮÎ]+$/i,"da-DK":/^[A-ZÃÃÃ
]+$/i,"de-DE":/^[A-ZÃÃÃÃ]+$/i,"el-GR":/^[Î-Ï]+$/i,"es-ES":/^[A-ZÃÃÃÃÃÃÃ]+$/i,"fa-IR":/^[Ø§Ø¨Ù¾ØªØ«Ø¬ÚØØ®Ø¯Ø°Ø±Ø²ÚØ³Ø´ØµØ¶Ø·Ø¸Ø¹ØºÙÙÚ©Ú¯ÙÙ
ÙÙÙÛ]+$/i,"fi-FI":/^[A-ZÃ
ÃÃ]+$/i,"fr-FR":/^[A-ZÃÃÃÃÃÃÃÃÃÃÃÅÃÃß]+$/i,"it-IT":/^[A-ZÃÃÃÃÃÃÃÃ]+$/i,"ja-JP":/^[ã-ãã¡-ã¶ï½¦-ï¾ä¸-é¾ ã¼ã»ãã]+$/i,"nb-NO":/^[A-ZÃÃÃ
]+$/i,"nl-NL":/^[A-ZÃÃÃÃÃÃÃÃ]+$/i,"nn-NO":/^[A-ZÃÃÃ
]+$/i,"hu-HU":/^[A-ZÃÃÃÃÃÅÃÃŰ]+$/i,"pl-PL":/^[A-ZÄÄÄÅÅÅÃŻŹ]+$/i,"pt-PT":/^[A-ZÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ]+$/i,"ru-RU":/^[Ð-ЯÐ]+$/i,"kk-KZ":/^[Ð-ЯÐ\u04D8\u04B0\u0406\u04A2\u0492\u04AE\u049A\u04E8\u04BA]+$/i,"sl-SI":/^[A-ZÄÄÄŠŽ]+$/i,"sk-SK":/^[A-ZÃÄÄÃÃÅÊŤÃÃŽĹÅĽÃÃ]+$/i,"sr-RS@latin":/^[A-ZÄÄŽŠÄ]+$/i,"sr-RS":/^[Ð-ЯÐÐÐÐÐÐ]+$/i,"sv-SE":/^[A-ZÃ
ÃÃ]+$/i,"th-TH":/^[à¸-à¹\s]+$/i,"tr-TR":/^[A-ZÃÄİıÃÅÃ]+$/i,"uk-UA":/^[Ð-ЩЬЮЯÐIÐÒÑ]+$/i,"vi-VN":/^[A-ZÃÃẠẢÃÃẦẤẬẨẪÄẰẮẶẲẴÄÃÃẸẺẼÃá»áº¾á»á»á»ÃÃá»á»Ä¨ÃÃá»á»ÃÃá»á»á»á»á»Æ á»á»á»¢á»á» ÃÃỤỦŨƯỪỨỰỬỮỲÃỴỶỸ]+$/i,"ko-KR":/^[ã±-ã
ã
-ã
£ê°-í£]*$/,"ku-IQ":/^[Ø¦Ø§Ø¨Ù¾ØªØ¬ÚØØ®Ø¯Ø±ÚØ²ÚسشعغÙÚ¤ÙÚ©Ú¯ÙÚµÙ
ÙÙÛÚ¾ÛÛÛÙØ·Ø¤Ø«Ø¢Ø¥Ø£Ùضصةظذ]+$/i,ar:/^[Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§Ø¨Ø©ØªØ«Ø¬ØØ®Ø¯Ø°Ø±Ø²Ø³Ø´ØµØ¶Ø·Ø¸Ø¹ØºÙÙÙÙÙ
ÙÙÙÙÙÙÙÙÙÙÙÙÙÙ°]+$/,he:/^[×-ת]+$/,fa:/^['Ø¢Ø§Ø¡Ø£Ø¤Ø¦Ø¨Ù¾ØªØ«Ø¬ÚØØ®Ø¯Ø°Ø±Ø²ÚØ³Ø´ØµØ¶Ø·Ø¸Ø¹ØºÙÙÚ©Ú¯ÙÙ
ÙÙÙØ©Û']+$/i,bn:/^['à¦à¦à¦à¦à¦
à¦à¦à¦à¦à¦à¦à¦à¦à¦à¦à¦à¦à¦à¦à¦à¦à¦à¦à¦à¦à¦à¦à¦ ডঢণতথদধনপফবà¦à¦®à¦¯à¦°à¦²à¦¶à¦·à¦¸à¦¹à¦¼à¦½à¦¾à¦¿à§à§à§à§à§à§à§à§à§à§à§à§à§à§à§à§ ৡৢৣৰৱ৲৳৴৵৶৷৸৹৺৻']+$/,eo:/^[ABCÄD-GÄHĤIJÄ´K-PRSÅTUŬVZ]+$/i,"hi-IN":/^[\u0900-\u0961]+[\u0972-\u097F]*$/i,"si-LK":/^[\u0D80-\u0DFF]+$/},hy=dy.alphanumeric={"en-US":/^[0-9A-Z]+$/i,"az-AZ":/^[0-9A-VXYZÃÆÄİıÃÅÃ]+$/i,"bg-BG":/^[0-9Ð-Я]+$/i,"cs-CZ":/^[0-9A-ZÃÄÄÃÄÃÅÃÅŠŤÃŮÎ]+$/i,"da-DK":/^[0-9A-ZÃÃÃ
]+$/i,"de-DE":/^[0-9A-ZÃÃÃÃ]+$/i,"el-GR":/^[0-9Î-Ï]+$/i,"es-ES":/^[0-9A-ZÃÃÃÃÃÃÃ]+$/i,"fi-FI":/^[0-9A-ZÃ
ÃÃ]+$/i,"fr-FR":/^[0-9A-ZÃÃÃÃÃÃÃÃÃÃÃÅÃÃß]+$/i,"it-IT":/^[0-9A-ZÃÃÃÃÃÃÃÃ]+$/i,"ja-JP":/^[0-9ï¼-ï¼ã-ãã¡-ã¶ï½¦-ï¾ä¸-é¾ ã¼ã»ãã]+$/i,"hu-HU":/^[0-9A-ZÃÃÃÃÃÅÃÃŰ]+$/i,"nb-NO":/^[0-9A-ZÃÃÃ
]+$/i,"nl-NL":/^[0-9A-ZÃÃÃÃÃÃÃÃ]+$/i,"nn-NO":/^[0-9A-ZÃÃÃ
]+$/i,"pl-PL":/^[0-9A-ZÄÄÄÅÅÅÃŻŹ]+$/i,"pt-PT":/^[0-9A-ZÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ]+$/i,"ru-RU":/^[0-9Ð-ЯÐ]+$/i,"kk-KZ":/^[0-9Ð-ЯÐ\u04D8\u04B0\u0406\u04A2\u0492\u04AE\u049A\u04E8\u04BA]+$/i,"sl-SI":/^[0-9A-ZÄÄÄŠŽ]+$/i,"sk-SK":/^[0-9A-ZÃÄÄÃÃÅÊŤÃÃŽĹÅĽÃÃ]+$/i,"sr-RS@latin":/^[0-9A-ZÄÄŽŠÄ]+$/i,"sr-RS":/^[0-9Ð-ЯÐÐÐÐÐÐ]+$/i,"sv-SE":/^[0-9A-ZÃ
ÃÃ]+$/i,"th-TH":/^[à¸-à¹\s]+$/i,"tr-TR":/^[0-9A-ZÃÄİıÃÅÃ]+$/i,"uk-UA":/^[0-9Ð-ЩЬЮЯÐIÐÒÑ]+$/i,"ko-KR":/^[0-9ã±-ã
ã
-ã
£ê°-í£]*$/,"ku-IQ":/^[٠١٢٣٤٥٦٧٨٩0-9Ø¦Ø§Ø¨Ù¾ØªØ¬ÚØØ®Ø¯Ø±ÚØ²ÚسشعغÙÚ¤ÙÚ©Ú¯ÙÚµÙ
ÙÙÛÚ¾ÛÛÛÙØ·Ø¤Ø«Ø¢Ø¥Ø£Ùضصةظذ]+$/i,"vi-VN":/^[0-9A-ZÃÃẠẢÃÃẦẤẬẨẪÄẰẮẶẲẴÄÃÃẸẺẼÃá»áº¾á»á»á»ÃÃá»á»Ä¨ÃÃá»á»ÃÃá»á»á»á»á»Æ á»á»á»¢á»á» ÃÃỤỦŨƯỪỨỰỬỮỲÃỴỶỸ]+$/i,ar:/^[٠١٢٣٤٥٦٧٨٩0-9Ø¡Ø¢Ø£Ø¤Ø¥Ø¦Ø§Ø¨Ø©ØªØ«Ø¬ØØ®Ø¯Ø°Ø±Ø²Ø³Ø´ØµØ¶Ø·Ø¸Ø¹ØºÙÙÙÙÙ
ÙÙÙÙÙÙÙÙÙÙÙÙÙÙ°]+$/,he:/^[0-9×-ת]+$/,fa:/^['0-9Ø¢Ø§Ø¡Ø£Ø¤Ø¦Ø¨Ù¾ØªØ«Ø¬ÚØØ®Ø¯Ø°Ø±Ø²ÚØ³Ø´ØµØ¶Ø·Ø¸Ø¹ØºÙÙÚ©Ú¯ÙÙ
ÙÙÙØ©ÛÛ±Û²Û³Û´ÛµÛ¶Û·Û¸Û¹Û°']+$/i,bn:/^['à¦à¦à¦à¦à¦
à¦à¦à¦à¦à¦à¦à¦à¦à¦à¦à¦à¦à¦à¦à¦à¦à¦à¦à¦à¦à¦à¦à¦ ডঢণতথদধনপফবà¦à¦®à¦¯à¦°à¦²à¦¶à¦·à¦¸à¦¹à¦¼à¦½à¦¾à¦¿à§à§à§à§à§à§à§à§à§à§à§à§à§à§à§à§ ৡৢৣ০১২৩৪৫৬à§à§®à§¯à§°à§±à§²à§³à§´à§µà§¶à§·à§¸à§¹à§ºà§»']+$/,eo:/^[0-9ABCÄD-GÄHĤIJÄ´K-PRSÅTUŬVZ]+$/i,"hi-IN":/^[\u0900-\u0963]+[\u0966-\u097F]*$/i,"si-LK":/^[0-9\u0D80-\u0DFF]+$/},my=dy.decimal={"en-US":".",ar:"Ù«"},vy=dy.englishLocales=["AU","GB","HK","IN","NZ","ZA","ZM"],gy=0;gy<vy.length;gy++)fy[py="en-".concat(vy[gy])]=fy["en-US"],hy[py]=hy["en-US"],my[py]=my["en-US"];for(var yy,by=dy.arabicLocales=["AE","BH","DZ","EG","IQ","JO","KW","LB","LY","MA","QM","QA","SA","SD","SY","TN","YE"],Ey=0;Ey<by.length;Ey++)fy[yy="ar-".concat(by[Ey])]=fy.ar,hy[yy]=hy.ar,my[yy]=my.ar;for(var _y,Sy=dy.farsiLocales=["IR","AF"],xy=0;xy<Sy.length;xy++)hy[_y="fa-".concat(Sy[xy])]=hy.fa,my[_y]=my.ar;for(var wy,Ny=dy.bengaliLocales=["BD","IN"],Ay=0;Ay<Ny.length;Ay++)fy[wy="bn-".concat(Ny[Ay])]=fy.bn,hy[wy]=hy.bn,my[wy]=my["en-US"];for(var Cy=dy.dotDecimal=["ar-EG","ar-LB","ar-LY"],Oy=dy.commaDecimal=["bg-BG","cs-CZ","da-DK","de-DE","el-GR","en-ZM","eo","es-ES","fr-CA","fr-FR","id-ID","it-IT","ku
14-IQ","hi-IN","hu-HU","nb-NO","nn-NO","nl-NL","pl-PL","pt-PT","ru-RU","kk-KZ","si-LK","sl-SI","sr-RS@latin","sr-RS","sv-SE","tr-TR","uk-UA","vi-VN"],Ty=0;Ty<Cy.length;Ty++)my[Cy[Ty]]=my["en-US"];for(var $y=0;$y<Oy.length;$y++)my[Oy[$y]]=",";fy["fr-CA"]=fy["fr-FR"],hy["fr-CA"]=hy["fr-FR"],fy["pt-BR"]=fy["pt-PT"],hy["pt-BR"]=hy["pt-PT"],my["pt-BR"]=my["pt-PT"],fy["pl-Pl"]=fy["pl-PL"],hy["pl-Pl"]=hy["pl-PL"],my["pl-Pl"]=my["pl-PL"],fy["fa-AF"]=fy.fa,Object.defineProperty(uy,"__esModule",{value:!0}),uy.default=function(e,t){(0,Dy.default)(e),t=t||{};var n=new RegExp("^(?:[-+])?(?:[0-9]+)?(?:\\".concat(t.locale?Iy.decimal[t.locale]:".","[0-9]*)?(?:[eE][\\+\\-]?(?:[0-9]+))?$"));if(""===e||"."===e||","===e||"-"===e||"+"===e)return!1;var r=parseFloat(e.replace(",","."));return n.test(e)&&(!t.hasOwnProperty("min")||r>=t.min)&&(!t.hasOwnProperty("max")||r<=t.max)&&(!t.hasOwnProperty("lt")||r<t.lt)&&(!t.hasOwnProperty("gt")||r>t.gt)},uy.locales=void 0;var My,Dy=(My=ly.exports)&&My.__esModule?My:{default:My},Iy=dy;uy.locales=Object.keys(Iy.decimal),function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return(0,n.default)(e)?parseFloat(e):NaN};var n=function(e){return e&&e.__esModule?e:{default:e}}(uy);e.exports=t.default,e.exports.default=t.default}
14(cy,cy.exports);var Ly={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){return(0,n.default)(e),parseInt(e,t||10)};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);e.exports=t.default,e.exports.default=t.default}(Ly,Ly.exports);var ky={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){if((0,n.default)(e),t)return"1"===e||/^true$/i.test(e);return"0"!==e&&!/^false$/i.test(e)&&""!==e};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);e.exports=t.default,e.exports.default=t.default}(ky,ky.exports);var Py={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){return(0,n.default)(e),e===t};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);e.exports=t.default,e.exports.default=t.default}(Py,Py.exports);var Ry={exports:{}},Vy={exports:{}};!function(e,t){function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){"object"===n(e)&&null!==e?e="function"==typeof e.toString?e.toString():"[object Object]":(null==e||isNaN(e)&&!e.length)&&(e="");return String(e)},e.exports=t.default,e.exports.default=t.default}
14(Vy,Vy.exports);var By={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;for(var n in t)void 0===e[n]&&(e[n]=t[n]);return e},e.exports=t.default,e.exports.default=t.default}(By,By.exports),function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,i){if((0,n.default)(e),(i=(0,o.default)(i,s)).ignoreCase)return e.toLowerCase().split((0,r.default)(t).toLowerCase()).length>i.minOccurrences;return e.split((0,r.default)(t)).length>i.minOccurrences};var n=i(ly.exports),r=i(Vy.exports),o=i(By.exports);function i(e){return e&&e.__esModule?e:{default:e}}var s={ignoreCase:!1,minOccurrences:1};e.exports=t.default,e.exports.default=t.default}(Ry,Ry.exports);var Fy={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,r){(0,n.default)(e),"[object RegExp]"!==Object.prototype.toString.call(t)&&(t=new RegExp(t,r));return!!e.match(t)};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);e.exports=t.default,e.exports.default=t.default}(Fy,Fy.exports);var jy={exports:{}},Uy={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){var o,i;(0,n.default)(e),"object"===r(t)?(o=t.min||0,i=t.max):(o=arguments[1],i=arguments[2]);var s=encodeURI(e).split(/%..|./).length-1;return s>=o&&(void 0===i||s<=i)};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}e.exports=t.default,e.exports.default=t.default}(Uy,Uy.exports);var Hy={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){(0,n.default)(e),(t=(0,r.default)(t,i)).allow_trailing_dot&&"."===e[e.length-1]&&(e=e.substring(0,e.length-1));!0===t.allow_wildcard&&0===e.indexOf("*.")&&(e=e.substring(2));var o=e.split("."),s=o[o.length-1];if(t.require_tld){if(o.length<2)return!1;if(!t.allow_numeric_tld&&!/^([a-z\u00A1-\u00A8\u00AA-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}|xn[a-z0-9-]{2,})$/i.test(s))return!1;if(/\s/.test(s))return!1}if(!t.allow_numeric_tld&&/^\d+$/.test(s))return!1;return o.every((function(e){return!(e.length>63&&!t.ignore_max_length)&&(!!/^[a-z_\u00a1-\uffff0-9-]+$/i.test(e)&&(!/[\uff01-\uff5e]/.test(e)&&(!/^-|-$/.test(e)&&!(!t.allow_underscores&&/_/.test(e)))))}))};var n=o(ly.exports),r=o(By.exports);function o(e){return e&&e.__esModule?e:{default:e}}var i={require_tld:!0,allow_underscores:!1,allow_trailing_dot:!1,allow_numeric_tld:!1,allow_wildcard:!1,ignore_max_length:!1};e.exports=t.default,e.exports.default=t.default}(Hy,Hy.exports);var Zy={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function e(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if((0,n.default)(t),r=String(r),!r)return e(t,4)||e(t,6);if("4"===r)return i.test(t);if("6"===r)return a.test(t);return!1};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);var r="(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])",o="(".concat(r,"[.]){3}").concat(r),i=new RegExp("^".concat(o,"$")),s="(?:[0-9a-fA-F]{1,4})",a=new RegExp("^("+"(?:".concat(s,":){7}(?:").concat(s,"|:)|")+"(?:".concat(s,":){6}(?:").concat(o,"|:").concat(s,"|:)|")+"(?:".concat(s,":){5}(?::").concat(o,"|(:").concat(s,"){1,2}|:)|")+"(?:".concat(s,":){4}(?:(:").concat(s,"){0,1}:").concat(o,"|(:").concat(s,"){1,3}|:)|")+"(?:".concat(s,":){3}(?:(:").concat(s,"){0,2}:").concat(o,"|(:").concat(s,"){1,4}|:)|")+"(?:".concat(s,":){2}(?:(:").concat(s,"){0,3}:").concat(o,"|(:").concat(s,"){1,5}|:)|")+"(?:".concat(s,":){1}(?:(:").concat(s,"){0,4}:").concat(o,"|(:").concat(s,"){1,6}|:)|")+"(?::((?::".concat(s,"){0,5}:").concat(o,"|(?::").concat(s,"){1,7}|:))")+")(%[0-9a-zA-Z-.:]{1,})?$");e.exports=t.default,e.exports.default=t.default}
14(Zy,Zy.exports),function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){if((0,n.default)(e),(t=(0,s.default)(t,l)).require_display_name||t.allow_display_name){var a=e.match(c);if(a){var v=a[1];if(e=e.replace(v,"").replace(/(^<|>$)/g,""),v.endsWith(" ")&&(v=v.slice(0,-1)),!function(e){var t=e.replace(/^"(.+)"$/,"$1");if(!t.trim())return!1;if(/[\.";<>]/.test(t)){if(t===e)return!1;if(!(t.split('"').length===t.split('\\"').length))return!1}return!0}(v))return!1}else if(t.require_display_name)return!1}if(!t.ignore_max_length&&e.length>m)return!1;var g=e.split("@"),y=g.pop(),b=y.toLowerCase();if(t.host_blacklist.includes(b))return!1;if(t.host_whitelist.length>0&&!t.host_whitelist.includes(b))return!1;var E=g.join("@");if(t.domain_specific_validation&&("gmail.com"===b||"googlemail.com"===b)){var _=(E=E.toLowerCase()).split("+")[0];if(!(0,r.default)(_.replace(/\./g,""),{min:6,max:30}))return!1;for(var S=_.split("."),x=0;x<S.length;x++)if(!d.test(S[x]))return!1}if(!(!1!==t.ignore_max_length||(0,r.default)(E,{max:64})&&(0,r.default)(y,{max:254})))return!1;if(!(0,o.default)(y,{require_tld:t.require_tld,ignore_max_length:t.ignore_max_length,allow_underscores:t.allow_underscores})){if(!t.allow_ip_domain)return!1;if(!(0,i.default)(y)){if(!y.startsWith("[")||!y.endsWith("]"))return!1;var w=y.slice(1,-1);if(0===w.length||!(0,i.default)(w))return!1}}if('"'===E[0])return E=E.slice(1,E.length-1),t.allow_utf8_local_part?h.test(E):p.test(E);for(var N=t.allow_utf8_local_part?f:u,A=E.split("."),C=0;C<A.length;C++)if(!N.test(A[C]))return!1;if(t.blacklisted_chars&&-1!==E.search(new RegExp("[".concat(t.blacklisted_chars,"]+"),"g")))return!1;return!0};
14var n=a(ly.exports),r=a(Uy.exports),o=a(Hy.exports),i=a(Zy.exports),s=a(By.exports);function a(e){return e&&e.__esModule?e:{default:e}}var l={allow_display_name:!1,allow_underscores:!1,require_display_name:!1,allow_utf8_local_part:!0,require_tld:!0,blacklisted_chars:"",ignore_max_length:!1,host_blacklist:[],host_whitelist:[]},c=/^([^\x00-\x1F\x7F-\x9F\cX]+)</i,u=/^[a-z\d!#\$%&'\*\+\-\/=\?\^_`{\|}~]+$/i,d=/^[a-z\d]+$/,p=/^([\s\x01-\x08\x0b\x0c\x0e-\x1f\x7f\x21\x23-\x5b\x5d-\x7e]|(\\[\x01-\x09\x0b\x0c\x0d-\x7f]))*$/i,f=/^[a-z\d!#\$%&'\*\+\-\/=\?\^_`{\|}~\u00A1-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+$/i,h=/^([\s\x01-\x08\x0b\x0c\x0e-\x1f\x7f\x21\x23-\x5b\x5d-\x7e\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|(\\[\x01-\x09\x0b\x0c\x0d-\x7f\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))*$/i,m=254;e.exports=t.default,e.exports.default=t.default}(jy,jy.exports);var Gy={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){if((0,n.default)(e),!e||/[\s<>]/.test(e))return!1;if(0===e.indexOf("mailto:"))return!1;if((t=(0,i.default)(t,l)).validate_length&&e.length>=2083)return!1;if(!t.allow_fragments&&e.includes("#"))return!1;if(!t.allow_query_components&&(e.includes("?")||e.includes("&")))return!1;var s,u,p,f,h,m,v,g;if(v=e.split("#"),e=v.shift(),v=e.split("?"),e=v.shift(),(v=e.split("://")).length>1){if(s=v.shift().toLowerCase(),t.require_valid_protocol&&-1===t.protocols.indexOf(s))return!1}else{if(t.require_protocol)return!1;if("//"===e.slice(0,2)){if(!t.allow_protocol_relative_urls)return!1;v[0]=e.slice(2)}}if(""===(e=v.join("://")))return!1;if(v=e.split("/"),""===(e=v.shift())&&!t.require_host)return!0;if((v=e.split("@")).length>1){if(t.disallow_auth)return!1;if(""===v[0])return!1;if((u=v.shift()).indexOf(":")>=0&&u.split(":").length>2)return!1;var y=function(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,i,s,a=[],l=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=i.call(n)).done)&&(a.push(r.value),a.length!==t);l=!0);}catch(e){c=!0,o=e}finally{try{if(!l&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(c)throw o}}return a}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return a(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 a(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.")}()}(u.split(":"),2),b=y[0],E=y[1];if(""===b&&""===E)return!1}f=v.join("@"),m=null,g=null;var _=f.match(c);_?(p="",g=_[1],m=_[2]||null):(p=(v=f.split(":")).shift(),v.length&&(m=v.join(":")));if(null!==m&&m.length>0){if(h=parseInt(m,10),!/^[0-9]+$/.test(m)||h<=0||h>65535)return!1}else if(t.require_port)return!1;if(t.host_whitelist)return d(p,t.host_whitelist);if(""===p&&!t.require_host)return!0;if(!((0,o.default)(p)||(0,r.default)(p,t)||g&&(0,o.default)(g,6)))return!1;if(p=p||g,t.host_blacklist&&d(p,t.host_blacklist))return!1;return!0};var n=s(ly.exports),r=s(Hy.exports),o=s(Zy.exports),i=s(By.exports);function s(e){return e&&e.__esModule?e:{default:e}}function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var l={protocols:["http","https","ftp"],require_tld:!0,require_protocol:!1,require_host:!0,require_port:!1,require_valid_protocol:!0,allow_underscores:!1,allow_trailing_dot:!1,allow_protocol_relative_urls:!1,allow_fragments:!0,allow_query_components:!0,validate_length:!0},c=/^\[([^\]]+)\](?::([0-9]+))?$/;function u(e){return"[object RegExp]"===Object.prototype.toString.call(e)}function d(e,t){for(var n=0;n<t.length;n++){var r=t[n];if(e===r||u(r)&&r.test(e))return!0}return!1}e.exports=t.default,e.exports.default=t.default}(Gy,Gy.exports);var zy={exports:{}};
14!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function e(t,c){(0,n.default)(t),null!=c&&c.eui&&(c.eui=String(c.eui));if(null!=c&&c.no_colons||null!=c&&c.no_separators)return"48"===c.eui?o.test(t):"64"===c.eui?a.test(t):o.test(t)||a.test(t);if("48"===(null==c?void 0:c.eui))return r.test(t)||i.test(t);if("64"===(null==c?void 0:c.eui))return s.test(t)||l.test(t);return e(t,{eui:"48"})||e(t,{eui:"64"})};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);var r=/^(?:[0-9a-fA-F]{2}([-:\s]))([0-9a-fA-F]{2}\1){4}([0-9a-fA-F]{2})$/,o=/^([0-9a-fA-F]){12}$/,i=/^([0-9a-fA-F]{4}\.){2}([0-9a-fA-F]{4})$/,s=/^(?:[0-9a-fA-F]{2}([-:\s]))([0-9a-fA-F]{2}\1){6}([0-9a-fA-F]{2})$/,a=/^([0-9a-fA-F]){16}$/,l=/^([0-9a-fA-F]{4}\.){3}([0-9a-fA-F]{4})$/;e.exports=t.default,e.exports.default=t.default}(zy,zy.exports);var qy={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";(0,n.default)(e);var o=e.split("/");if(2!==o.length)return!1;if(!i.test(o[1]))return!1;if(o[1].length>1&&o[1].startsWith("0"))return!1;var l=(0,r.default)(o[0],t);if(!l)return!1;var c=null;switch(String(t)){case"4":c=s;break;case"6":c=a;break;default:c=(0,r.default)(o[0],"6")?a:s}return o[1]<=c&&o[1]>=0};
14var n=o(ly.exports),r=o(Zy.exports);function o(e){return e&&e.__esModule?e:{default:e}}var i=/^\d{1,3}$/,s=32,a=128;e.exports=t.default,e.exports.default=t.default}(qy,qy.exports);var Wy={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){t="string"==typeof t?(0,n.default)({format:t},s):(0,n.default)(t,s);if("string"==typeof e&&(b=t.format,/(^(y{4}|y{2})[.\/-](m{1,2})[.\/-](d{1,2})$)|(^(m{1,2})[.\/-](d{1,2})[.\/-]((y{4}|y{2})$))|(^(d{1,2})[.\/-](m{1,2})[.\/-]((y{4}|y{2})$))/gi.test(b))){var i,a=t.delimiters.find((function(e){return-1!==t.format.indexOf(e)})),l=t.strictMode?a:t.delimiters.find((function(t){return-1!==e.indexOf(t)})),c=function(e,t){for(var n=[],r=Math.min(e.length,t.length),o=0;o<r;o++)n.push([e[o],t[o]]);return n}(e.split(l),t.format.toLowerCase().split(a)),u={},d=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=o(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){l=!0,s=e},f:function(){try{a||null==n.return||n.return()}finally{if(l)throw s}}}}(c);try{for(d.s();!(i=d.n()).done;){var p=r(i.value,2),f=p[0],h=p[1];if(f.length!==h.length)return!1;u[h.charAt(0)]=f}}catch(e){d.e(e)}finally{d.f()}var m=u.y;if(m.startsWith("-"))return!1;if(2===u.y.length){var v=parseInt(u.y,10);if(isNaN(v))return!1;m=v<(new Date).getFullYear()%100?"20".concat(u.y):"19".concat(u.y)}var g=u.m;1===u.m.length&&(g="0".concat(u.m));var y=u.d;return 1===u.d.length&&(y="0".concat(u.d)),new Date("".concat(m,"-").concat(g,"-").concat(y,"T00:00:00.000Z")).getUTCDate()===+u.d}var b;if(!t.strictMode)return"[object Date]"===Object.prototype.toString.call(e)&&isFinite(e);return!1};var n=function(e){return e&&e.__esModule?e:{default:e}}(By.exports);function r(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,i,s,a=[],l=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=i.call(n)).done)&&(a.push(r.value),a.length!==t);l=!0);}catch(e){c=!0,o=e}finally{try{if(!l&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(c)throw o}}return a}}(e,t)||o(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 o(e,t){if(e){if("string"==typeof e)return i(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?i(e,t):void 0}}function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var s={format:"YYYY/MM/DD",delimiters:["/","-"],strictMode:!1};e.exports=t.default,e.exports.default=t.default}(Wy,Wy.exports);var Ky={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){return t=(0,n.default)(t,r),"string"==typeof e&&o[t.hourFormat][t.mode].test(e)};var n=function(e){return e&&e.__esModule?e:{default:e}}(By.exports);var r={hourFormat:"hour24",mode:"default"},o={hour24:{default:/^([01]?[0-9]|2[0-3]):([0-5][0-9])$/,withSeconds:/^([01]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$/},hour12:{default:/^(0?[1-9]|1[0-2]):([0-5][0-9]) (A|P)M$/,withSeconds:/^(0?[1-9]|1[0-2]):([0-5][0-9]):([0-5][0-9]) (A|P)M$/}};e.exports=t.default,e.exports.default=t.default}(Ky,Ky.exports);var Yy={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:r;if((0,n.default)(e),t.loose)return i.includes(e.toLowerCase());return o.includes(e)};
14var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);var r={loose:!1},o=["true","false","1","0"],i=[].concat(o,["yes","no"]);e.exports=t.default,e.exports.default=t.default}(Yy,Yy.exports);var Xy={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return(0,n.default)(e),c.test(e)};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);var r="(([a-zA-Z]{2,3}(-".concat("([A-Za-z]{3}(-[A-Za-z]{3}){0,2})",")?)|([a-zA-Z]{5,8}))"),o="(".concat("(\\d|[A-W]|[Y-Z]|[a-w]|[y-z])","(-[A-Za-z0-9]{2,8})+)"),i="(x(-[A-Za-z0-9]{1,8})+)",s="(".concat("((en-GB-oed)|(i-ami)|(i-bnn)|(i-default)|(i-enochian)|(i-hak)|(i-klingon)|(i-lux)|(i-mingo)|(i-navajo)|(i-pwn)|(i-tao)|(i-tay)|(i-tsu)|(sgn-BE-FR)|(sgn-BE-NL)|(sgn-CH-DE))","|").concat("((art-lojban)|(cel-gaulish)|(no-bok)|(no-nyn)|(zh-guoyu)|(zh-hakka)|(zh-min)|(zh-min-nan)|(zh-xiang))",")"),a="(-|_)",l="".concat(r,"(").concat(a).concat("([A-Za-z]{4})",")?(").concat(a).concat("([A-Za-z]{2}|\\d{3})",")?(").concat(a).concat("([A-Za-z0-9]{5,8}|(\\d[A-Z-a-z0-9]{3}))",")*(").concat(a).concat(o,")*(").concat(a).concat(i,")?"),c=new RegExp("(^".concat(i,"$)|(^").concat(s,"$)|(^").concat(l,"$)"));e.exports=t.default,e.exports.default=t.default}
14(Xy,Xy.exports);var Jy={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){if((0,n.default)(e),!r.test(e))return!1;for(var t=0,o=0;o<e.length;o++)t+=o%3==0?3*e[o]:o%3==1?7*e[o]:1*e[o];return t%10==0};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);var r=/^(?!(1[3-9])|(20)|(3[3-9])|(4[0-9])|(5[0-9])|(60)|(7[3-9])|(8[1-9])|(9[0-2])|(9[3-9]))[0-9]{9}$/;e.exports=t.default,e.exports.default=t.default}(Jy,Jy.exports);var Qy={};Object.defineProperty(Qy,"__esModule",{value:!0}),Qy.default=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"en-US",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};(0,eb.default)(e);var r=e,o=n.ignore;if(o)if(o instanceof RegExp)r=r.replace(o,"");else{if("string"!=typeof o)throw new Error("ignore should be instance of a String or RegExp");r=r.replace(new RegExp("[".concat(o.replace(/[-[\]{}()*+?.,\\^$|#\\s]/g,"\\$&"),"]"),"g"),"")}if(t in tb.alpha)return tb.alpha[t].test(r);throw new Error("Invalid locale '".concat(t,"'"))},Qy.locales=void 0;var eb=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports),tb=dy;Qy.locales=Object.keys(tb.alpha);var nb={};Object.defineProperty(nb,"__esModule",{value:!0}),nb.default=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"en-US",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};(0,rb.default)(e);var r=e,o=n.ignore;if(o)if(o instanceof RegExp)r=r.replace(o,"");else{if("string"!=typeof o)throw new Error("ignore should be instance of a String or RegExp");r=r.replace(new RegExp("[".concat(o.replace(/[-[\]{}()*+?.,\\^$|#\\s]/g,"\\$&"),"]"),"g"),"")}if(t in ob.alphanumeric)return ob.alphanumeric[t].test(r);throw new Error("Invalid locale '".concat(t,"'"))},nb.locales=void 0;var rb=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports),ob=dy;nb.locales=Object.keys(ob.alphanumeric);var ib={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){if((0,n.default)(e),t&&t.no_symbols)return o.test(e);return new RegExp("^[+-]?([0-9]*[".concat((t||{}).locale?r.decimal[t.locale]:".","])?[0-9]+$")).test(e)};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports),r=dy;var o=/^[0-9]+$/;e.exports=t.default,e.exports.default=t.default}(ib,ib.exports);var sb={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){(0,n.default)(e);var o=e.replace(/\s/g,"").toUpperCase();return t.toUpperCase()in r&&r[t].test(o)};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);var r={AM:/^[A-Z]{2}\d{7}$/,AR:/^[A-Z]{3}\d{6}$/,AT:/^[A-Z]\d{7}$/,AU:/^[A-Z]\d{7}$/,AZ:/^[A-Z]{1}\d{8}$/,BE:/^[A-Z]{2}\d{6}$/,BG:/^\d{9}$/,BR:/^[A-Z]{2}\d{6}$/,BY:/^[A-Z]{2}\d{7}$/,CA:/^[A-Z]{2}\d{6}$/,CH:/^[A-Z]\d{7}$/,CN:/^G\d{8}$|^E(?![IO])[A-Z0-9]\d{7}$/,CY:/^[A-Z](\d{6}|\d{8})$/,CZ:/^\d{8}$/,DE:/^[CFGHJKLMNPRTVWXYZ0-9]{9}$/,DK:/^\d{9}$/,DZ:/^\d{9}$/,EE:/^([A-Z]\d{7}|[A-Z]{2}\d{7})$/,ES:/^[A-Z0-9]{2}([A-Z0-9]?)\d{6}$/,FI:/^[A-Z]{2}\d{7}$/,FR:/^\d{2}[A-Z]{2}\d{5}$/,GB:/^\d{9}$/,GR:/^[A-Z]{2}\d{7}$/,HR:/^\d{9}$/,HU:/^[A-Z]{2}(\d{6}|\d{7})$/,IE:/^[A-Z0-9]{2}\d{7}$/,IN:/^[A-Z]{1}-?\d{7}$/,ID:/^[A-C]\d{7}$/,IR:/^[A-Z]\d{8}$/,IS:/^(A)\d{7}$/,IT:/^[A-Z0-9]{2}\d{7}$/,JM:/^[Aa]\d{7}$/,JP:/^[A-Z]{2}\d{7}$/,KR:/^[MS]\d{8}$/,KZ:/^[a-zA-Z]\d{7}$/,LI:/^[a-zA-Z]\d{5}$/,LT:/^[A-Z0-9]{8}$/,LU:/^[A-Z0-9]{8}$/,LV:/^[A-Z0-9]{2}\d{7}$/,LY:/^[A-Z0-9]{8}$/,MT:/^\d{7}$/,MZ:/^([A-Z]{2}\d{7})|(\d{2}[A-Z]{2}\d{5})$/,MY:/^[AHK]\d{8}$/,MX:/^\d{10,11}$/,NL:/^[A-Z]{2}[A-Z0-9]{6}\d$/,NZ:/^([Ll]([Aa]|[Dd]|[Ff]|[Hh])|[Ee]([Aa]|[Pp])|[Nn])\d{6}$/,PH:/^([A-Z](\d{6}|\d{7}[A-Z]))|([A-Z]{2}(\d{6}|\d{7}))$/,PK:/^[A-Z]{2}\d{7}$/,PL:/^[A-Z]{2}\d{7}$/,PT:/^[A-Z]\d{6}$/,RO:/^\d{8,9}$/,RU:/^\d{9}$/,SE:/^\d{8}$/,SL:/^(P)[A-Z]\d{7}$/,SK:/^[0-9A-Z]\d{7}$/,TH:/^[A-Z]{1,2}\d{6,7}$/,TR:/^[A-Z]\d{8}$/,UA:/^[A-Z]{2}\d{6}$/,US:/^\d{9}$/,ZA:/^[TAMD]\d{8}$/};e.exports=t.default,e.exports.default=t.default}(sb,sb.exports);var ab={exports:{}},lb={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){(0,n.default)(e);var i=!1===(t=t||{}).allow_leading_zeroes?r:o,s=!t.hasOwnProperty("min")||e>=t.min,a=!t.hasOwnProperty("max")||e<=t.max,l=!t.hasOwnProperty("lt")||e<t.lt,c=!t.hasOwnProperty("gt")||e>t.gt;return i.test(e)&&s&&a&&l&&c};
14var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);var r=/^(?:[-+]?(?:0|[1-9][0-9]*))$/,o=/^[-+]?[0-9]+$/;e.exports=t.default,e.exports.default=t.default}(lb,lb.exports),function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return(0,n.default)(e,{allow_leading_zeroes:!1,min:0,max:65535})};var n=function(e){return e&&e.__esModule?e:{default:e}}(lb.exports);e.exports=t.default,e.exports.default=t.default}(ab,ab.exports);var cb={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return(0,n.default)(e),e===e.toLowerCase()};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);e.exports=t.default,e.exports.default=t.default}(cb,cb.exports);var ub={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return(0,n.default)(e),e===e.toUpperCase()};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);e.exports=t.default,e.exports.default=t.default}(ub,ub.exports);var db={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){(0,n.default)(e);var i=r;(t=t||{}).allow_hyphens&&(i=o);if(!i.test(e))return!1;e=e.replace(/-/g,"");for(var s=0,a=2,l=0;l<14;l++){var c=e.substring(14-l-1,14-l),u=parseInt(c,10)*a;s+=u>=10?u%10+1:u,1===a?a+=1:a-=1}if((10-s%10)%10!==parseInt(e.substring(14,15),10))return!1;return!0};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);var r=/^[0-9]{15}$/,o=/^\d{2}-\d{6}-\d{6}-\d{1}$/;e.exports=t.default,e.exports.default=t.default}(db,db.exports);var pb={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return(0,n.default)(e),r.test(e)};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);var r=/^[\x00-\x7F]+$/;e.exports=t.default,e.exports.default=t.default}(pb,pb.exports);var fb={};Object.defineProperty(fb,"__esModule",{value:!0}),fb.default=function(e){return(0,hb.default)(e),mb.test(e)},fb.fullWidth=void 0;var hb=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);var mb=fb.fullWidth=/[^\u0020-\u007E\uFF61-\uFF9F\uFFA0-\uFFDC\uFFE8-\uFFEE0-9a-zA-Z]/;var vb={};Object.defineProperty(vb,"__esModule",{value:!0}),vb.default=function(e){return(0,gb.default)(e),yb.test(e)},vb.halfWidth=void 0;var gb=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);var yb=vb.halfWidth=/[\u0020-\u007E\uFF61-\uFF9F\uFFA0-\uFFDC\uFFE8-\uFFEE0-9a-zA-Z]/;var bb={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return(0,n.default)(e),r.fullWidth.test(e)&&o.halfWidth.test(e)};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports),r=fb,o=vb;e.exports=t.default,e.exports.default=t.default}(bb,bb.exports);var Eb={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return(0,n.default)(e),r.test(e)};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);var r=/[^\x00-\x7F]/;e.exports=t.default,e.exports.default=t.default}(Eb,Eb.exports);var _b={exports:{}},Sb={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){var n=e.join("");return new RegExp(n,t)},e.exports=t.default,e.exports.default=t.default}(Sb,Sb.exports),function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return(0,n.default)(e),o.test(e)};var n=r(ly.exports);function r(e){return e&&e.__esModule?e:{default:e}}var o=(0,r(Sb.exports).default)(["^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)","(?:-((?:0|[1-9]\\d*|\\d*[a-z-][0-9a-z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-z-][0-9a-z-]*))*))","?(?:\\+([0-9a-z-]+(?:\\.[0-9a-z-]+)*))?$"],"i");e.exports=t.default,e.exports.default=t.default}(_b,_b.exports);var xb={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return(0,n.default)(e),r.test(e)};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);var r=/[\uD800-\uDBFF][\uDC00-\uDFFF]/;e.exports=t.default,e.exports.default=t.default}(xb,xb.exports);var wb={exports:{}},Nb={exports:{}};
14!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;t.default=function(e,t){return e.some((function(e){return t===e}))},e.exports=t.default,e.exports.default=t.default}(Nb,Nb.exports),function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){if((0,r.default)(e),(t=(0,n.default)(t,a)).locale in i.decimal)return!(0,o.default)(l,e.replace(/ /g,""))&&function(e){var t=new RegExp("^[-+]?([0-9]+)?(\\".concat(i.decimal[e.locale],"[0-9]{").concat(e.decimal_digits,"})").concat(e.force_decimal?"":"?","$"));return t}(t).test(e);throw new Error("Invalid locale '".concat(t.locale,"'"))};var n=s(By.exports),r=s(ly.exports),o=s(Nb.exports),i=dy;function s(e){return e&&e.__esModule?e:{default:e}}var a={force_decimal:!1,decimal_digits:"1,",locale:"en-US"},l=["","-","+"];e.exports=t.default,e.exports.default=t.default}(wb,wb.exports);var Ab={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return(0,n.default)(e),r.test(e)};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);var r=/^(0x|0h)?[0-9A-F]+$/i;e.exports=t.default,e.exports.default=t.default}(Ab,Ab.exports);var Cb={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return(0,n.default)(e),r.test(e)};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);var r=/^(0o)?[0-7]+$/i;e.exports=t.default,e.exports.default=t.default}(Cb,Cb.exports);var Ob={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){return(0,n.default)(e),(0,r.default)(e)%parseInt(t,10)==0};var n=o(ly.exports),r=o(cy.exports);function o(e){return e&&e.__esModule?e:{default:e}}e.exports=t.default,e.exports.default=t.default}(Ob,Ob.exports);var Tb={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return(0,n.default)(e),r.test(e)};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);var r=/^#?([0-9A-F]{3}|[0-9A-F]{4}|[0-9A-F]{6}|[0-9A-F]{8})$/i;e.exports=t.default,e.exports.default=t.default}(Tb,Tb.exports);var $b={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if((0,n.default)(e),!t)return r.test(e)||o.test(e);return r.test(e)||o.test(e)||i.test(e)||s.test(e)};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);var r=/^rgb\((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]),){2}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\)$/,o=/^rgba\((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]),){3}(0?\.\d|1(\.0)?|0(\.0)?)\)$/,i=/^rgb\((([0-9]%|[1-9][0-9]%|100%),){2}([0-9]%|[1-9][0-9]%|100%)\)$/,s=/^rgba\((([0-9]%|[1-9][0-9]%|100%),){3}(0?\.\d|1(\.0)?|0(\.0)?)\)$/;e.exports=t.default,e.exports.default=t.default}($b,$b.exports);var Mb={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){(0,n.default)(e);var t=e.replace(/\s+/g," ").replace(/\s?(hsla?\(|\)|,)\s?/gi,"$1");if(-1!==t.indexOf(","))return r.test(t);return o.test(t)};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);var r=/^hsla?\(((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?))(deg|grad|rad|turn)?(,(\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%){2}(,((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%?))?\)$/i,o=/^hsla?\(((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?))(deg|grad|rad|turn)?(\s(\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%){2}\s?(\/\s((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%?)\s?)?\)$/i;e.exports=t.default,e.exports.default=t.default}(Mb,Mb.exports);var Db={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return(0,n.default)(e),r.test(e)};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);var r=/^[A-Z]{2}[0-9A-Z]{3}\d{2}\d{5}$/;e.exports=t.default,e.exports.default=t.default}(Db,Db.exports);var Ib={};
14Object.defineProperty(Ib,"__esModule",{value:!0}),Ib.default=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,Lb.default)(e),function(e,t){var n=e.replace(/[\s\-]+/gi,"").toUpperCase(),r=n.slice(0,2).toUpperCase(),o=r in kb;if(t.whitelist){if(!function(e){if(e.filter((function(e){return!(e in kb)})).length>0)return!1;return!0}(t.whitelist))return!1;if(!t.whitelist.includes(r))return!1}if(t.blacklist){if(t.blacklist.includes(r))return!1}return o&&kb[r].test(n)}(e,t)&&function(e){var t=e.replace(/[^A-Z0-9]+/gi,"").toUpperCase();return 1===(t.slice(4)+t.slice(0,4)).replace(/[A-Z]/g,(function(e){return e.charCodeAt(0)-55})).match(/\d{1,7}/g).reduce((function(e,t){return Number(e+t)%97}),"")}(e)},Ib.locales=void 0;var Lb=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);var kb={AD:/^(AD[0-9]{2})\d{8}[A-Z0-9]{12}$/,AE:/^(AE[0-9]{2})\d{3}\d{16}$/,AL:/^(AL[0-9]{2})\d{8}[A-Z0-9]{16}$/,AT:/^(AT[0-9]{2})\d{16}$/,AZ:/^(AZ[0-9]{2})[A-Z0-9]{4}\d{20}$/,BA:/^(BA[0-9]{2})\d{16}$/,BE:/^(BE[0-9]{2})\d{12}$/,BG:/^(BG[0-9]{2})[A-Z]{4}\d{6}[A-Z0-9]{8}$/,BH:/^(BH[0-9]{2})[A-Z]{4}[A-Z0-9]{14}$/,BR:/^(BR[0-9]{2})\d{23}[A-Z]{1}[A-Z0-9]{1}$/,BY:/^(BY[0-9]{2})[A-Z0-9]{4}\d{20}$/,CH:/^(CH[0-9]{2})\d{5}[A-Z0-9]{12}$/,CR:/^(CR[0-9]{2})\d{18}$/,CY:/^(CY[0-9]{2})\d{8}[A-Z0-9]{16}$/,CZ:/^(CZ[0-9]{2})\d{20}$/,DE:/^(DE[0-9]{2})\d{18}$/,DK:/^(DK[0-9]{2})\d{14}$/,DO:/^(DO[0-9]{2})[A-Z]{4}\d{20}$/,DZ:/^(DZ\d{24})$/,EE:/^(EE[0-9]{2})\d{16}$/,EG:/^(EG[0-9]{2})\d{25}$/,ES:/^(ES[0-9]{2})\d{20}$/,FI:/^(FI[0-9]{2})\d{14}$/,FO:/^(FO[0-9]{2})\d{14}$/,FR:/^(FR[0-9]{2})\d{10}[A-Z0-9]{11}\d{2}$/,GB:/^(GB[0-9]{2})[A-Z]{4}\d{14}$/,GE:/^(GE[0-9]{2})[A-Z0-9]{2}\d{16}$/,GI:/^(GI[0-9]{2})[A-Z]{4}[A-Z0-9]{15}$/,GL:/^(GL[0-9]{2})\d{14}$/,GR:/^(GR[0-9]{2})\d{7}[A-Z0-9]{16}$/,GT:/^(GT[0-9]{2})[A-Z0-9]{4}[A-Z0-9]{20}$/,HR:/^(HR[0-9]{2})\d{17}$/,HU:/^(HU[0-9]{2})\d{24}$/,IE:/^(IE[0-9]{2})[A-Z0-9]{4}\d{14}$/,IL:/^(IL[0-9]{2})\d{19}$/,IQ:/^(IQ[0-9]{2})[A-Z]{4}\d{15}$/,IR:/^(IR[0-9]{2})0\d{2}0\d{18}$/,IS:/^(IS[0-9]{2})\d{22}$/,IT:/^(IT[0-9]{2})[A-Z]{1}\d{10}[A-Z0-9]{12}$/,JO:/^(JO[0-9]{2})[A-Z]{4}\d{22}$/,KW:/^(KW[0-9]{2})[A-Z]{4}[A-Z0-9]{22}$/,KZ:/^(KZ[0-9]{2})\d{3}[A-Z0-9]{13}$/,LB:/^(LB[0-9]{2})\d{4}[A-Z0-9]{20}$/,LC:/^(LC[0-9]{2})[A-Z]{4}[A-Z0-9]{24}$/,LI:/^(LI[0-9]{2})\d{5}[A-Z0-9]{12}$/,LT:/^(LT[0-9]{2})\d{16}$/,LU:/^(LU[0-9]{2})\d{3}[A-Z0-9]{13}$/,LV:/^(LV[0-9]{2})[A-Z]{4}[A-Z0-9]{13}$/,MA:/^(MA[0-9]{26})$/,MC:/^(MC[0-9]{2})\d{10}[A-Z0-9]{11}\d{2}$/,MD:/^(MD[0-9]{2})[A-Z0-9]{20}$/,ME:/^(ME[0-9]{2})\d{18}$/,MK:/^(MK[0-9]{2})\d{3}[A-Z0-9]{10}\d{2}$/,MR:/^(MR[0-9]{2})\d{23}$/,MT:/^(MT[0-9]{2})[A-Z]{4}\d{5}[A-Z0-9]{18}$/,MU:/^(MU[0-9]{2})[A-Z]{4}\d{19}[A-Z]{3}$/,MZ:/^(MZ[0-9]{2})\d{21}$/,NL:/^(NL[0-9]{2})[A-Z]{4}\d{10}$/,NO:/^(NO[0-9]{2})\d{11}$/,PK:/^(PK[0-9]{2})[A-Z0-9]{4}\d{16}$/,PL:/^(PL[0-9]{2})\d{24}$/,PS:/^(PS[0-9]{2})[A-Z0-9]{4}\d{21}$/,PT:/^(PT[0-9]{2})\d{21}$/,QA:/^(QA[0-9]{2})[A-Z]{4}[A-Z0-9]{21}$/,RO:/^(RO[0-9]{2})[A-Z]{4}[A-Z0-9]{16}$/,RS:/^(RS[0-9]{2})\d{18}$/,SA:/^(SA[0-9]{2})\d{2}[A-Z0-9]{18}$/,SC:/^(SC[0-9]{2})[A-Z]{4}\d{20}[A-Z]{3}$/,SE:/^(SE[0-9]{2})\d{20}$/,SI:/^(SI[0-9]{2})\d{15}$/,SK:/^(SK[0-9]{2})\d{20}$/,SM:/^(SM[0-9]{2})[A-Z]{1}\d{10}[A-Z0-9]{12}$/,SV:/^(SV[0-9]{2})[A-Z0-9]{4}\d{20}$/,TL:/^(TL[0-9]{2})\d{19}$/,TN:/^(TN[0-9]{2})\d{20}$/,TR:/^(TR[0-9]{2})\d{5}[A-Z0-9]{17}$/,UA:/^(UA[0-9]{2})\d{6}[A-Z0-9]{19}$/,VA:/^(VA[0-9]{2})\d{18}$/,VG:/^(VG[0-9]{2})[A-Z0-9]{4}\d{16}$/,XK:/^(XK[0-9]{2})\d{16}$/};Ib.locales=Object.keys(kb);var Pb={exports:{}},Rb={};Object.defineProperty(Rb,"__esModule",{value:!0}),Rb.CountryCodes=void 0,Rb.default=function(e){return(0,Vb.default)(e),Bb.has(e.toUpperCase())};var Vb=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);var Bb=new Set(["AD","AE","AF","AG","AI","AL","AM","AO","AQ","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BV","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HM","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TC","TD","TF","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","YE","YT","ZA","ZM","ZW"]);Rb.CountryCodes=Bb,function(e,t){Object.defineProperty(t,"__esMo
14dule",{value:!0}),t.default=function(e){(0,n.default)(e);var t=e.slice(4,6).toUpperCase();if(!r.CountryCodes.has(t)&&"XK"!==t)return!1;return o.test(e)};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports),r=Rb;var o=/^[A-Za-z]{6}[A-Za-z0-9]{2}([A-Za-z0-9]{3})?$/;e.exports=t.default,e.exports.default=t.default}(Pb,Pb.exports);var Fb={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return(0,n.default)(e),r.test(e)};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);var r=/^[a-f0-9]{32}$/;e.exports=t.default,e.exports.default=t.default}(Fb,Fb.exports);var jb={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){return(0,n.default)(e),new RegExp("^[a-fA-F0-9]{".concat(r[t],"}$")).test(e)};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);var r={md5:32,md4:32,sha1:40,sha256:64,sha384:96,sha512:128,ripemd128:32,ripemd160:40,tiger128:32,tiger160:40,tiger192:48,crc32:8,crc32b:8};e.exports=t.default,e.exports.default=t.default}(jb,jb.exports);var Ub={exports:{}},Hb={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){(0,n.default)(e),t=(0,r.default)(t,a);var o=e.length;if(t.urlSafe)return s.test(e);if(o%4!=0||i.test(e))return!1;var l=e.indexOf("=");return-1===l||l===o-1||l===o-2&&"="===e[o-1]};var n=o(ly.exports),r=o(By.exports);function o(e){return e&&e.__esModule?e:{default:e}}var i=/[^A-Z0-9+\/=]/i,s=/^[A-Z0-9_\-]*$/i,a={urlSafe:!1};e.exports=t.default,e.exports.default=t.default}(Hb,Hb.exports),function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){(0,n.default)(e);var t=e.split(".");if(3!==t.length)return!1;return t.reduce((function(e,t){return e&&(0,r.default)(t,{urlSafe:!0})}),!0)};var n=o(ly.exports),r=o(Hb.exports);function o(e){return e&&e.__esModule?e:{default:e}}e.exports=t.default,e.exports.default=t.default}(Ub,Ub.exports);var Zb={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){(0,n.default)(e);try{t=(0,r.default)(t,s);var o=[];t.allow_primitives&&(o=[null,!1,!0]);var a=JSON.parse(e);return o.includes(a)||!!a&&"object"===i(a)}catch(e){}return!1};var n=o(ly.exports),r=o(By.exports);function o(e){return e&&e.__esModule?e:{default:e}}function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}var s={allow_primitives:!1};e.exports=t.default,e.exports.default=t.default}(Zb,Zb.exports);var Gb={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){return(0,n.default)(e),0===((t=(0,r.default)(t,i)).ignore_whitespace?e.trim().length:e.length)};var n=o(ly.exports),r=o(By.exports);function o(e){return e&&e.__esModule?e:{default:e}}var i={ignore_whitespace:!1};e.exports=t.default,e.exports.default=t.default}(Gb,Gb.exports);var zb={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){var o,i;(0,n.default)(e),"object"===r(t)?(o=t.min||0,i=t.max):(o=arguments[1]||0,i=arguments[2]);var s=e.match(/(\uFE0F|\uFE0E)/g)||[],a=e.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g)||[],l=e.length-s.length-a.length;return l>=o&&(void 0===i||l<=i)};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}e.exports=t.default,e.exports.default=t.default}(zb,zb.exports);var qb={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){(0,n.default)(e);var o=r[[void 0,null].includes(t)?"all":t];return!!o&&o.test(e)};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);var r={1:/^[0-9A-F]{8}-[0-9A-F]{4}-1[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i,2:/^[0-9A-F]{8}-[0-9A-F]{4}-2[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i,3:/^[0-9A-F]{8}-[0-9A-F]{4}-3[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i,4:/^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,5:/^[0-9A-F]{8}-[0-9A-F]{4}-5[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,7:/^[0-9A-F]{8}-[0-9A-F]{4}-7[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,all:/^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i};e.exports=t.default,e.exports.default=t.default}(qb,qb.exports);var Wb={exports:{}};
14!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return(0,n.default)(e),(0,r.default)(e)&&24===e.length};var n=o(ly.exports),r=o(Ab.exports);function o(e){return e&&e.__esModule?e:{default:e}}e.exports=t.default,e.exports.default=t.default}(Wb,Wb.exports);var Kb={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){var r=(null==t?void 0:t.comparisonDate)||t||Date().toString(),o=(0,n.default)(r),i=(0,n.default)(e);return!!(i&&o&&i>o)};var n=function(e){return e&&e.__esModule?e:{default:e}}(ay.exports);e.exports=t.default,e.exports.default=t.default}(Kb,Kb.exports);var Yb={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:String(new Date);(0,n.default)(e);var o=(0,r.default)(t),i=(0,r.default)(e);return!!(i&&o&&i<o)};var n=o(ly.exports),r=o(ay.exports);function o(e){return e&&e.__esModule?e:{default:e}}e.exports=t.default,e.exports.default=t.default}(Yb,Yb.exports);var Xb={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){var o;if((0,n.default)(e),"[object Array]"===Object.prototype.toString.call(t)){var s=[];for(o in t)({}).hasOwnProperty.call(t,o)&&(s[o]=(0,r.default)(t[o]));return s.indexOf(e)>=0}if("object"===i(t))return t.hasOwnProperty(e);if(t&&"function"==typeof t.indexOf)return t.indexOf(e)>=0;return!1};var n=o(ly.exports),r=o(Vy.exports);function o(e){return e&&e.__esModule?e:{default:e}}function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}e.exports=t.default,e.exports.default=t.default}(Xb,Xb.exports);var Jb={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){(0,n.default)(e);for(var t,r,o,i=e.replace(/[- ]+/g,""),s=0,a=i.length-1;a>=0;a--)t=i.substring(a,a+1),r=parseInt(t,10),s+=o&&(r*=2)>=10?r%10+1:r,o=!o;return!(s%10!=0||!i)};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);e.exports=t.default,e.exports.default=t.default}(Jb,Jb.exports);var Qb={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};(0,n.default)(e);var o=t.provider,a=e.replace(/[- ]+/g,"");if(o&&o.toLowerCase()in i){if(!i[o.toLowerCase()].test(a))return!1}else{if(o&&!(o.toLowerCase()in i))throw new Error("".concat(o," is not a valid credit card provider."));if(!s.some((function(e){return e.test(a)}
14)))return!1}return(0,r.default)(e)};var n=o(ly.exports),r=o(Jb.exports);function o(e){return e&&e.__esModule?e:{default:e}}var i={amex:/^3[47][0-9]{13}$/,dinersclub:/^3(?:0[0-5]|[68][0-9])[0-9]{11}$/,discover:/^6(?:011|5[0-9][0-9])[0-9]{12,15}$/,jcb:/^(?:2131|1800|35\d{3})\d{11}$/,mastercard:/^5[1-5][0-9]{2}|(222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}$/,unionpay:/^(6[27][0-9]{14}|^(81[0-9]{14,17}))$/,visa:/^(?:4[0-9]{12})(?:[0-9]{3,6})?$/},s=function(){var e=[];for(var t in i)i.hasOwnProperty(t)&&e.push(i[t]);return e}();e.exports=t.default,e.exports.default=t.default}(Qb,Qb.exports);var eE={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){if((0,n.default)(e),t in i)return i[t](e);if("any"===t){for(var r in i){if(i.hasOwnProperty(r))if((0,i[r])(e))return!0}return!1}throw new Error("Invalid locale '".concat(t,"'"))};var n=o(ly.exports),r=o(lb.exports);function o(e){return e&&e.__esModule?e:{default:e}}var i={PL:function(e){(0,n.default)(e);var t={1:1,2:3,3:7,4:9,5:1,6:3,7:7,8:9,9:1,10:3,11:0};if(null!=e&&11===e.length&&(0,r.default)(e,{allow_leading_zeroes:!0})){var o=e.split("").slice(0,-1).reduce((function(e,n,r){return e+Number(n)*t[r+1]}),0),i=o%10,s=Number(e.charAt(e.length-1));if(0===i&&0===s||s===10-i)return!0}return!1},ES:function(e){(0,n.default)(e);var t={X:0,Y:1,Z:2},r=e.trim().toUpperCase();if(!/^[0-9X-Z][0-9]{7}[TRWAGMYFPDXBNJZSQVHLCKE]$/.test(r))return!1;var o=r.slice(0,-1).replace(/[X,Y,Z]/g,(function(e){return t[e]}));return r.endsWith(["T","R","W","A","G","M","Y","F","P","D","X","B","N","J","Z","S","Q","V","H","L","C","K","E"][o%23])},FI:function(e){if((0,n.default)(e),11!==e.length)return!1;if(!e.match(/^\d{6}[\-A\+]\d{3}[0-9ABCDEFHJKLMNPRSTUVWXY]{1}$/))return!1;return"0123456789ABCDEFHJKLMNPRSTUVWXY"[(1e3*parseInt(e.slice(0,6),10)+parseInt(e.slice(7,10),10))%31]===e.slice(10,11)},IN:function(e){var t=[[0,1,2,3,4,5,6,7,8,9],[1,2,3,4,0,6,7,8,9,5],[2,3,4,0,1,7,8,9,5,6],[3,4,0,1,2,8,9,5,6,7],[4,0,1,2,3,9,5,6,7,8],[5,9,8,7,6,0,4,3,2,1],[6,5,9,8,7,1,0,4,3,2],[7,6,5,9,8,2,1,0,4,3],[8,7,6,5,9,3,2,1,0,4],[9,8,7,6,5,4,3,2,1,0]],n=[[0,1,2,3,4,5,6,7,8,9],[1,5,7,6,2,8,3,0,9,4],[5,8,0,3,7,9,6,1,4,2],[8,9,1,6,0,4,3,5,2,7],[9,4,5,3,1,2,6,8,7,0],[4,2,8,6,5,7,3,9,0,1],[2,7,9,3,8,0,6,4,1,5],[7,0,4,6,9,1,3,2,5,8]],r=e.trim();if(!/^[1-9]\d{3}\s?\d{4}\s?\d{4}$/.test(r))return!1;var o=0;return r.replace(/\s/g,"").split("").map(Number).reverse().forEach((function(e,r){o=t[o][n[r%8][e]]})),0===o},IR:function(e){if(!e.match(/^\d{10}$/))return!1;if(e="0000".concat(e).slice(e.length-6),0===parseInt(e.slice(3,9),10))return!1;for(var t=parseInt(e.slice(9,10),10),n=0,r=0;r<9;r++)n+=parseInt(e.slice(r,r+1),10)*(10-r);return(n%=11)<2&&t===n||n>=2&&t===11-n},IT:function(e){return 9===e.length&&("CA00000AA"!==e&&e.search(/C[A-Z]\d{5}[A-Z]{2}/i)>-1)},NO:function(e){var t=e.trim();if(isNaN(Number(t)))return!1;if(11!==t.length)return!1;if("00000000000"===t)return!1;var n=t.split("").map(Number),r=(11-(3*n[0]+7*n[1]+6*n[2]+1*n[3]+8*n[4]+9*n[5]+4*n[6]+5*n[7]+2*n[8])%11)%11,o=(11-(5*n[0]+4*n[1]+3*n[2]+2*n[3]+7*n[4]+6*n[5]+5*n[6]+4*n[7]+3*n[8]+2*r)%11)%11;return r===n[9]&&o===n[10]},TH:function(e){if(!e.match(/^[1-8]\d{12}$/))return!1;for(var t=0,n=0;n<12;n++)t+=parseInt(e[n],10)*(13-n);return e[12]===((11-t%11)%10).toString()},LK:function(e){return!(10!==e.length||!/^[1-9]\d{8}[vx]$/i.test(e))||!(12!==e.length||!/^[1-9]\d{11}$/i.test(e))},"he-IL":function(e){var t=e.trim();if(!/^\d{9}$/.test(t))return!1;for(var n,r=t,o=0,i=0;i<r.length;i++)o+=(n=Number(r[i])*(i%2+1))>9?n-9:n;return o%10==0},"ar-LY":function(e){var t=e.trim();return!!/^(1|2)\d{11}$/.test(t)},"ar-TN":function(e){var t=e.trim();return!!/^\d{8}$/.test(t)},"zh-CN":function(e){var t,n=["11","12","13","14","15","21","22","23","31","32","33","34","35","36","37","41","42","43","44","45","46","50","51","52","53","54","61","62","63","64","65","71","81","82","91"],r=["7","9","10","5","8","4","2","1","6","3","7","9","10","5","8","4","2"],o=["1","0","X","9","8","7","6","5","4","3","2"],i=function(e){return n.includes(e)},s=function(e){var t=parseInt(e.substring(0,4),10),n=parseInt(e.substring(4,6),10),r=parseInt(e.substring(6),10),o=new Date(t,n-1,r);return!(o>new Date)&&(o.getFullYear()===t&&o.getMonth()===n-1&&o.getDate()===r)},a=function(e){return function(e){for(var t=e.substring(0,17),n=0,i=0;i<17;i++)n+=parseInt(t.charAt(i),10)*parseInt(r[i],10);return o[n%11]}(e)===e.charAt(17).toUpperCase()};return!!/^\d{15}|(\d{17}(\d|x|X))$/.test(t=e)&&(15===t.length?function(e){var t=/^[1-9]\d{7}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}$/.test(e);
14if(!t)return!1;var n=e.substring(0,2);if(!(t=i(n)))return!1;var r="19".concat(e.substring(6,12));return!!(t=s(r))}(t):function(e){var t=/^[1-9]\d{5}[1-9]\d{3}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}(\d|x|X)$/.test(e);if(!t)return!1;var n=e.substring(0,2);if(!(t=i(n)))return!1;var r=e.substring(6,14);return!!(t=s(r))&&a(e)}(t))},"zh-HK":function(e){var t=/^[0-9]$/;if(e=(e=e.trim()).toUpperCase(),!/^[A-Z]{1,2}[0-9]{6}((\([0-9A]\))|(\[[0-9A]\])|([0-9A]))$/.test(e))return!1;8===(e=e.replace(/\[|\]|\(|\)/g,"")).length&&(e="3".concat(e));for(var n=0,r=0;r<=7;r++){n+=(t.test(e[r])?e[r]:(e[r].charCodeAt(0)-55)%11)*(9-r)}return(0===(n%=11)?"0":1===n?"A":String(11-n))===e[e.length-1]},"zh-TW":function(e){var t={A:10,B:11,C:12,D:13,E:14,F:15,G:16,H:17,I:34,J:18,K:19,L:20,M:21,N:22,O:35,P:23,Q:24,R:25,S:26,T:27,U:28,V:29,W:32,X:30,Y:31,Z:33},n=e.trim().toUpperCase();return!!/^[A-Z][0-9]{9}$/.test(n)&&Array.from(n).reduce((function(e,n,r){if(0===r){var o=t[n];return o%10*9+Math.floor(o/10)}return 9===r?(10-e%10-Number(n))%10==0:e+Number(n)*(9-r)}),0)}};e.exports=t.default,e.exports.default=t.default}(eE,eE.exports);var tE={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){(0,n.default)(e);var t=Number(e.slice(-1));return i.test(e)&&t===(s=e,a=s.slice(0,-1).split("").map((function(e,t){return Number(e)*function(e,t){return e===r||e===o?t%2==0?3:1:t%2==0?1:3}(s.length,t)})).reduce((function(e,t){return e+t}),0),l=10-a%10,l<10?l:0);var s,a,l};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);var r=8,o=14,i=/^(\d{8}|\d{13}|\d{14})$/;e.exports=t.default,e.exports.default=t.default}(tE,tE.exports);var nE={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){if((0,n.default)(e),!r.test(e))return!1;for(var t=!0,o=0,i=e.length-2;i>=0;i--)if(e[i]>="A"&&e[i]<="Z")for(var s=e[i].charCodeAt(0)-55,a=0,l=[s%10,Math.trunc(s/10)];a<l.length;a++){var c=l[a];o+=t?c>=5?1+2*(c-5):2*c:c,t=!t}else{var u=e[i].charCodeAt(0)-"0".charCodeAt(0);o+=t?u>=5?1+2*(u-5):2*u:u,t=!t}var d=10*Math.trunc((o+9)/10)-o;return+e[e.length-1]===d};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);var r=/^[A-Z]{2}[0-9A-Z]{9}[0-9]$/;e.exports=t.default,e.exports.default=t.default}(nE,nE.exports);var rE={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function e(t,s){(0,n.default)(t);var a=String((null==s?void 0:s.version)||s);if(!(null!=s&&s.version||s))return e(t,{version:10})||e(t,{version:13});var l=t.replace(/[\s-]+/g,""),c=0;if("10"===a){if(!r.test(l))return!1;for(var u=0;u<a-1;u++)c+=(u+1)*l.charAt(u);if("X"===l.charAt(9)?c+=100:c+=10*l.charAt(9),c%11==0)return!0}else if("13"===a){if(!o.test(l))return!1;for(var d=0;d<12;d++)c+=i[d%2]*l.charAt(d);if(l.charAt(12)-(10-c%10)%10==0)return!0}return!1};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);var r=/^(?:[0-9]{9}X|[0-9]{10})$/,o=/^(?:[0-9]{13})$/,i=[1,3];e.exports=t.default,e.exports.default=t.default}(rE,rE.exports);var oE={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};(0,n.default)(e);var o=r;if(o=t.require_hyphen?o.replace("?",""):o,!(o=t.case_sensitive?new RegExp(o):new RegExp(o,"i")).test(e))return!1;for(var i=e.replace("-","").toUpperCase(),s=0,a=0;a<i.length;a++){var l=i[a];s+=("X"===l?10:+l)*(8-a)}return s%11==0};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);var r="^\\d{4}-?\\d{3}[\\dX]$";e.exports=t.default,e.exports.default=t.default}(oE,oE.exports);var iE={exports:{}},sE={};Object.defineProperty(sE,"__esModule",{value:!0}),sE.iso7064Check=function(e){for(var t=10,n=0;n<e.length-1;n++)t=(parseInt(e[n],10)+t)%10==0?9:(parseInt(e[n],10)+t)%10*2%11;return(t=1===t?0:11-t)===parseInt(e[10],10)},sE.luhnCheck=function(e){for(var t=0,n=!1,r=e.length-1;r>=0;r--){if(n){var o=2*parseInt(e[r],10);t+=o>9?o.toString().split("").map((function(e){return parseInt(e,10)})).reduce((function(e,t){return e+t}),0):o}else t+=parseInt(e[r],10);n=!n}return t%10==0},sE.reverseMultiplyAndSum=function(e,t){for(var n=0,r=0;r<e.length;r++)n+=e[r]*(t-r);return n},sE.verhoeffCheck=function(e){for(var t=[[0,1,2,3,4,5,6,7,8,9],[1,2,3,4,0,6,7,8,9,5],[2,3,4,0,1,7,8,9,5,6],[3,4,0,1,2,8,9,5,6,7],[4,0,1,2,3,9,5,6,7,8],[5,9,8,7,6,0,4,3,2,1],[6,5,9,8,7,1,0,4,3,2],[7,6,5,9,8,2,1,0,4,3],[8,7,6,5,9,3,2,1,0,4],[9,8,7,6,5,4,3,2,1,0]],n=[[0,1,2,3,4,5,6,7,8,9],[1,5,7,6,2,8,3,0,9,4],[5,8,0,3,7,9,6,1,4,2],[8,9,1,6,0,4,3,5,2,7],[9,4,5,3,1,2,6,8,7,0],[4,2,8,6,5,7,3,9,0,1],[2,7,9,3,8,0,6,4,1,5],[7,0,4,6,9,1,3,2,5,8]],r=e.split("").reverse().join(""),o=0,i=0;i<r.length;i++)o=t[o][n[i%8][parseInt(r[i],10)]];return 0===o},function(e,t){function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}
14Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"en-US";(0,r.default)(e);var n=e.slice(0);if(t in p)return t in m&&(n=n.replace(m[t],"")),!!p[t].test(n)&&(!(t in f)||f[t](n));throw new Error("Invalid locale '".concat(t,"'"))};var r=a(ly.exports),o=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=n(e)&&"function"!=typeof e)return{default:e};var r=s(t);if(r&&r.has(e))return r.get(e);var o={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var l=i?Object.getOwnPropertyDescriptor(e,a):null;l&&(l.get||l.set)?Object.defineProperty(o,a,l):o[a]=e[a]}return o.default=e,r&&r.set(e,o),o}(sE),i=a(Wy.exports);function s(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(s=function(e){return e?n:t})(e)}function a(e){return e&&e.__esModule?e:{default:e}}function l(e){return function(e){if(Array.isArray(e))return c(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return c(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 c(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var u={andover:["10","12"],atlanta:["60","67"],austin:["50","53"],brookhaven:["01","02","03","04","05","06","11","13","14","16","21","22","23","25","34","51","52","54","55","56","57","58","59","65"],cincinnati:["30","32","35","36","37","38","61"],fresno:["15","24"],internet:["20","26","27","45","46","47"],kansas:["40","44"],memphis:["94","95"],ogden:["80","90"],philadelphia:["33","39","41","42","43","46","48","62","63","64","66","68","71","72","73","74","75","76","77","81","82","83","84","85","86","87","88","91","92","93","98","99"],sba:["31"]};function d(e){for(var t=!1,n=!1,r=0;r<3;r++)if(!t&&/[AEIOU]/.test(e[r]))t=!0;else if(!n&&t&&"X"===e[r])n=!0;else if(r>0){if(t&&!n&&!/[AEIOU]/.test(e[r]))return!1;if(n&&!/X/.test(e[r]))return!1}return!0}var p={"bg-BG":/^\d{10}$/,"cs-CZ":/^\d{6}\/{0,1}\d{3,4}$/,"de-AT":/^\d{9}$/,"de-DE":/^[1-9]\d{10}$/,"dk-DK":/^\d{6}-{0,1}\d{4}$/,"el-CY":/^[09]\d{7}[A-Z]$/,"el-GR":/^([0-4]|[7-9])\d{8}$/,"en-CA":/^\d{9}$/,"en-GB":/^\d{10}$|^(?!GB|NK|TN|ZZ)(?![DFIQUV])[A-Z](?![DFIQUVO])[A-Z]\d{6}[ABCD ]$/i,"en-IE":/^\d{7}[A-W][A-IW]{0,1}$/i,"en-US":/^\d{2}[- ]{0,1}\d{7}$/,"es-AR":/(20|23|24|27|30|33|34)[0-9]{8}[0-9]/,"es-ES":/^(\d{0,8}|[XYZKLM]\d{7})[A-HJ-NP-TV-Z]$/i,"et-EE":/^[1-6]\d{6}(00[1-9]|0[1-9][0-9]|[1-6][0-9]{2}|70[0-9]|710)\d$/,"fi-FI":/^\d{6}[-+A]\d{3}[0-9A-FHJ-NPR-Y]$/i,"fr-BE":/^\d{11}$/,"fr-FR":/^[0-3]\d{12}$|^[0-3]\d\s\d{2}(\s\d{3}){3}$/,"fr-LU":/^\d{13}$/,"hr-HR":/^\d{11}$/,"hu-HU":/^8\d{9}$/,"it-IT":/^[A-Z]{6}[L-NP-V0-9]{2}[A-EHLMPRST][L-NP-V0-9]{2}[A-ILMZ][L-NP-V0-9]{3}[A-Z]$/i,"lv-LV":/^\d{6}-{0,1}\d{5}$/,"mt-MT":/^\d{3,7}[APMGLHBZ]$|^([1-8])\1\d{7}$/i,"nl-NL":/^\d{9}$/,"pl-PL":/^\d{10,11}$/,"pt-BR":/(?:^\d{11}$)|(?:^\d{14}$)/,"pt-PT":/^\d{9}$/,"ro-RO":/^\d{13}$/,"sk-SK":/^\d{6}\/{0,1}\d{3,4}$/,"sl-SI":/^[1-9]\d{7}$/,"sv-SE":/^(\d{6}[-+]{0,1}\d{4}|(18|19|20)\d{6}[-+]{0,1}\d{4})$/,"uk-UA":/^\d{10}$/};p["lb-LU"]=p["fr-LU"],p["lt-LT"]=p["et-EE"],p["nl-BE"]=p["fr-BE"],p["fr-CA"]=p["en-CA"];var f={"bg-BG":function(e){var t=e.slice(0,2),n=parseInt(e.slice(2,4),10);n>40?(n-=40,t="20".concat(t)):n>20?(n-=20,t="18".concat(t)):t="19".concat(t),n<10&&(n="0".concat(n));var r="".concat(t,"/").concat(n,"/").concat(e.slice(4,6));if(!(0,i.default)(r,"YYYY/MM/DD"))return!1;for(var o=e.split("").map((function(e){return parseInt(e,10)})),s=[2,4,8,5,10,9,7,3,6],a=0,l=0;l<s.length;l++)a+=o[l]*s[l];return(a=a%11==10?0:a%11)===o[9]},"cs-CZ":function(e){e=e.replace(/\W/,"");var t=parseInt(e.slice(0,2),10);if(10===e.length)t=t<54?"20".concat(t):"19".concat(t);else{if("000"===e.slice(6))return!1;if(!(t<54))return!1;t="19".concat(t)}3===t.length&&(t=[t.slice(0,2),"0",t.slice(2)].join(""));var n=parseInt(e.slice(2,4),10);if(n>50&&(n-=50),n>20){if(parseInt(t,10)<2004)return!1;n-=20}n<10&&(n="0".concat(n));
14var r="".concat(t,"/").concat(n,"/").concat(e.slice(4,6));if(!(0,i.default)(r,"YYYY/MM/DD"))return!1;if(10===e.length&&parseInt(e,10)%11!=0){var o=parseInt(e.slice(0,9),10)%11;if(!(parseInt(t,10)<1986&&10===o))return!1;if(0!==parseInt(e.slice(9),10))return!1}return!0},"de-AT":function(e){return o.luhnCheck(e)},"de-DE":function(e){for(var t=e.split("").map((function(e){return parseInt(e,10)})),n=[],r=0;r<t.length-1;r++){n.push("");for(var i=0;i<t.length-1;i++)t[r]===t[i]&&(n[r]+=i)}if(n=n.filter((function(e){return e.length>1})),2!==n.length&&3!==n.length)return!1;if(3===n[0].length){for(var s=n[0].split("").map((function(e){return parseInt(e,10)})),a=0,l=0;l<s.length-1;l++)s[l]+1===s[l+1]&&(a+=1);if(2===a)return!1}return o.iso7064Check(e)},"dk-DK":function(e){e=e.replace(/\W/,"");var t=parseInt(e.slice(4,6),10);switch(e.slice(6,7)){case"0":case"1":case"2":case"3":t="19".concat(t);break;case"4":case"9":t=t<37?"20".concat(t):"19".concat(t);break;default:if(t<37)t="20".concat(t);else{if(!(t>58))return!1;t="18".concat(t)}}3===t.length&&(t=[t.slice(0,2),"0",t.slice(2)].join(""));var n="".concat(t,"/").concat(e.slice(2,4),"/").concat(e.slice(0,2));if(!(0,i.default)(n,"YYYY/MM/DD"))return!1;for(var r=e.split("").map((function(e){return parseInt(e,10)})),o=0,s=4,a=0;a<9;a++)o+=r[a]*s,1===(s-=1)&&(s=7);return 1!==(o%=11)&&(0===o?0===r[9]:r[9]===11-o)},"el-CY":function(e){for(var t=e.slice(0,8).split("").map((function(e){return parseInt(e,10)})),n=0,r=1;r<t.length;r+=2)n+=t[r];for(var o=0;o<t.length;o+=2)t[o]<2?n+=1-t[o]:(n+=2*(t[o]-2)+5,t[o]>4&&(n+=2));return String.fromCharCode(n%26+65)===e.charAt(8)},"el-GR":function(e){for(var t=e.split("").map((function(e){return parseInt(e,10)})),n=0,r=0;r<8;r++)n+=t[r]*Math.pow(2,8-r);return n%11%10===t[8]},"en-CA":function(e){var t=e.split(""),n=t.filter((function(e,t){return t%2})).map((function(e){return 2*Number(e)})).join("").split(""),r=t.filter((function(e,t){return!(t%2)})).concat(n).map((function(e){return Number(e)})).reduce((function(e,t){return e+t}));return r%10==0},"en-IE":function(e){var t=o.reverseMultiplyAndSum(e.split("").slice(0,7).map((function(e){return parseInt(e,10)})),8);return 9===e.length&&"W"!==e[8]&&(t+=9*(e[8].charCodeAt(0)-64)),0===(t%=23)?"W"===e[7].toUpperCase():e[7].toUpperCase()===String.fromCharCode(64+t)},"en-US":function(e){return-1!==function(){var e=[];for(var t in u)u.hasOwnProperty(t)&&e.push.apply(e,l(u[t]));return e}().indexOf(e.slice(0,2))},"es-AR":function(e){for(var t=0,n=e.split(""),r=parseInt(n.pop(),10),o=0;o<n.length;o++)t+=n[9-o]*(2+o%6);var i=11-t%11;return 11===i?i=0:10===i&&(i=9),r===i},"es-ES":function(e){var t=e.toUpperCase().split("");if(isNaN(parseInt(t[0],10))&&t.length>1){var n=0;switch(t[0]){case"Y":n=1;break;case"Z":n=2}t.splice(0,1,n)}else for(;t.length<9;)t.unshift(0);t=t.join("");var r=parseInt(t.slice(0,8),10)%23;return t[8]===["T","R","W","A","G","M","Y","F","P","D","X","B","N","J","Z","S","Q","V","H","L","C","K","E"][r]},"et-EE":function(e){var t=e.slice(1,3);switch(e.slice(0,1)){case"1":case"2":t="18".concat(t);break;case"3":case"4":t="19".concat(t);break;default:t="20".concat(t)}var n="".concat(t,"/").concat(e.slice(3,5),"/").concat(e.slice(5,7));if(!(0,i.default)(n,"YYYY/MM/DD"))return!1;for(var r=e.split("").map((function(e){return parseInt(e,10)})),o=0,s=1,a=0;a<10;a++)o+=r[a]*s,10===(s+=1)&&(s=1);if(o%11==10){o=0,s=3;for(var l=0;l<10;l++)o+=r[l]*s,10===(s+=1)&&(s=1);if(o%11==10)return 0===r[10]}return o%11===r[10]},"fi-FI":function(e){var t=e.slice(4,6);switch(e.slice(6,7)){case"+":t="18".concat(t);break;case"-":t="19".concat(t);break;default:t="20".concat(t)}var n="".concat(t,"/").concat(e.slice(2,4),"/").concat(e.slice(0,2));if(!(0,i.default)(n,"YYYY/MM/DD"))return!1;var r=parseInt(e.slice(0,6)+e.slice(7,10),10)%31;return r<10?r===parseInt(e.slice(10),10):["A","B","C","D","E","F","H","J","K","L","M","N","P","R","S","T","U","V","W","X","Y"][r-=10]===e.slice(10)},"fr-BE":function(e){if("00"!==e.slice(2,4)||"00"!==e.slice(4,6)){var t="".concat(e.slice(0,2),"/").concat(e.slice(2,4),"/").concat(e.slice(4,6));if(!(0,i.default)(t,"YY/MM/DD"))return!1}var n=97-parseInt(e.slice(0,9),10)%97,r=parseInt(e.slice(9,11),10);return n===r||(n=97-parseInt("2".concat(e.slice(0,9)),10)%97)===r},"fr-FR":function(e){return e=e.replace(/\s/g,""),parseInt(e.slice(0,10),10)%511===parseInt(e.slice(10,13),10)},"fr-LU":function(e){var t="".concat(e.slice(0,4),"/").concat(e.slice(4,6),"/").concat(e.slice(6,8));return!!(0,i.default)(t,"YYYY/MM/DD")&&(!!o.luhnCheck(e.slice(0,12))&&o.verhoeffCheck("".concat(e.slice(0,11)).concat(e[12])))},"hr-HR":function(e){return o.iso7064Check(e)},"hu-HU":function(e){for(var t=e.split("").map((function(e){return parseInt(e,10)})),n=8,r=1;r<9;r++)n+=t[r]*(r+1);return n%11===t[9]},"it-IT":function(e){var t=e.toUpperCase().split("");
14if(!d(t.slice(0,3)))return!1;if(!d(t.slice(3,6)))return!1;for(var n={L:"0",M:"1",N:"2",P:"3",Q:"4",R:"5",S:"6",T:"7",U:"8",V:"9"},r=0,o=[6,7,9,10,12,13,14];r<o.length;r++){var s=o[r];t[s]in n&&t.splice(s,1,n[t[s]])}var a={A:"01",B:"02",C:"03",D:"04",E:"05",H:"06",L:"07",M:"08",P:"09",R:"10",S:"11",T:"12"}[t[8]],l=parseInt(t[9]+t[10],10);l>40&&(l-=40),l<10&&(l="0".concat(l));var c="".concat(t[6]).concat(t[7],"/").concat(a,"/").concat(l);if(!(0,i.default)(c,"YY/MM/DD"))return!1;for(var u=0,p=1;p<t.length-1;p+=2){var f=parseInt(t[p],10);isNaN(f)&&(f=t[p].charCodeAt(0)-65),u+=f}for(var h={A:1,B:0,C:5,D:7,E:9,F:13,G:15,H:17,I:19,J:21,K:2,L:4,M:18,N:20,O:11,P:3,Q:6,R:8,S:12,T:14,U:16,V:10,W:22,X:25,Y:24,Z:23,0:1,1:0},m=0;m<t.length-1;m+=2){var v=0;if(t[m]in h)v=h[t[m]];else{var g=parseInt(t[m],10);v=2*g+1,g>4&&(v+=2)}u+=v}return String.fromCharCode(65+u%26)===t[15]},"lv-LV":function(e){var t=(e=e.replace(/\W/,"")).slice(0,2);if("32"!==t){if("00"!==e.slice(2,4)){var n=e.slice(4,6);switch(e[6]){case"0":n="18".concat(n);break;case"1":n="19".concat(n);break;default:n="20".concat(n)}
14var r="".concat(n,"/").concat(e.slice(2,4),"/").concat(t);if(!(0,i.default)(r,"YYYY/MM/DD"))return!1}for(var o=1101,s=[1,6,3,7,9,10,5,8,4,2],a=0;a<e.length-1;a++)o-=parseInt(e[a],10)*s[a];return parseInt(e[10],10)===o%11}return!0},"mt-MT":function(e){if(9!==e.length){for(var t=e.toUpperCase().split("");t.length<8;)t.unshift(0);switch(e[7]){case"A":case"P":if(0===parseInt(t[6],10))return!1;break;default:var n=parseInt(t.join("").slice(0,5),10);if(n>32e3)return!1;if(n===parseInt(t.join("").slice(5,7),10))return!1}}return!0},"nl-NL":function(e){return o.reverseMultiplyAndSum(e.split("").slice(0,8).map((function(e){return parseInt(e,10)})),9)%11===parseInt(e[8],10)},"pl-PL":function(e){if(10===e.length){for(var t=[6,5,7,2,3,4,5,6,7],n=0,r=0;r<t.length;r++)n+=parseInt(e[r],10)*t[r];return 10!==(n%=11)&&n===parseInt(e[9],10)}var o=e.slice(0,2),s=parseInt(e.slice(2,4),10);s>80?(o="18".concat(o),s-=80):s>60?(o="22".concat(o),s-=60):s>40?(o="21".concat(o),s-=40):s>20?(o="20".concat(o),s-=20):o="19".concat(o),s<10&&(s="0".concat(s));var a="".concat(o,"/").concat(s,"/").concat(e.slice(4,6));if(!(0,i.default)(a,"YYYY/MM/DD"))return!1;for(var l=0,c=1,u=0;u<e.length-1;u++)l+=parseInt(e[u],10)*c%10,(c+=2)>10?c=1:5===c&&(c+=2);return(l=10-l%10)===parseInt(e[10],10)},"pt-BR":function(e){if(11===e.length){var t,n;if(t=0,"11111111111"===e||"22222222222"===e||"33333333333"===e||"44444444444"===e||"55555555555"===e||"66666666666"===e||"77777777777"===e||"88888888888"===e||"99999999999"===e||"00000000000"===e)return!1;for(var r=1;r<=9;r++)t+=parseInt(e.substring(r-1,r),10)*(11-r);if(10===(n=10*t%11)&&(n=0),n!==parseInt(e.substring(9,10),10))return!1;t=0;for(var o=1;o<=10;o++)t+=parseInt(e.substring(o-1,o),10)*(12-o);return 10===(n=10*t%11)&&(n=0),n===parseInt(e.substring(10,11),10)}if("00000000000000"===e||"11111111111111"===e||"22222222222222"===e||"33333333333333"===e||"44444444444444"===e||"55555555555555"===e||"66666666666666"===e||"77777777777777"===e||"88888888888888"===e||"99999999999999"===e)return!1;for(var i=e.length-2,s=e.substring(0,i),a=e.substring(i),l=0,c=i-7,u=i;u>=1;u--)l+=s.charAt(i-u)*c,(c-=1)<2&&(c=9);var d=l%11<2?0:11-l%11;if(d!==parseInt(a.charAt(0),10))return!1;i+=1,s=e.substring(0,i),l=0,c=i-7;for(var p=i;p>=1;p--)l+=s.charAt(i-p)*c,(c-=1)<2&&(c=9);return(d=l%11<2?0:11-l%11)===parseInt(a.charAt(1),10)},"pt-PT":function(e){var t=11-o.reverseMultiplyAndSum(e.split("").slice(0,8).map((function(e){return parseInt(e,10)})),9)%11;return t>9?0===parseInt(e[8],10):t===parseInt(e[8],10)},"ro-RO":function(e){if("9000"!==e.slice(0,4)){var t=e.slice(1,3);switch(e[0]){case"1":case"2":t="19".concat(t);break;case"3":case"4":t="18".concat(t);break;case"5":case"6":t="20".concat(t)}var n="".concat(t,"/").concat(e.slice(3,5),"/").concat(e.slice(5,7));if(8===n.length){if(!(0,i.default)(n,"YY/MM/DD"))return!1}else if(!(0,i.default)(n,"YYYY/MM/DD"))return!1;for(var r=e.split("").map((function(e){return parseInt(e,10)})),o=[2,7,9,1,4,6,3,5,8,2,7,9],s=0,a=0;a<o.length;a++)s+=r[a]*o[a];return s%11==10?1===r[12]:r[12]===s%11}return!0},"sk-SK":function(e){if(9===e.length){if("000"===(e=e.replace(/\W/,"")).slice(6))return!1;var t=parseInt(e.slice(0,2),10);if(t>53)return!1;t=t<10?"190".concat(t):"19".concat(t);var n=parseInt(e.slice(2,4),10);n>50&&(n-=50),n<10&&(n="0".concat(n));var r="".concat(t,"/").concat(n,"/").concat(e.slice(4,6));if(!(0,i.default)(r,"YYYY/MM/DD"))return!1}return!0},"sl-SI":function(e){var t=11-o.reverseMultiplyAndSum(e.split("").slice(0,7).map((function(e){return parseInt(e,10)})),8)%11;return 10===t?0===parseInt(e[7],10):t===parseInt(e[7],10)},"sv-SE":function(e){var t=e.slice(0);e.length>11&&(t=t.slice(2));var n="",r=t.slice(2,4),s=parseInt(t.slice(4,6),10);if(e.length>11)n=e.slice(0,4);else if(n=e.slice(0,2),11===e.length&&s<60){var a=(new Date).getFullYear().toString(),l=parseInt(a.slice(0,2),10);if(a=parseInt(a,10),"-"===e[6])n=parseInt("".concat(l).concat(n),10)>a?"".concat(l-1).concat(n):"".concat(l).concat(n);else if(n="".concat(l-1).concat(n),a-parseInt(n,10)<100)return!1}s>60&&(s-=60),s<10&&(s="0".concat(s));var c="".concat(n,"/").concat(r,"/").concat(s);if(8===c.length){if(!(0,i.default)(c,"YY/MM/DD"))return!1}else if(!(0,i.default)(c,"YYYY/MM/DD"))return!1;return o.luhnCheck(e.replace(/\W/,""))},"uk-UA":function(e){for(var t=e.split("").map((function(e){return parseInt(e,10)})),n=[-1,5,7,9,4,6,10,5,7],r=0,o=0;o<n.length;o++)r+=t[o]*n[o];return r%11==10?0===t[9]:t[9]===r%11}};
14f["lb-LU"]=f["fr-LU"],f["lt-LT"]=f["et-EE"],f["nl-BE"]=f["fr-BE"],f["fr-CA"]=f["en-CA"];var h=/[-\\\/!@#$%\^&\*\(\)\+\=\[\]]+/g,m={"de-AT":h,"de-DE":/[\/\\]/g,"fr-BE":h};m["nl-BE"]=m["fr-BE"],e.exports=t.default,e.exports.default=t.default}(iE,iE.exports);var aE={};Object.defineProperty(aE,"__esModule",{value:!0}),aE.default=function(e,t,n){if((0,lE.default)(e),n&&n.strictMode&&!e.startsWith("+"))return!1;if(Array.isArray(t))return t.some((function(t){if(cE.hasOwnProperty(t)&&cE[t].test(e))return!0;return!1}));if(t in cE)return cE[t].test(e);if(!t||"any"===t){for(var r in cE){if(cE.hasOwnProperty(r))if(cE[r].test(e))return!0}return!1}throw new Error("Invalid locale '".concat(t,"'"))},aE.locales=void 0;var lE=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);var cE={"am-AM":/^(\+?374|0)(33|4[134]|55|77|88|9[13-689])\d{6}$/,"ar-AE":/^((\+?971)|0)?5[024568]\d{7}$/,"ar-BH":/^(\+?973)?(3|6)\d{7}$/,"ar-DZ":/^(\+?213|0)(5|6|7)\d{8}$/,"ar-LB":/^(\+?961)?((3|81)\d{6}|7\d{7})$/,"ar-EG":/^((\+?20)|0)?1[0125]\d{8}$/,"ar-IQ":/^(\+?964|0)?7[0-9]\d{8}$/,"ar-JO":/^(\+?962|0)?7[789]\d{7}$/,"ar-KW":/^(\+?965)([569]\d{7}|41\d{6})$/,"ar-LY":/^((\+?218)|0)?(9[1-6]\d{7}|[1-8]\d{7,9})$/,"ar-MA":/^(?:(?:\+|00)212|0)[5-7]\d{8}$/,"ar-OM":/^((\+|00)968)?(9[1-9])\d{6}$/,"ar-PS":/^(\+?970|0)5[6|9](\d{7})$/,"ar-SA":/^(!?(\+?966)|0)?5\d{8}$/,"ar-SD":/^((\+?249)|0)?(9[012369]|1[012])\d{7}$/,"ar-SY":/^(!?(\+?963)|0)?9\d{8}$/,"ar-TN":/^(\+?216)?[2459]\d{7}$/,"az-AZ":/^(\+994|0)(10|5[015]|7[07]|99)\d{7}$/,"bs-BA":/^((((\+|00)3876)|06))((([0-3]|[5-6])\d{6})|(4\d{7}))$/,"be-BY":/^(\+?375)?(24|25|29|33|44)\d{7}$/,"bg-BG":/^(\+?359|0)?8[789]\d{7}$/,"bn-BD":/^(\+?880|0)1[13456789][0-9]{8}$/,"ca-AD":/^(\+376)?[346]\d{5}$/,"cs-CZ":/^(\+?420)? ?[1-9][0-9]{2} ?[0-9]{3} ?[0-9]{3}$/,"da-DK":/^(\+?45)?\s?\d{2}\s?\d{2}\s?\d{2}\s?\d{2}$/,"de-DE":/^((\+49|0)1)(5[0-25-9]\d|6([23]|0\d?)|7([0-57-9]|6\d))\d{7,9}$/,"de-AT":/^(\+43|0)\d{1,4}\d{3,12}$/,"de-CH":/^(\+41|0)([1-9])\d{1,9}$/,"de-LU":/^(\+352)?((6\d1)\d{6})$/,"dv-MV":/^(\+?960)?(7[2-9]|9[1-9])\d{5}$/,"el-GR":/^(\+?30|0)?6(8[5-9]|9(?![26])[0-9])\d{7}$/,"el-CY":/^(\+?357?)?(9(9|6)\d{6})$/,"en-AI":/^(\+?1|0)264(?:2(35|92)|4(?:6[1-2]|76|97)|5(?:3[6-9]|8[1-4])|7(?:2(4|9)|72))\d{4}$/,"en-AU":/^(\+?61|0)4\d{8}$/,"en-AG":/^(?:\+1|1)268(?:464|7(?:1[3-9]|[28]\d|3[0246]|64|7[0-689]))\d{4}$/,"en-BM":/^(\+?1)?441(((3|7)\d{6}$)|(5[0-3][0-9]\d{4}$)|(59\d{5}$))/,"en-BS":/^(\+?1[-\s]?|0)?\(?242\)?[-\s]?\d{3}[-\s]?\d{4}$/,"en-GB":/^(\+?44|0)7\d{9}$/,"en-GG":/^(\+?44|0)1481\d{6}$/,"en-GH":/^(\+233|0)(20|50|24|54|27|57|26|56|23|28|55|59)\d{7}$/,"en-GY":/^(\+592|0)6\d{6}$/,"en-HK":/^(\+?852[-\s]?)?[456789]\d{3}[-\s]?\d{4}$/,"en-MO":/^(\+?853[-\s]?)?[6]\d{3}[-\s]?\d{4}$/,"en-IE":/^(\+?353|0)8[356789]\d{7}$/,"en-IN":/^(\+?91|0)?[6789]\d{9}$/,"en-JM":/^(\+?876)?\d{7}$/,"en-KE":/^(\+?254|0)(7|1)\d{8}$/,"fr-CF":/^(\+?236| ?)(70|75|77|72|21|22)\d{6}$/,"en-SS":/^(\+?211|0)(9[1257])\d{7}$/,"en-KI":/^((\+686|686)?)?( )?((6|7)(2|3|8)[0-9]{6})$/,"en-KN":/^(?:\+1|1)869(?:46\d|48[89]|55[6-8]|66\d|76[02-7])\d{4}$/,"en-LS":/^(\+?266)(22|28|57|58|59|27|52)\d{6}$/,"en-MT":/^(\+?356|0)?(99|79|77|21|27|22|25)[0-9]{6}$/,"en-MU":/^(\+?230|0)?\d{8}$/,"en-MW":/^(\+?265|0)(((77|88|31|99|98|21)\d{7})|(((111)|1)\d{6})|(32000\d{4}))$/,"en-NA":/^(\+?264|0)(6|8)\d{7}$/,"en-NG":/^(\+?234|0)?[789]\d{9}$/,"en-NZ":/^(\+?64|0)[28]\d{7,9}$/,"en-PG":/^(\+?675|0)?(7\d|8[18])\d{6}$/,"en-PK":/^((00|\+)?92|0)3[0-6]\d{8}$/,"en-PH":/^(09|\+639)\d{9}$/,"en-RW":/^(\+?250|0)?[7]\d{8}$/,"en-SG":/^(\+65)?[3689]\d{7}$/,"en-SL":/^(\+?232|0)\d{8}$/,"en-TZ":/^(\+?255|0)?[67]\d{8}$/,"en-UG":/^(\+?256|0)?[7]\d{8}$/,"en-US":/^((\+1|1)?( |-)?)?(\([2-9][0-9]{2}\)|[2-9][0-9]{2})( |-)?([2-9][0-9]{2}( |-)?[0-9]{4})$/,"en-ZA":/^(\+?27|0)\d{9}$/,"en-ZM":/^(\+?26)?09[567]\d{7}$/,"en-ZW":/^(\+263)[0-9]{9}$/,"en-BW":/^(\+?267)?(7[1-8]{1})\d{6}$/,"es-AR":/^\+?549(11|[2368]\d)\d{8}$/,"es-BO":/^(\+?591)?(6|7)\d{7}$/,"es-CO":/^(\+?57)?3(0(0|1|2|4|5)|1\d|2[0-4]|5(0|1))\d{7}$/,"es-CL":/^(\+?56|0)[2-9]\d{1}\d{7}$/,"es-CR":/^(\+506)?[2-8]\d{7}$/,"es-CU":/^(\+53|0053)?5\d{7}$/,"es-DO":/^(\+?1)?8[024]9\d{7}$/,"es-HN":/^(\+?504)?[9|8|3|2]\d{7}$/,"es-EC":/^(\+?593|0)([2-7]|9[2-9])\d{7}$/,"es-ES":/^(\+?34)?[6|7]\d{8}$/,"es-PE":/^(\+?51)?9\d{8}$/,"es-MX":/^(\+?52)?(1|01)?\d{10,11}$/,"es-NI":/^(\+?505)\d{7,8}$/,"es-PA":/^(\+?507)\d{7,8}$/,"es-PY":/^(\+?595|0)9[9876]\d{7}$/,"es-SV":/^(\+?503)?[67]\d{7}$/,"es-UY":/^(\+598|0)9[1-9][\d]{6}$/,"es-VE":/^(\+?58)?(2|4)\d{9}$/,"et-EE":/^(\+?372)?\s?(5|8[1-4])\s?([0-9]\s?){6,7}$/,"fa-IR":/^(\+?98[\-\s]?|0)9[0-39]\d[\-\s]?\d{3}[\-\s]?\d{4}$/,"fi-FI":/^(\+?358|0)\s?(4[0-6]|50)\s?(\d\s?){4,8}$/,"fj-FJ":/^(\+?679)?\s?\d{3}\s?\d{4}$/,"fo-FO":/^(\+?298)?\s?\d{2}\s?\d{2}\s?\d{2}$/,"fr-BF":/^(\+226|0)[67]\d{7}$/,"fr-BJ":/^(\+229)\d{8}$/,"fr-CD":/^(\+?243|0)?(8|9)\d{8}$/,"fr-CM":/^(\+?237)6[0-9]{8}$/,"fr-FR":/^(\+?33|0)[67]\d{8}$/,"fr-GF":/^(\+?594|0|00594)[67]\d{8}$/,"fr-GP":/^(\+?590|0|00590)[67]\d{8}$/,"fr-MQ":/^(\+?596|0|00596)[67]\d{8}$/,"fr-PF":/^(\+?689)?8[789]\d{6}$/,"fr-RE":/^(\+?262|0|00262)[67]\d{8}$/,"fr-WF":/^(\+681)?\d{6}$/,"he-IL":/^(\+972|0)([23489]|5[012345689]|77)[1-9]\d{6}$/,"hu-HU":/^(\+?36|06)(20|30|31|50|70)\d{7}$/,"id-ID":/^(\+?62|0)8(1[123456789]|2[1238]|3[1238]|5[12356789]|7[78]|9[56789]|8[123456789])([\s?|\d]{5,11})$/,"ir-IR":/^(\+98|0)?9\d{9}$/,"it-IT":/^(\+?39)?\s?3\d{2} ?\d{6,7}$/,"it-SM":/^((\+378)|(0549)|(\+390549)|(\+3780549))?6\d{5,9}$/,"ja-JP":/^(\+81[ \-]?(\(0\))?|0)[6789]0[ \-]?\d{4}[ \-]?\d{4}$/,"ka-GE":/^(\+?995)?(79\d{7}|5\d{8})$/,"kk-KZ":/^(\+?7|8)?7\d{9}$/,"kl-GL":/^(\+?299)?\s?\d{2}\s?\d{2}\s?\d{2}$/,"ko-KR":/^((\+?82)[ \-]?)?0?1([0|1|6|7|8|9]{1})[ \-]?\d{3,4}[ \-]?\d{4}$/,"ky-KG":/^(\+?7\s?\+?7|0)\s?\d{2}\s?\d{3}\s?\d{4}$/,"lt-LT":/^(\+370|8)\d{8}$/,"lv-LV":/^(\+?371)2\d{7}$/,"mg-MG":/^((\+?261|0)(2|3)\d)?\d{7}$/,"mn-MN":/^(\+|00|011)?976(77|81|88|91|94|95|96|99)\d{6}
14$/,"my-MM":/^(\+?959|09|9)(2[5-7]|3[1-2]|4[0-5]|6[6-9]|7[5-9]|9[6-9])[0-9]{7}$/,"ms-MY":/^(\+?60|0)1(([0145](-|\s)?\d{7,8})|([236-9](-|\s)?\d{7}))$/,"mz-MZ":/^(\+?258)?8[234567]\d{7}$/,"nb-NO":/^(\+?47)?[49]\d{7}$/,"ne-NP":/^(\+?977)?9[78]\d{8}$/,"nl-BE":/^(\+?32|0)4\d{8}$/,"nl-NL":/^(((\+|00)?31\(0\))|((\+|00)?31)|0)6{1}\d{8}$/,"nl-AW":/^(\+)?297(56|59|64|73|74|99)\d{5}$/,"nn-NO":/^(\+?47)?[49]\d{7}$/,"pl-PL":/^(\+?48)? ?([5-8]\d|45) ?\d{3} ?\d{2} ?\d{2}$/,"pt-BR":/^((\+?55\ ?[1-9]{2}\ ?)|(\+?55\ ?\([1-9]{2}\)\ ?)|(0[1-9]{2}\ ?)|(\([1-9]{2}\)\ ?)|([1-9]{2}\ ?))((\d{4}\-?\d{4})|(9[1-9]{1}\d{3}\-?\d{4}))$/,"pt-PT":/^(\+?351)?9[1236]\d{7}$/,"pt-AO":/^(\+244)\d{9}$/,"ro-MD":/^(\+?373|0)((6(0|1|2|6|7|8|9))|(7(6|7|8|9)))\d{6}$/,"ro-RO":/^(\+?40|0)\s?7\d{2}(\/|\s|\.|-)?\d{3}(\s|\.|-)?\d{3}$/,"ru-RU":/^(\+?7|8)?9\d{9}$/,"si-LK":/^(?:0|94|\+94)?(7(0|1|2|4|5|6|7|8)( |-)?)\d{7}$/,"sl-SI":/^(\+386\s?|0)(\d{1}\s?\d{3}\s?\d{2}\s?\d{2}|\d{2}\s?\d{3}\s?\d{3})$/,"sk-SK":/^(\+?421)? ?[1-9][0-9]{2} ?[0-9]{3} ?[0-9]{3}$/,"so-SO":/^(\+?252|0)((6[0-9])\d{7}|(7[1-9])\d{7})$/,"sq-AL":/^(\+355|0)6[789]\d{6}$/,"sr-RS":/^(\+3816|06)[- \d]{5,9}$/,"sv-SE":/^(\+?46|0)[\s\-]?7[\s\-]?[02369]([\s\-]?\d){7}$/,"tg-TJ":/^(\+?992)?[5][5]\d{7}$/,"th-TH":/^(\+66|66|0)\d{9}$/,"tr-TR":/^(\+?90|0)?5\d{9}$/,"tk-TM":/^(\+993|993|8)\d{8}$/,"uk-UA":/^(\+?38|8)?0\d{9}$/,"uz-UZ":/^(\+?998)?(6[125-79]|7[1-69]|88|9\d)\d{7}$/,"vi-VN":/^((\+?84)|0)((3([2-9]))|(5([25689]))|(7([0|6-9]))|(8([1-9]))|(9([0-9])))([0-9]{7})$/,"zh-CN":/^((\+|00)86)?(1[3-9]|9[28])\d{9}$/,"zh-TW":/^(\+?886\-?|0)?9\d{8}$/,"dz-BT":/^(\+?975|0)?(17|16|77|02)\d{6}$/,"ar-YE":/^(((\+|00)9677|0?7)[0137]\d{7}|((\+|00)967|0)[1-7]\d{6})$/,"ar-EH":/^(\+?212|0)[\s\-]?(5288|5289)[\s\-]?\d{5}$/,"fa-AF":/^(\+93|0)?(2{1}[0-8]{1}|[3-5]{1}[0-4]{1})(\d{7})$/};cE["en-CA"]=cE["en-US"],cE["fr-CA"]=cE["en-CA"],cE["fr-BE"]=cE["nl-BE"],cE["zh-HK"]=cE["en-HK"],cE["zh-MO"]=cE["en-MO"],cE["ga-IE"]=cE["en-IE"],cE["fr-CH"]=cE["de-CH"],cE["it-CH"]=cE["fr-CH"],aE.locales=Object.keys(cE);var uE={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return(0,n.default)(e),r.test(e)};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);var r=/^(0x)[0-9a-f]{40}$/i;e.exports=t.default,e.exports.default=t.default}(uE,uE.exports);var dE={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){return(0,r.default)(e),function(e){var t="\\d{".concat(e.digits_after_decimal[0],"}");e.digits_after_decimal.forEach((function(e,n){0!==n&&(t="".concat(t,"|\\d{").concat(e,"}"))}));var n="(".concat(e.symbol.replace(/\W/,(function(e){return"\\".concat(e)})),")").concat(e.require_symbol?"":"?"),r="-?",o="[1-9]\\d{0,2}(\\".concat(e.thousands_separator,"\\d{3})*"),i="(".concat(["0","[1-9]\\d*",o].join("|"),")?"),s="(\\".concat(e.decimal_separator,"(").concat(t,"))").concat(e.require_decimal?"":"?"),a=i+(e.allow_decimal||e.require_decimal?s:"");e.allow_negatives&&!e.parens_for_negatives&&(e.negative_sign_after_digits?a+=r:e.negative_sign_before_digits&&(a=r+a));e.allow_negative_sign_placeholder?a="( (?!\\-))?".concat(a):e.allow_space_after_symbol?a=" ?".concat(a):e.allow_space_after_digits&&(a+="( (?!$))?");e.symbol_after_digits?a+=n:a=n+a;e.allow_negatives&&(e.parens_for_negatives?a="(\\(".concat(a,"\\)|").concat(a,")"):e.negative_sign_before_digits||e.negative_sign_after_digits||(a=r+a));return new RegExp("^(?!-? )(?=.*\\d)".concat(a,"$"))}(t=(0,n.default)(t,i)).test(e)};var n=o(By.exports),r=o(ly.exports);function o(e){return e&&e.__esModule?e:{default:e}}var i={symbol:"$",require_symbol:!1,allow_space_after_symbol:!1,symbol_after_digits:!1,allow_negatives:!0,parens_for_negatives:!1,negative_sign_before_digits:!1,negative_sign_after_digits:!1,allow_negative_sign_placeholder:!1,thousands_separator:",",decimal_separator:".",allow_decimal:!0,require_decimal:!1,digits_after_decimal
14:[2],allow_space_after_digits:!1};e.exports=t.default,e.exports.default=t.default}(dE,dE.exports);var pE={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return(0,n.default)(e),r.test(e)||o.test(e)};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);var r=/^(bc1)[a-z0-9]{25,39}$/,o=/^(1|3)[A-HJ-NP-Za-km-z1-9]{25,39}$/;e.exports=t.default,e.exports.default=t.default}(pE,pE.exports);var fE={};Object.defineProperty(fE,"__esModule",{value:!0}),fE.isFreightContainerID=void 0,fE.isISO6346=gE;var hE=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);var mE=/^[A-Z]{3}(U[0-9]{7})|([J,Z][0-9]{6,7})$/,vE=/^[0-9]$/;function gE(e){if((0,hE.default)(e),e=e.toUpperCase(),!mE.test(e))return!1;if(11===e.length){for(var t=0,n=0;n<e.length-1;n++)if(vE.test(e[n]))t+=e[n]*Math.pow(2,n);else{var r=e.charCodeAt(n)-55;t+=(r<11?r:r>=11&&r<=20?12+r%11:r>=21&&r<=30?23+r%21:34+r%31)*Math.pow(2,n)}var o=t%11;return Number(e[e.length-1])===o}return!0}fE.isFreightContainerID=gE;var yE={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return(0,n.default)(e),r.has(e)};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);var r=new Set(["aa","ab","ae","af","ak","am","an","ar","as","av","ay","az","az","ba","be","bg","bh","bi","bm","bn","bo","br","bs","ca","ce","ch","co","cr","cs","cu","cv","cy","da","de","dv","dz","ee","el","en","eo","es","et","eu","fa","ff","fi","fj","fo","fr","fy","ga","gd","gl","gn","gu","gv","ha","he","hi","ho","hr","ht","hu","hy","hz","ia","id","ie","ig","ii","ik","io","is","it","iu","ja","jv","ka","kg","ki","kj","kk","kl","km","kn","ko","kr","ks","ku","kv","kw","ky","la","lb","lg","li","ln","lo","lt","lu","lv","mg","mh","mi","mk","ml","mn","mr","ms","mt","my","na","nb","nd","ne","ng","nl","nn","no","nr","nv","ny","oc","oj","om","or","os","pa","pi","pl","ps","pt","qu","rm","rn","ro","ru","rw","sa","sc","sd","se","sg","si","sk","sl","sm","sn","so","sq","sr","ss","st","su","sv","sw","ta","te","tg","th","ti","tk","tl","tn","to","tr","ts","tt","tw","ty","ug","uk","ur","uz","ve","vi","vo","wa","wo","xh","yi","yo","za","zh","zu"]);e.exports=t.default,e.exports.default=t.default}
14(yE,yE.exports);var bE={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};(0,n.default)(e);var s=t.strictSeparator?o.test(e):r.test(e);return s&&t.strict?i(e):s};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);var r=/^([\+-]?\d{4}(?!\d{2}\b))((-?)((0[1-9]|1[0-2])(\3([12]\d|0[1-9]|3[01]))?|W([0-4]\d|5[0-3])(-?[1-7])?|(00[1-9]|0[1-9]\d|[12]\d{2}|3([0-5]\d|6[1-6])))([T\s]((([01]\d|2[0-3])((:?)[0-5]\d)?|24:?00)([\.,]\d+(?!:))?)?(\17[0-5]\d([\.,]\d+)?)?([zZ]|([\+-])([01]\d|2[0-3]):?([0-5]\d)?)?)?)?$/,o=/^([\+-]?\d{4}(?!\d{2}\b))((-?)((0[1-9]|1[0-2])(\3([12]\d|0[1-9]|3[01]))?|W([0-4]\d|5[0-3])(-?[1-7])?|(00[1-9]|0[1-9]\d|[12]\d{2}|3([0-5]\d|6[1-6])))([T]((([01]\d|2[0-3])((:?)[0-5]\d)?|24:?00)([\.,]\d+(?!:))?)?(\17[0-5]\d([\.,]\d+)?)?([zZ]|([\+-])([01]\d|2[0-3]):?([0-5]\d)?)?)?)?$/,i=function(e){var t=e.match(/^(\d{4})-?(\d{3})([ T]{1}\.*|$)/);if(t){var n=Number(t[1]),r=Number(t[2]);return n%4==0&&n%100!=0||n%400==0?r<=366:r<=365}var o=e.match(/(\d{4})-?(\d{0,2})-?(\d*)/).map(Number),i=o[1],s=o[2],a=o[3],l=s?"0".concat(s).slice(-2):s,c=a?"0".concat(a).slice(-2):a,u=new Date("".concat(i,"-").concat(l||"01","-").concat(c||"01"));return!s||!a||u.getUTCFullYear()===i&&u.getUTCMonth()+1===s&&u.getUTCDate()===a};e.exports=t.default,e.exports.default=t.default}(bE,bE.exports);var EE={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return(0,n.default)(e),u.test(e)};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);var r=/([01][0-9]|2[0-3])/,o=/[0-5][0-9]/,i=new RegExp("[-+]".concat(r.source,":").concat(o.source)),s=new RegExp("([zZ]|".concat(i.source,")")),a=new RegExp("".concat(r.source,":").concat(o.source,":").concat(/([0-5][0-9]|60)/.source).concat(/(\.[0-9]+)?/.source)),l=new RegExp("".concat(/[0-9]{4}/.source,"-").concat(/(0[1-9]|1[0-2])/.source,"-").concat(/([12]\d|0[1-9]|3[01])/.source)),c=new RegExp("".concat(a.source).concat(s.source)),u=new RegExp("^".concat(l.source,"[ tT]").concat(c.source,"$"));e.exports=t.default,e.exports.default=t.default}(EE,EE.exports);var _E={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return(0,n.default)(e),r.has(e.toUpperCase())};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);var r=new Set(["AFG","ALA","ALB","DZA","ASM","AND","AGO","AIA","ATA","ATG","ARG","ARM","ABW","AUS","AUT","AZE","BHS","BHR","BGD","BRB","BLR","BEL","BLZ","BEN","BMU","BTN","BOL","BES","BIH","BWA","BVT","BRA","IOT","BRN","BGR","BFA","BDI","KHM","CMR","CAN","CPV","CYM","CAF","TCD","CHL","CHN","CXR","CCK","COL","COM","COG","COD","COK","CRI","CIV","HRV","CUB","CUW","CYP","CZE","DNK","DJI","DMA","DOM","ECU","EGY","SLV","GNQ","ERI","EST","ETH","FLK","FRO","FJI","FIN","FRA","GUF","PYF","ATF","GAB","GMB","GEO","DEU","GHA","GIB","GRC","GRL","GRD","GLP","GUM","GTM","GGY","GIN","GNB","GUY","HTI","HMD","VAT","HND","HKG","HUN","ISL","IND","IDN","IRN","IRQ","IRL","IMN","ISR","ITA","JAM","JPN","JEY","JOR","KAZ","KEN","KIR","PRK","KOR","KWT","KGZ","LAO","LVA","LBN","LSO","LBR","LBY","LIE","LTU","LUX","MAC","MKD","MDG","MWI","MYS","MDV","MLI","MLT","MHL","MTQ","MRT","MUS","MYT","MEX","FSM","MDA","MCO","MNG","MNE","MSR","MAR","MOZ","MMR","NAM","NRU","NPL","NLD","NCL","NZL","NIC","NER","NGA","NIU","NFK","MNP","NOR","OMN","PAK","PLW","PSE","PAN","PNG","PRY","PER","PHL","PCN","POL","PRT","PRI","QAT","REU","ROU","RUS","RWA","BLM","SHN","KNA","LCA","MAF","SPM","VCT","WSM","SMR","STP","SAU","SEN","SRB","SYC","SLE","SGP","SXM","SVK","SVN","SLB","SOM","ZAF","SGS","SSD","ESP","LKA","SDN","SUR","SJM","SWZ","SWE","CHE","SYR","TWN","TJK","TZA","THA","TLS","TGO","TKL","TON","TTO","TUN","TUR","TKM","TCA","TUV","UGA","UKR","ARE","GBR","USA","UMI","URY","UZB","VUT","VEN","VNM","VGB","VIR","WLF","ESH","YEM","ZMB","ZWE"]);e.exports=t.default,e.exports.default=t.default}(_E,_E.exports);var SE={};Object.defineProperty(SE,"__esModule",{value:!0}),SE.CurrencyCodes=void 0,SE.default=function(e){return(0,xE.default)(e),wE.has(e.toUpperCase())};
14var xE=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);var wE=new Set(["AED","AFN","ALL","AMD","ANG","AOA","ARS","AUD","AWG","AZN","BAM","BBD","BDT","BGN","BHD","BIF","BMD","BND","BOB","BOV","BRL","BSD","BTN","BWP","BYN","BZD","CAD","CDF","CHE","CHF","CHW","CLF","CLP","CNY","COP","COU","CRC","CUC","CUP","CVE","CZK","DJF","DKK","DOP","DZD","EGP","ERN","ETB","EUR","FJD","FKP","GBP","GEL","GHS","GIP","GMD","GNF","GTQ","GYD","HKD","HNL","HRK","HTG","HUF","IDR","ILS","INR","IQD","IRR","ISK","JMD","JOD","JPY","KES","KGS","KHR","KMF","KPW","KRW","KWD","KYD","KZT","LAK","LBP","LKR","LRD","LSL","LYD","MAD","MDL","MGA","MKD","MMK","MNT","MOP","MRU","MUR","MVR","MWK","MXN","MXV","MYR","MZN","NAD","NGN","NIO","NOK","NPR","NZD","OMR","PAB","PEN","PGK","PHP","PKR","PLN","PYG","QAR","RON","RSD","RUB","RWF","SAR","SBD","SCR","SDG","SEK","SGD","SHP","SLE","SLL","SOS","SRD","SSP","STN","SVC","SYP","SZL","THB","TJS","TMT","TND","TOP","TRY","TTD","TWD","TZS","UAH","UGX","USD","USN","UYI","UYU","UYW","UZS","VES","VND","VUV","WST","XAF","XAG","XAU","XBA","XBB","XBC","XBD","XCD","XDR","XOF","XPD","XPF","XPT","XSU","XTS","XUA","XXX","YER","ZAR","ZMW","ZWL"]);SE.CurrencyCodes=wE;var NE={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){if((0,n.default)(e),(t=(0,r.default)(t,a)).crockford)return s.test(e);if(e.length%8==0&&i.test(e))return!0;return!1};var n=o(ly.exports),r=o(By.exports);function o(e){return e&&e.__esModule?e:{default:e}}var i=/^[A-Z2-7]+=*$/,s=/^[A-HJKMNP-TV-Z0-9]+$/,a={crockford:!1};e.exports=t.default,e.exports.default=t.default}
14(NE,NE.exports);var AE={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){if((0,n.default)(e),r.test(e))return!0;return!1};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);var r=/^[A-HJ-NP-Za-km-z1-9]*$/;e.exports=t.default,e.exports.default=t.default}(AE,AE.exports);var CE={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){(0,n.default)(e);var t=e.split(",");if(t.length<2)return!1;var s=t.shift().trim().split(";"),a=s.shift();if("data:"!==a.slice(0,5))return!1;var l=a.slice(5);if(""!==l&&!r.test(l))return!1;for(var c=0;c<s.length;c++)if((c!==s.length-1||"base64"!==s[c].toLowerCase())&&!o.test(s[c]))return!1;for(var u=0;u<t.length;u++)if(!i.test(t[u]))return!1;return!0};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);var r=/^[a-z]+\/[a-z0-9\-\+\._]+$/i,o=/^[a-z\-]+=[a-z0-9\-]+$/i,i=/^[a-z0-9!\$&'\(\)\*\+,;=\-\._~:@\/\?%\s]*$/i;e.exports=t.default,e.exports.default=t.default}(CE,CE.exports);var OE={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){if((0,n.default)(e),0!==e.indexOf("magnet:?"))return!1;return r.test(e)};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);var r=/(?:^magnet:\?|[^?&]&)xt(?:\.1)?=urn:(?:(?:aich|bitprint|btih|ed2k|ed2khash|kzhash|md5|sha1|tree:tiger):[a-z0-9]{32}(?:[a-z0-9]{8})?|btmh:1220[a-z0-9]{64})(?:$|&)/i;e.exports=t.default,e.exports.default=t.default}(OE,OE.exports);var TE={exports:{}},$E={exports:{}},ME={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){if((0,n.default)(e),t){var r=new RegExp("[".concat(t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"]+$"),"g");return e.replace(r,"")}var o=e.length-1;for(;/\s/.test(e.charAt(o));)o-=1;return e.slice(0,o+1)};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);e.exports=t.default,e.exports.default=t.default}(ME,ME.exports);var DE={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){(0,n.default)(e);var r=t?new RegExp("^[".concat(t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"]+"),"g"):/^\s+/g;return e.replace(r,"")};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);e.exports=t.default,e.exports.default=t.default}(DE,DE.exports),function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){return(0,n.default)((0,r.default)(e,t),t)};var n=o(ME.exports),r=o(DE.exports);function o(e){return e&&e.__esModule?e:{default:e}}e.exports=t.default,e.exports.default=t.default}($E,$E.exports),function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){if((0,o.default)(e),0!==e.indexOf("mailto:"))return!1;var i=s(e.replace("mailto:","").split("?"),2),l=i[0],c=i[1],u=void 0===c?"":c;if(!l&&!u)return!0;var d=function(e){var t=new Set(["subject","body","cc","bcc"]),n={cc:"",bcc:""},r=!1,o=e.split("&");if(o.length>4)return!1;var i,l=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=a(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,s=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){l=!0,i=e},f:function(){try{s||null==n.return||n.return()}finally{if(l)throw i}}}}(o);try{for(l.s();!(i=l.n()).done;){var c=s(i.value.split("="),2),u=c[0],d=c[1];if(u&&!t.has(u)){r=!0;break}!d||"cc"!==u&&"bcc"!==u||(n[u]=d),u&&t.delete(u)}}catch(e){l.e(e)}finally{l.f()}return!r&&n}(u);if(!d)return!1;return"".concat(l,",").concat(d.cc,",").concat(d.bcc).split(",").every((function(e){return!(e=(0,n.default)(e," "))||(0,r.default)(e,t)}))};var n=i($E.exports),r=i(jy.exports),o=i(ly.exports);
14function i(e){return e&&e.__esModule?e:{default:e}}function s(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,i,s,a=[],l=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=i.call(n)).done)&&(a.push(r.value),a.length!==t);l=!0);}catch(e){c=!0,o=e}finally{try{if(!l&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(c)throw o}}return a}}(e,t)||a(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 a(e,t){if(e){if("string"==typeof e)return l(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?l(e,t):void 0}}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}e.exports=t.default,e.exports.default=t.default}(TE,TE.exports);var IE={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return(0,n.default)(e),r.test(e)||o.test(e)||i.test(e)};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);var r=/^(application|audio|font|image|message|model|multipart|text|video)\/[a-zA-Z0-9\.\-\+_]{1,100}$/i,o=/^text\/[a-zA-Z0-9\.\-\+]{1,100};\s?charset=("[a-zA-Z0-9\.\-\+\s]{0,70}"|[a-zA-Z0-9\.\-\+]{0,70})(\s?\([a-zA-Z0-9\.\-\+\s]{1,20}\))?$/i,i=/^multipart\/[a-zA-Z0-9\.\-\+]{1,100}(;\s?(boundary|charset)=("[a-zA-Z0-9\.\-\+\s]{0,70}"|[a-zA-Z0-9\.\-\+]{0,70})(\s?\([a-zA-Z0-9\.\-\+\s]{1,20}\))?){0,2}$/i;e.exports=t.default,e.exports.default=t.default}(IE,IE.exports);var LE={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){if((0,n.default)(e),t=(0,r.default)(t,c),!e.includes(","))return!1;var o=e.split(",");if(o[0].startsWith("(")&&!o[1].endsWith(")")||o[1].endsWith(")")&&!o[0].startsWith("("))return!1;if(t.checkDMS)return a.test(o[0])&&l.test(o[1]);return i.test(o[0])&&s.test(o[1])};var n=o(ly.exports),r=o(By.exports);function o(e){return e&&e.__esModule?e:{default:e}}var i=/^\(?[+-]?(90(\.0+)?|[1-8]?\d(\.\d+)?)$/,s=/^\s?[+-]?(180(\.0+)?|1[0-7]\d(\.\d+)?|\d{1,2}(\.\d+)?)\)?$/,a=/^(([1-8]?\d)\D+([1-5]?\d|60)\D+([1-5]?\d|60)(\.\d+)?|90\D+0\D+0)\D+[NSns]?$/i,l=/^\s*([1-7]?\d{1,2}\D+([1-5]?\d|60)\D+([1-5]?\d|60)(\.\d+)?|180\D+0\D+0)\D+[EWew]?$/i,c={checkDMS:!1};e.exports=t.default,e.exports.default=t.default}(LE,LE.exports);var kE={};Object.defineProperty(kE,"__esModule",{value:!0}),kE.default=function(e,t){if((0,PE.default)(e),t in jE)return jE[t].test(e);if("any"===t){for(var n in jE){if(jE.hasOwnProperty(n))if(jE[n].test(e))return!0}return!1}throw new Error("Invalid locale '".concat(t,"'"))},kE.locales=void 0;var PE=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);var RE=/^\d{3}$/,VE=/^\d{4}$/,BE=/^\d{5}$/,FE=/^\d{6}$/,jE={AD:/^AD\d{3}$/,AT:VE,AU:VE,AZ:/^AZ\d{4}$/,BA:/^([7-8]\d{4}$)/,BE:VE,BG:VE,BR:/^\d{5}-\d{3}$/,BY:/^2[1-4]\d{4}$/,CA:/^[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJ-NPRSTV-Z][\s\-]?\d[ABCEGHJ-NPRSTV-Z]\d$/i,CH:VE,CN:/^(0[1-7]|1[012356]|2[0-7]|3[0-6]|4[0-7]|5[1-7]|6[1-7]|7[1-5]|8[1345]|9[09])\d{4}$/,CZ:/^\d{3}\s?\d{2}$/,DE:BE,DK:VE,DO:BE,DZ:BE,EE:BE,ES:/^(5[0-2]{1}|[0-4]{1}\d{1})\d{3}$/,FI:BE,FR:/^\d{2}\s?\d{3}$/,GB:/^(gir\s?0aa|[a-z]{1,2}\d[\da-z]?\s?(\d[a-z]{2})?)$/i,GR:/^\d{3}\s?\d{2}$/,HR:/^([1-5]\d{4}$)/,HT:/^HT\d{4}$/,HU:VE,ID:BE,IE:/^(?!.*(?:o))[A-Za-z]\d[\dw]\s\w{4}$/i,IL:/^(\d{5}|\d{7})$/,IN:/^((?!10|29|35|54|55|65|66|86|87|88|89)[1-9][0-9]{5})$/,IR:/^(?!(\d)\1{3})[13-9]{4}[1346-9][013-9]{5}$/,IS:RE,IT:BE,JP:/^\d{3}\-\d{4}$/,KE:BE,KR:/^(\d{5}|\d{6})$/,LI:/^(948[5-9]|949[0-7])$/,LT:/^LT\-\d{5}$/,LU:VE,LV:/^LV\-\d{4}$/,LK:BE,MG:RE,MX:BE,MT:/^[A-Za-z]{3}\s{0,1}\d{4}$/,MY:BE,NL:/^[1-9]\d{3}\s?(?!sa|sd|ss)[a-z]{2}$/i,NO:VE,NP:/^(10|21|22|32|33|34|44|45|56|57)\d{3}$|^(977)$/i,NZ:VE,PL:/^\d{2}\-\d{3}$/,PR:/^00[679]\d{2}([ -]\d{4})?$/,PT:/^\d{4}\-\d{3}?$/,RO:FE,RU:FE,SA:BE,SE:/^[1-9]\d{2}\s?\d{2}$/,SG:FE,SI:VE,SK:/^\d{3}\s?\d{2}$/,TH:BE,TN:VE,TW:/^\d{3}(\d{2})?$/,UA:BE,US:/^\d{5}(-\d{4})?$/,ZA:VE,ZM:BE};kE.locales=Object.keys(jE);var UE={exports:{}};
14!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return(0,n.default)(e),e.replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(/</g,"<").replace(/>/g,">").replace(/\//g,"/").replace(/\\/g,"\").replace(/`/g,"`")};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);e.exports=t.default,e.exports.default=t.default}(UE,UE.exports);var HE={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return(0,n.default)(e),e.replace(/"/g,'"').replace(/'/g,"'").replace(/</g,"<").replace(/>/g,">").replace(///g,"/").replace(/\/g,"\\").replace(/`/g,"`").replace(/&/g,"&")};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);e.exports=t.default,e.exports.default=t.default}(HE,HE.exports);var ZE={exports:{}},GE={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){return(0,n.default)(e),e.replace(new RegExp("[".concat(t,"]+"),"g"),"")};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);e.exports=t.default,e.exports.default=t.default}(GE,GE.exports),function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){(0,n.default)(e);var o=t?"\\x00-\\x09\\x0B\\x0C\\x0E-\\x1F\\x7F":"\\x00-\\x1F\\x7F";return(0,r.default)(e,o)};var n=o(ly.exports),r=o(GE.exports);function o(e){return e&&e.__esModule?e:{default:e}}e.exports=t.default,e.exports.default=t.default}(ZE,ZE.exports);var zE={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){return(0,n.default)(e),e.replace(new RegExp("[^".concat(t,"]+"),"g"),"")};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);e.exports=t.default,e.exports.default=t.default}(zE,zE.exports);var qE={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){(0,n.default)(e);for(var r=e.length-1;r>=0;r--)if(-1===t.indexOf(e[r]))return!1;return!0};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);e.exports=t.default,e.exports.default=t.default}(qE,qE.exports);var WE={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){t=(0,n.default)(t,r);var c=e.split("@"),u=c.pop(),d=[c.join("@"),u];if(d[1]=d[1].toLowerCase(),"gmail.com"===d[1]||"googlemail.com"===d[1]){if(t.gmail_remove_subaddress&&(d[0]=d[0].split("+")[0]),t.gmail_remove_dots&&(d[0]=d[0].replace(/\.+/g,l)),!d[0].length)return!1;(t.all_lowercase||t.gmail_lowercase)&&(d[0]=d[0].toLowerCase()),d[1]=t.gmail_convert_googlemaildotcom?"gmail.com":d[1]}else if(o.indexOf(d[1])>=0){if(t.icloud_remove_subaddress&&(d[0]=d[0].split("+")[0]),!d[0].length)return!1;(t.all_lowercase||t.icloud_lowercase)&&(d[0]=d[0].toLowerCase())}else if(i.indexOf(d[1])>=0){if(t.outlookdotcom_remove_subaddress&&(d[0]=d[0].split("+")[0]),!d[0].length)return!1;(t.all_lowercase||t.outlookdotcom_lowercase)&&(d[0]=d[0].toLowerCase())}else if(s.indexOf(d[1])>=0){if(t.yahoo_remove_subaddress){var p=d[0].split("-");d[0]=p.length>1?p.slice(0,-1).join("-"):p[0]}if(!d[0].length)return!1;(t.all_lowercase||t.yahoo_lowercase)&&(d[0]=d[0].toLowerCase())}else a.indexOf(d[1])>=0?((t.all_lowercase||t.yandex_lowercase)&&(d[0]=d[0].toLowerCase()),d[1]="yandex.ru"):t.all_lowercase&&(d[0]=d[0].toLowerCase());return d.join("@")};var n=function(e){return e&&e.__esModule?e:{default:e}}(By.exports);var r={all_lowercase:!0,gmail_lowercase:!0,gmail_remove_dots:!0,gmail_remove_subaddress:!0,gmail_convert_googlemaildotcom:!0,outlookdotcom_lowercase:!0,outlookdotcom_remove_subaddress:!0,yahoo_lowercase:!0,yahoo_remove_subaddress:!0,yandex_lowercase:!0,icloud_lowercase:!0,icloud_remove_subaddress:!0},o=["icloud.com","me.com"],i=["hotmail.at","hotmail.be","hotmail.ca","hotmail.cl","hotmail.co.il","hotmail.co.nz","hotmail.co.th","hotmail.co.uk","hotmail.com","hotmail.com.ar","hotmail.com.au","hotmail.com.br","hotmail.com.gr","hotmail.com.mx","hotmail.com.pe","hotmail.com.tr","hotmail.com.vn","hotmail.cz","hotmail.de","hotmail.dk","hotmail.es","hotmail.fr","hotmail.hu","hotmail.id","hotmail.ie","hotmail.in","hotmail.it","hotmail.jp","hotmail.kr","hotmail.lv","hotmail.my","hotmail.ph","hotmail.pt","hotmail.sa","hotmail.sg","hotmail.sk","live.be","live.co.uk","live.com","live.com.ar","live.com.mx","live.de","live.es","live.eu","live.fr","live.it","live.nl","msn.com","outlook.at","outlook.be","outlook.cl","outlook.co.il","outlook.co.nz","outlook.co.th","outlook.com","outlook.com.ar","outlook.com.au","outlook.com.br","outlook.com.gr","outlook.com.pe","outlook.com.tr","outlook.com.vn","outlook.cz","outlook.de","outlook.dk","outlook.es","outlook.fr","outlook.hu","outlook.id","outlook.ie","outlook.in","outlook.it","outlook.jp","outlook.kr","outlook.lv","outlook.my","outlook.ph","outlook.pt","outlook.sa","outlook.sg","outlook.sk","passport.com"],s=["rocketmail.com","yahoo.ca","yahoo.co.uk","yahoo.com","yahoo.de","yahoo.fr","yahoo.in","yahoo.it","ymail.com"],a=["yandex.ru","yandex.ua","yandex.kz","yandex.com","yandex.by","ya.ru"];function l(e){return e.length>1?e:""}e.exports=t.default,e.exports.default=t.default}
14(WE,WE.exports);var KE={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return(0,n.default)(e),r.test(e)};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);var r=/^[^\s-_](?!.*?[-_]{2,})[a-z0-9-\\][^\s]*[^-_\s]$/;e.exports=t.default,e.exports.default=t.default}(KE,KE.exports);var YE={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){if((0,n.default)(e),t in r)return r[t](e);if("any"===t){for(var o in r){if((0,r[o])(e))return!0}return!1}throw new Error("Invalid locale '".concat(t,"'"))};var n=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports);var r={"cs-CZ":function(e){return/^(([ABCDEFHIJKLMNPRSTUVXYZ]|[0-9])-?){5,8}$/.test(e)},"de-DE":function(e){return/^((A|AA|AB|AC|AE|AH|AK|AM|AN|AÃ|AP|AS|AT|AU|AW|AZ|B|BA|BB|BC|BE|BF|BH|BI|BK|BL|BM|BN|BO|BÃ|BS|BT|BZ|C|CA|CB|CE|CO|CR|CW|D|DA|DD|DE|DH|DI|DL|DM|DN|DO|DU|DW|DZ|E|EA|EB|ED|EE|EF|EG|EH|EI|EL|EM|EN|ER|ES|EU|EW|F|FB|FD|FF|FG|FI|FL|FN|FO|FR|FS|FT|FÃ|FW|FZ|G|GA|GC|GD|GE|GF|GG|GI|GK|GL|GM|GN|GÃ|GP|GR|GS|GT|GÃ|GV|GW|GZ|H|HA|HB|HC|HD|HE|HF|HG|HH|HI|HK|HL|HM|HN|HO|HP|HR|HS|HU|HV|HX|HY|HZ|IK|IL|IN|IZ|J|JE|JL|K|KA|KB|KC|KE|KF|KG|KH|KI|KK|KL|KM|KN|KO|KR|KS|KT|KU|KW|KY|L|LA|LB|LC|LD|LF|LG|LH|LI|LL|LM|LN|LÃ|LP|LR|LU|M|MA|MB|MC|MD|ME|MG|MH|MI|MK|ML|MM|MN|MO|MQ|MR|MS|MÃ|MW|MY|MZ|N|NB|ND|NE|NF|NH|NI|NK|NM|NÃ|NP|NR|NT|NU|NW|NY|NZ|OA|OB|OC|OD|OE|OF|OG|OH|OK|OL|OP|OS|OZ|P|PA|PB|PE|PF|PI|PL|PM|PN|PR|PS|PW|PZ|R|RA|RC|RD|RE|RG|RH|RI|RL|RM|RN|RO|RP|RS|RT|RU|RV|RW|RZ|S|SB|SC|SE|SG|SI|SK|SL|SM|SN|SO|SP|SR|ST|SU|SW|SY|SZ|TE|TF|TG|TO|TP|TR|TS|TT|TÃ|ÃB|UE|UH|UL|UM|UN|V|VB|VG|VK|VR|VS|W|WA|WB|WE|WF|WI|WK|WL|WM|WN|WO|WR|WS|WT|WÃ|WW|WZ|Z|ZE|ZI|ZP|ZR|ZW|ZZ)[- ]?[A-Z]{1,2}[- ]?\d{1,4}|(ABG|ABI|AIB|AIC|ALF|ALZ|ANA|ANG|ANK|APD|ARN|ART|ASL|ASZ|AUR|AZE|BAD|BAR|BBG|BCH|BED|BER|BGD|BGL|BID|BIN|BIR|BIT|BIW|BKS|BLB|BLK|BNA|BOG|BOH|BOR|BOT|BRA|BRB|BRG|BRK|BRL|BRV|BSB|BSK|BTF|BÃD|BUL|BÃR|BÃS|BÃZ|CAS|CHA|CLP|CLZ|COC|COE|CUX|DAH|DAN|DAU|DBR|DEG|DEL|DGF|DIL|DIN|DIZ|DKB|DLG|DON|DUD|DÃW|EBE|EBN|EBS|ECK|EIC|EIL|EIN|EIS|EMD|EMS|ERB|ERH|ERK|ERZ|ESB|ESW|FDB|FDS|FEU|FFB|FKB|FLÃ|FOR|FRG|FRI|FRW|FTL|FÃS|GAN|GAP|GDB|GEL|GEO|GER|GHA|GHC|GLA|GMN|GNT|GOA|GOH|GRA|GRH|GRI|GRM|GRZ|GTH|GUB|GUN|GVM|HAB|HAL|HAM|HAS|HBN|HBS|HCH|HDH|HDL|HEB|HEF|HEI|HER|HET|HGN|HGW|HHM|HIG|HIP|HMÃ|HOG|HOH|HOL|HOM|HOR|HÃS|HOT|HRO|HSK|HST|HVL|HWI|IGB|ILL|JÃL|KEH|KEL|KEM|KIB|KLE|KLZ|KÃN|KÃT|KÃZ|KRU|KÃN|KUS|KYF|LAN|LAU|LBS|LBZ|LDK|LDS|LEO|LER|LEV|LIB|LIF|LIP|LÃB|LOS|LRO|LSZ|LÃN|LUP|LWL|MAB|MAI|MAK|MAL|MED|MEG|MEI|MEK|MEL|MER|MET|MGH|MGN|MHL|MIL|MKK|MOD|MOL|MON|MOS|MSE|MSH|MSP|MST|MTK|MTL|MÃB|MÃR|MYK|MZG|NAB|NAI|NAU|NDH|NEA|NEB|NEC|NEN|NES|NEW|NMB|NMS|NOH|NOL|NOM|NOR|NVP|NWM|OAL|OBB|OBG|OCH|OHA|ÃHR|OHV|OHZ|OPR|OSL|OVI|OVL|OVP|PAF|PAN|PAR|PCH|PEG|PIR|PLÃ|PRÃ|QFT|QLB|RDG|REG|REH|REI|RID|RIE|ROD|ROF|ROK|ROL|ROS|ROT|ROW|RSL|RÃD|RÃG|SAB|SAD|SAN|SAW|SBG|SBK|SCZ|SDH|SDL|SDT|SEB|SEE|SEF|SEL|SFB|SFT|SGH|SHA|SHG|SHK|SHL|SIG|SIM|SLE|SLF|SLK|SLN|SLS|SLÃ|SLZ|SMÃ|SOB|SOG|SOK|SÃM|SON|SPB|SPN|SRB|SRO|STA|STB|STD|STE|STL|SUL|SÃW|SWA|SZB|TBB|TDO|TET|TIR|TÃL|TUT|UEM|UER|UFF|USI|VAI|VEC|VER|VIB|VIE|VIT|VOH|WAF|WAK|WAN|WAR|WAT|WBS|WDA|WEL|WEN|WER|WES|WHV|WIL|WIS|WIT|WIZ|WLG|WMS|WND|WOB|WOH|WOL|WOR|WOS|WRN|WSF|WST|WSW|WTL|WTM|WUG|WÃM|WUN|WUR|WZL|ZEL|ZIG)[- ]?(([A-Z][- ]?\d{1,4})|([A-Z]{2}[- ]?\d{1,3})))[- ]?(E|H)?$/.test(e)},"de-LI":function(e){return/^FL[- ]?\d{1,5}[UZ]?$/.test(e)},"en-IN":function(e){return/^[A-Z]{2}[ -]?[0-9]{1,2}(?:[ -]?[A-Z])(?:[ -]?[A-Z]*)?[ -]?[0-9]{4}$/.test(e)},"es-AR":function(e){return/^(([A-Z]{2} ?[0-9]{3} ?[A-Z]{2})|([A-Z]{3} ?[0-9]{3}))$/.test(e)},"fi-FI":function(e){return/^(?=.{4,7})(([A-Z]{1,3}|[0-9]{1,3})[\s-]?([A-Z]{1,3}|[0-9]{1,5}))$/.test(e)},"hu-HU":function(e){return/^((((?!AAA)(([A-NPRSTVZWXY]{1})([A-PR-Z]{1})([A-HJ-NPR-Z]))|(A[ABC]I)|A[ABC]O|A[A-W]Q|BPI|BPO|UCO|UDO|XAO)-(?!000)\d{3})|(M\d{6})|((CK|DT|CD|HC|H[ABEFIKLMNPRSTVX]|MA|OT|R[A-Z]) \d{2}-\d{2})|(CD \d{3}-\d{3})|(C-(C|X) \d{4})|(X-(A|B|C) \d{4})|(([EPVZ]-\d{5}))|(S A[A-Z]{2} \d{2})|(SP \d{2}-\d{2}))$/.test(e)},"pt-BR":function(e){return/^[A-Z]{3}[ -]?[0-9][A-Z][0-9]{2}|[A-Z]{3}[ -]?[0-9]{4}$/.test(e)},"pt-PT":function(e){return/^([A-Z]{2}|[0-9]{2})[ -·]?([A-Z]{2}|[0-9]{2})[ -·]?([A-Z]{2}|[0-9]{2})$/.test(e)},"sq-AL":function(e){return/^[A-Z]{2}[- ]?((\d{3}[- ]?(([A-Z]{2})|T))|(R[- ]?\d{3}))$/.test(e)},"sv-SE":function(e){return/^[A-HJ-PR-UW-Z]{3} ?[\d]{2}
14[A-HJ-PR-UW-Z1-9]$|(^[A-ZÃ
Ãà ]{2,7}$)/.test(e.trim())},"en-PK":function(e){return/(^[A-Z]{2}((\s|-){0,1})[0-9]{3,4}((\s|-)[0-9]{2}){0,1}$)|(^[A-Z]{3}((\s|-){0,1})[0-9]{3,4}((\s|-)[0-9]{2}){0,1}$)|(^[A-Z]{4}((\s|-){0,1})[0-9]{3,4}((\s|-)[0-9]{2}){0,1}$)|(^[A-Z]((\s|-){0,1})[0-9]{4}((\s|-)[0-9]{2}){0,1}$)/.test(e.trim())}};e.exports=t.default,e.exports.default=t.default}(YE,YE.exports);var XE={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;(0,r.default)(e);var o=function(e){var t=function(e){var t={};return Array.from(e).forEach((function(e){t[e]?t[e]+=1:t[e]=1})),t}(e),n={length:e.length,uniqueChars:Object.keys(t).length,uppercaseCount:0,lowercaseCount:0,numberCount:0,symbolCount:0};return Object.keys(t).forEach((function(e){i.test(e)?n.uppercaseCount+=t[e]:s.test(e)?n.lowercaseCount+=t[e]:a.test(e)?n.numberCount+=t[e]:l.test(e)&&(n.symbolCount+=t[e])})),n}(e);if((t=(0,n.default)(t||{},c)).returnScore)return function(e,t){var n=0;n+=e.uniqueChars*t.pointsPerUnique,n+=(e.length-e.uniqueChars)*t.pointsPerRepeat,e.lowercaseCount>0&&(n+=t.pointsForContainingLower);e.uppercaseCount>0&&(n+=t.pointsForContainingUpper);e.numberCount>0&&(n+=t.pointsForContainingNumber);e.symbolCount>0&&(n+=t.pointsForContainingSymbol);return n}(o,t);return o.length>=t.minLength&&o.lowercaseCount>=t.minLowercase&&o.uppercaseCount>=t.minUppercase&&o.numberCount>=t.minNumbers&&o.symbolCount>=t.minSymbols};var n=o(By.exports),r=o(ly.exports);function o(e){return e&&e.__esModule?e:{default:e}}var i=/^[A-Z]$/,s=/^[a-z]$/,a=/^[0-9]$/,l=/^[-#!$@£%^&*()_+|~=`{}\[\]:";'<>?,.\/\\ ]$/,c={minLength:8,minLowercase:1,minUppercase:1,minNumbers:1,minSymbols:1,returnScore:!1,pointsPerUnique:1,pointsPerRepeat:.5,pointsForContainingLower:10,pointsForContainingUpper:10,pointsForContainingNumber:10,pointsForContainingSymbol:10};e.exports=t.default,e.exports.default=t.default}(XE,XE.exports);var JE={};function QE(e){return QE="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},QE(e)}Object.defineProperty(JE,"__esModule",{value:!0}),JE.default=function(e,t){if((0,e_.default)(e),(0,e_.default)(t),t in r_)return r_[t](e);throw new Error("Invalid country code: '".concat(t,"'"))},JE.vatMatchers=void 0;var e_=function(e){return e&&e.__esModule?e:{default:e}}(ly.exports),t_=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=QE(e)&&"function"!=typeof e)return{default:e};var n=n_(t);if(n&&n.has(e))return n.get(e);var r={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&{}.hasOwnProperty.call(e,i)){var s=o?Object.getOwnPropertyDescriptor(e,i):null;s&&(s.get||s.set)?Object.defineProperty(r,i,s):r[i]=e[i]}return r.default=e,n&&n.set(e,r),r}(sE);function n_(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(n_=function(e){return e?n:t})(e)}var r_=JE.vatMatchers={AT:function(e){return/^(AT)?U\d{8}$/.test(e)},BE:function(e){return/^(BE)?\d{10}$/.test(e)},BG:function(e){return/^(BG)?\d{9,10}$/.test(e)},HR:function(e){return/^(HR)?\d{11}$/.test(e)},CY:function(e){return/^(CY)?\w{9}$/.test(e)},CZ:function(e){return/^(CZ)?\d{8,10}$/.test(e)},DK:function(e){return/^(DK)?\d{8}$/.test(e)},EE:function(e){return/^(EE)?\d{9}$/.test(e)},FI:function(e){return/^(FI)?\d{8}$/.test(e)},FR:function(e){return/^(FR)?\w{2}\d{9}$/.test(e)},DE:function(e){return/^(DE)?\d{9}$/.test(e)},EL:function(e){return/^(EL)?\d{9}$/.test(e)},HU:function(e){return/^(HU)?\d{8}$/.test(e)},IE:function(e){return/^(IE)?\d{7}\w{1}(W)?$/.test(e)},IT:function(e){return/^(IT)?\d{11}$/.test(e)},LV:function(e){return/^(LV)?\d{11}$/.test(e)},LT:function(e){return/^(LT)?\d{9,12}$/.test(e)},LU:function(e){return/^(LU)?\d{8}$/.test(e)},MT:function(e){return/^(MT)?\d{8}$/.test(e)},NL:function(e){return/^(NL)?\d{9}B\d{2}$/.test(e)},PL:function(e){return/^(PL)?(\d{10}|(\d{3}-\d{3}-\d{2}-\d{2})|(\d{3}-\d{2}-\d{2}-\d{3}))$/.test(e)},PT:function(e){var t=e.match(/^(PT)?(\d{9})$/);if(!t)return!1;var n=t[2],r=11-t_.reverseMultiplyAndSum(n.split("").slice(0,8).map((function(e){return parseInt(e,10)})),9)%11;return r>9?0===parseInt(n[8],10):r===parseInt(n[8],10)},RO:function(e){return/^(RO)?\d{2,10}$/.test(e)},SK:function(e){return/^(SK)?\d{10}$/.test(e)},SI:function(e){return/^(SI)?\d{8}$/.test(e)},ES:function(e){return/^(ES)?\w\d{7}[A-Z]$/.test(e)},SE:function(e){return/^(SE)?\d{12}$/.test(e)},AL:function(e){return/^(AL)?\w{9}[A-Z]$/.test(e)},MK:function(e){return/^(MK)?\d{13}$/.test(e)},AU:function(e){if(!e.match(/^(AU)?(\d{11})$/))return!1;var t=[10,1,3,5,7,9,11,13,15,17,19];e=e.replace(/^AU/,"");for(var n=(parseInt(e.slice(0,1),10)-1).toString()+e.slice(1),r=0,o=0;o<11;o++)r+=t[o]*n.charAt(o);return 0!==r&&r%89==0},BY:function(e){return/^(УÐÐ )?\d{9}$/.test(e)},CA:function(e){return/^(CA)?\d{9}$/.test(e)},IS:function(e){return/^(IS)?\d{5,6}$/.test(e)},IN:function(e){return/^(IN)?\d{15}$/.test(e)},ID:function(e){return/^(ID)?(\d{15}|(\d{2}.\d{3}.\d{3}.\d{1}-\d{3}.\d{3}))$/.test(e)},IL:function(e){return/^(IL)?\d{9}$/.test(e)},KZ:function(e){return/^(KZ)?\d{12}$/.test(e)}
14,NZ:function(e){return/^(NZ)?\d{9}$/.test(e)},NG:function(e){return/^(NG)?(\d{12}|(\d{8}-\d{4}))$/.test(e)},NO:function(e){return/^(NO)?\d{9}MVA$/.test(e)},PH:function(e){return/^(PH)?(\d{12}|\d{3} \d{3} \d{3} \d{3})$/.test(e)},RU:function(e){return/^(RU)?(\d{10}|\d{12})$/.test(e)},SM:function(e){return/^(SM)?\d{5}$/.test(e)},SA:function(e){return/^(SA)?\d{15}$/.test(e)},RS:function(e){return/^(RS)?\d{9}$/.test(e)},CH:function(e){var t,n,r;return/^(CHE[- ]?)?(\d{9}|(\d{3}\.\d{3}\.\d{3})|(\d{3} \d{3} \d{3})) ?(TVA|MWST|IVA)?$/.test(e)&&(t=e.match(/\d/g).map((function(e){return+e})),n=t.pop(),r=[5,4,3,2,7,6,5,4],n===(11-t.reduce((function(e,t,n){return e+t*r[n]}),0)%11)%11)},TR:function(e){return/^(TR)?\d{10}$/.test(e)},UA:function(e){return/^(UA)?\d{12}$/.test(e)},GB:function(e){return/^GB((\d{3} \d{4} ([0-8][0-9]|9[0-6]))|(\d{9} \d{3})|(((GD[0-4])|(HA[5-9]))[0-9]{2}))$/.test(e)},UZ:function(e){return/^(UZ)?\d{9}$/.test(e)},AR:function(e){return/^(AR)?\d{11}$/.test(e)},BO:function(e){return/^(BO)?\d{7}$/.test(e)},BR:function(e){return/^(BR)?((\d{2}.\d{3}.\d{3}\/\d{4}-\d{2})|(\d{3}.\d{3}.\d{3}-\d{2}))$/.test(e)},CL:function(e){return/^(CL)?\d{8}-\d{1}$/.test(e)},CO:function(e){return/^(CO)?\d{10}$/.test(e)},CR:function(e){return/^(CR)?\d{9,12}$/.test(e)},EC:function(e){return/^(EC)?\d{13}$/.test(e)},SV:function(e){return/^(SV)?\d{4}-\d{6}-\d{3}-\d{1}$/.test(e)},GT:function(e){return/^(GT)?\d{7}-\d{1}$/.test(e)},HN:function(e){return/^(HN)?$/.test(e)},MX:function(e){return/^(MX)?\w{3,4}\d{6}\w{3}$/.test(e)},NI:function(e){return/^(NI)?\d{3}-\d{6}-\d{4}\w{1}$/.test(e)},PA:function(e){return/^(PA)?$/.test(e)},PY:function(e){return/^(PY)?\d{6,8}-\d{1}$/.test(e)},PE:function(e){return/^(PE)?\d{11}$/.test(e)},DO:function(e){return/^(DO)?(\d{11}|(\d{3}-\d{7}-\d{1})|[1,4,5]{1}\d{8}|([1,4,5]{1})-\d{2}-\d{5}-\d{1})$/.test(e)},UY:function(e){return/^(UY)?\d{12}$/.test(e)},VE:function(e){return/^(VE)?[J,G,V,E]{1}-(\d{9}|(\d{8}-\d{1}))$/.test(e)}};!function(e,t){function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;
14var r=Ye(ay.exports),o=Ye(cy.exports),i=Ye(Ly.exports),s=Ye(ky.exports),a=Ye(Py.exports),l=Ye(Ry.exports),c=Ye(Fy.exports),u=Ye(jy.exports),d=Ye(Gy.exports),p=Ye(zy.exports),f=Ye(Zy.exports),h=Ye(qy.exports),m=Ye(Hy.exports),v=Ye(Wy.exports),g=Ye(Ky.exports),y=Ye(Yy.exports),b=Ye(Xy.exports),E=Ye(Jy.exports),_=Ke(Qy),S=Ke(nb),x=Ye(ib.exports),w=Ye(sb.exports),N=Ye(ab.exports),A=Ye(cb.exports),C=Ye(ub.exports),O=Ye(db.exports),T=Ye(pb.exports),$=Ye(fb),M=Ye(vb),D=Ye(bb.exports),I=Ye(Eb.exports),L=Ye(_b.exports),k=Ye(xb.exports),P=Ye(lb.exports),R=Ke(uy),V=Ye(wb.exports),B=Ye(Ab.exports),F=Ye(Cb.exports),j=Ye(Ob.exports),U=Ye(Tb.exports),H=Ye($b.exports),Z=Ye(Mb.exports),G=Ye(Db.exports),z=Ke(Ib),q=Ye(Pb.exports),W=Ye(Fb.exports),K=Ye(jb.exports),Y=Ye(Ub.exports),X=Ye(Zb.exports),J=Ye(Gb.exports),Q=Ye(zb.exports),ee=Ye(Uy.exports),te=Ye(qb.exports),ne=Ye(Wb.exports),re=Ye(Kb.exports),oe=Ye(Yb.exports),ie=Ye(Xb.exports),se=Ye(Jb.exports),ae=Ye(Qb.exports),le=Ye(eE.exports),ce=Ye(tE.exports),ue=Ye(nE.exports),de=Ye(rE.exports),pe=Ye(oE.exports),fe=Ye(iE.exports),he=Ke(aE),me=Ye(uE.exports),ve=Ye(dE.exports),ge=Ye(pE.exports),ye=fE,be=Ye(yE.exports),Ee=Ye(bE.exports),_e=Ye(EE.exports),Se=Ye(Rb),xe=Ye(_E.exports),we=Ye(SE),Ne=Ye(NE.exports),Ae=Ye(AE.exports),Ce=Ye(Hb.exports),Oe=Ye(CE.exports),Te=Ye(OE.exports),$e=Ye(TE.exports),Me=Ye(IE.exports),De=Ye(LE.exports),Ie=Ke(kE),Le=Ye(DE.exports),ke=Ye(ME.exports),Pe=Ye($E.exports),Re=Ye(UE.exports),Ve=Ye(HE.exports),Be=Ye(ZE.exports),Fe=Ye(zE.exports),je=Ye(GE.exports),Ue=Ye(qE.exports),He=Ye(WE.exports),Ze=Ye(KE.exports),Ge=Ye(YE.exports),ze=Ye(XE.exports),qe=Ye(JE);function We(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(We=function(e){return e?n:t})(e)}function Ke(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=n(e)&&"function"!=typeof e)return{default:e};var r=We(t);if(r&&r.has(e))return r.get(e);var o={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var s in e)if("default"!==s&&{}.hasOwnProperty.call(e,s)){var a=i?Object.getOwnPropertyDescriptor(e,s):null;a&&(a.get||a.set)?Object.defineProperty(o,s,a):o[s]=e[s]}return o.default=e,r&&r.set(e,o),o}function Ye(e){return e&&e.__esModule?e:{default:e}}var Xe={version:"13.12.0",toDate:r.default,toFloat:o.default,toInt:i.default,toBoolean:s.default,equals:a.default,contains:l.default,matches:c.default,isEmail:u.default,isURL:d.default,isMACAddress:p.default,isIP:f.default,isIPRange:h.default,isFQDN:m.default,isBoolean:y.default,isIBAN:z.default,isBIC:q.default,isAbaRouting:E.default,isAlpha:_.default,isAlphaLocales:_.locales,isAlphanumeric:S.default,isAlphanumericLocales:S.locales,isNumeric:x.default,isPassportNumber:w.default,isPort:N.default,isLowercase:A.default,isUppercase:C.default,isAscii:T.default,isFullWidth:$.default,isHalfWidth:M.default,isVariableWidth:D.default,isMultibyte:I.default,isSemVer:L.default,isSurrogatePair:k.default,isInt:P.default,isIMEI:O.default,isFloat:R.default,isFloatLocales:R.locales,isDecimal:V.default,isHexadecimal:B.default,isOctal:F.default,isDivisibleBy:j.default,isHexColor:U.default,isRgbColor:H.default,isHSL:Z.default,isISRC:G.default,isMD5:W.default,isHash:K.default,isJWT:Y.default,isJSON:X.default,isEmpty:J.default,isLength:Q.default,isLocale:b.default,isByteLength:ee.default,isUUID:te.default,isMongoId:ne.default,isAfter:re.default,isBefore:oe.default,isIn:ie.default,isLuhnNumber:se.default,isCreditCard:ae.default,isIdentityCard:le.default,isEAN:ce.default,isISIN:ue.default,isISBN:de.default,isISSN:pe.default,isMobilePhone:he.default,isMobilePhoneLocales:he.locales,isPostalCode:Ie.default,isPostalCodeLocales:Ie.locales,isEthereumAddress:me.default,isCurrency:ve.default,isBtcAddress:ge.default,isISO6346:ye.isISO6346,isFreightContainerID:ye.isFreightContainerID,isISO6391:be.default,isISO8601:Ee.default,isRFC3339:_e.default,isISO31661Alpha2:Se.default,isISO31661Alpha3:xe.default,isISO4217:we.default,isBase32:Ne.default,isBase58:Ae.default,isBase64:Ce.default,isDataURI:Oe.default,isMagnetURI:Te.default,isMailtoURI:$e.default,isMimeType:Me.default,isLatLong:De.default,ltrim:Le.default,rtrim:ke.default,trim:Pe.default,escape:Re.default,unescape:Ve.default,stripLow:Be.default,whitelist:Fe.default,blacklist:je.default,isWhitelisted:Ue.default,normalizeEmail:He.default,toString:toString,isSlug:Ze.default,isStrongPassword:ze.default,isTaxID:fe.default,isDate:v.default,isTime:g.default,isLicensePlate:Ge.default,isVAT:qe.default,ibanLocales:z.locales};t.default=Xe,e.exports=t.default,e.exports.default=t.default}
14(sy,sy.exports);var o_,i_=e(sy.exports),s_=[];!function(e){var t=function(){function e(e,t){if(void 0===e&&(e=""),this.URL="https://yubinbango.github.io/yubinbango-data/data",this.REGION=[null,"åæµ·é","鿣®ç","岩æç","å®®åç","ç§ç°ç","山形ç","ç¦å³¶ç","è¨åç","æ æ¨ç","群馬ç","å¼çç","åèç","æ±äº¬é½","ç¥å¥å·ç","æ°æ½ç","å¯å±±ç","ç³å·ç","ç¦äºç","山梨ç","é·éç","å²éç","é岡ç","æç¥ç","ä¸éç","æ»è³ç","京é½åº","大éªåº","å
µåº«ç","å¥è¯ç","åæå±±ç","é³¥åç","å³¶æ ¹ç","岡山ç","åºå³¶ç","å±±å£ç","徳島ç","é¦å·ç","æåªç","é«ç¥ç","ç¦å²¡ç","ä½è³ç","é·å´ç","çæ¬ç","大åç","å®®å´ç","鹿å
å³¶ç","æ²ç¸ç"],e){var n=e.replace(/[ï¼-ï¼]/g,(function(e){return String.fromCharCode(e.charCodeAt(0)-65248)})),r=n.match(/\d/g).join(""),o=this.chk7(r);o?this.getAddr(o,t):t(this.addrDic())}}return e.prototype.chk7=function(e){if(7===e.length)return e},e.prototype.addrDic=function(e,t,n,r,o){return void 0===e&&(e=""),void 0===t&&(t=""),void 0===n&&(n=""),void 0===r&&(r=""),void 0===o&&(o=""),{region_id:e,region:t,locality:n,street:r,extended:o}},e.prototype.selectAddr=function(e){return e&&e[0]&&e[1]?this.addrDic(e[0],this.REGION[e[0]],e[1],e[2],e[3]):this.addrDic()},e.prototype.jsonp=function(e,t){window.$yubin=function(e){return t(e)};var n=document.createElement("script");n.setAttribute("type","text/javascript"),n.setAttribute("charset","UTF-8"),n.setAttribute("src",e),document.head.appendChild(n)},e.prototype.getAddr=function(e,t){var n=this,r=e.substr(0,3);if(r in s_&&e in s_[r])return t(this.selectAddr(s_[r][e]));this.jsonp(this.URL+"/"+r+".js",(function(o){return s_[r]=o,t(n.selectAddr(o[e]))}))},e}();e.Core=t}(o_||(o_={}));var a_=o_;const l_=function(){this.targets="",this.options={parentClass:"p-form__input",errorClass:"is-error",errortextClass:"p-form__error"},this.errorMessage={empty:"å¿
é é
ç®ã§ã",tel:"æå¹ãªé»è©±çªå·ããå
¥åãã ãã",zip:"æå¹ãªéµä¾¿çªå·ããå
¥åãã ãã",email:"æå¹ãªã¡ã¼ã«ã¢ãã¬ã¹ããå
¥åãã ãã",kana:"å
¨è§ã«ã¿ã«ãã§ä»¥å¤ã®æåãå«ã¾ãã¦ãã¾ã"},this.rules=[]};l_.prototype={updateRules(){this.rules=[];for(const e of this.targets){let t=e.getAttribute("data-validate-rule");t=t.split(","),this.rules.push({elm:e,name:e.getAttribute("name"),rule:t,flags:t.map((e=>"empty"!==e))})}for(const{elm:e,rule:t,flags:n}of this.rules)this.execution(e,t,n,!1)},validate(){const e=document.querySelector(".js-form");this.targets=document.querySelectorAll("[data-validate-rule]");let t=null;this.updateRules();const n=this.rules.map((e=>e.elm));for(const e of n){const n=this.rules.findIndex((({elm:t})=>t===e));["change","blur"].forEach((r=>{e.addEventListener(r,(()=>{clearTimeout(t),this.execution(e,this.rules[n].rule,this.rules[n].flags)}),{passive:!0})})),"SELECT"!=e.tagName&&"INPUT"===e.tagName&&"checkbox"!==e.getAttribute("type")&&"radio"!==e.getAttribute("type")&&e.addEventListener("input",(()=>{clearTimeout(t),t=setTimeout((()=>{this.execution(e,this.rules[n].rule,this.rules[n].flags)}),800)}))}e.addEventListener("submit",(()=>{event.preventDefault();for(const{elm:e,rule:t,flags:n}of this.rules)this.execution(e,t,n);if(0<e.querySelectorAll("[data-validate-error]").length){let t=e.querySelector("[data-validate-error]").closest(`.${this.options.parentClass}`).getBoundingClientRect().top+window.pageYOffset;t=Math.floor(t),window.scrollTo(0,t)}else e.submit()}))},execution(e,t,n,r=!0){const o=e.closest(`.${this.options.parentClass}`);this.removeError(o);for(let r=0;r<t.length;r++){const o=t[r];let i="";"empty"===o?i=this.empty(e,r):"tel"===o?(this.transHarfsize(e),i=this.tel(e.value)):"zip"===o?(this.transHarfsize(e),i=this.zip(e.value)):"email"===o?(this.transHarfsize(e),i=this.email(e.value)):"kana"===o&&(i=this.kana(e.value)),n[r]=i}if(r&&n.includes(!1)){const e=n.findIndex((e=>!e));this.appendError(t[e],o)}this.allCheck()},allCheck(){const e=document.querySelector(".js-submit"),t={};for(const{elm:e,name:n,flags:r}of this.rules)t[n]=r.every((e=>e));Object.keys(t).every((e=>t[e]))?e.classList.remove("is-disable"):e.classList.add("is-disable")},empty(e,t){const n=e.getAttribute("type");if("INPUT"!==e.tagName||"checkbox"!==n&&"radio"!==n)return!i_.isEmpty(e.value);{let n="";const r=e.getAttribute("name"),o=document.querySelectorAll(`input[name="${r}"]`);for(const t of o)if(t.checked){n=e.value;break}const i=this.rules.map((e=>e.name===r&&e)).filter((e=>e));
14return i.forEach((e=>e.flags[t]=!i_.isEmpty(n))),Object.assign(this.rules,i),!i_.isEmpty(n)}},tel:e=>!e||i_.isInt(e)&&i_.isLength(e,{min:10,max:11}),zip:e=>!e||i_.isInt(e)&&i_.isLength(e,{min:7,max:7}),email:e=>!e||i_.isEmail(e)&&!/\.{2}/.test(e),kana(e){const t=e.replace(/\s+/g,"");return!t||i_.matches(t,/^[ã¡-ã¶ã¼]+$/)},appendError(e,t){this.removeError(t);const n=document.createElement("p");n.textContent=this.errorMessage[e],n.setAttribute("data-validate-error",""),this.options.errortextClass&&n.classList.add(this.options.errortextClass),t.append(n)},removeError(e){const t=e.querySelectorAll("[data-validate-error]");for(const e of t)e.remove()},zipcode(){const e=document.querySelector(".js-zipcode"),t=document.querySelector(".js-prefectures"),n=document.querySelector(".js-address"),r=new CustomEvent("change");e.addEventListener("input",(()=>{6<event.currentTarget.value.length&&new a_.Core(event.currentTarget.value,(e=>{e.region_id&&(t.value=e.region_id,t.dispatchEvent(r)),n&&e.locality&&(n.value=e.locality+e.street,n.dispatchEvent(r))}))}),{passive:!0})},transHarfsize(e){const t=e.value.replace(/[A-Zï½-ï½ï¼-ï¼]/g,(e=>String.fromCharCode(e.charCodeAt(0)-65248)));e.value=t},optionDomain(){const e=document.querySelectorAll(".js-email"),t=document.querySelectorAll(".js-domain-item"),n=new CustomEvent("change");for(const t of e)t.addEventListener("input",(()=>{"@"===event.data&&t.nextElementSibling.classList.contains("js-domain")&&(t.nextElementSibling.style.display="block")}),{passive:!0});for(const e of t)e.addEventListener("click",(()=>{const t=e.closest(".js-domain");if(t.previousElementSibling.classList.contains("js-email")){const r=t.previousElementSibling;r.value+=e.textContent.slice(1),r.dispatchEvent(n),t.style.display=""}}),{passive:!0});document.addEventListener("click",(()=>{for(const t of e){const e=t.nextElementSibling;null===event.target.closest(".js-domain-parent")&&(e.style.display="none")}}))},toggeReqItem(){const e=document.querySelectorAll(".js-contact"),t=document.querySelector(".js-email"),n=document.querySelector(".js-tel"),r=e=>{t.required="1"===e,n.required="2"===e;const r=t.closest(".p-form__input").previousElementSibling,o=n.closest(".p-form__input").previousElementSibling;r.classList.remove("-required"),o.classList.remove("-required"),"1"===e?(r.classList.add("-required"),t.setAttribute("data-validate-rule","empty,email"),n.setAttribute("data-validate-rule","tel")):(o.classList.add("-required"),n.setAttribute("data-validate-rule","empty,tel"),t.setAttribute("data-validate-rule","email"))};for(const o of e)o.checked&&r(o.value),o.addEventListener("change",(()=>{r(o.value),this.updateRules(),this.allCheck(),this.removeError(t.closest(".p-form__input")),this.removeError(n.closest(".p-form__input"))}),{paddive:!0})},toggleItem(){const e=document.querySelectorAll(".js-input-row"),t=document.querySelectorAll(".js-options"),n=()=>{if(event.target.checked){for(let t=0;t<e.length;t++)0!==t&&e[t].classList.remove("is-hide");(()=>{for(const e of t)e.removeEventListener("change",n)})()}};for(const e of t)e.addEventListener("change",n)},withdrawal(){let e=!1;const t=document.querySelectorAll(".js-submit, .js-login");for(const n of t)n.addEventListener("click",(()=>{e=!0}));window.addEventListener("beforeunload",(t=>{e||(t.preventDefault(),t.returnValue=""),e=!1}))}};const c_=new l_;var u_={top(){this.store_blog();const e=document.querySelector(".js-mv-slider");e&&(e.querySelectorAll(".swiper-slide img"),new se(e,{modules:[ue,de],slidesPerView:2.2,spaceBetween:10,pagination:{el:".js-mv-pager",bulletActiveClass:"is-active",bulletClass:"item",clickable:!0},loop:!0,centeredSlides:!0,autoplay:{delay:3e3},breakpoints:{769:{spaceBetween:20,slidesPerView:"auto"}}}));const t=(e,t)=>{const n=document.querySelector(e),o=()=>{const e=t.reduce(((e,t)=>{const n=document.querySelector(t),r=n.offsetHeight;if(0<e){let t=window.getComputedStyle(n).getPropertyValue("margin-top")||n.style.marginTop;return t=parseInt(t),e-r-t}return r}),0);n.style.marginTop=-1*Math.abs(e)+"px"};r.mediaLg||o(),window.addEventListener("resize",s(100,(()=>{r.mediaLg?n.style.marginTop="":o()})),!1,{passive:!0})};window.addEventListener("load",(()=>{t(".js-above-block1",[".js-search-style",".js-search-marker"]),t(".js-above-block2",[".js-search-color",".js-search-exhaust"])}));let n="";window.addEventListener("load",(()=>{r.media&&(n=new iy(".js-term-tab")),document.querySelector(".js-recommend-tab")&&new iy(".js-recommend-tab"),window.addEventListener("resize",s(100,(()=>{r.media?n||setTimeout((()=>{n=new iy(".js-term-tab")}),100):n&&(n.destroy(),n=null)})),!1,{passive:!0})}),{once:!0})},buy(){this.top(),Jr.priceAttentionModal(),new se(".js-info-slider",{modules:[ue,le,de],spaceBetween:23,loop:!0,pagination:{el:".js-slider-pager",bulletActiveClass:"-current",bulletClass:"item",clickable:!0},slidesPerView:1.5,centeredSlides:!0,autoplay:{delay:3e3},breakpoints:{769:{centeredSlides:!1,spaceBetween:30,slidesPerView:3,navigation:{nextEl:".js-info-slider-next",prevEl:".js-info-slider-prev"}}}})},maintenance(){oy(),this.mente_bikeep(),c_.zipcode(),c_.validate()},estimate(){c_.withdrawal(),c_.toggleItem(),c_.zipcode(),c_.optionDomain(),c_.toggeReqItem(),c_.validate()},reserve(){oy(),c_.withdrawal(),c_.zipcode(),c_.optionDomain(),c_.toggeReqItem(),c_.validate()},signup(){this.maintenance();let e="";const t={modules:[le],slidesPerView:1,navigation:{nextEl:".js-merit-arrow.-next",prevEl:".js-merit-arrow.-prev"}};r.media&&(e=new se(".js-merit-slider",t)),window.addEventListener("resize",s(15,(()=>{r.media?e||(e=new se(".js-merit-slider",t)):e&&(e.destroy(),e=null)}),!1),{passive:!0})},store_blog(){const e=document.querySelectorAll(".js-slider");let t=[];const n={modules:[ue],slidesPerView:1.15,spaceBetween:20,pagination:{el:".js-slider-pager",bulletActiveClass:"-current",bulletClass:"item",clickable:!0},breakpoints:{769:{slidesPerView:3.2}}};for(let o=0;o<e.length;o++){const i=e[o],s=Object.assign({},n),a={slider:null,enable:!1,slides:i.querySelectorAll(".swiper-slide"),options:""};
14i.getAttribute("data-slider-views")&&(s.slidesPerView=Number(i.getAttribute("data-slider-views"))),a.options=s,t[o]=a;let l="lg"===i.getAttribute("data-slider-bp")?r.mediaLg:"none"===i.getAttribute("data-slider-bp")?"":r.media;if(""===l)t[o].enable=!0,t[o].options.breakpoints[769].slidesPerView=4,t[o].slider=new se(i,s);else if(l)t[o].enable=!0,t[o].slider=new se(i,s);else{i.querySelector(".js-slider-pager")&&(i.querySelector(".js-slider-pager").style.display="none");for(const e of a.slides)e.classList.remove("swiper-slide")}}window.addEventListener("resize",s(15,(()=>{for(let n=0;n<e.length;n++){if("lg"===e[n].getAttribute("data-slider-bp")?r.mediaLg:r.media){if(!t[n].enable&&!t[n].slider){for(const e of t[n].slides)e.classList.add("swiper-slide");t[n].slider=new se(e[n],t[n].options),t[n].enable=!0,e[n].querySelector(".js-slider-pager")&&(e[n].querySelector(".js-slider-pager").style.display="")}}else if(t[n].enable&&t[n].slider){e[n].querySelector(".js-slider-pager")&&(e[n].querySelector(".js-slider-pager").style.display="none"),t[n].slider.destroy(),t[n].slider=null,t[n].enable=!1;for(const e of t[n].slides)e.classList.remove("swiper-slide")}}}),!1),{passive:!0})},store_blog_article(){},store_detail(){this.store_blog()},news_article(){this.store_blog()},mente_bikeep(){const e=document.querySelectorAll(".js-ac-container");if(e)for(const t of e)new i(t,{showMultiple:!0,elementClass:"js-ac",triggerClass:"js-ac-trigger",panelClass:"js-ac-panel"})},mente_tenken(){let e=!1;const t=document.querySelectorAll(".js-more"),n=()=>{const e=event.currentTarget,t=e.previousElementSibling;t.classList.contains("js-more-content")&&(e.classList.contains("is-active")?(t.style.height="",e.classList.remove("is-active")):(t.style.height=t.scrollHeight+"px",e.classList.add("is-active")))};if(r.media){e=!0;for(const e of t)e.querySelector(".js-more-trigger").addEventListener("click",n,{passive:!0})}window.addEventListener("resize",s(15,(()=>{if(r.media)if(e)for(const e of t){const t=e.querySelector(".js-more-content");if(t.style.height){t.style.transition="none",t.style.height="";const e=t.scrollHeight;t.style.transition="",t.style.height=e+"px"}}else for(const r of t)e=!0,r.querySelector(".js-more-trigger").addEventListener("click",n,{passive:!0});else for(const e of t){const t=e.querySelector(".js-more-content");t.style.height&&(t.style.height="",e.querySelector(".js-more-trigger").classList.remove("is-active"))}}),!1),{passive:!0})},mente_syaken(){this.mente_tenken()},mypage_account_edit(){this.maintenance()},buy_beginner(){this.store_blog()},buy_detail(){this.store_blog(),document.querySelector(".js-ac-container")&&new i(document.querySelector(".js-ac-container"),{showMultiple:!0,elementClass:"js-ac",triggerClass:"js-ac-trigger",panelClass:"js-ac-panel"}),Ne.init({openClass:"is-visible",openTrigger:"data-modal-trigger",closeTrigger:"data-modal-close",onShow:()=>{Ae(!0)},onClose:()=>{Ae(!1)}});const e={modules:[le],slidesPerView:3,spaceBetween:10,navigation:{nextEl:".js-slider-tmb-next",prevEl:".js-slider-tmb-prev"}},t=document.querySelectorAll(".js-slider-main"),n=document.querySelectorAll(".js-slider-thumbnail"),o=[];for(let i=0;i<t.length;i++){const s=t[i],a={slidesPerView:1,modules:[le],navigation:{nextEl:".js-slider-main-next",prevEl:".js-slider-main-prev"}};1===i&&(a.modules=[le],a.navigation={nextEl:".js-slider-next",prevEl:".js-slider-prev"});const l=document.querySelector(".js-watermark");o.length>0&&o[0].swiper.on("slideChange",(e=>{l.classList.toggle("is-hide",0!==e.realIndex)}));const c=new se(s,a);let u=n[i].querySelectorAll(".js-thumbnail"),d="";r.media&&(d=new se(n[i],e));const p={slider:s,swiper:c,thumbnailSlider:n[i],thumbnailSwiper:d,thumbnail:u,thumbnailArray:Array.from(u)};o.push(p),u[0].classList.add("is-current")}const a=e=>{for(const t of e)t.classList.contains("is-current")&&t.classList.remove("is-current")};for(let e=0;e<o.length;e++){o[e].swiper.on("slideChange",(t=>{a(o[e].thumbnail),o[e].thumbnail[t.realIndex].classList.add("is-current"),o[e].thumbnailSwiper&&o[e].thumbnailSwiper.slideTo(t.realIndex)})),0===e&&o[e].swiper.on("slideChange",(e=>{o[1].swiper.slideTo(e.realIndex)}));const t=o[e].thumbnailArray;for(const n of t)n.addEventListener("click",(()=>{const n=event.currentTarget,r=t.findIndex((e=>e===n));a(o[e].thumbnail),n.classList.add("is-current"),o[e].swiper.slideTo(r),0===e&&(a(o[1].thumbnail),o[1].swiper.slideTo(r),o[1].thumbnailArray[r].classList.add("is-current"))}),{passive:!0})}window.addEventListener("resize",s(15,(()=>{if(r.media)for(let t=0;t<o.length;t++)o[t].thumbnailSwiper||(o[t].thumbnailSwiper=new se(o[t].thumbnailSlider,e));else for(let e=0;e<o.length;e++)o[e].thumbnailSwiper&&(o[e].thumbnailSwiper.destroy(),o[e].thumbnailSwiper="")}),!1),{passive:!0})},buy_maker_show(){new i(".js-ac-list",{showMultiple:!0,elementClass:"js-ac",triggerClass:"js-ac-trigger",panelClass:"js-ac-panel",onlyChildNodes:!1}).openAll()},mypage_history(){new iy(".js-tab",{height:!1}),new i(".js-ac-container",{showMultiple:!0,elementClass:"js-ac",triggerClass:"js-ac-trigger",panelClass:"js-ac-panel"})},media_article(){const e=document.querySelector(".js-report-body");if(e){const t=e.querySelectorAll("h2");if(0<t.length){e.insertAdjacentHTML("afterbegin",'\n <div class="c-block-toc js-ac">\n <p class="c-block-toc__label">ç®æ¬¡</p>\n <div class="c-block-toc__trigger js-ac-trigger"></div>\n <div class="c-block-toc__list js-ac-panel">\n <div id="toc_container" class="no_bullets">\n <ul class="toc_list js-report-toc">\n </ul>\n </div>\n </div>\n </div>\n ');const n=e.querySelector(".js-report-toc"),r=[];for(let e=0;e<t.length;e++){const o=t[e],i=document.createElement("li"),s=document.createElement("a"),a=`toc-${e}`;o.setAttribute("id",a),s.textContent=o.textContent,s.setAttribute("href",`#${a}`),i.append(s),n.append(i),r.push(s)}for(const e of r)d.smoothScroll(e)}}new i(".js-ac-container",{elementClass:"js-ac",triggerClass:"js-ac-trigger",panelClass:"js-ac-panel",openOnInit:[0]});const t={modules:[ue],slidesPerView:1,pagination:{bulletActiveClass:"is-active",bulletClass:"thumbnail",clickable:!0},loop:!0,autoHeight:!0},n=document.querySelectorAll(".js-gallery-slider");if(n.length>0)for(const e of n){const n=e.querySelectorAll(".swiper-slide img"),r={...t};r.pagination.el=e.nextElementSibling,r.pagination.renderBullet=(e,t)=>`<div class="${t}" style="background-image: url(${n[e].getAttribute("src")})"></div>`,new se(e,r)}},store_kawasaki_plaza(){this.store_blog()},insurance(){const e=document.querySelectorAll(".js-ac-container");if(e)for(const t of e)new i(t,{showMultiple:!0,elementClass:"js-ac",triggerClass:"js-ac-trigger",panelClass:"js-ac-panel"})},insurance_hoken_jibai(){this.insurance()},insurance_hoken_nini(){this.insurance()},insurance_hoken_tonan(){this.insurance(),new iy(".js-tab",{height:!1});const e=new URLSearchParams(window.location.search);if(e.has("active")){const t=parseInt(e.get("active"),10),n=document.querySelectorAll(".js-tab-trigger");n[t]&&n[t].click()}document.querySelectorAll(".js-tab-trigger").forEach(((e,t)=>{e.addEventListener("click",(()=>{const e=new URL(window.location.href);0!==t?e.searchParams.set("active",t):e.searchParams.delete("active"),history.replaceState(null,"",e.toString())}))}))}};n.polyfill(),d.init(),window.addEventListener("DOMContentLoaded",(()=>{Jr.init();let e=document.body.getAttribute("data-page");e=e.replaceAll("-","_"),e in u_&&u_[e](),"buy_search"===e&&location.search||d.fixSearchBar()}),{once:!0}),window.addEventListener("load",(()=>{r.resize(),document.body.classList.remove("is-preload")}),{once:!0}),window.addEventListener("resize",(()=>{r.resize()})),window.addEventListener("scroll",(()=>{r.scroll()}))}(); 15//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVuZGxlLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9ub2RlX21vZHVsZXMvc21vb3Roc2Nyb2xsLXBvbHlmaWxsL2Rpc3Qvc21vb3Roc2Nyb2xsLmpzIiwiLi4vLi4vLi4vc3JjL3NjcmlwdHMvbGlicmFyeS9WYXJpb3VzVmFsdWVzVXRpbC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9hY2NvcmRpb24tanMvZGlzdC9hY2NvcmRpb24ubWluLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Rocm90dGxlLWRlYm91bmNlL2VzbS9pbmRleC5qcyIsIi4uLy4uLy4uL3NyYy9zY3JpcHRzL2xpYnJhcnkvRWxlbWVudE9mZnNldC5qcyIsIi4uLy4uLy4uL3NyYy9zY3JpcHRzL2xpYnJhcnkvbWVudS5qcyIsIi4uLy4uLy4uL3NyYy9zY3JpcHRzL2xpYnJhcnkvYmFja1N1cmZhY2VGaXhlZC5qcyIsIi4uLy4uLy4uL3NyYy9zY3JpcHRzL2NvbW1vbi5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9zc3Itd2luZG93L3Nzci13aW5kb3cuZXNtLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RvbTcvZG9tNy5lc20uanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3dpcGVyL3NoYXJlZC9kb20uanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3dpcGVyL3NoYXJlZC91dGlscy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9zd2lwZXIvc2hhcmVkL2dldC1zdXBwb3J0LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9zaGFyZWQvZ2V0LWRldmljZS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9zd2lwZXIvc2hhcmVkL2dldC1icm93c2VyLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9jb3JlL2V2ZW50cy1lbWl0dGVyLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9jb3JlL3VwZGF0ZS9pbmRleC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9zd2lwZXIvY29yZS91cGRhdGUvdXBkYXRlU2l6ZS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9zd2lwZXIvY29yZS91cGRhdGUvdXBkYXRlU2xpZGVzLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9jb3JlL3VwZGF0ZS91cGRhdGVBdXRvSGVpZ2h0LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9jb3JlL3VwZGF0ZS91cGRhdGVTbGlkZXNPZmZzZXQuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3dpcGVyL2NvcmUvdXBkYXRlL3VwZGF0ZVNsaWRlc1Byb2dyZXNzLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9jb3JlL3VwZGF0ZS91cGRhdGVQcm9ncmVzcy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9zd2lwZXIvY29yZS91cGRhdGUvdXBkYXRlU2xpZGVzQ2xhc3Nlcy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9zd2lwZXIvY29yZS91cGRhdGUvdXBkYXRlQWN0aXZlSW5kZXguanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3dpcGVyL2NvcmUvdXBkYXRlL3VwZGF0ZUNsaWNrZWRTbGlkZS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9zd2lwZXIvY29yZS90cmFuc2xhdGUvaW5kZXguanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3dpcGVyL2NvcmUvdHJhbnNsYXRlL2dldFRyYW5zbGF0ZS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9zd2lwZXIvY29yZS90cmFuc2xhdGUvc2V0VHJhbnNsYXRlLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9jb3JlL3RyYW5zbGF0ZS9taW5UcmFuc2xhdGUuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3dpcGVyL2NvcmUvdHJhbnNsYXRlL21heFRyYW5zbGF0ZS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9zd2lwZXIvY29yZS90cmFuc2xhdGUvdHJhbnNsYXRlVG8uanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3dpcGVyL2NvcmUvdHJhbnNpdGlvbi90cmFuc2l0aW9uRW1pdC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9zd2lwZXIvY29yZS9zbGlkZS9pbmRleC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9zd2lwZXIvY29yZS9zbGlkZS9zbGlkZVRvLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9jb3JlL3NsaWRlL3NsaWRlVG9Mb29wLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9jb3JlL3NsaWRlL3NsaWRlTmV4dC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9zd2lwZXIvY29yZS9zbGlkZS9zbGlkZVByZXYuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3dpcGVyL2NvcmUvc2xpZGUvc2xpZGVSZXNldC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9zd2lwZXIvY29yZS9zbGlkZS9zbGlkZVRvQ2xvc2VzdC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9zd2lwZXIvY29yZS9zbGlkZS9zbGlkZVRvQ2xpY2tlZFNsaWRlLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9jb3JlL2xvb3AvaW5kZXguanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3dpcGVyL2NvcmUvbG9vcC9sb29wQ3JlYXRlLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9jb3JlL2xvb3AvbG9vcEZpeC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9zd2lwZXIvY29yZS9sb29wL2xvb3BEZXN0cm95LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9jb3JlL2V2ZW50cy9vblRvdWNoU3RhcnQuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3dpcGVyL2NvcmUvZXZlbnRzL29uVG91Y2hNb3ZlLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9jb3JlL2V2ZW50cy9vblRvdWNoRW5kLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9jb3JlL2V2ZW50cy9vblJlc2l6ZS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9zd2lwZXIvY29yZS9ldmVudHMvb25DbGljay5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9zd2lwZXIvY29yZS9ldmVudHMvb25TY3JvbGwuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3dpcGVyL2NvcmUvZXZlbnRzL2luZGV4LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9jb3JlL2JyZWFrcG9pbnRzL3NldEJyZWFrcG9pbnQuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3dpcGVyL2NvcmUvYnJlYWtwb2ludHMvaW5kZXguanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3dpcGVyL2NvcmUvYnJlYWtwb2ludHMvZ2V0QnJlYWtwb2ludC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9zd2lwZXIvY29yZS9jbGFzc2VzL2luZGV4LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9jb3JlL2NsYXNzZXMvYWRkQ2xhc3Nlcy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9zd2lwZXIvY29yZS9jbGFzc2VzL3JlbW92ZUNsYXNzZXMuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3dpcGVyL2NvcmUvaW1hZ2VzL2luZGV4LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9jb3JlL2ltYWdlcy9sb2FkSW1hZ2UuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3dpcGVyL2NvcmUvaW1hZ2VzL3ByZWxvYWRJbWFnZXMuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3dpcGVyL2NvcmUvY2hlY2stb3ZlcmZsb3cvaW5kZXguanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3dpcGVyL2NvcmUvZGVmYXVsdHMuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3dpcGVyL2NvcmUvbW9kdWxlRXh0ZW5kUGFyYW1zLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9jb3JlL2Nvcm
15UuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3dpcGVyL2NvcmUvdHJhbnNpdGlvbi9pbmRleC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9zd2lwZXIvY29yZS90cmFuc2l0aW9uL3NldFRyYW5zaXRpb24uanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3dpcGVyL2NvcmUvdHJhbnNpdGlvbi90cmFuc2l0aW9uU3RhcnQuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3dpcGVyL2NvcmUvdHJhbnNpdGlvbi90cmFuc2l0aW9uRW5kLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9jb3JlL2dyYWItY3Vyc29yL2luZGV4LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9jb3JlL2dyYWItY3Vyc29yL3NldEdyYWJDdXJzb3IuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3dpcGVyL2NvcmUvZ3JhYi1jdXJzb3IvdW5zZXRHcmFiQ3Vyc29yLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9zaGFyZWQvY3JlYXRlLWVsZW1lbnQtaWYtbm90LWRlZmluZWQuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3dpcGVyL21vZHVsZXMvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9zaGFyZWQvY2xhc3Nlcy10by1zZWxlY3Rvci5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9zd2lwZXIvbW9kdWxlcy9wYWdpbmF0aW9uL3BhZ2luYXRpb24uanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3dpcGVyL21vZHVsZXMvYXV0b3BsYXkvYXV0b3BsYXkuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3dpcGVyL21vZHVsZXMvbWFuaXB1bGF0aW9uL21ldGhvZHMvYXBwZW5kU2xpZGUuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3dpcGVyL21vZHVsZXMvbWFuaXB1bGF0aW9uL21ldGhvZHMvcHJlcGVuZFNsaWRlLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9tb2R1bGVzL21hbmlwdWxhdGlvbi9tZXRob2RzL2FkZFNsaWRlLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9tb2R1bGVzL21hbmlwdWxhdGlvbi9tZXRob2RzL3JlbW92ZVNsaWRlLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9tb2R1bGVzL21hbmlwdWxhdGlvbi9tZXRob2RzL3JlbW92ZUFsbFNsaWRlcy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9zd2lwZXIvbW9kdWxlcy9tYW5pcHVsYXRpb24vbWFuaXB1bGF0aW9uLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbW9kYWwvZGlzdC9taWNyb21vZGFsLmVzLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N3aXBlci9jb3JlL21vZHVsZXMvcmVzaXplL3Jlc2l6ZS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9zd2lwZXIvY29yZS9tb2R1bGVzL29ic2VydmVyL29ic2VydmVyLmpzIiwiLi4vLi4vLi4vc3JjL3NjcmlwdHMvbGlicmFyeS9CYWNrU3VyZmFjZUZpeGVkLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi91dGlscy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9iaW5kLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL2J1aWxkVVJMLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL0ludGVyY2VwdG9yTWFuYWdlci5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9yb2xsdXAtcGx1Z2luLW5vZGUtcG9seWZpbGxzL3BvbHlmaWxscy9nbG9iYWwuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvcm9sbHVwLXBsdWdpbi1ub2RlLXBvbHlmaWxscy9wb2x5ZmlsbHMvcHJvY2Vzcy1lczYuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvbm9ybWFsaXplSGVhZGVyTmFtZS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9BeGlvc0Vycm9yLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9kZWZhdWx0cy90cmFuc2l0aW9uYWwuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvcm9sbHVwLXBsdWdpbi1ub2RlLXBvbHlmaWxscy9wb2x5ZmlsbHMvYnVmZmVyLWVzNi5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy90b0Zvcm1EYXRhLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL3NldHRsZS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9jb29raWVzLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL2J1aWxkRnVsbFBhdGguanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvaXNBYnNvbHV0ZVVSTC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9jb21iaW5lVVJMcy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9wYXJzZUhlYWRlcnMuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvaXNVUkxTYW1lT3JpZ2luLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jYW5jZWwvQ2FuY2VsZWRFcnJvci5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvYWRhcHRlcnMveGhyLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL3BhcnNlUHJvdG9jb2wuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2RlZmF1bHRzL2luZGV4LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL251bGwuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvdHJhbnNmb3JtRGF0YS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY2FuY2VsL2lzQ2FuY2VsLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL2Rpc3BhdGNoUmVxdWVzdC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9tZXJnZUNvbmZpZy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvZW52L2RhdGEuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvdmFsaWRhdG9yLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL0F4aW9zLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jYW5jZWwvQ2FuY2VsVG9rZW4uanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvaXNBeGlvc0Vycm9yLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9heGlvcy
155qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9zcHJlYWQuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYXhpb3MvaW5kZXguanMiLCIuLi8uLi8uLi9zcmMvc2NyaXB0cy9wYWdlL2J1eV9zZWFyY2guanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvQHZ1ZS9zaGFyZWQvZGlzdC9zaGFyZWQuZXNtLWJ1bmRsZXIuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvQHZ1ZS9yZWFjdGl2aXR5L2Rpc3QvcmVhY3Rpdml0eS5lc20tYnVuZGxlci5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9AdnVlL3J1bnRpbWUtY29yZS9kaXN0L3J1bnRpbWUtY29yZS5lc20tYnVuZGxlci5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9AdnVlL3J1bnRpbWUtZG9tL2Rpc3QvcnVudGltZS1kb20uZXNtLWJ1bmRsZXIuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvQHZ1ZS9jb21waWxlci1jb3JlL2Rpc3QvY29tcGlsZXItY29yZS5lc20tYnVuZGxlci5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9AdnVlL2NvbXBpbGVyLWRvbS9kaXN0L2NvbXBpbGVyLWRvbS5lc20tYnVuZGxlci5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUvZGlzdC92dWUuZXNtLWJ1bmRsZXIuanMiLCIuLi8uLi8uLi9zcmMvc2NyaXB0cy9wYWdlL3Jlc2VydmUuanMiLCIuLi8uLi8uLi9zcmMvc2NyaXB0cy9saWJyYXJ5L3RhYi5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL3V0aWwvYXNzZXJ0U3RyaW5nLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvdG9EYXRlLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvYWxwaGEuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc0Zsb2F0LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvdG9GbG9hdC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL3RvSW50LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvdG9Cb29sZWFuLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvZXF1YWxzLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvdXRpbC90b1N0cmluZy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL3V0aWwvbWVyZ2UuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9jb250YWlucy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL21hdGNoZXMuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc0J5dGVMZW5ndGguanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc0ZRRE4uanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc0lQLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNFbWFpbC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzVVJMLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNNQUNBZGRyZXNzLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNJUFJhbmdlLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNEYXRlLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNUaW1lLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNCb29sZWFuLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNMb2NhbGUuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc0FiYVJvdXRpbmcuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc0FscGhhLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNBbHBoYW51bWVyaWMuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc051bWVyaWMuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc1Bhc3Nwb3J0TnVtYmVyLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNJbnQuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc1BvcnQuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc0xvd2VyY2FzZS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzVXBwZXJjYXNlLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNJTUVJLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNBc2NpaS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzRnVsbFdpZHRoLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNIYWxmV2lkdGguanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc1ZhcmlhYmxlV2lkdGguanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc011bHRpYnl0ZS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL3V0aWwvbXVsdGlsaW5lUmVnZXguanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc1NlbVZlci5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzU3Vycm9nYXRlUGFpci5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL3V0aWwvaW5jbHVkZXMuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc0RlY2ltYWwuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc0hleGFkZWNpbWFsLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNPY3RhbC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzRGl2aXNpYmxlQnkuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc0hleENvbG9yLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNSZ2JDb2xvci5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lz
15SFNMLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNJU1JDLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNJQkFOLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNJU08zMTY2MUFscGhhMi5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzQklDLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNNRDUuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc0hhc2guanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc0Jhc2U2NC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzSldULmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNKU09OLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNFbXB0eS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzTGVuZ3RoLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNVVUlELmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNNb25nb0lkLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNBZnRlci5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzQmVmb3JlLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNJbi5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzTHVobk51bWJlci5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzQ3JlZGl0Q2FyZC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzSWRlbnRpdHlDYXJkLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNFQU4uanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc0lTSU4uanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc0lTQk4uanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc0lTU04uanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi91dGlsL2FsZ29yaXRobXMuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc1RheElELmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNNb2JpbGVQaG9uZS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzRXRoZXJldW1BZGRyZXNzLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNDdXJyZW5jeS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzQnRjQWRkcmVzcy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzSVNPNjM0Ni5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzSVNPNjM5MS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzSVNPODYwMS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzUkZDMzMzOS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzSVNPMzE2NjFBbHBoYTMuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc0lTTzQyMTcuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc0Jhc2UzMi5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzQmFzZTU4LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNEYXRhVVJJLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNNYWduZXRVUkkuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9ydHJpbS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2x0cmltLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvdHJpbS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzTWFpbHRvVVJJLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvaXNNaW1lVHlwZS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzTGF0TG9uZy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzUG9zdGFsQ29kZS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2VzY2FwZS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL3VuZXNjYXBlLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvYmxhY2tsaXN0LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvc3RyaXBMb3cuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi93aGl0ZWxpc3QuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc1doaXRlbGlzdGVkLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3ZhbGlkYXRvci9saWIvbm9ybWFsaXplRW1haWwuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc1NsdWcuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc0xpY2Vuc2VQbGF0ZS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy92YWxpZGF0b3IvbGliL2lzU3Ryb25nUGFzc3dvcmQuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvdmFsaWRhdG9yL2xpYi9pc1ZBVC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy92YWxpZGF0b3IvaW5kZXguanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMveXViaW5iYW5nby1jb3JlMi95dWJpbmJhbmdvLWNvcmUuanMiLCIuLi8uLi8uLi9zcmMvc2NyaXB0cy9saWJyYXJ5L2Zvcm0uanMiLCIuLi8uLi8uLi9zcmMvc2NyaXB0cy9wYWdlLmpzIiwiLi4vLi4vLi4vc3JjL3NjcmlwdHMvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogc21vb3Roc2Nyb2xsIHYwLjQuNCAtIDIwMTkgLSBEdXN0YW4gS2FzdGVuLCBKZXJlbWlhcyBNZW5pY2hlbGxpIC0gTUlUIExpY2Vuc2UgKi9cbihmdW5jdGlvbiAoKSB7XG4gICd1c2Ugc3RyaWN0JztcblxuICAvLyBwb2x5ZmlsbFxuICBmdW5jdGlvbiBwb2x5ZmlsbCgpIHtcbiAgICAvLyBhbGlhc2VzXG4gICAgdmFyIHcgPSB3aW5kb3c7XG4gICAgdmFyIGQgPSBkb2N1bWVudDtcblxuICAgIC8vIHJldHVybi
15BpZiBzY3JvbGwgYmVoYXZpb3IgaXMgc3VwcG9ydGVkIGFuZCBwb2x5ZmlsbCBpcyBub3QgZm9yY2VkXG4gICAgaWYgKFxuICAgICAgJ3Njcm9sbEJlaGF2aW9yJyBpbiBkLmRvY3VtZW50RWxlbWVudC5zdHlsZSAmJlxuICAgICAgdy5fX2ZvcmNlU21vb3RoU2Nyb2xsUG9seWZpbGxfXyAhPT0gdHJ1ZVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGdsb2JhbHNcbiAgICB2YXIgRWxlbWVudCA9IHcuSFRNTEVsZW1lbnQgfHwgdy5FbGVtZW50O1xuICAgIHZhciBTQ1JPTExfVElNRSA9IDQ2ODtcblxuICAgIC8vIG9iamVjdCBnYXRoZXJpbmcgb3JpZ2luYWwgc2Nyb2xsIG1ldGhvZHNcbiAgICB2YXIgb3JpZ2luYWwgPSB7XG4gICAgICBzY3JvbGw6IHcuc2Nyb2xsIHx8IHcuc2Nyb2xsVG8sXG4gICAgICBzY3JvbGxCeTogdy5zY3JvbGxCeSxcbiAgICAgIGVsZW1lbnRTY3JvbGw6IEVsZW1lbnQucHJvdG90eXBlLnNjcm9sbCB8fCBzY3JvbGxFbGVtZW50LFxuICAgICAgc2Nyb2xsSW50b1ZpZXc6IEVsZW1lbnQucHJvdG90eXBlLnNjcm9sbEludG9WaWV3XG4gICAgfTtcblxuICAgIC8vIGRlZmluZSB0aW1pbmcgbWV0aG9kXG4gICAgdmFyIG5vdyA9XG4gICAgICB3LnBlcmZvcm1hbmNlICYmIHcucGVyZm9ybWFuY2Uubm93XG4gICAgICAgID8gdy5wZXJmb3JtYW5jZS5ub3cuYmluZCh3LnBlcmZvcm1hbmNlKVxuICAgICAgICA6IERhdGUubm93O1xuXG4gICAgLyoqXG4gICAgICogaW5kaWNhdGVzIGlmIGEgdGhlIGN1cnJlbnQgYnJvd3NlciBpcyBtYWRlIGJ5IE1pY3Jvc29mdFxuICAgICAqIEBtZXRob2QgaXNNaWNyb3NvZnRCcm93c2VyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHVzZXJBZ2VudFxuICAgICAqIEByZXR1cm5zIHtCb29sZWFufVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzTWljcm9zb2Z0QnJvd3Nlcih1c2VyQWdlbnQpIHtcbiAgICAgIHZhciB1c2VyQWdlbnRQYXR0ZXJucyA9IFsnTVNJRSAnLCAnVHJpZGVudC8nLCAnRWRnZS8nXTtcblxuICAgICAgcmV0dXJuIG5ldyBSZWdFeHAodXNlckFnZW50UGF0dGVybnMuam9pbignfCcpKS50ZXN0KHVzZXJBZ2VudCk7XG4gICAgfVxuXG4gICAgLypcbiAgICAgKiBJRSBoYXMgcm91bmRpbmcgYnVnIHJvdW5kaW5nIGRvd24gY2xpZW50SGVpZ2h0IGFuZCBjbGllbnRXaWR0aCBhbmRcbiAgICAgKiByb3VuZGluZyB1cCBzY3JvbGxIZWlnaHQgYW5kIHNjcm9sbFdpZHR
15oIGNhdXNpbmcgZmFsc2UgcG9zaXRpdmVzXG4gICAgICogb24gaGFzU2Nyb2xsYWJsZVNwYWNlXG4gICAgICovXG4gICAgdmFyIFJPVU5ESU5HX1RPTEVSQU5DRSA9IGlzTWljcm9zb2Z0QnJvd3Nlcih3Lm5hdmlnYXRvci51c2VyQWdlbnQpID8gMSA6IDA7XG5cbiAgICAvKipcbiAgICAgKiBjaGFuZ2VzIHNjcm9sbCBwb3NpdGlvbiBpbnNpZGUgYW4gZWxlbWVudFxuICAgICAqIEBtZXRob2Qgc2Nyb2xsRWxlbWVudFxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSB4XG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IHlcbiAgICAgKiBAcmV0dXJucyB7dW5kZWZpbmVkfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNjcm9sbEVsZW1lbnQoeCwgeSkge1xuICAgICAgdGhpcy5zY3JvbGxMZWZ0ID0geDtcbiAgICAgIHRoaXMuc2Nyb2xsVG9wID0geTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiByZXR1cm5zIHJlc3VsdCBvZiBhcHBseWluZyBlYXNlIG1hdGggZnVuY3Rpb24gdG8gYSBudW1iZXJcbiAgICAgKiBAbWV0aG9kIGVhc2VcbiAgICAgKiBAcGFyYW0ge051bWJlcn0ga1xuICAgICAqIEByZXR1cm5zIHtOdW1iZXJ9XG4gICAgICovXG4gICAgZnVuY3Rpb24gZWFzZShrKSB7XG4gICAgICByZXR1cm4gMC41ICogKDEgLSBNYXRoLmNvcyhNYXRoLlBJICogaykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGluZGljYXRlcyBpZiBhIHNtb290aCBiZWhhdmlvciBzaG91bGQgYmUgYXBwbGllZFxuICAgICAqIEBtZXRob2Qgc2hvdWxkQmFpbE91dFxuICAgICAqIEBwYXJhbSB7TnVtYmVyfE9iamVjdH0gZmlyc3RBcmdcbiAgICAgKiBAcmV0dXJucyB7Qm9vbGVhbn1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzaG91bGRCYWlsT3V0KGZpcnN0QXJnKSB7XG4gICAgICBpZiAoXG4gICAgICAgIGZpcnN0QXJnID09PSBudWxsIHx8XG4gICAgICAgIHR5cGVvZiBmaXJzdEFyZyAhPT0gJ29iamVjdCcgfHxcbiAgICAgICAgZmlyc3RBcmcuYmVoYXZpb3IgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICBmaXJzdEFyZy5iZWhhdmlvciA9PT0gJ2F1dG8nIHx8XG4gICAgICAgIGZpcnN0QXJnLmJlaGF2aW9yID09PSAnaW5zdGFudCdcbiAgICAgICkge1xuICAgICAgICAvLyBmaXJzdCBhcmd1bWVudCBpcyBub3QgYW4gb2JqZWN0L251bGxcbiAgICAgICAgLy8gb3IgYmVoYXZpb3IgaXMgYXV0bywgaW5zdGFudCBvciB1bmRlZmluZWRcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgZmlyc3RBcmcgPT09ICdvYmplY3QnICYmIGZpcnN0QXJnLmJlaGF2aW9yID09PSAnc21vb3RoJykge1xuICAgICAgICAvLyBmaXJzdCBhcmd1bWVudCBpcyBhbiBvYmplY3QgYW5kIGJlaGF2aW9yIGlzIHNtb290aFxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIC8vIHRocm93IGVycm9yIHdoZW4gYmVoYXZpb3IgaXMgbm90IHN1cHBvcnRlZFxuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgJ2JlaGF2aW9yIG1lbWJlciBvZiBTY3JvbGxPcHRpb25zICcgK1xuICAgICAgICAgIGZpcnN0QXJnLmJlaGF2aW9yICtcbiAgICAgICAgICAnIGlzIG5vdCBhIHZhbGlkIHZhbHVlIGZvciBlbnVtZXJhdGlvbiBTY3JvbGxCZWhhdmlvci4nXG4gICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGluZGljYXRlcyBpZiBhbiBlbGVtZW50IGhhcyBzY3JvbGxhYmxlIHNwYWNlIGluIHRoZSBwcm92aWRlZCBheGlzXG4gICAgICogQG1ldGhvZCBoYXNTY3JvbGxhYmxlU3BhY2VcbiAgICAgKiBAcGFyYW0ge05vZGV9IGVsXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IGF4aXNcbiAgICAgKiBAcmV0dXJucyB7Qm9vbGVhbn1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYXNTY3JvbGxhYmxlU3BhY2UoZWwsIGF4aXMpIHtcbiAgICAgIGlmIChheGlzID09PSAnWScpIHtcbiAgICAgICAgcmV0dXJuIGVsLmNsaWVudEhlaWdodCArIFJPVU5ESU5HX1RPTEVSQU5DRSA8IGVsLnNjcm9sbEhlaWdodDtcbiAgICAgIH1cblxuICAgICAgaWYgKGF4aXMgPT09ICdYJykge1xuICAgICAgICByZXR1cm4gZWwuY2xpZW50V2lkdGggKyBST1VORElOR19UT0xFUkFOQ0UgPCBlbC5zY3JvbGxXaWR0aDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBpbmRpY2F0ZXMgaWYgYW4gZWxlbWVudCBoYXMgYSBzY3JvbGxhYmxlIG92ZXJmbG93IHByb3BlcnR5IGluIHRoZSBheGlzXG4gICAgICogQG1ldGhvZCBjYW5PdmVyZmxvd1xuICAgICAqIEBwYXJhbSB7Tm9kZX0gZWxcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gYXhpc1xuICAgICAqIEByZXR1cm5zIHtCb29sZWFufVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNhbk92ZXJmbG93KGVsLCBheGlzKSB7XG4gICAgICB2Y
15XIgb3ZlcmZsb3dWYWx1ZSA9IHcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbClbJ292ZXJmbG93JyArIGF4aXNdO1xuXG4gICAgICByZXR1cm4gb3ZlcmZsb3dWYWx1ZSA9PT0gJ2F1dG8nIHx8IG92ZXJmbG93VmFsdWUgPT09ICdzY3JvbGwnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGluZGljYXRlcyBpZiBhbiBlbGVtZW50IGNhbiBiZSBzY3JvbGxlZCBpbiBlaXRoZXIgYXhpc1xuICAgICAqIEBtZXRob2QgaXNTY3JvbGxhYmxlXG4gICAgICogQHBhcmFtIHtOb2RlfSBlbFxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBheGlzXG4gICAgICogQHJldHVybnMge0Jvb2xlYW59XG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNTY3JvbGxhYmxlKGVsKSB7XG4gICAgICB2YXIgaXNTY3JvbGxhYmxlWSA9IGhhc1Njcm9sbGFibGVTcGFjZShlbCwgJ1knKSAmJiBjYW5PdmVyZmxvdyhlbCwgJ1knKTtcbiAgICAgIHZhciBpc1Njcm9sbGFibGVYID0gaGFzU2Nyb2xsYWJsZVNwYWNlKGVsLCAnWCcpICYmIGNhbk92ZXJmbG93KGVsLCAnWCcpO1xuXG4gICAgICByZXR1cm4gaXNTY3JvbGxhYmxlWSB8fCBpc1Njcm9sbGFibGVYO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGZpbmRzIHNjcm9sbGFibGUgcGFyZW50IG9mIGFuIGVsZW1lbnRcbiAgICAgKiBAbWV0aG9kIGZpbmRTY3JvbGxhYmxlUGFyZW50XG4gICAgICogQHBhcmFtIHtOb2RlfSBlbFxuICAgICAqIEByZXR1cm5zIHtOb2RlfSBlbFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZpbmRTY3JvbGxhYmxlUGFyZW50KGVsKSB7XG4gICAgICB3aGlsZSAoZWwgIT09IGQuYm9keSAmJiBpc1Njcm9sbGFibGUoZWwpID09PSBmYWxzZSkge1xuICAgICAgICBlbCA9IGVsLnBhcmVudE5vZGUgfHwgZWwuaG9zdDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGVsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHNlbGYgaW52b2tlZCBmdW5jdGlvbiB0aGF0LCBnaXZlbiBhIGNvbnRleHQsIHN0ZXBzIHRocm91Z2ggc2Nyb2xsaW5nXG4gICAgICogQG1ldGhvZCBzdGVwXG4gICAgICogQHBhcmFtIHtPYmplY3R9IGNvbnRleHRcbiAgICAgKiBAcmV0dXJucyB7dW5kZWZpbmVkfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0ZXAoY29udGV4dCkge1xuICAgICAgdmFyIHRpbWUgPSBub3coKTtcbiAgICAgIHZhciB2YWx1ZTtcbiAgICAgIHZhciBjdXJyZW50WDtcbiAgICAgIHZhciBjdXJyZW50WTtcbiAgICAgIHZhciBlbGFwc2VkID0gKHRpbWUgLSBjb250ZXh0LnN0YXJ0VGltZSkgLyBTQ1JPTExfVElNRTtcblxuICAgICAgLy8gYXZvaWQgZWxhcHNlZCB0aW1lcyBoaWdoZXIgdGhhbiBvbmVcbiAgICAgIGVsYXBzZWQgPSBlbGFwc2VkID4gMSA/IDEgOiBlbGFwc2VkO1xuXG4gICAgICAvLyBhcHBseSBlYXNpbmcgdG8gZWxhcHNlZCB0aW1lXG4gICAgICB2YWx1ZSA9IGVhc2UoZWxhcHNlZCk7XG5cbiAgICAgIGN1cnJlbnRYID0gY29udGV4dC5zdGFydFggKyAoY29udGV4dC54IC0gY29udGV4dC5zdGFydFgpICogdmFsdWU7XG4gICAgICBjdXJyZW50WSA9IGNvbnRleHQuc3RhcnRZICsgKGNvbnRleHQueSAtIGNvbnRleHQuc3RhcnRZKSAqIHZhbHVlO1xuXG4gICAgICBjb250ZXh0Lm1ldGhvZC5jYWxsKGNvbnRleHQuc2Nyb2xsYWJsZSwgY3VycmVudFgsIGN1cnJlbnRZKTtcblxuICAgICAgLy8gc2Nyb2xsIG1vcmUgaWYgd2UgaGF2ZSBub3QgcmVhY2hlZCBvdXIgZGVzdGluYXRpb25cbiAgICAgIGlmIChjdXJyZW50WCAhPT0gY29udGV4dC54IHx8IGN1cnJlbnRZICE9PSBjb250ZXh0LnkpIHtcbiAgICAgICAgdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoc3RlcC5iaW5kKHcsIGNvbnRleHQpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBzY3JvbGxzIHdpbmRvdyBvciBlbGVtZW50IHdpdGggYSBzbW9vdGggYmVoYXZpb3JcbiAgICAgKiBAbWV0aG9kIHNtb290aFNjcm9sbFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fE5vZGV9IGVsXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IHhcbiAgICAgKiBAcGFyYW0ge051bWJlcn0geVxuICAgICAqIEByZXR1cm5zIHt1bmRlZmluZWR9XG4gICAgICovXG4gICAgZnVuY3Rpb24gc21vb3RoU2Nyb2xsKGVsLCB4LCB5KSB7XG4gICAgICB2Y
15XIgc2Nyb2xsYWJsZTtcbiAgICAgIHZhciBzdGFydFg7XG4gICAgICB2YXIgc3RhcnRZO1xuICAgICAgdmFyIG1ldGhvZDtcbiAgICAgIHZhciBzdGFydFRpbWUgPSBub3coKTtcblxuICAgICAgLy8gZGVmaW5lIHNjcm9sbCBjb250ZXh0XG4gICAgICBpZiAoZWwgPT09IGQuYm9keSkge1xuICAgICAgICBzY3JvbGxhYmxlID0gdztcbiAgICAgICAgc3RhcnRYID0gdy5zY3JvbGxYIHx8IHcucGFnZVhPZmZzZXQ7XG4gICAgICAgIHN0YXJ0WSA9IHcuc2Nyb2xsWSB8fCB3LnBhZ2VZT2Zmc2V0O1xuICAgICAgICBtZXRob2QgPSBvcmlnaW5hbC5zY3JvbGw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzY3JvbGxhYmxlID0gZWw7XG4gICAgICAgIHN0YXJ0WCA9IGVsLnNjcm9sbExlZnQ7XG4gICAgICAgIHN0YXJ0WSA9IGVsLnNjcm9sbFRvcDtcbiAgICAgICAgbWV0aG9kID0gc2Nyb2xsRWxlbWVudDtcbiAgICAgIH1cblxuICAgICAgLy8gc2Nyb2xsIGxvb3Bpbmcgb3ZlciBhIGZyYW1lXG4gICAgICBzdGVwKHtcbiAgICAgICAgc2Nyb2xsYWJsZTogc2Nyb2xsYWJsZSxcbiAgICAgICAgbWV0aG9kOiBtZXRob2QsXG4gICAgICAgIHN0YXJ0VGltZTogc3RhcnRUaW1lLFxuICAgICAgICBzdGFydFg6IHN0YXJ0WCxcbiAgICAgICAgc3RhcnRZOiBzdGFydFksXG4gICAgICAgIHg6IHgsXG4gICAgICAgIHk6IHlcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIE9SSUdJTkFMIE1FVEhPRFMgT1ZFUlJJREVTXG4gICAgLy8gdy5zY3JvbGwgYW5kIHcuc2Nyb2xsVG9cbiAgICB3LnNjcm9sbCA9IHcuc2Nyb2xsVG8gPSBmdW5jdGlvbigpIHtcbiAgICAgIC8vIGF2b2lkIGFjdGlvbiB3aGVuIG5vIGFyZ3VtZW50cyBhcmUgcGFzc2VkXG4gICAgICBpZiAoYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBhdm9pZCBzbW9vdGggYmVoYXZpb3IgaWYgbm90IHJlcXVpcmVkXG4gICAgICBpZiAoc2hvdWxkQmFpbE91dChhcmd1bWVudHNbMF0pID09PSB0cnVlKSB7XG4gICAgICAgIG9yaWdpbmFsLnNjcm9sbC5jYWxsKFxuICAgICAgICAgIHcsXG4gICAgICAgICAgYXJndW1lbnRzWzBdLmxlZnQgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyBhcmd1bWVudHNbMF0ubGVmdFxuICAgICAgICAgICAgOiB0eXBlb2YgYXJndW1lbnRzWzBdICE9PSAnb2JqZWN0J1xuICAgICAgICAgICAgICA/IGFyZ3VtZW50c1swXVxuICAgICAgICAgICAgICA6IHcuc2Nyb2xsWCB8fCB3LnBhZ2VYT2Zmc2V0LFxuICAgICAgICAgIC8vIHVzZSB0b3AgcHJvcCwgc2Vjb25kIGFyZ3VtZW50IGlmIHByZXNlbnQgb3IgZmFsbGJhY2sgdG8gc2Nyb2xsWVxuICAgICAgICAgIGFyZ3VtZW50c1swXS50b3AgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyBhcmd1bWVudHNbMF0udG9wXG4gICAgICAgICAgICA6IGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgID8gYXJndW1lbnRzWzFdXG4gICAgICAgICAgICAgIDogdy5zY3JvbGxZIHx8IHcucGFnZVlPZmZzZXRcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIExFVCBUSEUgU01PT1RITkVTUyBCRUdJTiFcbiAgICAgIHNtb290aFNjcm9sbC5jYWxsKFxuICAgICAgICB3LFxuICAgICAgICBkLmJvZHksXG4gICAgICAgIGFyZ3VtZW50c1swXS5sZWZ0ICE9PSB1bmRlZmluZWRcbiAgICAgICAgICA/IH5+YXJndW1lbnRzWzBdLmxlZnRcbiAgICAgICAgICA6IHcuc2Nyb2xsWCB8fCB3LnBhZ2VYT2Zmc2V0LFxuICAgICAgICBhcmd1bWVudHNbMF0udG9wICE9PSB1bmRlZmluZWRcbiAgICAgICAgICA/IH5+YXJndW1lbnRzWzBdLnRvcFxuICAgICAgICAgIDogdy5zY3JvbGxZIHx8IHcucGFnZVlPZmZzZXRcbiAgICAgICk7XG4gICAgfTtcblxuICAgIC8vIHcuc2Nyb2xsQnlcbiAgICB3LnNjcm9sbEJ5ID0gZnVuY3Rpb24oKSB7XG4gICAgICAvLyBhdm9pZCBhY3Rpb24gd2hlbiBubyBhcmd1bWVudHMgYXJlIHBhc3NlZFxuICAgICAgaWYgKGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gYXZvaWQgc21vb3RoIGJlaGF2aW9yIGlmIG5vdCByZXF1aXJlZFxuICAgICAgaWYgKHNob3VsZEJhaWxPdXQoYXJndW1lbnRzWzBdKSkge1xuICAgICAgICBvcmlnaW5hbC5zY3JvbGxCeS5jYWxsKFxuICAgICAgICAgIHcsXG4gICAgICAgICAgYXJndW1lbnRzWzBdLmxlZnQgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyBhcmd1bWVudHNbMF0ubGVmdFxuICAgICAgICAgICAgOiB0eXBlb2YgYXJndW1lbnRzWzBdICE9PSAnb2JqZWN0JyA/IGFyZ3VtZW50c1swXSA6IDAsXG4gICAgICAgICAgYXJndW1lbnRzWzBdLnRvcCAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IGFyZ3VtZW50c1swXS50b3BcbiAgICAgICAgICAgIDogYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiAwXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBMRVQgVEhFIFNNT09USE5FU1MgQkVHSU4hXG4gICAgICBzbW9vdGhTY3JvbGwuY2FsbChcbiAgICAgICAgdyxcbiAgICAgICAgZC5ib2R5LFxuICAgICAgICB+fmFyZ3VtZW50c1swXS5sZWZ0ICsgKHcuc2Nyb2xsWCB8fCB3LnBhZ2VYT2Zmc2V0KSxcbiAgICAgICAgfn5hcmd1bWVudHNbMF0udG9wICsgKHcuc2Nyb2xsWSB8fCB3LnBhZ2VZT2Zmc2V0KVxuICAgICAgKTtcbiAgICB9O1xuXG4gICAgLy8gRWxlbWVudC5wcm90b3R5cGUuc2Nyb2xsIGFuZCBFbGVtZW50LnByb3RvdHlwZS5zY3JvbGxUb1xuICAgIEVsZW1lbnQucHJvdG90eXBlLnNjcm9sbCA9IEVsZW1lbnQucHJvdG90eXBlLnNjcm9sbFRvID0gZnVuY3Rpb24oKSB7XG4gICAgICAvLyBhdm9pZCBhY3Rpb24gd2hlbiBubyBhcmd1bWVudHMgYXJlIHBhc3NlZFxuICAgICAgaWYgKGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gYXZvaWQgc21vb3RoIGJlaGF2aW9yIGlmIG5vdCByZXF1aXJlZFxuICAgICAgaWYgKHNob3VsZEJhaWxPdXQoYXJndW1lbnRzWzBdKSA9PT0gdHJ1ZSkge1xuICAgICAgICAvLyBpZiBvbmUgbnVtYmVyIGlzIHBhc3NlZCwgdGhyb3cgZXJyb3IgdG8gbWF0Y2ggRmlyZWZveCBpbXBsZW1lbnRhdGlvblxuICAgICAgICBpZiAodHlwZW9mIGFyZ3VtZW50c1swXSA9PT0gJ251bWJlcicgJiYgYXJndW1lbnRzWzFdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoJ1ZhbHVlIGNvdWxkIG5vdCBiZSBjb252ZXJ0ZWQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG9yaWdpbmFsLmVsZW1lbnRTY3JvbGwuY2FsbChcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgIC8vIHVzZSBsZWZ0IHByb3AsIGZpcnN0IG51bWJlciBhcmd1bWVudCBvciBmYWxsYmFjayB0byBzY3JvbGxMZWZ0XG4gICAgICAgICAgYXJndW1lbnRzWzBdLmxlZnQgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyB+fmFyZ3VtZW50c1swXS5sZWZ0XG4gICAgICAgICAgICA6IHR5cGVvZiBhcmd1bWVudHNbMF0gIT09ICdvYmplY3QnID8gfn5hcmd1bWVudHNbMF0gOiB0aGlzLnNjcm9sbExlZnQsXG4gICAgICAgICAgLy8gdXNlIHRvcCBwcm9wLCBzZWNvbmQgYXJndW1lbnQgb3IgZmFsbGJhY2sgdG8gc2Nyb2xsVG9wXG4gICAgICAgICAgYXJndW1lbnRzWzBdLnRvcCAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IH5+YXJndW1lbnRzWzBdLnRvcFxuICAgICAgICAgICAgOiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IH5+YXJndW1lbnRzWzFdIDogdGhpcy5zY3JvbGxUb3BcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBsZWZ0ID0gYXJndW1lbnRzWzBdLmxlZnQ7XG4gICAgICB2Y
15XIgdG9wID0gYXJndW1lbnRzWzBdLnRvcDtcblxuICAgICAgLy8gTEVUIFRIRSBTTU9PVEhORVNTIEJFR0lOIVxuICAgICAgc21vb3RoU2Nyb2xsLmNhbGwoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHR5cGVvZiBsZWZ0ID09PSAndW5kZWZpbmVkJyA/IHRoaXMuc2Nyb2xsTGVmdCA6IH5+bGVmdCxcbiAgICAgICAgdHlwZW9mIHRvcCA9PT0gJ3VuZGVmaW5lZCcgPyB0aGlzLnNjcm9sbFRvcCA6IH5+dG9wXG4gICAgICApO1xuICAgIH07XG5cbiAgICAvLyBFbGVtZW50LnByb3RvdHlwZS5zY3JvbGxCeVxuICAgIEVsZW1lbnQucHJvdG90eXBlLnNjcm9sbEJ5ID0gZnVuY3Rpb24oKSB7XG4gICAgICAvLyBhdm9pZCBhY3Rpb24gd2hlbiBubyBhcmd1bWVudHMgYXJlIHBhc3NlZFxuICAgICAgaWYgKGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gYXZvaWQgc21vb3RoIGJlaGF2aW9yIGlmIG5vdCByZXF1aXJlZFxuICAgICAgaWYgKHNob3VsZEJhaWxPdXQoYXJndW1lbnRzWzBdKSA9PT0gdHJ1ZSkge1xuICAgICAgICBvcmlnaW5hbC5lbGVtZW50U2Nyb2xsLmNhbGwoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBhcmd1bWVudHNbMF0ubGVmdCAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IH5+YXJndW1lbnRzWzBdLmxlZnQgKyB0aGlzLnNjcm9sbExlZnRcbiAgICAgICAgICAgIDogfn5hcmd1bWVudHNbMF0gKyB0aGlzLnNjcm9sbExlZnQsXG4gICAgICAgICAgYXJndW1lbnRzWzBdLnRvcCAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IH5+YXJndW1lbnRzWzBdLnRvcCArIHRoaXMuc2Nyb2xsVG9wXG4gICAgICAgICAgICA6IH5+YXJndW1lbnRzWzFdICsgdGhpcy5zY3JvbGxUb3BcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2Nyb2xsKHtcbiAgICAgICAgbGVmdDogfn5hcmd1bWVudHNbMF0ubGVmdCArIHRoaXMuc2Nyb2xsTGVmdCxcbiAgICAgICAgdG9wOiB+fmFyZ3VtZW50c1swXS50b3AgKyB0aGlzLnNjcm9sbFRvcCxcbiAgICAgICAgYmVoYXZpb3I6IGFyZ3VtZW50c1swXS5iZWhhdmlvclxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIC8vIEVsZW1lbnQucHJvdG90eXBlLnNjcm9sbEludG9WaWV3XG4gICAgRWxlbWVudC5wcm90b3R5cGUuc2Nyb2xsSW50b1ZpZXcgPSBmdW5jdGlvbigpIHtcbiAgICAgIC8vIGF2b2lkIHNtb290aCBiZWhhdmlvciBpZiBub3QgcmVxdWlyZWRcbiAgICAgIGlmIChzaG91bGRCYWlsT3V0KGFyZ3VtZW50c1swXSkgPT09IHRydWUpIHtcbiAgICAgICAgb3JpZ2luYWwuc2Nyb2xsSW50b1ZpZXcuY2FsbChcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgIGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IGFyZ3VtZW50c1swXVxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gTEVUIFRIRSBTTU9PVEhORVNTIEJFR0lOIVxuICAgICAgdmFyIHNjcm9sbGFibGVQYXJlbnQgPSBmaW5kU2Nyb2xsYWJsZVBhcmVudCh0aGlzKTtcbiAgICAgIHZhciBwYXJlbnRSZWN0cyA9IHNjcm9sbGFibGVQYXJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICB2Y
15XIgY2xpZW50UmVjdHMgPSB0aGlzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICBpZiAoc2Nyb2xsYWJsZVBhcmVudCAhPT0gZC5ib2R5KSB7XG4gICAgICAgIC8vIHJldmVhbCBlbGVtZW50IGluc2lkZSBwYXJlbnRcbiAgICAgICAgc21vb3RoU2Nyb2xsLmNhbGwoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBzY3JvbGxhYmxlUGFyZW50LFxuICAgICAgICAgIHNjcm9sbGFibGVQYXJlbnQuc2Nyb2xsTGVmdCArIGNsaWVudFJlY3RzLmxlZnQgLSBwYXJlbnRSZWN0cy5sZWZ0LFxuICAgICAgICAgIHNjcm9sbGFibGVQYXJlbnQuc2Nyb2xsVG9wICsgY2xpZW50UmVjdHMudG9wIC0gcGFyZW50UmVjdHMudG9wXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gcmV2ZWFsIHBhcmVudCBpbiB2aWV3cG9ydCB1bmxlc3MgaXMgZml4ZWRcbiAgICAgICAgaWYgKHcuZ2V0Q29tcHV0ZWRTdHlsZShzY3JvbGxhYmxlUGFyZW50KS5wb3NpdGlvbiAhPT0gJ2ZpeGVkJykge1xuICAgICAgICAgIHcuc2Nyb2xsQnkoe1xuICAgICAgICAgICAgbGVmdDogcGFyZW50UmVjdHMubGVmdCxcbiAgICAgICAgICAgIHRvcDogcGFyZW50UmVjdHMudG9wLFxuICAgICAgICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHJldmVhbCBlbGVtZW50IGluIHZpZXdwb3J0XG4gICAgICAgIHcuc2Nyb2xsQnkoe1xuICAgICAgICAgIGxlZnQ6IGNsaWVudFJlY3RzLmxlZnQsXG4gICAgICAgICAgdG9wOiBjbGllbnRSZWN0cy50b3AsXG4gICAgICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBpZiAodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgLy8gY29tbW9uanNcbiAgICBtb2R1bGUuZXhwb3J0cyA9IHsgcG9seWZpbGw6IHBvbHlmaWxsIH07XG4gIH0gZWxzZSB7XG4gICAgLy8gZ2xvYmFsXG4gICAgcG9seWZpbGwoKTtcbiAgfVxuXG59KCkpO1xuIiwiY2xhc3MgVmFyaW91c1ZhbHVlc1V0aWwge1xyXG4gIHN0YXRpYyBfc2l6ZXMgPSB7XHJcbiAgICBwOiBkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodCxcclxuICAgIHg6IHdpbmRvdy5pbm5lcldpZHRoLFxyXG4gICAgeTogd2luZG93LmlubmVySGVpZ2h0LFxyXG4gICAgbzogd2luZG93LnBhZ2VZT2Zmc2V0LFxyXG4gICAgbTogd2luZG93Lm1hdGNoTWVkaWEgJiYgd2luZG93Lm1hdGNoTWVkaWEoJyhtYXgtd2lkdGg6IDc2OHB4KScpLm1hdGNoZXMsXHJcbiAgICBsZzogd2luZG93Lm1hdGNoTWVkaWEgJiYgd2luZG93Lm1hdGNoTWVkaWEoJyhtYXgtd2lkdGg6IDEwMjRweCknKS5tYXRjaGVzLFxyXG4gICAgaDpcclxuICAgICAgd2luZG93Lm1hdGNoTWVkaWEoJyhob3ZlcjogaG92ZXIpJykubWF0Y2hlcyAmJlxyXG4gICAgICB3aW5kb3cubWF0Y2hNZWRpYSgnKHBvaW50ZXI6IGZpbmUpJykubWF0Y2hlcyxcclxuICB9O1xyXG4gIHN0YXRpYyBnZXQgc2l6ZSgpIHtcclxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCB0aGlzLl9zaXplcyk7XHJcbiAgfVxyXG4gIHN0YXRpYyBnZXQgcGFnZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnNpemUucDtcclxuICB9XHJcbiAgc3RhdGljIGdldCB3aWR0aCgpIHtcclxuICAgIHJldHVybiB0aGlzLnNpemUueDtcclxuICB9XHJcbiAgc3RhdGljIGdldCBoZWlnaHQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zaXplLnk7XHJcbiAgfVxyXG4gIHN0YXRpYyBnZXQgb2Zmc2V0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2l6ZS5vO1xyXG4gIH1cclxuICBzdGF0aWMgZ2V0IG1lZGlhKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2l6ZS5tO1xyXG4gIH1cclxuICBzdGF0aWMgZ2V0IG1lZGlhTGcoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zaXplLmxnO1xyXG4gIH1cclxuICBzdGF0aWMgZ2V0IHRvdWNoKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2l6ZS50O1xyXG4gIH1cclxuICBzdGF0aWMgZ2V0IGhvdmVyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2l6ZS5oO1xyXG4gIH1cclxuICBzdGF0aWMgc2Nyb2xsKCkge1xyXG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLl9zaXplcywge1xyXG4gICAgICBvOiB3aW5kb3cucGFnZVlPZmZzZXQsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgc3RhdGljIHJlc2l6ZSgpIHtcclxuICAgIE9iamVjdC5hc3NpZ24odGhpcy5fc2l6ZXMsIHtcclxuICAgICAgcDogZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQsXHJcbiAgICAgIHg6IHdpbmRvdy5pbm5lcldpZHRoLFxyXG4gICAgICB5OiB3aW5kb3cuaW5uZXJIZWlnaHQsXHJcbiAgICAgIG06IHdpbmRvdy5tYXRjaE1lZGlhICYmIHdpbmRvdy5tYXRjaE1lZGlhKCcobWF4LXdpZHRoOiA3NjhweCknKS5tYXRjaGVzLFxyXG4gICAgICBsZzogd2luZG93Lm1hdGNoTWVkaWEgJiYgd2luZG93Lm1hdGNoTWVkaWEoJyhtYXgtd2lkdGg6IDEwMjRweCknKS5tYXRjaGVzLFxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgeyBWYXJpb3VzVmFsdWVzVXRpbCBhcyBWVlUgfTtcclxuXHJcbi8vIOOCv+ODg+ODgeODh+ODkOOCpOOCueWIpOWumuaWueazlVxyXG4vLyBodHRwczovL3plbm4uZGV2L2phbWJhbmQvc2NyYXBzLzM3NDkyMDNmOTE4NzVjXHJcbi8vIOOCt+ODs+OCsOODq+ODiOODs+ODkeOCv+ODvOODs+OBruOCr+ODqeOCuVxyXG4vLyBodHRwczovL25vdGUuY29tL2FxX2thbmkvbi9uN2IyNTg5ZmU0OGFiXHJcbiIsIi8qKlxyXG4gKiBBY2NvcmRpb24gdjMuMy40XHJcbiAqIExpZ2h0d2VpZ2h0IGFuZCBhY2Nlc3NpYmxlIGFjY29yZGlvbiBtb2R1bGUgY3JlYXRlZCBpbiBwdXJlIEphdmFzY3JpcHRcclxuICogaHR0cHM6Ly9naXRodWIuY29tL21pY2h1MmsvQWNjb3JkaW9uXHJcbiAqXHJcbiAqIENvcHlyaWdodCAoYykgTWljaGHFgiBTdHJ1bXBmXHJcbiAqIFB1Ymxpc2hlZCB1bmRlciBNSVQgTGljZW5zZVxyXG4gKi9cclxuXHJcbiFmdW5jdGlvbihlKXt2YXIgdD0wLG49ZnVuY3Rpb24gZShuLHMpe3ZhciBpPXRoaXMscj10aGlzLG89ITE7aWYoQXJyYXkuaXNBcnJheShuKSlyZXR1cm4hIW4ubGVuZ3RoJiZuLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBlKHQscyl9KSk7dmFyIGE9e2luaXQ6ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnM9T2JqZWN0LmFzc2lnbih7ZHVyYXRpb246NjAwLGFyaWFFbmFibGVkOiEwLGNvbGxhcHNlOiEwLHNob3dNdWx0aXBsZTohMSxvbmx5Q2hpbGROb2RlczohMCxvcGVuT25Jbml0OltdLGVsZW1lbnRDbGFzczpcImFjXCIsdHJpZ2dlckNsYXNzOlwiYWMtdHJpZ2dlclwiLHBhbmVsQ2xhc3M6XCJhYy1wYW5lbFwiLGFjdGl2ZUNsYXNzOlwiaXMtYWN0aXZlXCIsYmVmb3JlT3BlbjpmdW5jdGlvbigpe30sb25PcGVuOmZ1bmN0aW9uKCl7fSxiZWZvcmVDbG9zZTpmdW5jdGlvbigpe30sb25DbG9zZTpmdW5jdGlvbigpe319LHMpO3ZhciBlPVwic3RyaW5nXCI9PXR5cGVvZiBuO3RoaXMuY29udGFpbmVyPWU/ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihuKTpuLHRoaXMuY3JlYXRlRGVmaW5pdGlvbnMoKSxyLmF0dGFjaEV2ZW50cygpfSxjcmVhdGVEZWZpbml0aW9uczpmdW5jdGlvbigpe3ZhciBlPXR
15oaXMsbj10aGlzLm9wdGlvbnMscz1uLmVsZW1lbnRDbGFzcyxpPW4ub3Blbk9uSW5pdCxyPW4ub25seUNoaWxkTm9kZXM/dGhpcy5jb250YWluZXIuY2hpbGROb2Rlczp0aGlzLmNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKHUocykpO3RoaXMuZWxlbWVudHM9QXJyYXkuZnJvbShyKS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmNsYXNzTGlzdCYmZS5jbGFzc0xpc3QuY29udGFpbnMocyl9KSksdGhpcy5maXJzdEVsZW1lbnQ9dGhpcy5lbGVtZW50c1swXSx0aGlzLmxhc3RFbGVtZW50PXRoaXMuZWxlbWVudHNbdGhpcy5lbGVtZW50cy5sZW5ndGgtMV0sdGhpcy5lbGVtZW50cy5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiFlLmNsYXNzTGlzdC5jb250YWlucyhcImpzLWVuYWJsZWRcIil9KSkuZm9yRWFjaCgoZnVuY3Rpb24obil7bi5jbGFzc0xpc3QuYWRkKFwianMtZW5hYmxlZFwiKSxlLmdlbmVyYXRlSURzKG4pLGUuc2V0QVJJQShuKSxlLnNldFRyYW5zaXRpb24obik7dmFyIHM9ZS5lbGVtZW50cy5pbmRleE9mKG4pO3QrKyxpLmluY2x1ZGVzKHMpP2Uuc2hvd0VsZW1lbnQobiwhMSk6ZS5jbG9zZUVsZW1lbnQobiwhMSl9KSl9LHNldFRyYW5zaXRpb246ZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXSxuPXRoaXMub3B0aW9ucyxzPW4uZHVyYXRpb24saT1uLnBhbmVsQ2xhc3Mscj1lLnF1ZXJ5U2VsZWN0b3IodShpKSksbz1sKFwidHJhbnNpdGlvbkR1cmF0aW9uXCIpO3Iuc3R5bGVbb109dD9udWxsOlwiXCIuY29uY2F0KHMsXCJtc1wiKX0sZ2VuZXJhdGVJRHM6ZnVuY3Rpb24oZSl7dmFyIG49dGhpcy5vcHRpb25zLHM9bi50cmlnZ2VyQ2xhc3MsaT1uLnBhbmVsQ2xhc3Mscj1lLnF1ZXJ5U2VsZWN0b3IodShzKSksbz1lLnF1ZXJ5U2VsZWN0b3IodShpKSk7ZS5zZXRBdHRyaWJ1dGUoXCJpZFwiLGUuaWR8fFwiYWMtXCIuY29uY2F0KHQpKSxyLnNldEF0dHJpYnV0ZShcImlkXCIsci5pZHx8XCJhYy10cmlnZ2VyLVwiLmNvbmNhdCh0KSksby5zZXRBdHRyaWJ1dGUoXCJpZFwiLG8uaWR8fFwiYWMtcGFuZWwtXCIuY29uY2F0KHQpKX0scmVtb3ZlSURzOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMub3B0aW9ucyxuPXQudHJpZ2dlckNsYXNzLHM9dC5wYW5lbENsYXNzLGk9ZS5xdWVyeVNlbGVjdG9yKHUobikpLHI9ZS5xdWVyeVNlbGVjdG9yKHUocykpO2UuaWQuc3RhcnRzV2l0aChcImFjLVwiKSYmZS5yZW1vdmVBdHRyaWJ1dGUoXCJpZFwiKSxpLmlkLnN0YXJ0c1dpdGgoXCJhYy1cIikmJmkucmVtb3ZlQXR0cmlidXRlKFwiaWRcIiksci5pZC5zdGFydHNXaXRoKFwiYWMtXCIpJiZyLnJlbW92ZUF0dHJpYnV0ZShcImlkXCIpfSxzZXRBUklBOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMub3B0aW9ucyxuPXQuYXJpYUVuYWJsZWQscz10LnRyaWdnZXJDbGFzcyxpPXQucGFuZWxDbGFzcztpZihuKXt2YXIgcj1lLnF1ZXJ5U2VsZWN0b3IodShzKSksbz1lLnF1ZXJ5U2VsZWN0b3IodShpKSk7ci5zZXRBdHRyaWJ1dGUoXCJyb2xlXCIsXCJidXR0b25cIiksci5zZXRBdHRyaWJ1dGUoXCJhcmlhLWNvbnRyb2xzXCIsby5pZCksci5zZXRBdHRyaWJ1dGUoXCJhcmlhLWRpc2FibGVkXCIsITEpLHIuc2
15V0QXR0cmlidXRlKFwiYXJpYS1leHBhbmRlZFwiLCExKSxvLnNldEF0dHJpYnV0ZShcInJvbGVcIixcInJlZ2lvblwiKSxvLnNldEF0dHJpYnV0ZShcImFyaWEtbGFiZWxsZWRieVwiLHIuaWQpfX0sdXBkYXRlQVJJQTpmdW5jdGlvbihlLHQpe3ZhciBuPXQuYXJpYUV4cGFuZGVkLHM9dC5hcmlhRGlzYWJsZWQsaT10aGlzLm9wdGlvbnMscj1pLmFyaWFFbmFibGVkLG89aS50cmlnZ2VyQ2xhc3M7aWYocil7dmFyIGE9ZS5xdWVyeVNlbGVjdG9yKHUobykpO2Euc2V0QXR0cmlidXRlKFwiYXJpYS1leHBhbmRlZFwiLG4pLGEuc2V0QXR0cmlidXRlKFwiYXJpYS1kaXNhYmxlZFwiLHMpfX0scmVtb3ZlQVJJQTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLm9wdGlvbnMsbj10LmFyaWFFbmFibGVkLHM9dC50cmlnZ2VyQ2xhc3MsaT10LnBhbmVsQ2xhc3M7aWYobil7dmFyIHI9ZS5xdWVyeVNlbGVjdG9yKHUocykpLG89ZS5xdWVyeVNlbGVjdG9yKHUoaSkpO3IucmVtb3ZlQXR0cmlidXRlKFwicm9sZVwiKSxyLnJlbW92ZUF0dHJpYnV0ZShcImFyaWEtY29udHJvbHNcIiksci5yZW1vdmVBdHRyaWJ1dGUoXCJhcmlhLWRpc2FibGVkXCIpLHIucmVtb3ZlQXR0cmlidXRlKFwiYXJpYS1leHBhbmRlZFwiKSxvLnJlbW92ZUF0dHJpYnV0ZShcInJvbGVcIiksby5yZW1vdmVBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsbGVkYnlcIil9fSxmb2N1czpmdW5jdGlvbihlLHQpe2UucHJldmVudERlZmF1bHQoKTt2YXIgbj10aGlzLm9wdGlvbnMudHJpZ2dlckNsYXNzO3QucXVlcnlTZWxlY3Rvcih1KG4pKS5mb2N1cygpfSxmb2N1c0ZpcnN0RWxlbWVudDpmdW5jdGlvbihlKXt0aGlzLmZvY3VzKGUsdGhpcy5maXJzdEVsZW1lbnQpLHRoaXMuY3VyckZvY3VzZWRJZHg9MH0sZm9jdXNMYXN0RWxlbWVudDpmdW5jdGlvbihlKXt0aGlzLmZvY3VzKGUsdGhpcy5sYXN0RWxlbWVudCksdGhpcy5jdXJyRm9jdXNlZElkeD10aGlzLmVsZW1lbnRzLmxlbmd0aC0xfSxmb2N1c05leHRFbGVtZW50OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuY3VyckZvY3VzZWRJZHgrMTtpZih0PnRoaXMuZWxlbWVudHMubGVuZ3RoLTEpcmV0dXJuIHRoaXMuZm9jdXNGaXJzdEVsZW1lbnQoZSk7dGhpcy5mb2N1cyhlLHRoaXMuZWxlbWVudHNbdF0pLHRoaXMuY3VyckZvY3VzZWRJZHg9dH0sZm9jdXNQcmV2RWxlbWVudDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmN1cnJGb2N1c2VkSWR4LTE7aWYodDwwKXJldHVybiB0aGlzLmZvY3VzTGFzdEVsZW1lbnQoZSk7dGhpcy5mb2N1cyhlLHRoaXMuZWxlbWVudHNbdF0pLHRoaXMuY3VyckZvY3VzZWRJZHg9dH0sc2hvd0VsZW1lbnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXSxuPXRoaXMub3B0aW9ucyxzPW4ucGFuZWxDbGFzcyxpPW4uYWN0aXZlQ2xhc3Mscj1uLmNvbGxhcHNlLG89bi5iZWZvcmVPcGVuO3QmJm8oZSk7dmFyIGE9ZS5xdWVyeVNlbGVjdG9yKHUocykpLGw9YS5zY3JvbGxIZWlnaHQ7ZS5jbGFzc0xpc3QuYWRkKGkpLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoZnVuY3Rpb24oKXtyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKGZ1bmN0aW9uKCl7YS5zdHlsZS5oZWlnaHQ9dD9cIlwiLmNvbmNhdChsLFwicHhcIik6XCJhdXRvXCJ9KSl9KSksdGhpcy51cGRhdGVBUklBKGUse2FyaWFFeHBhbmRlZDohMCxhcmlhRGlzYWJsZWQ6IXJ9KX0sY2xvc2VFbGVtZW50OmZ1bmN0aW9uKGUpe3ZhciB0PSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV0sbj10aGlzLm9wdGlvbnMscz1uLnBhbmVsQ2xhc3MsaT1uLmFjdGl2ZUNsYXNzLHI9bi5iZWZvcmVDbG9zZSxvPWUucXVlcnlTZWxlY3Rvcih1KHMpKSxhPW8uc2Nyb2xsSGVpZ2h0O2UuY2xhc3NMaXN0LnJlbW92ZShpKSx0PyhyKGUpLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoZnVuY3Rpb24oKXtvLnN0eWxlLmhlaWdodD1cIlwiLmNvbmNhdChhLFwicHhcIikscmVxdWVzdEFuaW1hdGlvbkZyYW1lKChmdW5jdGlvbigpe28uc3R5bGUuaGVpZ2h0PTB9KSl9KSkpOm8uc3R5bGUuaGVpZ2h0PTAsdGhpcy51cGRhdGVBUklBKGUse2FyaWFFeHBhbmRlZDohMSxhcmlhRGlzYWJsZWQ6ITF9KX0sdG9nZ2xlRWxlbWVudDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLm9wdGlvbnMsbj10LmFjdGl2ZUNsYXNzLHM9dC5jb2xsYXBzZSxpPWUuY2xhc3NMaXN0LmNvbnRhaW5zKG4pO2lmKCFpfHxzKXJldHVybiBpP3RoaXMuY2xvc2VFbGVtZW50KGUpOnRoaXMuc2hvd0VsZW1lbnQoZSl9LGNsb3NlRWxlbWVudHM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy5vcHRpb25zLG49dC5hY3RpdmVDbGFzczt0LnNob3dNdWx0aXBsZXx8dGhpcy5lbGVtZW50cy5mb3JFYWNoKChmdW5jdGlvbih0LHMpe3QuY2xhc3NMaXN0LmNvbnRhaW5zKG4pJiZzIT09ZS5jdXJyRm9jdXNlZElkeCYmZS5jbG9zZUVsZW1lbnQodCl9KSl9LGhhbmRsZUNsaWNrOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsbj1lLmN1cnJlbnRUYXJnZXQ7dGhpcy5lbGVtZW50cy5mb3JFYWNoKChmdW5jdGlvbihzLGkpe3MuY29udGFpbnMobikmJlwiQVwiIT09ZS50YXJnZXQubm9kZU5hbWUmJih0LmN1cnJGb2N1c2VkSWR4PWksdC5jbG9zZUVsZW1lbnRzKCksdC5mb2N1cyhlLHMpLHQudG9nZ2xlRWxlbWVudChzKSl9KSl9LGhhbmRsZUtleWRvd246ZnVuY3Rpb24oZSl7c3dpdGNoKGUua2V5KXtjYXNlXCJBcnJvd1VwXCI6cmV0dXJuIHRoaXMuZm9jdXNQcmV2RWxlbWVudChlKTtjYXNlXCJBcnJvd0Rvd25cIjpyZXR1cm4gdGhpcy5mb2N1c05leHRFbGVtZW50KGUpO2Nhc2VcIkhvbWVcIjpyZXR1cm4gdGhpcy5mb2N1c0ZpcnN0RWxlbWVudChlKTtjYXNlXCJFbmRcIjpyZXR1cm4gdGhpcy5mb2N1c0xhc3RFbGVtZW50KGUpO2RlZmF1bHQ6cmV0dXJuIG51bGx9fSxoYW5kbGVGb2N1czpmdW5jdGlvbihlKXt2YXIgdD1lLmN1cnJlbnRUYXJnZXQsbj10aGlzLmVsZW1lbnRzLmZpbmQoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmNvbnRhaW5zKHQpfSkpO3RoaXMuY3VyckZvY3VzZWRJZHg9dGhpcy5lbGVtZW50cy5pbmRleE9mKG4pfSxoYW5kbGVUcmFuc2l0aW9uRW5kOmZ1bmN0aW9uKGUpe2lmKGUuc3RvcFByb3BhZ2F0aW9uKCksXCJoZWlnaHRcIj09PWUucHJvcGVydHlOYW1lKXt2YXIgdD10aGlzLm9wdGlvbnMsbj10Lm9uT3BlbixzPXQub25DbG9zZSxpPWUuY3VycmVudFRhcmdldCxyPXBhcnNlSW50KGkuc3R5bGUuaGVpZ2h0KSxvPXRoaXMuZWxlbWVudHMuZmluZCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuY29udGFpbnMoaSl9KSk7cj4wPyhpLnN0eWxlLmhlaWdodD1cImF1dG9cIixuKG8pKTpzKG8pfX19O3RoaXMuYXR0YWNoRXZlbnRzPWZ1bmN0aW9uKCl7aWYoIW8pe3ZhciBlPWEub3B0aW9ucyx0PWUudHJpZ2dlckNsYXNzLG49ZS5wYW5lbENsYXNzO2EuaGFuZGxlQ2xpY2s9YS5oYW5kbGVDbGljay5iaW5kKGEpLGEuaGFuZGxlS2V5ZG93bj1hLmhhbmRsZUtleWRvd24uYmluZChhKSxhLmhhbmRsZUZvY3VzPWEuaGFuZGxlRm9jdXMuYmluZChhKSxhLmhhbmRsZVRyYW5zaXRpb25FbmQ9YS5oYW5kbGVUcmFuc2l0aW9uRW5kLmJpbmQoYSksYS5lbGVtZW50cy5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgcz1lLnF1ZXJ5U2VsZWN0b3IodSh0KSksaT1lLnF1ZXJ5U2VsZWN0b3IodShuKSk7cy5hZGR
15FdmVudExpc3RlbmVyKFwiY2xpY2tcIixhLmhhbmRsZUNsaWNrKSxzLmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsYS5oYW5kbGVLZXlkb3duKSxzLmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c1wiLGEuaGFuZGxlRm9jdXMpLGkuYWRkRXZlbnRMaXN0ZW5lcihcIndlYmtpdFRyYW5zaXRpb25FbmRcIixhLmhhbmRsZVRyYW5zaXRpb25FbmQpLGkuYWRkRXZlbnRMaXN0ZW5lcihcInRyYW5zaXRpb25lbmRcIixhLmhhbmRsZVRyYW5zaXRpb25FbmQpfSkpLG89ITB9fSx0aGlzLmRldGFjaEV2ZW50cz1mdW5jdGlvbigpe2lmKG8pe3ZhciBlPWEub3B0aW9ucyx0PWUudHJpZ2dlckNsYXNzLG49ZS5wYW5lbENsYXNzO2EuZWxlbWVudHMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHM9ZS5xdWVyeVNlbGVjdG9yKHUodCkpLGk9ZS5xdWVyeVNlbGVjdG9yKHUobikpO3MucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsYS5oYW5kbGVDbGljaykscy5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLGEuaGFuZGxlS2V5ZG93bikscy5yZW1vdmVFdmVudExpc3RlbmVyKFwiZm9jdXNcIixhLmhhbmRsZUZvY3VzKSxpLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ3ZWJraXRUcmFuc2l0aW9uRW5kXCIsYS5oYW5kbGVUcmFuc2l0aW9uRW5kKSxpLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0cmFuc2l0aW9uZW5kXCIsYS5oYW5kbGVUcmFuc2l0aW9uRW5kKX0pKSxvPSExfX0sdGhpcy50b2dnbGU9ZnVuY3Rpb24oZSl7dmFyIHQ9YS5lbGVtZW50c1tlXTt0JiZhLnRvZ2dsZUVsZW1lbnQodCl9LHRoaXMub3Blbj1mdW5jdGlvbihlKXt2YXIgdD1hLmVsZW1lbnRzW2VdO3QmJmEuc2hvd0VsZW1lbnQodCl9LHRoaXMub3BlbkFsbD1mdW5jdGlvbigpe3ZhciBlPWEub3B0aW9ucyx0PWUuYWN0aXZlQ2xhc3Msbj1lLm9uT3BlbjthLmVsZW1lbnRzLmZvckVhY2goKGZ1bmN0aW9uKGUpe2UuY2xhc3NMaXN0LmNvbnRhaW5zKHQpfHwoYS5zaG93RWxlbWVudChlLCExKSxuKGUpKX0pKX0sdGhpcy5jbG9zZT1mdW5jdGlvbihlKXt2YXIgdD1hLmVsZW1lbnRzW2VdO3QmJmEuY2xvc2VFbGVtZW50KHQpfSx0aGlzLmNsb3NlQWxsPWZ1bmN0aW9uKCl7dmFyIGU9YS5vcHRpb25zLHQ9ZS5hY3RpdmVDbGFzcyxuPWUub25DbG9zZTthLmVsZW1lbnRzLmZvckVhY2goKGZ1bmN0aW9uKGUpe2UuY2xhc3NMaXN0LmNvbnRhaW5zKHQpJiYoYS5jbG9zZUVsZW1lbnQoZSwhMSksbihlKSl9KSl9LHRoaXMuZGVzdHJveT1mdW5jdGlvbigpe2kuZGV0YWNoRXZlbnRzKCksaS5vcGVuQWxsKCksYS5lbGVtZW50cy5mb3JFYWNoKChmdW5jdGlvbihlKXthLnJlbW92ZUlEcyhlKSxhLnJlbW92ZUFSSUEoZSksYS5zZXRUcmFuc2l0aW9uKGUsITApfSkpLG89ITB9LHRoaXMudXBkYXRlPWZ1bmN0aW9uKCl7YS5jcmVhdGVEZWZpbml0aW9ucygpLGkuZGV0YWNoRXZlbnRzKCksaS5hdHRhY2hFdmVudHMoKX07dmFyIGw9ZnVuY3Rpb24oZSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZVtlXT9lOihlPWMoZSksZT1cIndlYmtpdFwiLmNvbmNhdChlKSl9LGM9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrZS5zbGljZSgxKX0sdT1mdW5jdGlvbihlKXtyZXR1cm5cIi5cIi5jb25jYXQoQ1NTLmVzY2FwZShlKSl9O2EuaW5pdCgpfTtcInVuZGVmaW5lZFwiIT10eXBlb2YgbW9kdWxlJiZ2b2lkIDAhPT1tb2R1bGUuZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz1uOmUuQWNjb3JkaW9uPW59KHdpbmRvdyk7IiwiLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZWZpbmVkLG5vLXBhcmFtLXJlYXNzaWduLG5vLXNoYWRvdyAqL1xuXG4vKipcbiAqIFRocm90dGxlIGV4ZWN1dGlvbiBvZiBhIGZ1bmN0aW9uLiBFc3BlY2lhbGx5IHVzZWZ1bCBmb3IgcmF0ZSBsaW1pdGluZ1xuICogZXhlY3V0aW9uIG9mIGhhbmRsZXJzIG9uIGV2ZW50cyBsaWtlIHJlc2l6ZSBhbmQgc2Nyb2xsLlxuICpcbiAqIEBwYXJhbSAge251bWJlcn0gICAgZGVsYXkgLSAgICAgICAgICBBIHplcm8tb3ItZ3JlYXRlciBkZWxheSBpbiBtaWxsaXNlY29uZHMuIEZvciBldmVudCBjYWxsYmFja3MsIHZhbHVlcyBhcm91bmQgMTAwIG9yIDI1MCAob3IgZXZlbiBoaWdoZXIpIGFyZSBtb3N0IHVzZWZ1bC5cbiAqIEBwYXJhbSAge2Jvb2xlYW59ICAgW25vVHJhaWxpbmddIC0gICBPcHRpb25hbCwgZGVmYXVsdHMgdG8gZmFsc2UuIElmIG5vVHJhaWxpbmcgaXMgdHJ1ZSwgY2FsbGJhY2sgd2lsbCBvbmx5IGV4ZWN1dGUgZXZlcnkgYGRlbGF5YCBtaWxsaXNlY29uZHMgd2hpbGUgdGhlXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm90dGxlZC1mdW5jdGlvbiBpcyBiZWluZyBjYWxsZWQuIElmIG5vVHJhaWxpbmcgaXMgZmFsc2Ugb3IgdW5zcGVjaWZpZWQsIGNhbGxiYWNrIHdpbGwgYmUgZXhlY3V0ZWQgb25lIGZpbmFsIHRpbWVcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXIgdGhlIGxhc3QgdGhyb3R0bGVkLWZ1bmN0aW9uIGNhbGwuIChBZnRlciB0aGUgdGhyb3R0bGVkLWZ1bmN0aW9uIGhhcyBub3QgYmVlbiBjYWxsZWQgZm9yIGBkZWxheWAgbWlsbGlzZWNvbmRzLFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgaW50ZXJuYWwgY291bnRlciBpcyByZXNldCkuXG4gKiBAcGFyYW0gIHtGdW5jdGlvbn0gIGNhbGxiYWNrIC0gICAgICAgQSBmdW5jdGlvbiB0byBiZSBleGVjdXRlZCBhZnRlciBkZWxheSBtaWxsaXNlY29uZHMuIFRoZSBgdGhpc2AgY29udGV4dCBhbmQgYWxsIGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRocm91Z2gsIGFzLWlzLFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBgY2FsbGJhY2tgIHdoZW4gdGhlIHRocm90dGxlZC1mdW5jdGlvbiBpcyBleGVjdXRlZC5cbiAqIEBwYXJhbSAge2Jvb2xlYW59ICAgW2RlYm91bmNlTW9kZV0gLSBJZiBgZGVib3VuY2VNb2RlYCBpcyB0cnVlIChhdCBiZWdpbiksIHNjaGVkdWxlIGBjbGVhcmAgdG8gZXhlY3V0ZSBhZnRlciBgZGVsYXlgIG1zLiBJZiBgZGVib3VuY2VNb2RlY
15CBpcyBmYWxzZSAoYXQgZW5kKSxcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NoZWR1bGUgYGNhbGxiYWNrYCB0byBleGVjdXRlIGFmdGVyIGBkZWxheWAgbXMuXG4gKlxuICogQHJldHVybnMge0Z1bmN0aW9ufSAgQSBuZXcsIHRocm90dGxlZCwgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIHRocm90dGxlIChkZWxheSwgbm9UcmFpbGluZywgY2FsbGJhY2ssIGRlYm91bmNlTW9kZSkge1xuICAvKlxuICAgKiBBZnRlciB3cmFwcGVyIGhhcyBzdG9wcGVkIGJlaW5nIGNhbGxlZCwgdGhpcyB0aW1lb3V0IGVuc3VyZXMgdGhhdFxuICAgKiBgY2FsbGJhY2tgIGlzIGV4ZWN1dGVkIGF0IHRoZSBwcm9wZXIgdGltZXMgaW4gYHRocm90dGxlYCBhbmQgYGVuZGBcbiAgICogZGVib3VuY2UgbW9kZXMuXG4gICAqL1xuICB2YXIgdGltZW91dElEO1xuICB2YXIgY2FuY2VsbGVkID0gZmFsc2U7IC8vIEtlZXAgdHJhY2sgb2YgdGhlIGxhc3QgdGltZSBgY2FsbGJhY2tgIHdhcyBleGVjdXRlZC5cblxuICB2YXIgbGFzdEV4ZWMgPSAwOyAvLyBGdW5jdGlvbiB0byBjbGVhciBleGlzdGluZyB0aW1lb3V0XG5cbiAgZnVuY3Rpb24gY2xlYXJFeGlzdGluZ1RpbWVvdXQoKSB7XG4gICAgaWYgKHRpbWVvdXRJRCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJRCk7XG4gICAgfVxuICB9IC8vIEZ1bmN0aW9uIHRvIGNhbmNlbCBuZXh0IGV4ZWNcblxuXG4gIGZ1bmN0aW9uIGNhbmNlbCgpIHtcbiAgICBjbGVhckV4aXN0aW5nVGltZW91dCgpO1xuICAgIGNhbmNlbGxlZCA9IHRydWU7XG4gIH0gLy8gYG5vVHJhaWxpbmdgIGRlZmF1bHRzIHRvIGZhbHN5LlxuXG5cbiAgaWYgKHR5cGVvZiBub1RyYWlsaW5nICE9PSAnYm9vbGVhbicpIHtcbiAgICBkZWJvdW5jZU1vZGUgPSBjYWxsYmFjaztcbiAgICBjYWxsYmFjayA9IG5vVHJhaWxpbmc7XG4gICAgbm9UcmFpbGluZyA9IHVuZGVmaW5lZDtcbiAgfVxuICAvKlxuICAgKiBUaGUgYHdyYXBwZXJgIGZ1bmN0aW9uIGVuY2Fwc3VsYXRlcyBhbGwgb2YgdGhlIHRocm90dGxpbmcgLyBkZWJvdW5jaW5nXG4gICAqIGZ1bmN0aW9uYWxpdHkgYW5kIHdoZW4gZXhlY3V0ZWQgd2lsbCBsaW1pdCB0aGUgcmF0ZSBhdCB3aGljaCBgY2FsbGJhY2tgXG4gICAqIGlzIGV4ZWN1dGVkLlxuICAgKi9cblxuXG4gIGZ1bmN0aW9uIHdyYXBwZXIoKSB7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3VtZW50c18gPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmd1bWVudHNfW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgZWxhcHNlZCA9IERhdGUubm93KCkgLSBsYXN0RXhlYztcblxuICAgIGlmIChjYW5jZWxsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIEV4ZWN1dGUgYGNhbGxiYWNrYCBhbmQgdXBkYXRlIHRoZSBgbGFzdEV4ZWNgIHRpbWVzdGFtcC5cblxuXG4gICAgZnVuY3Rpb24gZXhlYygpIHtcbiAgICAgIGxhc3RFeGVjID0gRGF0ZS5ub3coKTtcbiAgICAgIGNhbGxiYWNrLmFwcGx5KHNlbGYsIGFyZ3VtZW50c18pO1xuICAgIH1cbiAgICAvKlxuICAgICAqIElmIGBkZWJvdW5jZU1vZGVgIGlzIHRydWUgKGF0IGJlZ2luKSB0aGlzIGlzIHVzZWQgdG8gY2xlYXIgdGhlIGZsYWdcbiAgICAgKiB0byBhbGxvdyBmdXR1cmUgYGNhbGxiYWNrYCBleGVjdXRpb25zLlxuICAgICAqL1xuXG5cbiAgICBmdW5jdGlvbiBjbGVhcigpIHtcbiAgICAgIHRpbWVvdXRJRCA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAoZGVib3VuY2VNb2RlICYmICF0aW1lb3V0SUQpIHtcbiAgICAgIC8qXG4gICAgICAgKiBTaW5jZSBgd3JhcHBlcmAgaXMgYmVpbmcgY2FsbGVkIGZvciB0aGUgZmlyc3QgdGltZSBhbmRcbiAgICAgICAqIGBkZWJvdW5jZU1vZGVgIGlzIHRydWUgKGF0IGJlZ2luKSwgZXhlY3V0ZSBgY2FsbGJhY2tgLlxuICAgICAgICovXG4gICAgICBleGVjKCk7XG4gICAgfVxuXG4gICAgY2xlYXJFeGlzdGluZ1RpbWVvdXQoKTtcblxuICAgIGlmIChkZWJvdW5jZU1vZGUgPT09IHVuZGVmaW5lZCAmJiBlbGFwc2VkID4gZGVsYXkpIHtcbiAgICAgIC8qXG4gICAgICAgKiBJbiB0aHJvdHRsZSBtb2RlLCBpZiBgZGVsYXlgIHRpbWUgaGFzIGJlZW4gZXhjZWVkZWQsIGV4ZWN1dGVcbiAgICAgICAqIGBjYWxsYmFja2AuXG4gICAgICAgKi9cbiAgICAgIGV4ZWMoKTtcbiAgICB9IGVsc2UgaWYgKG5vVHJhaWxpbmcgIT09IHRydWUpIHtcbiAgICAgIC8qXG4gICAgICAgKiBJbiB0cmFpbGluZyB0aHJvdHRsZSBtb2RlLCBzaW5jZSBgZGVsYXlgIHRpbWUgaGFzIG5vdCBiZWVuXG4gICAgICAgKiBleGNlZWRlZCwgc2NoZWR1bGUgYGNhbGxiYWNrYCB0byBleGVjdXRlIGBkZWxheWAgbXMgYWZ0ZXIgbW9zdFxuICAgICAgICogcmVjZW50IGV4ZWN1dGlvbi5cbiAgICAgICAqXG4gICAgICAgKiBJZiBgZGVib3VuY2VNb2RlYCBpcyB0cnVlIChhdCBiZWdpbiksIHNjaGVkdWxlIGBjbGVhcmAgdG8gZXhlY3V0ZVxuICAgICAgICogYWZ0ZXIgYGRlbGF5YCBtcy5cbiAgICAgICAqXG4gICAgICAgKiBJZiBgZGVib3VuY2VNb2RlYCBpcyBmYWxzZSAoYXQgZW5kKSwgc2NoZWR1bGUgYGNhbGxiYWNrYCB0b1xuICAgICAgICogZXhlY3V0ZSBhZnRlciBgZGVsYXlgIG1zLlxuICAgICAgICovXG4gICAgICB0aW1lb3V0SUQgPSBzZXRUaW1lb3V0KGRlYm91bmNlTW9kZSA/IGNsZWFyIDogZXhlYywgZGVib3VuY2VNb2RlID09PSB1bmRlZmluZWQgPyBkZWxheSAtIGVsYXBzZWQgOiBkZWxheSk7XG4gICAgfVxuICB9XG5cbiAgd3JhcHBlci5jYW5jZWwgPSBjYW5jZWw7IC8vIFJldHVybiB0aGUgd3JhcHBlciBmdW5jdGlvbi5cblxuICByZXR1cm4gd3JhcHBlcjtcbn1cblxuLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZWZpbmVkICovXG4vKipcbiAqIERlYm91bmNlIGV4ZWN1dGlvbiBvZiBhIGZ1bmN0aW9uLiBEZWJvdW5jaW5nLCB1bmxpa2UgdGhyb3R0bGluZyxcbiAqIGd1YXJhbnRlZXMgdGhhdCBhIGZ1bmN0aW9uIGlzIG9ubHkgZXhlY3V0ZWQgYSBzaW5nbGUgdGltZSwgZWl0aGVyIGF0IHR
15oZVxuICogdmVyeSBiZWdpbm5pbmcgb2YgYSBzZXJpZXMgb2YgY2FsbHMsIG9yIGF0IHRoZSB2ZXJ5IGVuZC5cbiAqXG4gKiBAcGFyYW0gIHtudW1iZXJ9ICAgZGVsYXkgLSAgICAgICAgIEEgemVyby1vci1ncmVhdGVyIGRlbGF5IGluIG1pbGxpc2Vjb25kcy4gRm9yIGV2ZW50IGNhbGxiYWNrcywgdmFsdWVzIGFyb3VuZCAxMDAgb3IgMjUwIChvciBldmVuIGhpZ2hlcikgYXJlIG1vc3QgdXNlZnVsLlxuICogQHBhcmFtICB7Ym9vbGVhbn0gIFthdEJlZ2luXSAtICAgICBPcHRpb25hbCwgZGVmYXVsdHMgdG8gZmFsc2UuIElmIGF0QmVnaW4gaXMgZmFsc2Ugb3IgdW5zcGVjaWZpZWQsIGNhbGxiYWNrIHdpbGwgb25seSBiZSBleGVjdXRlZCBgZGVsYXlgIG1pbGxpc2Vjb25kc1xuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXIgdGhlIGxhc3QgZGVib3VuY2VkLWZ1bmN0aW9uIGNhbGwuIElmIGF0QmVnaW4gaXMgdHJ1ZSwgY2FsbGJhY2sgd2lsbCBiZSBleGVjdXRlZCBvbmx5IGF0IHRoZSBmaXJzdCBkZWJvdW5jZWQtZnVuY3Rpb24gY2FsbC5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBZnRlciB0aGUgdGhyb3R0bGVkLWZ1bmN0aW9uIGhhcyBub3QgYmVlbiBjYWxsZWQgZm9yIGBkZWxheWAgbWlsbGlzZWNvbmRzLCB0aGUgaW50ZXJuYWwgY291bnRlciBpcyByZXNldCkuXG4gKiBAcGFyYW0gIHtGdW5jdGlvbn0gY2FsbGJhY2sgLSAgICAgIEEgZnVuY3Rpb24gdG8gYmUgZXhlY3V0ZWQgYWZ0ZXIgZGVsYXkgbWlsbGlzZWNvbmRzLiBUaGUgYHRoaXNgIGNvbnRleHQgYW5kIGFsbCBhcmd1bWVudHMgYXJlIHBhc3NlZCB0aHJvdWdoLCBhcy1pcyxcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGBjYWxsYmFja2Agd2hlbiB0aGUgZGVib3VuY2VkLWZ1bmN0aW9uIGlzIGV4ZWN1dGVkLlxuICpcbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gQSBuZXcsIGRlYm91bmNlZCBmdW5jdGlvbi5cbiAqL1xuXG5mdW5jdGlvbiBkZWJvdW5jZSAoZGVsYXksIGF0QmVnaW4sIGNhbGxiYWNrKSB7XG4gIHJldHVybiBjYWxsYmFjayA9PT0gdW5kZWZpbmVkID8gdGhyb3R0bGUoZGVsYXksIGF0QmVnaW4sIGZhbHNlKSA6IHRocm90dGxlKGRlbGF5LCBjYWxsYmFjaywgYXRCZWdpbiAhPT0gZmFsc2UpO1xufVxuXG5leHBvcnQgeyBkZWJvdW5jZSwgdGhyb3R0bGUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcFxuIiwiY2xhc3MgRWxlbWVudE9mZnNldCB7XHJcbiAgY29uc3RydWN0b3IoaGVhZGVyID0gJycpIHtcclxuICAgIHRoaXMuaGVhZGVyID0gaGVhZGVyID8gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihoZWFkZXIpIDogJyc7XHJcbiAgICB0aGlzLnRhcmdldCA9ICcnO1xyXG4gIH1cclxuICBzZXQgcG9zKGlkKSB7XHJcbiAgICB0aGlzLnRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTtcclxuICB9XHJcbiAgZ2V0IHBvcygpIHtcclxuICAgIGxldCBwb3MgPSAnJztcclxuICAgIGlmICh0aGlzLnRhcmdldCkge1xyXG4gICAgICBwb3MgPSB0aGlzLnRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgKyB3aW5kb3cucGFnZVlPZmZzZXQ7XHJcbiAgICAgIHBvcyA9IHRoaXMuaGVhZGVyID8gcG9zIC0gdGhpcy5oZWFkZXIub2Zmc2V0SGVpZ2h0IDogcG9zO1xyXG4gICAgICBwb3MgPSBNYXRoLmZsb29yKHBvcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBwb3MgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHBvcztcclxuICB9XHJcbn1cclxuXHJcbmNvbnN0IGVsZW1lbnRPZmZzZXQgPSBuZXcgRWxlbWVudE9mZnNldCgpO1xyXG5cclxuZXhwb3J0IHsgZWxlbWVudE9mZnNldCB9O1xyXG4iLCJpbXBvcnQgeyBiYWNrU3VyZmFjZUZpeGVkIH0gZnJvbSAnLi9iYWNrU3VyZmFjZUZpeGVkJztcclxuXHJcbmNvbnN0IE1lbnUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgdGhpcy50cmlnZ2VyID0gJyc7XHJcbiAgdGhpcy5tZW51ID0gJyc7XHJcbiAgdGhpcy5tZW51TGFiZWwgPSAnJztcclxuICB0aGlzLm9wZW5BbmltYXRlID0gW3sgb3BhY2l0eTogMCB9LCB7IG9wYWNpdHk6IDEgfV07XHJcbiAgdGhpcy5vcGVuQW5pbWF0ZVRpbWluZyA9IHtcclxuICAgIGR1cmF0aW9uOiAyMDAsXHJcbiAgfTtcclxufTtcclxuXHJcbk1lbnUucHJvdG90eXBlID0ge1xyXG4gIGluaXQoKSB7XHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIHRoaXMucmVnaXN0ZXJFbG0uYmluZCh0aGlzKSwge1xyXG4gICAgICBvbmNlOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgfSxcclxuICByZWdpc3RlckVsbSgpIHtcclxuICAgIHRoaXMudHJpZ2dlciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5qcy1tZW51LXRyaWdnZXInKTtcclxuICAgIHRoaXMubWVudSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgIGAjJHt0aGlzLnRyaWdnZXIuZ2V0QXR0cmlidXRlKCdhcmlhLWNvbnRyb2xzJyl9YFxyXG4gICAgKTtcclxuICAgIHRoaXMubWVudUxhYmVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmpzLW1lbnUtbGFiZWwnKTtcclxuICAgIHRoaXMudHJpZ2dlci5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMudG9nZ2xlLmJpbmQodGhpcyksIHtcclxuICAgICAgcGFzc2l2ZTogdHJ1ZSxcclxuICAgIH0pO1xyXG4gIH0sXHJcbiAgdG9nZ2xlKCkge1xyXG4gICAgY29uc3QgZmxhZyA9IHRoaXMudHJpZ2dlci5nZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnKSA9PT0gJ2ZhbHNlJztcclxuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgnaXMtbWVudS1vcGVuJywgJ2lzLW1lbnUtY2xvc2UnKTtcclxuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZChgaXMtbWVudS0ke2ZsYWcgPyAnb3BlbicgOiAnY2xvc2UnfWApO1xyXG4gICAgdGhpcy50cmlnZ2VyLnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsIGZsYWcpO1xyXG4gICAgdGhpcy50cmlnZ2VyLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgIHRoaXMubWVudS5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywgIWZsYWcpO1xyXG4gICAgdGhpcy50cmlnZ2VyLnNldEF0dHJpYnV0ZShcclxuICAgICAgJ2FyaWEtbGFiZWwnLFxyXG4gICAgICBmbGFnID8gJ+ODoeODi+ODpeODvOOCkumWieOBmOOCiycgOiAn44Oh44OL44Ol44O844KS6ZaL44GPJ1xyXG4gICAgKTtcclxuICAgIHRoaXMubWVudUxhYmVsLnRleHRDb250ZW50ID0gZmxhZyA/ICdDTE9TRScgOiAnTUVOVSc7XHJcbiAgICBiYWNrU3VyZmFjZUZpeGVkKGZsYWcpO1xyXG4gICAgaWYgKGZsYWcpIHtcclxuICAgICAgdGhpcy5tZW51LnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hbmltYXRlKGZsYWcpO1xyXG4gIH0sXHJcbiAgYW5pbWF0ZShmbGFnKSB7XHJcbiAgICBjb25zdCBhbmltYXRlID0gdGhpcy5tZW51LmFuaW1hdGUoXHJcbiAgICAgIGZsYWcgPyB0aGlzLm9wZW5BbmltYXRlIDogWy4uLnRoaXMub3BlbkFuaW1hdGVdLnJldmVyc2UoKSxcclxuICAgICAgdGhpcy5vcGVuQW5pbWF0ZVRpbWluZ1xyXG4gICAgKTtcclxuICAgIGFuaW1hdGUuZmluaXNoZWQudGhlbigoKSA9PiB7XHJcbiAgICAgIHRoaXMudHJpZ2dlci5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICBhbmltYXRlLmNvbW1pdFN0eWxlcygpO1xyXG4gICAgICBpZiAoIWZsYWcpIHtcclxuICAgICAgICB0aGlzLm1lbnUuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfSxcclxufTtcclxuXHJcbmNvbnN0IG1lbnUgPSBuZXcgTWVudSgpO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgbWVudTtcclxuIiwiY29uc3QgYmFja1N1cmZhY2VGaXhlZCA9IChmbGFnID0gdHJ1ZSkgPT4ge1xyXG4gIGNvbnN0IHJvb3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdodG1sJyk7XHJcbiAgY29uc3Qgc2Nyb2xsUG9zID0gZmxhZyA/IHdpbmRvdy5wYWdlWU9mZnNldCA6IHBhcnNlSW50KHJvb3Quc3R5bGUudG9wKTtcclxuXHJcbiAgY29uc3Qgc3R5bGVzID0ge1xyXG4gICAgcG9zaXRpb246ICdmaXhlZCcsXHJcbiAgICBsZWZ0OiAnMHB4JyxcclxuICAgIHRvcDogc2Nyb2xsUG9zICogLTEgKyAncHgnLFxyXG4gICAgb3ZlcmZsb3dZOiAnc2Nyb2xsJyxcclxuICB9O1xyXG5cclxuICBkb2
15N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tc3QnLCBgJHtzY3JvbGxQb3N9cHhgKTtcclxuXHJcbiAgcm9vdC5zdHlsZS53aWR0aCA9ICcxMDAlJztcclxuICBmb3IgKGNvbnN0IHByb3AgaW4gc3R5bGVzKSB7XHJcbiAgICByb290LnN0eWxlW3Byb3BdID0gZmxhZyAmJiBmbGFnICE9PSAncmVzZXQnID8gc3R5bGVzW3Byb3BdIDogJyc7XHJcbiAgfVxyXG5cclxuICBpZiAoIWZsYWcpIHtcclxuICAgIHdpbmRvdy5zY3JvbGxUbygwLCBzY3JvbGxQb3MgKiAtMSk7XHJcbiAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tc3QnLCAnJyk7XHJcbiAgfSBlbHNlIGlmIChmbGFnID09PSAncmVzZXQnKSB7XHJcbiAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XHJcbiAgfVxyXG59O1xyXG5cclxuZXhwb3J0IHsgYmFja1N1cmZhY2VGaXhlZCB9O1xyXG4iLCJpbXBvcnQgQWNjb3JkaW9uIGZyb20gJ2FjY29yZGlvbi1qcyc7XHJcbmltcG9ydCB7IHRocm90dGxlIH0gZnJvbSAndGhyb3R0bGUtZGVib3VuY2UnO1xyXG5pbXBvcnQgeyBWVlUgfSBmcm9tICcuL2xpYnJhcnkvVmFyaW91c1ZhbHVlc1V0aWwnO1xyXG5pbXBvcnQgeyBlbGVtZW50T2Zmc2V0IH0gZnJvbSAnLi9saWJyYXJ5L0VsZW1lbnRPZmZzZXQnO1xyXG5pbXBvcnQgbWVudSBmcm9tICcuL2xpYnJhcnkvbWVudSc7XHJcblxyXG5jb25zdCBDb21tb24gPSBmdW5jdGlvbiAoKSB7XHJcbiAgdGhpcy5ib2R5ID0gJyc7XHJcbn07XHJcblxyXG5jb25zdCBtZW51QWNjID0gKCkgPT4ge1xyXG4gIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXHJcbiAgICAnRE9NQ29udGVudExvYWRlZCcsXHJcbiAgICAoKSA9PiB7XHJcbiAgICAgIGNvbnN0IG1lbnVBY2NzID0gQXJyYXkuZnJvbShcclxuICAgICAgICBkb2
15N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuanMtbWVudS1hYy1jb250YWluZXInKVxyXG4gICAgICApO1xyXG4gICAgICBpZiAobWVudUFjY3MpIHtcclxuICAgICAgICBjb25zdCBhY2MgPSBuZXcgQWNjb3JkaW9uKG1lbnVBY2NzLCB7XHJcbiAgICAgICAgICBzaG93TXVsdGlwbGU6IHRydWUsXHJcbiAgICAgICAgICBlbGVtZW50Q2xhc3M6ICdqcy1tZW51LWFjJyxcclxuICAgICAgICAgIHRyaWdnZXJDbGFzczogJ2pzLW1lbnUtYWMtdHJpZ2dlcicsXHJcbiAgICAgICAgICBwYW5lbENsYXNzOiAnanMtbWVudS1hYy1wYW5lbCcsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKCFWVlUubWVkaWEpIHtcclxuICAgICAgICAgIGFjYy5tYXAoKGopID0+IGoub3BlbkFsbCgpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICB7IG9uY2U6IHRydWUgfVxyXG4gICk7XHJcbn07XHJcblxyXG5Db21tb24ucHJvdG90eXBlID0ge1xyXG4gIGluaXQoKSB7XHJcbiAgICBtZW51LmluaXQoKTtcclxuICAgIG1lbnVBY2MoKTtcclxuXHJcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFxyXG4gICAgICAnRE9NQ29udGVudExvYWRlZCcsXHJcbiAgICAgICgpID0+IHtcclxuICAgICAgICB0aGlzLmJvZHkgPSBkb2N1bWVudC5ib2R5O1xyXG4gICAgICAgIHRoaXMuYXR0YWNoU21vb3RoU2Nyb2xsKCk7XHJcblxyXG4gICAgICAgIGlmIChkb2N1bWVudC5ib2R5LmdldEF0dHJpYnV0ZSgnZGF0YS1wYWdlJykuc3RhcnRzV2l0aCgnbXlwYWdlJykpIHtcclxuICAgICAgICAgIHRoaXMubXlwYWdlTmF2KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB7IG9uY2U6IHRydWUgfVxyXG4gICAgKTtcclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFxyXG4gICAgICAnbG9hZCcsXHJcbiAgICAgICgpID0+IHtcclxuICAgICAgICBpZiAobG9jYXRpb24uaGFzaCkge1xyXG4gICAgICAgICAgdGhpcy5oYXNoU2Nyb2xsKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB7IG9uY2U6IHRydWUgfVxyXG4gICAgKTtcclxuICB9LFxyXG4gIGhhc2hTY3JvbGwoKSB7XHJcbiAgICBsZXQgaGFzaCA9IGxvY2F0aW9uLmhhc2g7XHJcbiAgICBoYXNoID0gaGFzaC5yZXBsYWNlKCcjJywgJycpO1xyXG4gICAgZWxlbWVudE9mZnNldC5wb3MgPSBoYXNoO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCBlbGVtZW50T2Zmc2V0LnBvcyk7XHJcbiAgICB9LCAzMDApO1xyXG4gIH0sXHJcbiAgYXR0YWNoU21vb3RoU2Nyb2xsKCkge1xyXG4gICAgY29uc3QgbGlua0VsbSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2EnKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGlua0VsbS5sZW5ndGg7IGkrKykge1xyXG4gICAgICB0aGlzLnNtb290aFNjcm9sbChsaW5rRWxtW2ldKTtcclxuICAgIH1cclxuICB9LFxyXG4gIHNtb290aFNjcm9sbCh0YXJnZXQpIHtcclxuICAgIGNvbnN0IGhyZWYgPSB0YXJnZXQuZ2V0QXR0cmlidXRlKCdocmVmJyk7XHJcbiAgICBpZiAoaHJlZiAmJi
15BocmVmLnN0YXJ0c1dpdGgoJyMnKSkge1xyXG4gICAgICB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcihcclxuICAgICAgICAnY2xpY2snLFxyXG4gICAgICAgIChlKSA9PiB7XHJcbiAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICBsZXQgcG9zID0gMDtcclxuICAgICAgICAgIGlmIChocmVmICE9ICcjdG9wJykge1xyXG4gICAgICAgICAgICBlbGVtZW50T2Zmc2V0LnBvcyA9IGhyZWYucmVwbGFjZSgnIycsICcnKTtcclxuICAgICAgICAgICAgcG9zID0gZWxlbWVudE9mZnNldC5wb3M7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHBvcyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB3aW5kb3cuc2Nyb2xsKHsgdG9wOiBwb3MsIGJlaGF2aW9yOiAnc21vb3RoJyB9KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHsgcGFzc2l2ZTogZmFsc2UgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH0sXHJcbiAgbXlwYWdlTmF2KCkge1xyXG4gICAgbGV0IGVuYWJsZSA9IGZhbHNlO1xyXG4gICAgY29uc3QgbmF2SXRlbSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5qcy1uYXYtaXRlbScpO1xyXG4gICAgY29uc3QgdG9nZ2xlID0gKCkgPT4ge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICBjb25zdCB0cmlnZ2VyID0gZXZlbnQuY3VycmVudFRhcmdldDtcclxuICAgICAgY29uc3QgdGFyZ2V0ID0gdHJpZ2dlci5uZXh0RWxlbWVudFNpYmxpbmc7XHJcbiAgICAgIGlmICh0YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCdpcy1zaG93JykpIHtcclxuICAgICAgICB0YXJnZXQuY2xhc3NMaXN0LnJlbW92ZSgnaXMtc2hvdycpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRhcmdldC5jbGFzc0xpc3QuYWRkKCdpcy1zaG93Jyk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgYXR0YWNoRXZlbnQgPSAoKSA9PiB7XHJcbiAgICAgIGVuYWJsZSA9IHRydWU7XHJcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBuYXZJdGVtKSB7XHJcbiAgICAgICAgY29uc3QgdHJpZ2dlciA9IGl0ZW0ucXVlcnlTZWxlY3RvcignLmpzLW5hdi10cmlnZ2VyJyk7XHJcbiAgICAgICAgdHJpZ2dlci5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRvZ2dsZSwgeyBwYXNzaXZlOiBmYWxzZSB9KTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAoVlZVLm1lZGlhTGcpIHtcclxuICAgICAgYXR0YWNoRXZlbnQoKTtcclxuICAgIH1cclxuXHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcclxuICAgICAgJ3Jlc2l6ZScsXHJcbiAgICAgIHRocm90dGxlKFxyXG4gICAgICAgIDE1LFxyXG4gICAgICAgICgpID0+IHtcclxuICAgICAgICAgIGlmIChWVlUubWVkaWFMZykge1xyXG4gICAgICAgICAgICBpZiAoIWVuYWJsZSkge1xyXG4gICAgICAgICAgICAgIGF0dGFjaEV2ZW50KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChlbmFibGUpIHtcclxuICAgICAgICAgICAgICBlbmFibGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgbmF2SXRlbSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdHJpZ2dlciA9IGl0ZW0ucXVlcnlTZWxlY3RvcignLmpzLW5hdi10cmlnZ2VyJyk7XHJcbiAgICAgICAgICAgICAgICB0cmlnZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdG9nZ2xlLCB7XHJcbiAgICAgICAgICAgICAgICAgIHBhc3NpdmU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBpdGVtXHJcbiAgICAgICAgICAgICAgICAgIC5xdWVyeVNlbGVjdG9yKCcuanMtbmF2LWNvbnRlbnQnKVxyXG4gICAgICAgICAgICAgICAgICAuY2xhc3NMaXN0LnJlbW92ZSgnaXMtc2hvdycpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZmFsc2VcclxuICAgICAgKSxcclxuICAgICAgeyBwYXNzaXZlOiB0cnVlIH1cclxuICAgICk7XHJcbiAgfSxcclxuICBmaXhTZWFyY2hCYXIoKSB7XHJcbiAgICBjb25zdCBmb2xsb3dCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuanMtZm9sbG93Jyk7XHJcbiAgICBjb25zdCBib2R5ID0gZG9jdW1lbnQuYm9keTtcclxuXHJcbiAgICBpZiAoZm9sbG93QnV0dG9uKSB7XHJcbiAgICAgIGxldCB5ID0gZm9sbG93QnV0dG9uLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCArIFZWVS5vZmZzZXQ7XHJcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFxyXG4gICAgICAgICdzY3JvbGwnLFxyXG4gICAgICAgICgpID0+IHtcclxuICAgICAgICAgIGlmIChWVlUub2Zmc2V0ID4geSkge1xyXG4gICAgICAgICAgICBib2R5LnN0eWxlLnBhZGRpbmdUb3AgPSBmb2xsb3dCdXR0b24ub2Zmc2V0SGVpZ2h0ICsgJ3B4JztcclxuICAgICAgICAgICAgZm9sbG93QnV0dG9uLnN0eWxlLnBvc2l0aW9uID0gJ2ZpeGVkJztcclxuICAgICAgICAgICAgZm9sbG93QnV0dG9uLnN0eWxlLnpJbmRleCA9ICc5OTknO1xyXG4gICAgICAgICAgICBmb2xsb3dCdXR0b24uc3R5bGUudG9wID0gJzBweCc7XHJcbiAgICAgICAgICAgIGZvbGxvd0J1dHRvbi5zdHlsZS5sZWZ0ID0gJzBweCc7XHJcbiAgICAgICAgICAgIGZvbGxvd0J1dHRvbi5zdHlsZS53aWR0aCA9ICcxMDAlJztcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGJvZHkuc3R5bGUucGFkZGluZ1RvcCA9ICcnO1xyXG4gICAgICAgICAgICBmb2xsb3dCdXR0b24uc3R5bGUud2lkdGggPSAnJztcclxuICAgICAgICAgICAgZm9sbG93QnV0dG9uLnN0eWxlLnBvc2l0aW9uID0gJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICB7IHBhc3NpdmU6IHRydWUgfVxyXG4gICAgICApO1xyXG5cclxuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXHJcbiAgICAgICAgJ3Jlc2l6ZScsXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgeSA9IGZvbGxvd0J1dHRvbi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgKyBWVlUub2Zmc2V0O1xyXG4gICAgICAgI
15H0sXHJcbiAgICAgICAgeyBwYXNzaXZlOiB0cnVlIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9LFxyXG59O1xyXG5cclxuY29uc3QgY29tbW9uID0gbmV3IENvbW1vbigpO1xyXG5cclxuZXhwb3J0IHsgY29tbW9uLCBtZW51QWNjIH07XHJcbiIsIi8qKlxuICogU1NSIFdpbmRvdyA0LjAuMlxuICogQmV0dGVyIGhhbmRsaW5nIGZvciB3aW5kb3cgb2JqZWN0IGluIFNTUiBlbnZpcm9ubWVudFxuICogaHR0cHM6Ly9naXRodWIuY29tL25vbGltaXRzNHdlYi9zc3Itd2luZG93XG4gKlxuICogQ29weXJpZ2h0IDIwMjEsIFZsYWRpbWlyIEtoYXJsYW1waWRpXG4gKlxuICogTGljZW5zZWQgdW5kZXIgTUlUXG4gKlxuICogUmVsZWFzZWQgb246IERlY2VtYmVyIDEzLCAyMDIxXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXBhcmFtLXJlYXNzaWduICovXG5mdW5jdGlvbiBpc09iamVjdChvYmopIHtcbiAgICByZXR1cm4gKG9iaiAhPT0gbnVsbCAmJlxuICAgICAgICB0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJlxuICAgICAgICAnY29uc3RydWN0b3InIGluIG9iaiAmJlxuICAgICAgICBvYmouY29uc3RydWN0b3IgPT09IE9iamVjdCk7XG59XG5mdW5jdGlvbiBleHRlbmQodGFyZ2V0ID0ge30sIHNyYyA9IHt9KSB7XG4gICAgT2JqZWN0LmtleXMoc3JjKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiB0YXJnZXRba2V5XSA9PT0gJ3VuZGVmaW5lZCcpXG4gICAgICAgICAgICB0YXJnZXRba2V5XSA9IHNyY1trZXldO1xuICAgICAgICBlbHNlIGlmIChpc09iamVjdChzcmNba2V5XSkgJiZcbiAgICAgICAgICAgIGlzT2JqZWN0KHRhcmdldFtrZXldKSAmJlxuICAgICAgICAgICAgT2JqZWN0LmtleXMoc3JjW2tleV0pLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGV4dGVuZCh0YXJnZXRba2V5XSwgc3JjW2tleV0pO1xuICAgICAgICB9XG4gICAgfSk7XG59XG5cbmNvbnN0IHNzckRvY3VtZW50ID0ge1xuICAgIGJvZHk6IHt9LFxuICAgIGFkZEV2ZW50TGlzdGVuZXIoKSB7IH0sXG4gICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcigpIHsgfSxcbiAgICBhY3RpdmVFbGVtZW50OiB7XG4gICAgICAgIGJsdXIoKSB7IH0sXG4gICAgICAgIG5vZGVOYW1lOiAnJyxcbiAgICB9LFxuICAgIHF1ZXJ5U2VsZWN0b3IoKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH0sXG4gICAgcXVlcnlTZWxlY3RvckFsbCgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH0sXG4gICAgZ2V0RWxlbWVudEJ5SWQoKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH0sXG4gICAgY3JlYXRlRXZlbnQoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpbml0RXZlbnQoKSB7IH0sXG4gICAgICAgIH07XG4gICAgfSxcbiAgICBjcmVhdGVFbGVtZW50KCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgICAgICAgY2hpbGROb2RlczogW10sXG4gICAgICAgICAgICBzdHlsZToge30sXG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGUoKSB7IH0sXG4gICAgICAgICAgICBnZXRFbGVtZW50c0J5VGFnTmFtZSgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH0sXG4gICAgY3JlYXRlRWxlbWVudE5TKCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgfSxcbiAgICBpbXBvcnROb2RlKCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9LFxuICAgIGxvY2F0aW9uOiB7XG4gICAgICAgIGhhc2g6ICcnLFxuICAgICAgICBob3N0OiAnJyxcbiAgICAgICAgaG9zdG5hbWU6ICcnLFxuICAgICAgICBocmVmOiAnJyxcbiAgICAgICAgb3JpZ2luOiAnJyxcbiAgICAgICAgcGF0aG5hbWU6ICcnLFxuICAgICAgICBwcm90b2NvbDogJycsXG4gICAgICAgIHNlYXJjaDogJycsXG4gICAgfSxcbn07XG5mdW5jdGlvbiBnZXREb2N1bWVudCgpIHtcbiAgICBjb25zdCBkb2MgPSB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnID8gZG9jdW1lbnQgOiB7fTtcbiAgICBleHRlbmQoZG9jLCBzc3JEb2N1bWVudCk7XG4gICAgcmV0dXJuIGRvYztcbn1cblxuY29uc3Qgc3NyV2luZG93ID0ge1xuICAgIGRvY3VtZW50OiBzc3JEb2N1bWVudCxcbiAgICBuYXZpZ2F0b3I6IHtcbiAgICAgICAgdXNlckFnZW50OiAnJyxcbiAgICB9LFxuICAgIGxvY2F0aW9uOiB7XG4gICAgICAgIGhhc2g6ICcnLFxuICAgICAgICBob3N0OiAnJyxcbiAgICAgICAgaG9zdG5hbWU6ICcnLFxuICAgICAgICBocmVmOiAnJyxcbiAgICAgICAgb3JpZ2luOiAnJyxcbiAgICAgICAgcGF0aG5hbWU6ICcnLFxuICAgICAgICBwcm90b2NvbDogJycsXG4gICAgICAgIHNlYXJjaDogJycsXG4gICAgfSxcbiAgICBoaXN0b3J5OiB7XG4gICAgICAgIHJlcGxhY2VTdGF0ZSgpIHsgfSxcbiAgICAgICAgcHVzaFN0YXRlKCkgeyB9LFxuICAgICAgICBnbygpIHsgfSxcbiAgICAgICAgYmFjaygpIHsgfSxcbiAgICB9LFxuICAgIEN1c3RvbUV2ZW50OiBmdW5jdGlvbiBDdXN0b21FdmVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcbiAgICBhZGRFdmVudExpc3RlbmVyKCkgeyB9LFxuICAgIHJlbW92ZUV2ZW50TGlzdGVuZXIoKSB7IH0sXG4gICAgZ2V0Q29tcHV0ZWRTdHlsZSgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdldFByb3BlcnR5VmFsdWUoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9LFxuICAgIEltYWdlKCkgeyB9LFxuICAgIERhdGUoKSB7IH0sXG4gICAgc2NyZWVuOiB7fSxcbiAgICBzZXRUaW1lb3V0KCkgeyB9LFxuICAgIGNsZWFyVGltZW91dCgpIHsgfSxcbiAgICBtYXRjaE1lZGlhKCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgfSxcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2FsbGJhY2spIHtcbiAgICAgICAgaWYgKHR5cGVvZiBzZXRUaW
151lb3V0ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGNhbGxiYWNrLCAwKTtcbiAgICB9LFxuICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKGlkKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygc2V0VGltZW91dCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjbGVhclRpbWVvdXQoaWQpO1xuICAgIH0sXG59O1xuZnVuY3Rpb24gZ2V0V2luZG93KCkge1xuICAgIGNvbnN0IHdpbiA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93IDoge307XG4gICAgZXh0ZW5kKHdpbiwgc3NyV2luZG93KTtcbiAgICByZXR1cm4gd2luO1xufVxuXG5leHBvcnQgeyBleHRlbmQsIGdldERvY3VtZW50LCBnZXRXaW5kb3csIHNzckRvY3VtZW50LCBzc3JXaW5kb3cgfTtcbiIsIi8qKlxuICogRG9tNyA0LjAuNlxuICogTWluaW1hbGlzdGljIEphdmFTY3JpcHQgbGlicmFyeSBmb3IgRE9NIG1hbmlwdWxhdGlvbiwgd2l0aCBhIGpRdWVyeS1jb21wYXRpYmxlIEFQSVxuICogaHR0cHM6Ly9mcmFtZXdvcms3LmlvL2RvY3MvZG9tNy5odG1sXG4gKlxuICogQ29weXJpZ2h0IDIwMjMsIFZsYWRpbWlyIEtoYXJsYW1waWRpXG4gKlxuICogTGljZW5zZWQgdW5kZXIgTUlUXG4gKlxuICogUmVsZWFzZWQgb246IEZlYnJ1YXJ5IDIsIDIwMjNcbiAqL1xuaW1wb3J0IHsgZ2V0V2luZG93LCBnZXREb2N1bWVudCB9IGZyb20gJ3Nzci13aW5kb3cnO1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1wcm90byAqL1xuZnVuY3Rpb24gbWFrZVJlYWN0aXZlKG9iaikge1xuICBjb25zdCBwcm90byA9IG9iai5fX3Byb3RvX187XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosICdfX3Byb3RvX18nLCB7XG4gICAgZ2V0KCkge1xuICAgICAgcmV0dXJuIHByb3RvO1xuICAgIH0sXG5cbiAgICBzZXQodmFsdWUpIHtcbiAgICAgIHByb3RvLl9fcHJvdG9fXyA9IHZhbHVlO1xuICAgIH1cblxuICB9KTtcbn1cblxuY2xhc3MgRG9tNyBleHRlbmRzIEFycmF5IHtcbiAgY29uc3RydWN0b3IoaXRlbXMpIHtcbiAgICBpZiAodHlwZW9mIGl0ZW1zID09PSAnbnVtYmVyJykge1xuICAgICAgc3VwZXIoaXRlbXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdXBlciguLi4oaXRlbXMgfHwgW10pKTtcbiAgICAgIG1ha2VSZWFjdGl2ZSh0aGlzKTtcbiAgICB9XG4gIH1cblxufVxuXG5mdW5jdGlvbiBhcnJheUZsYXQoYXJyID0gW10pIHtcbiAgY29uc3QgcmVzID0gW107XG4gIGFyci5mb3JFYWNoKGVsID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShlbCkpIHtcbiAgICAgIHJlcy5wdXNoKC4uLmFycmF5RmxhdChlbCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXMucHVzaChlbCk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlcztcbn1cbmZ1bmN0aW9uIGFycmF5RmlsdGVyKGFyciwgY2FsbGJhY2spIHtcbiAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5maWx0ZXIuY2FsbChhcnIsIGNhbGxiYWNrKTtcbn1cbmZ1bmN0aW9uIGFycmF5VW5pcXVlKGFycikge1xuICBjb25zdCB1bmlxdWVBcnJheSA9IFtdO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgaWYgKHVuaXF1ZUFycmF5LmluZGV4T2YoYXJyW2ldKSA9PT0gLTEpIHVuaXF1ZUFycmF5LnB1c2goYXJyW2ldKTtcbiAgfVxuXG4gIHJldHVybiB1bmlxdWVBcnJheTtcbn1cbmZ1bmN0aW9uIHRvQ2FtZWxDYXNlKHN0cmluZykge1xuICByZXR1cm4gc3RyaW5nLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvLSguKS9nLCAobWF0Y2gsIGdyb3VwKSA9PiBncm91cC50b1VwcGVyQ2FzZSgpKTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5cbmZ1bmN0aW9uIHFzYShzZWxlY3RvciwgY29udGV4dCkge1xuICBpZiAodHlwZW9mIHNlbGVjdG9yICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBbc2VsZWN0b3JdO1xuICB9XG5cbiAgY29uc3QgYSA9IFtdO1xuICBjb25zdCByZXMgPSBjb250ZXh0LnF1
15ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgYS5wdXNoKHJlc1tpXSk7XG4gIH1cblxuICByZXR1cm4gYTtcbn1cblxuZnVuY3Rpb24gJChzZWxlY3RvciwgY29udGV4dCkge1xuICBjb25zdCB3aW5kb3cgPSBnZXRXaW5kb3coKTtcbiAgY29uc3QgZG9jdW1lbnQgPSBnZXREb2N1bWVudCgpO1xuICBsZXQgYXJyID0gW107XG5cbiAgaWYgKCFjb250ZXh0ICYmIHNlbGVjdG9yIGluc3RhbmNlb2YgRG9tNykge1xuICAgIHJldHVybiBzZWxlY3RvcjtcbiAgfVxuXG4gIGlmICghc2VsZWN0b3IpIHtcbiAgICByZXR1cm4gbmV3IERvbTcoYXJyKTtcbiAgfVxuXG4gIGlmICh0eXBlb2Ygc2VsZWN0b3IgPT09ICdzdHJpbmcnKSB7XG4gICAgY29uc3QgaHRtbCA9IHNlbGVjdG9yLnRyaW0oKTtcblxuICAgIGlmIChodG1sLmluZGV4T2YoJzwnKSA+PSAwICYmIGh0bWwuaW5kZXhPZignPicpID49IDApIHtcbiAgICAgIGxldCB0b0NyZWF0ZSA9ICdkaXYnO1xuICAgICAgaWYgKGh0bWwuaW5kZXhPZignPGxpJykgPT09IDApIHRvQ3JlYXRlID0gJ3VsJztcbiAgICAgIGlmIChodG1sLmluZGV4T2YoJzx0cicpID09PSAwKSB0b0NyZWF0ZSA9ICd0Ym9keSc7XG4gICAgICBpZiAoaHRtbC5pbmRleE9mKCc8dGQnKSA9PT0gMCB8fCBodG1sLmluZGV4T2YoJzx0aCcpID09PSAwKSB0b0NyZWF0ZSA9ICd0cic7XG4gICAgICBpZiAoaHRtbC5pbmRleE9mKCc8dGJvZHknKSA9PT0gMCkgdG9DcmVhdGUgPSAndGFibGUnO1xuICAgICAgaWYgKGh0bWwuaW5kZXhPZignPG9wdGlvbicpID09PSAwKSB0b0NyZWF0ZSA9ICdzZWxlY3QnO1xuICAgICAgY29uc3QgdGVtcFBhcmVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodG9DcmVhdGUpO1xuICAgICAgdGVtcFBhcmVudC5pbm5lckhUTUwgPSBodG1sO1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRlbXBQYXJlbnQuY2hpbGROb2Rlcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICBhcnIucHVzaCh0ZW1wUGFyZW50LmNoaWxkTm9kZXNbaV0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBhcnIgPSBxc2Eoc2VsZWN0b3IudHJpbSgpLCBjb250ZXh0IHx8IGRvY3VtZW50KTtcbiAgICB9IC8vIGFyciA9IHFzYShzZWxlY3RvciwgZG9jdW1lbnQpO1xuXG4gIH0gZWxzZSBpZiAoc2VsZWN0b3Iubm9kZVR5cGUgfHwgc2VsZWN0b3IgPT09IHdpbmRvdyB8fCBzZWxlY3RvciA9PT0gZG9jdW1lbnQpIHtcbiAgICBhcnIucHVzaChzZWxlY3Rvcik7XG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShzZWxlY3RvcikpIHtcbiAgICBpZiAoc2VsZWN0b3IgaW5zdGFuY2VvZiBEb203KSByZXR1cm4gc2VsZWN0b3I7XG4gICAgYXJyID0gc2VsZWN0b3I7XG4gIH1cblxuICByZXR1cm4gbmV3IERvbTcoYXJyYXlVbmlxdWUoYXJyKSk7XG59XG5cbiQuZm4gPSBEb203LnByb3RvdHlwZTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5cbmZ1bmN0aW9uIGFkZENsYXNzKC4uLmNsYXNzZXMpIHtcbiAgY29uc3QgY2xhc3NOYW1lcyA9IGFycmF5RmxhdChjbGFzc2VzLm1hcChjID0+IGMuc3BsaXQoJyAnKSkpO1xuICB0aGlzLmZvckVhY2goZWwgPT4ge1xuICAgIGVsLmNsYXNzTGlzdC5hZGQoLi4uY2xhc3NOYW1lcyk7XG4gIH0pO1xuICByZXR1cm4gdGhpcztcbn1cblxuZnVuY3Rpb24gcmVtb3ZlQ2xhc3MoLi4uY2xhc3Nlcykge1xuICBjb25zdCBjbGFzc05hbWVzID0gYXJyYXlGbGF0KGNsYXNzZXMubWFwKGMgPT4gYy5zcGxpdCgnICcpKSk7XG4gIHRoaXMuZm9yRWFjaChlbCA9PiB7XG4gICAgZWwuY2xhc3NMaXN0LnJlbW92ZSguLi5jbGFzc05hbWVzKTtcbiAgfSk7XG4gIHJldHVybiB0aGlzO1xufVxuXG5mdW5jdGlvbiB0b2dnbGVDbGFzcyguLi5jbGFzc2VzKSB7XG4gIGNvbnN0IGNsYXNzTmFtZXMgPSBhcnJheUZsYXQoY2xhc3Nlcy5tYXAoYyA9PiBjLnNwbGl0KCcgJykpKTtcbiAgdGhpcy5mb3JFYWNoKGVsID0+IHtcbiAgICBjbGFzc05hbWVzLmZvckVhY2goY2xhc3NOYW1lID0+IHtcbiAgICAgIGVsLmNsYXNzTGlzdC50b2dnbGUoY2xhc3NOYW1lKTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGhhc0NsYXNzKC4uLmNsYXNzZXMpIHtcbiAgY29uc3QgY2xhc3NOYW1lcyA9IGFycmF5RmxhdChjbGFzc2VzLm1hcChjID0+IGMuc3BsaXQoJyAnKSkpO1xuICByZXR1cm4gYXJyYXlGaWx0ZXIodGhpcywgZWwgPT4ge1xuICAgIHJldHVybiBjbGFzc05hbWVzLmZpbHRlcihjbGFzc05hbWUgPT4gZWwuY2xhc3NMaXN0LmNvbnRhaW5zKGNsYXNzTmFtZSkpLmxlbmd0aCA+IDA7XG4gIH0pLmxlbmd0aCA+IDA7XG59XG5cbmZ1bmN0aW9uIGF0dHIoYXR0cnMsIHZhbHVlKSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxICYmIHR5cGVvZiBhdHRycyA9PT0gJ3N0cmluZycpIHtcbiAgICAvLyBHZXQgYXR0clxuICAgIGlmICh0aGlzWzBdKSByZXR1cm4gdGhpc1swXS5nZXRBdHRyaWJ1dGUoYXR0cnMpO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH0gLy8gU2V0IGF0dHJzXG5cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikge1xuICAgICAgLy8gU3RyaW5nXG4gICAgICB0aGlzW2ldLnNldEF0dHJpYnV0ZShhdHRycywgdmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBPYmplY3RcbiAgICAgIGZvciAoY29uc3QgYXR0ck5hbWUgaW4gYXR0cnMpIHtcbiAgICAgICAgdGhpc1tpXVthdHRyTmFtZV0gPSBhdHRyc1thdHRyTmFtZV07XG4gICAgICAgIHRoaXNbaV0uc2V0QXR0cmlidXRlKGF0dHJOYW1lLCBhdHRyc1thdHRyTmFtZV0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufVxuXG5mdW5jdGlvbiByZW1vdmVBdHRyKGF0dHIpIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgdGhpc1tpXS5yZW1vdmVBdHRyaWJ1dGUoYXR0cik7XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn1cblxuZnVuY3Rpb24gcHJvcChwcm9wcywgdmFsdWUpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEgJiYgdHlwZW9mIHByb3BzID09PSAnc3RyaW5nJykge1xuICAgIC8vIEdldCBwcm9wXG4gICAgaWYgKHRoaXNbMF0pIHJldHVybi
15B0aGlzWzBdW3Byb3BzXTtcbiAgfSBlbHNlIHtcbiAgICAvLyBTZXQgcHJvcHNcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIC8vIFN0cmluZ1xuICAgICAgICB0aGlzW2ldW3Byb3BzXSA9IHZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gT2JqZWN0XG4gICAgICAgIGZvciAoY29uc3QgcHJvcE5hbWUgaW4gcHJvcHMpIHtcbiAgICAgICAgICB0aGlzW2ldW3Byb3BOYW1lXSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59XG5cbmZ1bmN0aW9uIGRhdGEoa2V5LCB2YWx1ZSkge1xuICBsZXQgZWw7XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBlbCA9IHRoaXNbMF07XG4gICAgaWYgKCFlbCkgcmV0dXJuIHVuZGVmaW5lZDsgLy8gR2V0IHZhbHVlXG5cbiAgICBpZiAoZWwuZG9tN0VsZW1lbnREYXRhU3RvcmFnZSAmJiBrZXkgaW4gZWwuZG9tN0VsZW1lbnREYXRhU3RvcmFnZSkge1xuICAgICAgcmV0dXJuIGVsLmRvbTdFbGVtZW50RGF0YVN0b3JhZ2Vba2V5XTtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRhS2V5ID0gZWwuZ2V0QXR0cmlidXRlKGBkYXRhLSR7a2V5fWApO1xuXG4gICAgaWYgKGRhdGFLZXkpIHtcbiAgICAgIHJldHVybiBkYXRhS2V5O1xuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH0gLy8gU2V0IHZhbHVlXG5cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICBlbCA9IHRoaXNbaV07XG4gICAgaWYgKCFlbC5kb203RWxlbWVudERhdGFTdG9yYWdlKSBlbC5kb203RWxlbWVudERhdGFTdG9yYWdlID0ge307XG4gICAgZWwuZG9tN0VsZW1lbnREYXRhU3RvcmFnZVtrZXldID0gdmFsdWU7XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn1cblxuZnVuY3Rpb24gcmVtb3ZlRGF0YShrZXkpIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgY29uc3QgZWwgPSB0aGlzW2ldO1xuXG4gICAgaWYgKGVsLmRvbTdFbGVtZW50RGF0YVN0b3JhZ2UgJiYgZWwuZG9tN0VsZW1lbnREYXRhU3RvcmFnZVtrZXldKSB7XG4gICAgICBlbC5kb203RWxlbWVudERhdGFTdG9yYWdlW2tleV0gPSBudWxsO1xuICAgICAgZGVsZXRlIGVsLmRvbTdFbGVtZW50RGF0YVN0b3JhZ2Vba2V5XTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZGF0YXNldCgpIHtcbiAgY29uc3QgZWwgPSB0aGlzWzBdO1xuICBpZiAoIWVsKSByZXR1cm4gdW5kZWZpbmVkO1xuICBjb25zdCBkYXRhc2V0ID0ge307IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcblxuICBpZiAoZWwuZGF0YXNldCkge1xuICAgIGZvciAoY29uc3QgZGF0YUtleSBpbiBlbC5kYXRhc2V0KSB7XG4gICAgICBkYXRhc2V0W2RhdGFLZXldID0gZWwuZGF0YXNldFtkYXRhS2V5XTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbC5hdHRyaWJ1dGVzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBjb25zdCBhdHRyID0gZWwuYXR0cmlidXRlc1tpXTtcblxuICAgICAgaWYgKGF0dHIubmFtZS5pbmRleE9mKCdkYXRhLScpID49IDApIHtcbiAgICAgICAgZGF0YXNldFt0b0NhbWVsQ2FzZShhdHRyLm5hbWUuc3BsaXQoJ2RhdGEtJylbMV0pXSA9IGF0dHIudmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZm9yIChjb25zdCBrZXkgaW4gZGF0YXNldCkge1xuICAgIGlmIChkYXRhc2V0W2tleV0gPT09ICdmYWxzZScpIGRhdGFzZXRba2V5XSA9IGZhbHNlO2Vsc2UgaWYgKGRhdGFzZXRba2V5XSA9PT0gJ3RydWUnKSBkYXRhc2V0W2tleV0gPSB0cnVlO2Vsc2UgaWYgKHBhcnNlRmxvYXQoZGF0YXNldFtrZXldKSA9PT0gZGF0YXNldFtrZXldICogMSkgZGF0YXNldFtrZXldICo9IDE7XG4gIH1cblxuICByZXR1cm4gZGF0YXNldDtcbn1cblxuZnVuY3Rpb24gdmFsKHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgLy8gZ2V0IHZhbHVlXG4gICAgY29uc3QgZWwgPSB0aGlzWzBdO1xuICAgIGlmICghZWwpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICBpZiAoZWwubXVsdGlwbGUgJiYgZWwubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ3NlbGVjdCcpIHtcbiAgICAgIGNvbnN0IHZhbHVlcyA9IFtdO1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVsLnNlbGVjdGVkT3B0aW9ucy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICB2YWx1ZXMucHVzaChlbC5zZWxlY3RlZE9wdGlvbnNbaV0udmFsdWUpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdmFsdWVzO1xuICAgIH1cblxuICAgIHJldHVybiBlbC52YWx1ZTtcbiAgfSAvLyBzZXQgdmFsdWVcblxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgIGNvbnN0IGVsID0gdGhpc1tpXTtcblxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiBlbC5tdWx0aXBsZSAmJiBlbC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnc2VsZWN0Jykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBlbC5vcHRpb25zLmxlbmd0aDsgaiArPSAxKSB7XG4gICAgICAgIGVsLm9wdGlvbnNbal0uc2VsZWN0ZWQgPSB2YWx1ZS5pbmRleE9mKGVsLm9wdGlvbnNbal0udmFsdWUpID49IDA7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59XG5cbmZ1bmN0aW9uIHZhbHVlKHZhbHVlKSB7XG4gIHJldHVybiB0aGlzLnZhbCh2YWx1ZSk7XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybSh0cmFuc2Zvcm0pIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgdGhpc1tpXS5zdHlsZS50cmFuc2Zvcm0gPSB0cmFuc2Zvcm07XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn1cblxuZnVuY3Rpb24gdHJhbnNpdGlvbihkdXJhdGlvbikge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICB0aGlzW2ldLnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbiA9IHR5cGVvZiBkdXJhdGlvbiAhPT0gJ3N0cmluZycgPyBgJHtkdXJhdGlvbn1tc2AgOiBkdXJhdGlvbjtcbiAgfVxuXG4gIHJldHVybi
15B0aGlzO1xufVxuXG5mdW5jdGlvbiBvbiguLi5hcmdzKSB7XG4gIGxldCBbZXZlbnRUeXBlLCB0YXJnZXRTZWxlY3RvciwgbGlzdGVuZXIsIGNhcHR1cmVdID0gYXJncztcblxuICBpZiAodHlwZW9mIGFyZ3NbMV0gPT09ICdmdW5jdGlvbicpIHtcbiAgICBbZXZlbnRUeXBlLCBsaXN0ZW5lciwgY2FwdHVyZV0gPSBhcmdzO1xuICAgIHRhcmdldFNlbGVjdG9yID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgaWYgKCFjYXB0dXJlKSBjYXB0dXJlID0gZmFsc2U7XG5cbiAgZnVuY3Rpb24gaGFuZGxlTGl2ZUV2ZW50KGUpIHtcbiAgICBjb25zdCB0YXJnZXQgPSBlLnRhcmdldDtcbiAgICBpZiAoIXRhcmdldCkgcmV0dXJuO1xuICAgIGNvbnN0IGV2ZW50RGF0YSA9IGUudGFyZ2V0LmRvbTdFdmVudERhdGEgfHwgW107XG5cbiAgICBpZiAoZXZlbnREYXRhLmluZGV4T2YoZSkgPCAwKSB7XG4gICAgICBldmVudERhdGEudW5zaGlmdChlKTtcbiAgICB9XG5cbiAgICBpZiAoJCh0YXJnZXQpLmlzKHRhcmdldFNlbGVjdG9yKSkgbGlzdGVuZXIuYXBwbHkodGFyZ2V0LCBldmVudERhdGEpO2Vsc2Uge1xuICAgICAgY29uc3QgcGFyZW50cyA9ICQodGFyZ2V0KS5wYXJlbnRzKCk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcblxuICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBwYXJlbnRzLmxlbmd0aDsgayArPSAxKSB7XG4gICAgICAgIGlmICgkKHBhcmVudHNba10pLmlzKHRhcmdldFNlbGVjdG9yKSkgbGlzdGVuZXIuYXBwbHkocGFyZW50c1trXSwgZXZlbnREYXRhKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVFdmVudChlKSB7XG4gICAgY29uc3QgZXZlbnREYXRhID0gZSAmJiBlLnRhcmdldCA/IGUudGFyZ2V0LmRvbTdFdmVudERhdGEgfHwgW10gOiBbXTtcblxuICAgIGlmIChldmVudERhdGEuaW5kZXhPZihlKSA8IDApIHtcbiAgICAgIGV2ZW50RGF0YS51bnNoaWZ0KGUpO1xuICAgIH1cblxuICAgIGxpc3RlbmVyLmFwcGx5KHRoaXMsIGV2ZW50RGF0YSk7XG4gIH1cblxuICBjb25zdCBldmVudHMgPSBldmVudFR5cGUuc3BsaXQoJyAnKTtcbiAgbGV0IGo7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgY29uc3QgZWwgPSB0aGlzW2ldO1xuXG4gICAgaWYgKCF0YXJnZXRTZWxlY3Rvcikge1xuICAgICAgZm9yIChqID0gMDsgaiA8IGV2ZW50cy5sZW5ndGg7IGogKz0gMSkge1xuICAgICAgICBjb25zdCBldmVudCA9IGV2ZW50c1tqXTtcbiAgICAgICAgaWYgKCFlbC5kb203TGlzdGVuZXJzKSBlbC5kb203TGlzdGVuZXJzID0ge307XG4gICAgICAgIGlmICghZWwuZG9tN0xpc3RlbmVyc1tldmVudF0pIGVsLmRvbTdMaXN0ZW5lcnNbZXZlbnRdID0gW107XG4gICAgICAgIGVsLmRvbTdMaXN0ZW5lcnNbZXZlbnRdLnB1c2goe1xuICAgICAgICAgIGxpc3RlbmVyLFxuICAgICAgICAgIHByb3h5TGlzdGVuZXI6IGhhbmRsZUV2ZW50XG4gICAgICAgIH0pO1xuICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCBoYW5kbGVFdmVudCwgY2FwdHVyZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIExpdmUgZXZlbnRzXG4gICAgICBmb3IgKGogPSAwOyBqIDwgZXZlbnRzLmxlbmd0aDsgaiArPSAxKSB7XG4gICAgICAgIGNvbnN0IGV2ZW50ID0gZXZlbnRzW2pdO1xuICAgICAgICBpZiAoIWVsLmRvbTdMaXZlTGlzdGVuZXJzKSBlbC5kb203TGl2ZUxpc3RlbmVycyA9IHt9O1xuICAgICAgICBpZiAoIWVsLmRvbTdMaXZlTGlzdGVuZXJzW2V2ZW50XSkgZWwuZG9tN0xpdmVMaXN0ZW5lcnNbZXZlbnRdID0gW107XG4gICAgICAgIGVsLmRvbTdMaXZlTGlzdGVuZXJzW2V2ZW50XS5wdXNoKHtcbiAgICAgICAgICBsaXN0ZW5lcixcbiAgICAgICAgICBwcm94eUxpc3RlbmVyOiBoYW5kbGVMaXZlRXZlbnRcbiAgICAgICAgfSk7XG4gICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQsIGhhbmRsZUxpdmVFdmVudCwgY2FwdHVyZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59XG5cbmZ1bmN0aW9uIG9mZiguLi5hcmdzKSB7XG4gIGxldCBbZXZlbnRUeXBlLCB0YXJnZXRTZWxlY3RvciwgbGlzdGVuZXIsIGNhcHR1cmVdID0gYXJncztcblxuICBpZiAodHlwZW9mIGFyZ3NbMV0gPT09ICdmdW5jdGlvbicpIHtcbiAgICBbZXZlbnRUeXBlLCBsaXN0ZW5lciwgY2FwdHVyZV0gPSBhcmdzO1xuICAgIHRhcmdldFNlbGVjdG9yID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgaWYgKCFjYXB0dXJlKSBjYXB0dXJlID0gZmFsc2U7XG4gIGNvbnN0IGV2ZW50cyA9IGV2ZW50VHlwZS5zcGxpdCgnICcpO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZXZlbnRzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgY29uc3QgZXZlbnQgPSBldmVudHNbaV07XG5cbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMubGVuZ3RoOyBqICs9IDEpIHtcbiAgICAgIGNvbnN0IGVsID0gdGhpc1tqXTtcbiAgICAgIGxldCBoYW5kbGVycztcblxuICAgICAgaWYgKCF0YXJnZXRTZWxlY3RvciAmJiBlbC5kb203TGlzdGVuZXJzKSB7XG4gICAgICAgIGhhbmRsZXJzID0gZWwuZG9tN0xpc3RlbmVyc1tldmVudF07XG4gICAgICB9IGVsc2UgaWYgKHRhcmdldFNlbGVjdG9yICYmIGVsLmRvbTdMaXZlTGlzdGVuZXJzKSB7XG4gICAgICAgIGhhbmRsZXJzID0gZWwuZG9tN0xpdmVMaXN0ZW5lcnNbZXZlbnRdO1xuICAgICAgfVxuXG4gICAgICBpZiAoaGFuZGxlcnMgJiYgaGFuZGxlcnMubGVuZ3RoKSB7XG4gICAgICAgIGZvciAobGV0IGsgPSBoYW5kbGVycy5sZW5ndGggLSAxOyBrID49IDA7IGsgLT0gMSkge1xuICAgICAgICAgIGNvbnN0IGhhbmRsZXIgPSBoYW5kbGVyc1trXTtcblxuICAgICAgICAgIGlmIChsaXN0ZW5lciAmJiBoYW5kbGVyLmxpc3RlbmVyID09PSBsaXN0ZW5lcikge1xuICAgICAgICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudCwgaGFuZGxlci5wcm94eUxpc3RlbmVyLCBjYXB0dXJlKTtcbiAgICAgICAgICAgIGhhbmRsZXJzLnNwbGljZShrLCAxKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGxpc3RlbmVyICYmIGhhbmRsZXIubGlzdGVuZXIgJiYgaGFuZGxlci5saXN0ZW5lci5kb203cHJveHkgJiYgaGFuZGxlci5saXN0ZW5lci5kb203cHJveHkgPT09IGxpc3RlbmVyKSB7XG4gICAgICAgICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50LCBoYW5kbGVyLnByb3h5TGlzdGVuZXIsIGNhcHR1cmUpO1xuICAgICAgICAgICAgaGFuZGxlcnMuc3BsaWNlKGssIDEpO1xuICAgICAgICAgI
15H0gZWxzZSBpZiAoIWxpc3RlbmVyKSB7XG4gICAgICAgICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50LCBoYW5kbGVyLnByb3h5TGlzdGVuZXIsIGNhcHR1cmUpO1xuICAgICAgICAgICAgaGFuZGxlcnMuc3BsaWNlKGssIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufVxuXG5mdW5jdGlvbiBvbmNlKC4uLmFyZ3MpIHtcbiAgY29uc3QgZG9tID0gdGhpcztcbiAgbGV0IFtldmVudE5hbWUsIHRhcmdldFNlbGVjdG9yLCBsaXN0ZW5lciwgY2FwdHVyZV0gPSBhcmdzO1xuXG4gIGlmICh0eXBlb2YgYXJnc1sxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIFtldmVudE5hbWUsIGxpc3RlbmVyLCBjYXB0dXJlXSA9IGFyZ3M7XG4gICAgdGFyZ2V0U2VsZWN0b3IgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBmdW5jdGlvbiBvbmNlSGFuZGxlciguLi5ldmVudEFyZ3MpIHtcbiAgICBsaXN0ZW5lci5hcHBseSh0aGlzLCBldmVudEFyZ3MpO1xuICAgIGRvbS5vZmYoZXZlbnROYW1lLCB0YXJnZXRTZWxlY3Rvciwgb25jZUhhbmRsZXIsIGNhcHR1cmUpO1xuXG4gICAgaWYgKG9uY2VIYW5kbGVyLmRvbTdwcm94eSkge1xuICAgICAgZGVsZXRlIG9uY2VIYW5kbGVyLmRvbTdwcm94eTtcbiAgICB9XG4gIH1cblxuICBvbmNlSGFuZGxlci5kb203cHJveHkgPSBsaXN0ZW5lcjtcbiAgcmV0dXJuIGRvbS5vbihldmVudE5hbWUsIHRhcmdldFNlbGVjdG9yLCBvbmNlSGFuZGxlciwgY2FwdHVyZSk7XG59XG5cbmZ1bmN0aW9uIHRyaWdnZXIoLi4uYXJncykge1xuICBjb25zdCB3aW5kb3cgPSBnZXRXaW5kb3coKTtcbiAgY29uc3QgZXZlbnRzID0gYXJnc1swXS5zcGxpdCgnICcpO1xuICBjb25zdCBldmVudERhdGEgPSBhcmdzWzFdO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZXZlbnRzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgY29uc3QgZXZlbnQgPSBldmVudHNbaV07XG5cbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMubGVuZ3RoOyBqICs9IDEpIHtcbiAgICAgIGNvbnN0IGVsID0gdGhpc1tqXTtcblxuICAgICAgaWYgKHdpbmRvdy5DdXN0b21FdmVudCkge1xuICAgICAgICBjb25zdCBldnQgPSBuZXcgd2luZG93LkN1c3RvbUV2ZW50KGV2ZW50LCB7XG4gICAgICAgICAgZGV0YWlsOiBldmVudERhdGEsXG4gICAgICAgICAgYnViYmxlczogdHJ1ZSxcbiAgICAgICAgICBjYW5jZWxhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICBlbC5kb203RXZlbnREYXRhID0gYXJncy5maWx0ZXIoKGRhdGEsIGRhdGFJbmRleCkgPT4gZGF0YUluZGV4ID4gMCk7XG4gICAgICAgIGVsLmRpc3BhdGNoRXZlbnQoZXZ0KTtcbiAgICAgICAgZWwuZG9tN0V2ZW50RGF0YSA9IFtdO1xuICAgICAgICBkZWxldGUgZWwuZG9tN0V2ZW50RGF0YTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn1cblxuZnVuY3Rpb24gdHJhbnNpdGlvblN0YXJ0KGNhbGxiYWNrKSB7XG4gIGNvbnN0IGRvbSA9IHRoaXM7XG5cbiAgZnVuY3Rpb24gZmlyZUNhbGxCYWNrKGUpIHtcbiAgICBpZiAoZS50YXJnZXQgIT09IHRoaXMpIHJldHVybjtcbiAgICBjYWxsYmFjay5jYWxsKHRoaXMsIGUpO1xuICAgIGRvbS5vZmYoJ3RyYW5zaXRpb25zdGFydCcsIGZpcmVDYWxsQmFjayk7XG4gIH1cblxuICBpZiAoY2FsbGJhY2spIHtcbiAgICBkb20ub24oJ3RyYW5zaXRpb25zdGFydCcsIGZpcmVDYWxsQmFjayk7XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn1cblxuZnVuY3Rpb24gdHJhbnNpdGlvbkVuZChjYWxsYmFjaykge1xuICBjb25zdCBkb20gPSB0aGlzO1xuXG4gIGZ1bmN0aW9uIGZpcmVDYWxsQmFjayhlKSB7XG4gICAgaWYgKGUudGFyZ2V0ICE9PSB0aGlzKSByZXR1cm47XG4gICAgY2FsbGJhY2suY2FsbCh0aGlzLCBlKTtcbiAgICBkb20ub2ZmKCd0cmFuc2l0aW9uZW5kJywgZmlyZUNhbGxCYWNrKTtcbiAgfVxuXG4gIGlmIChjYWxsYmFjaykge1xuICAgIGRvbS5vbigndHJhbnNpdGlvbmVuZCcsIGZpcmVDYWxsQmFjayk7XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn1cblxuZnVuY3Rpb24gYW5pbWF0aW9uRW5kKGNhbGxiYWNrKSB7XG4gIGNvbnN0IGRvbSA9IHRoaXM7XG5cbiAgZnVuY3Rpb24gZmlyZUNhbGxCYWNrKGUpIHtcbiAgICBpZiAoZS50YXJnZXQgIT09IHRoaXMpIHJldHVybjtcbiAgICBjYWxsYmFjay5jYWxsKHRoaXMsIGUpO1xuICAgIGRvbS5vZmYoJ2FuaW1hdGlvbmVuZCcsIGZpcmVDYWxsQmFjayk7XG4gIH1cblxuICBpZiAoY2FsbGJhY2spIHtcbiAgICBkb20ub24oJ2FuaW1hdGlvbmVuZCcsIGZpcmVDYWxsQmFjayk7XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn1cblxuZnVuY3Rpb24gd2lkdGgoKSB7XG4gIGNvbnN0IHdpbmRvdyA9IGdldFdpbmRvdygpO1xuXG4gIGlmICh0aGlzWzBdID09PSB3aW5kb3cpIHtcbiAgICByZXR1cm4gd2luZG93LmlubmVyV2lkdGg7XG4gIH1cblxuICBpZiAodGhpcy5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIHBhcnNlRmxvYXQodGhpcy5jc3MoJ3dpZHRoJykpO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmZ1bmN0aW9uIG91dGVyV2lkdGgoaW5jbHVkZU1hcmdpbnMpIHtcbiAgaWYgKHRoaXMubGVuZ3RoID4gMCkge1xuICAgIGlmIChpbmNsdWRlTWFyZ2lucykge1xuICAgICAgY29uc3Qgc3R5bGVzID0gdGhpcy5zdHlsZXMoKTtcbiAgICAgIHJldHVybiB0aGlzWzBdLm9mZnNldFdpZHRoICsgcGFyc2VGbG9hdChzdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZSgnbWFyZ2luLXJpZ2h0JykpICsgcGFyc2VGbG9hdChzdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZSgnbWFyZ2luLWxlZnQnKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXNbMF0ub2Zmc2V0V2lkdGg7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gaGVpZ2h0KCkge1xuICBjb25zdCB3aW5kb3cgPSBnZXRXaW5kb3coKTtcblxuICBpZiAodGhpc1swXSA9PT0gd2luZG93KSB7XG4gICAgcmV0dXJuIHdpbmRvdy5pbm5lckhlaWdodDtcbiAgfVxuXG4gIGlmICh0aGlzLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gcGFyc2VGbG9hdCh0aGlzLmNzcygnaGVpZ2h0JykpO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmZ1bmN0aW9uIG91dGVySGVpZ2h0KGluY2x1ZGVNYXJnaW5zKSB7XG4gIGlmICh0aGlzLmxlbmd0aCA+IDApIHtcbiAgICBpZiAoaW5jbHVkZU1hcmdpbnMpIHtcbiAgICAgIGNvbnN0IHN0eWxlcyA9IHRoaXMuc3R5bGVzKCk7XG4gICAgICByZXR1cm4gdGhpc1swXS5vZmZzZXRIZWlnaHQgKyBwYXJzZU
15Zsb2F0KHN0eWxlcy5nZXRQcm9wZXJ0eVZhbHVlKCdtYXJnaW4tdG9wJykpICsgcGFyc2VGbG9hdChzdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZSgnbWFyZ2luLWJvdHRvbScpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpc1swXS5vZmZzZXRIZWlnaHQ7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gb2Zmc2V0KCkge1xuICBpZiAodGhpcy5sZW5ndGggPiAwKSB7XG4gICAgY29uc3Qgd2luZG93ID0gZ2V0V2luZG93KCk7XG4gICAgY29uc3QgZG9jdW1lbnQgPSBnZXREb2N1bWVudCgpO1xuICAgIGNvbnN0IGVsID0gdGhpc1swXTtcbiAgICBjb25zdCBib3ggPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBib2R5ID0gZG9jdW1lbnQuYm9keTtcbiAgICBjb25zdCBjbGllbnRUb3AgPSBlbC5jbGllbnRUb3AgfHwgYm9keS5jbGllbnRUb3AgfHwgMDtcbiAgICBjb25zdCBjbGllbnRMZWZ0ID0gZWwuY2xpZW50TGVmdCB8fCBib2R5LmNsaWVudExlZnQgfHwgMDtcbiAgICBjb25zdCBzY3JvbGxUb3AgPSBlbCA9PT0gd2luZG93ID8gd2luZG93LnNjcm9sbFkgOiBlbC5zY3JvbGxUb3A7XG4gICAgY29uc3Qgc2Nyb2xsTGVmdCA9IGVsID09PSB3aW5kb3cgPyB3aW5kb3cuc2Nyb2xsWCA6IGVsLnNjcm9sbExlZnQ7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRvcDogYm94LnRvcCArIHNjcm9sbFRvcCAtIGNsaWVudFRvcCxcbiAgICAgIGxlZnQ6IGJveC5sZWZ0ICsgc2Nyb2xsTGVmdCAtIGNsaWVudExlZnRcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmZ1bmN0aW9uIGhpZGUoKSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgIHRoaXNbaV0uc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufVxuXG5mdW5jdGlvbiBzaG93KCkge1xuICBjb25zdCB3aW5kb3cgPSBnZXRXaW5kb3coKTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICBjb25zdCBlbCA9IHRoaXNbaV07XG5cbiAgICBpZiAoZWwuc3R5bGUuZGlzcGxheSA9PT0gJ25vbmUnKSB7XG4gICAgICBlbC5zdHlsZS5kaXNwbGF5ID0gJyc7XG4gICAgfVxuXG4gICAgaWYgKHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdkaXNwbGF5J
15ykgPT09ICdub25lJykge1xuICAgICAgLy8gU3RpbGwgbm90IHZpc2libGVcbiAgICAgIGVsLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufVxuXG5mdW5jdGlvbiBzdHlsZXMoKSB7XG4gIGNvbnN0IHdpbmRvdyA9IGdldFdpbmRvdygpO1xuICBpZiAodGhpc1swXSkgcmV0dXJuIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXNbMF0sIG51bGwpO1xuICByZXR1cm4ge307XG59XG5cbmZ1bmN0aW9uIGNzcyhwcm9wcywgdmFsdWUpIHtcbiAgY29uc3Qgd2luZG93ID0gZ2V0V2luZG93KCk7XG4gIGxldCBpO1xuXG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgaWYgKHR5cGVvZiBwcm9wcyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIC8vIC5jc3MoJ3dpZHRoJylcbiAgICAgIGlmICh0aGlzWzBdKSByZXR1cm4gd2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpc1swXSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZShwcm9wcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIC5jc3MoeyB3aWR0aDogJzEwMHB4JyB9KVxuICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgZm9yIChjb25zdCBwcm9wIGluIHByb3BzKSB7XG4gICAgICAgICAgdGhpc1tpXS5zdHlsZVtwcm9wXSA9IHByb3BzW3Byb3BdO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfVxuXG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyICYmIHR5cGVvZiBwcm9wcyA9PT0gJ3N0cmluZycpIHtcbiAgICAvLyAuY3NzKCd3aWR0aCcsICcxMDBweCcpXG4gICAgZm9yIChpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIHRoaXNbaV0uc3R5bGVbcHJvcHNdID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn1cblxuZnVuY3Rpb24gZWFjaChjYWxsYmFjaykge1xuICBpZiAoIWNhbGxiYWNrKSByZXR1cm4gdGhpcztcbiAgdGhpcy5mb3JFYWNoKChlbCwgaW5kZXgpID0+IHtcbiAgICBjYWxsYmFjay5hcHBseShlbCwgW2VsLCBpbmRleF0pO1xuICB9KTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbmZ1bmN0aW9uIGZpbHRlcihjYWxsYmFjaykge1xuICBjb25zdCByZXN1bHQgPSBhcnJheUZpbHRlcih0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiAkKHJlc3VsdCk7XG59XG5cbmZ1bmN0aW9uIGh0bWwoaHRtbCkge1xuICBpZiAodHlwZW9mIGh0bWwgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIHRoaXNbMF0gPyB0aGlzWzBdLmlubmVySFRNTCA6IG51bGw7XG4gIH1cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICB0aGlzW2ldLmlubmVySFRNTCA9IGh0bWw7XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn1cblxuZnVuY3Rpb24gdGV4dCh0ZXh0KSB7XG4gIGlmICh0eXBlb2YgdGV4dCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gdGhpc1swXSA/IHRoaXNbMF0udGV4dENvbnRlbnQudHJpbSgpIDogbnVsbDtcbiAgfVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgIHRoaXNbaV0udGV4dENvbnRlbnQgPSB0ZXh0O1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59XG5cbmZ1bmN0aW9uIGlzKHNlbGVjdG9yKSB7XG4gIGNvbnN0IHdpbmRvdyA9IGdldFdpbmRvdygpO1xuICBjb25zdCBkb2N1bWVudCA9IGdldERvY3VtZW50KCk7XG4gIGNvbnN0IGVsID0gdGhpc1swXTtcbiAgbGV0IGNvbXBhcmVXaXRoO1xuICBsZXQgaTtcbiAgaWYgKCFlbCB8fCB0eXBlb2Ygc2VsZWN0b3IgPT09ICd1bmRlZmluZWQnKSByZXR1cm4gZmFsc2U7XG5cbiAgaWYgKHR5cGVvZiBzZWxlY3RvciA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAoZWwubWF0Y2hlcykgcmV0dXJuIGVsLm1hdGNoZXMoc2VsZWN0b3IpO1xuICAgIGlmIChlbC53ZWJraXRNYXRjaGVzU2VsZWN0b3IpIHJldHVybiBlbC53ZWJraXRNYXRjaGVzU2VsZWN0b3Ioc2VsZWN0b3IpO1xuICAgIGlmIChlbC5tc01hdGNoZXNTZWxlY3RvcikgcmV0dXJuIGVsLm1zTWF0Y2hlc1NlbGVjdG9yKHNlbGVjdG9yKTtcbiAgICBjb21wYXJlV2l0aCA9ICQoc2VsZWN0b3IpO1xuXG4gICAgZm9yIChpID0gMDsgaSA8IGNvbXBhcmVXaXRoLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBpZiAoY29tcGFyZVdpdGhbaV0gPT09IGVsKSByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoc2VsZWN0b3IgPT09IGRvY3VtZW50KSB7XG4gICAgcmV0dXJuIGVsID09PSBkb2N1bWVudDtcbiAgfVxuXG4gIGlmIChzZWxlY3RvciA9PT0gd2luZG93KSB7XG4gICAgcmV0dXJuIGVsID09PSB3aW5kb3c7XG4gIH1cblxuICBpZiAoc2VsZWN0b3Iubm9kZVR5cGUgfHwgc2VsZWN0b3IgaW5zdGFuY2VvZiBEb203KSB7XG4gICAgY29tcGFyZVdpdGggPSBzZWxlY3Rvci5ub2RlVHlwZSA/IFtzZWxlY3Rvcl0gOiBzZWxlY3RvcjtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBjb21wYXJlV2l0aC5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgaWYgKGNvbXBhcmVXaXRoW2ldID09PSBlbCkgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBpbmRleCgpIHtcbiAgbGV0IGNoaWxkID0gdGhpc1swXTtcbiAgbGV0IGk7XG5cbiAgaWYgKGNoaWxkKSB7XG4gICAgaSA9IDA7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuXG4gICAgd2hpbGUgKChjaGlsZCA9IGNoaWxkLnByZXZpb3VzU2libGluZykgIT09IG51bGwpIHtcbiAgICAgIGlmIChjaGlsZC5ub2RlVHlwZSA9PT0gMSkgaSArPSAxO1xuICAgIH1cblxuICAgIHJldHVybiBpO1xuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gZXEoaW5kZXgpIHtcbiAgaWYgKHR5cGVvZiBpbmRleCA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybiB0aGlzO1xuICBjb25zdCBsZW5ndGggPSB0aGlzLmxlbmd0aDtcblxuICBpZiAoaW5kZXggPiBsZW5ndGggLSAxKSB7XG4gICAgcmV0dXJuICQoW10pO1xuICB9XG5cbiAgaWYgKGluZGV4IDwgMCkge1xuICAgIGNvbnN0IHJldHVybkluZGV4ID0gbGVuZ3RoICsgaW5kZXg7XG4gICAgaWYgKHJldHVybkluZGV4IDwgMCkgcmV0dXJuICQoW10pO1xuICAgIHJldHVybiAkKFt0aGlzW3JldHVybkluZGV4XV0pO1xuICB9XG5cbiAgcmV0dXJuICQoW3RoaXNbaW5kZXhdXSk7XG59XG5cbmZ1bmN0aW9uIGFwcGVuZCguLi5lbHMpIHtcbiAgbGV0IG5ld0NoaWxkO1xuICBjb25zdCBkb2N1bWVudCA9IGdldERvY3VtZW50KCk7XG5cbiAgZm9yIChsZXQgayA9IDA7IGsgPCBlbHMubGVuZ3RoOyBrICs9IDEpIHtcbiAgICBuZXdDaGlsZCA9IGVsc1trXTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgaWYgKHR5cGVvZiBuZXdDaGlsZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY29uc3QgdGVtcERpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICB0ZW1wRGl2LmlubmVySFRNTCA9IG5ld0NoaWxkO1xuXG4gICAgICAgI
15HdoaWxlICh0ZW1wRGl2LmZpcnN0Q2hpbGQpIHtcbiAgICAgICAgICB0aGlzW2ldLmFwcGVuZENoaWxkKHRlbXBEaXYuZmlyc3RDaGlsZCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAobmV3Q2hpbGQgaW5zdGFuY2VvZiBEb203KSB7XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbmV3Q2hpbGQubGVuZ3RoOyBqICs9IDEpIHtcbiAgICAgICAgICB0aGlzW2ldLmFwcGVuZENoaWxkKG5ld0NoaWxkW2pdKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpc1tpXS5hcHBlbmRDaGlsZChuZXdDaGlsZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59XG5cbmZ1bmN0aW9uIGFwcGVuZFRvKHBhcmVudCkge1xuICAkKHBhcmVudCkuYXBwZW5kKHRoaXMpO1xuICByZXR1cm4gdGhpcztcbn1cblxuZnVuY3Rpb24gcHJlcGVuZChuZXdDaGlsZCkge1xuICBjb25zdCBkb2N1bWVudCA9IGdldERvY3VtZW50KCk7XG4gIGxldCBpO1xuICBsZXQgajtcblxuICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgIGlmICh0eXBlb2YgbmV3Q2hpbGQgPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zdCB0ZW1wRGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICB0ZW1wRGl2LmlubmVySFRNTCA9IG5ld0NoaWxkO1xuXG4gICAgICBmb3IgKGogPSB0ZW1wRGl2LmNoaWxkTm9kZXMubGVuZ3RoIC0gMTsgaiA+PSAwOyBqIC09IDEpIHtcbiAgICAgICAgdGhpc1tpXS5pbnNlcnRCZWZvcmUodGVtcERpdi5jaGlsZE5vZGVzW2pdLCB0aGlzW2ldLmNoaWxkTm9kZXNbMF0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAobmV3Q2hpbGQgaW5zdGFuY2VvZiBEb203KSB7XG4gICAgICBmb3IgKGogPSAwOyBqIDwgbmV3Q2hpbGQubGVuZ3RoOyBqICs9IDEpIHtcbiAgICAgICAgdGhpc1tpXS5pbnNlcnRCZWZvcmUobmV3Q2hpbGRbal0sIHRoaXNbaV0uY2hpbGROb2Rlc1swXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXNbaV0uaW5zZXJ0QmVmb3JlKG5ld0NoaWxkLCB0aGlzW2ldLmNoaWxkTm9kZXNbMF0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufVxuXG5mdW5jdGlvbiBwcmVwZW5kVG8ocGFyZW50KSB7XG4gICQocGFyZW50KS5wcmVwZW5kKHRoaXMpO1xuICByZXR1cm4gdGhpcztcbn1cblxuZnVuY3Rpb24gaW5zZXJ0QmVmb3JlKHNlbGVjdG9yKSB7XG4gIGNvbnN0IGJlZm9yZSA9ICQoc2VsZWN0b3IpO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgIGlmIChiZWZvcmUubGVuZ3RoID09PSAxKSB7XG4gICAgICBiZWZvcmVbMF0ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpc1tpXSwgYmVmb3JlWzBdKTtcbiAgICB9IGVsc2UgaWYgKGJlZm9yZS5sZW5ndGggPiAxKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGJlZm9yZS5sZW5ndGg7IGogKz0gMSkge1xuICAgICAgICBiZWZvcmVbal0ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpc1tpXS5jbG9uZU5vZGUodHJ1ZSksIGJlZm9yZVtqXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGluc2VydEFmdGVyKHNlbGVjdG9yKSB7XG4gIGNvbnN0IGFmdGVyID0gJChzZWxlY3Rvcik7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgaWYgKGFmdGVyLmxlbmd0aCA9PT0gMSkge1xuICAgICAgYWZ0ZXJbMF0ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpc1tpXSwgYWZ0ZXJbMF0ubmV4dFNpYmxpbmcpO1xuICAgIH0gZWxzZSBpZiAoYWZ0ZXIubGVuZ3RoID4gMSkge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBhZnRlci5sZW5ndGg7IGogKz0gMSkge1xuICAgICAgICBhZnRlcltqXS5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzW2ldLmNsb25lTm9kZSh0cnVlKSwgYWZ0ZXJbal0ubmV4dFNpYmxpbmcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBuZXh0KHNlbGVjdG9yKSB7XG4gIGlmICh0aGlzLmxlbmd0aCA+IDApIHtcbiAgICBpZiAoc2VsZWN0b3IpIHtcbiAgICAgIGlmICh0aGlzWzBdLm5leHRFbGVtZW50U2libGluZyAmJiAkKHRoaXNbMF0ubmV4dEVsZW1lbnRTaWJsaW5nKS5pcyhzZWxlY3RvcikpIHtcbiAgICAgICAgcmV0dXJuICQoW3RoaXNbMF0ubmV4dEVsZW1lbnRTaWJsaW5nXSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAkKFtdKTtcbiAgICB9XG5cbiAgICBpZiAodGhpc1swXS5uZXh0RWxlbWVudFNpYmxpbmcpIHJldHVybiAkKFt0aGlzWzBdLm5leHRFbGVtZW50U2libGluZ10pO1xuICAgIHJldHVybiAkKFtdKTtcbiAgfVxuXG4gIHJldHVybiAkKFtdKTtcbn1cblxuZnVuY3Rpb24gbmV4dEFsbChzZWxlY3Rvcikge1xuICBjb25zdCBuZXh0RWxzID0gW107XG4gIGxldCBlbCA9IHRoaXNbMF07XG4gIGlmICghZWwpIHJldHVybiAkKFtdKTtcblxuICB3aGlsZSAoZWwubmV4dEVsZW1lbnRTaWJsaW5nKSB7XG4gICAgY29uc3QgbmV4dCA9IGVsLm5leHRFbGVtZW50U2libGluZzsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuXG4gICAgaWYgKHNlbGVjdG9yKSB7XG4gICAgICBpZiAoJChuZXh0KS5pcyhzZWxlY3RvcikpIG5leHRFbHMucHVzaChuZXh0KTtcbiAgICB9IGVsc2UgbmV4dEVscy5wdXNoKG5leHQpO1xuXG4gICAgZWwgPSBuZXh0O1xuICB9XG5cbiAgcmV0dXJuICQobmV4dEVscyk7XG59XG5cbmZ1bmN0aW9uIHByZXYoc2VsZWN0b3IpIHtcbiAgaWYgKHRoaXMubGVuZ3RoID4gMCkge1xuICAgIGNvbnN0IGVsID0gdGhpc1swXTtcblxuICAgIGlmIChzZWxlY3Rvcikge1xuICAgICAgaWYgKGVsLnByZXZpb3VzRWxlbWVudFNpYmxpbmcgJiYgJChlbC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKS5pcyhzZWxlY3RvcikpIHtcbiAgICAgICAgcmV0dXJuICQoW2VsLnByZXZpb3VzRWxlbWVudFNpYmxpbmddKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICQoW10pO1xuICAgIH1cblxuICAgIGlmIChlbC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKSByZXR1cm4gJChbZWwucHJldmlvdXNFbGVtZW50U2libGluZ10pO1xuICAgIHJldHVybiAkKFtdKTtcbiAgfVxuXG4gIHJldHVybiAkKFtdKTtcbn1cblxuZnVuY3Rpb24gcHJldkFsbChzZWxlY3Rvcikge1xuICBjb25zdCBwcmV2RWxzID0gW107XG4gIGxldCBlbCA9IHRoaXNbMF07XG4gIGlmICghZWwpIHJldHVybiAkKFtdKTtcblxuICB3aGlsZSAoZWwucHJldmlvdXNFbGVtZW50U2libGluZykge1xuICAgIGNvbnN0IHByZXYgPSBlbC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG5cbiAgICBpZiAoc2VsZWN0b3IpIHtcbiAgICAgIGlmICgkKHByZXYpLmlzKHNlbGVjdG9yKSkgcHJldkVscy5wdXNoKHByZXYpO1xuICAgIH0gZWxzZSBwcmV2RWxzLnB1c2gocHJldik7XG5cbiAgICBlbCA9IHByZXY7XG4gIH1cblxuICByZXR1cm4gJChwcmV2RWxzKTtcbn1cblxuZnVuY3Rpb24gc2libGluZ3Moc2VsZWN0b3IpIHtcbiAgcmV0dXJuIHRoaXMubmV4dEFsbChzZWxlY3RvcikuYWRkKHRoaXMucHJldkFsbChzZWxlY3RvcikpO1xufVxuXG5mdW5jdGlvbiBwYXJlbnQoc2VsZWN0b3IpIHtcbiAgY29uc3QgcGFyZW50cyA9IFtdOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgaWYgKHRoaXNbaV0ucGFyZW50Tm9kZSAhPT0gbnVsbCkge1xuICAgICAgaWYgKHNlbGVjdG9yKSB7XG4gICAgICAgIGlmICgkKHRoaXNbaV0ucGFyZW50Tm9kZSkuaXMoc2VsZWN0b3IpKSBwYXJlbnRzLnB1c2godGhpc1tpXS5wYXJlbnROb2RlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgI
15HBhcmVudHMucHVzaCh0aGlzW2ldLnBhcmVudE5vZGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAkKHBhcmVudHMpO1xufVxuXG5mdW5jdGlvbiBwYXJlbnRzKHNlbGVjdG9yKSB7XG4gIGNvbnN0IHBhcmVudHMgPSBbXTsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgIGxldCBwYXJlbnQgPSB0aGlzW2ldLnBhcmVudE5vZGU7IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcblxuICAgIHdoaWxlIChwYXJlbnQpIHtcbiAgICAgIGlmIChzZWxlY3Rvcikge1xuICAgICAgICBpZiAoJChwYXJlbnQpLmlzKHNlbGVjdG9yKSkgcGFyZW50cy5wdXNoKHBhcmVudCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJlbnRzLnB1c2gocGFyZW50KTtcbiAgICAgIH1cblxuICAgICAgcGFyZW50ID0gcGFyZW50LnBhcmVudE5vZGU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuICQocGFyZW50cyk7XG59XG5cbmZ1bmN0aW9uIGNsb3Nlc3Qoc2VsZWN0b3IpIHtcbiAgbGV0IGNsb3Nlc3QgPSB0aGlzOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG5cbiAgaWYgKHR5cGVvZiBzZWxlY3RvciA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gJChbXSk7XG4gIH1cblxuICBpZiAoIWNsb3Nlc3QuaXMoc2VsZWN0b3IpKSB7XG4gICAgY2xvc2VzdCA9IGNsb3Nlc3QucGFyZW50cyhzZWxlY3RvcikuZXEoMCk7XG4gIH1cblxuICByZXR1cm4gY2xvc2VzdDtcbn1cblxuZnVuY3Rpb24gZmluZChzZWxlY3Rvcikge1xuICBjb25zdCBmb3VuZEVsZW1lbnRzID0gW107XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgY29uc3QgZm91bmQgPSB0aGlzW2ldLnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpO1xuXG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBmb3VuZC5sZW5ndGg7IGogKz0gMSkge1xuICAgICAgZm91bmRFbGVtZW50cy5wdXNoKGZvdW5kW2pdKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gJChmb3VuZEVsZW1lbnRzKTtcbn1cblxuZnVuY3Rpb24gY2hpbGRyZW4oc2VsZWN0b3IpIHtcbiAgY29uc3QgY2hpbGRyZW4gPSBbXTsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgIGNvbnN0IGNoaWxkTm9kZXMgPSB0aGlzW2ldLmNoaWxkcmVuO1xuXG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBjaGlsZE5vZGVzLmxlbmd0aDsgaiArPSAxKSB7XG4gICAgICBpZiAoIXNlbGVjdG9yIHx8ICQoY2hpbGROb2Rlc1tqXSkuaXMoc2VsZWN0b3IpKSB7XG4gICAgICAgIGNoaWxkcmVuLnB1c2goY2hpbGROb2Rlc1tqXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuICQoY2hpbGRyZW4pO1xufVxuXG5mdW5jdGlvbiByZW1vdmUoKSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgIGlmICh0aGlzW2ldLnBhcmVudE5vZGUpIHRoaXNbaV0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzW2ldKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufVxuXG5mdW5jdGlvbiBkZXRhY2goKSB7XG4gIHJldHVybiB0aGlzLnJlbW92ZSgpO1xufVxuXG5mdW5jdGlvbiBhZGQoLi4uZWxzKSB7XG4gIGNvbnN0IGRvbSA9IHRoaXM7XG4gIGxldCBpO1xuICBsZXQgajtcblxuICBmb3IgKGkgPSAwOyBpIDwgZWxzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgY29uc3QgdG9BZGQgPSAkKGVsc1tpXSk7XG5cbiAgICBmb3IgKGogPSAwOyBqIDwgdG9BZGQubGVuZ3RoOyBqICs9IDEpIHtcbiAgICAgIGRvbS5wdXNoKHRvQWRkW2pdKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZG9tO1xufVxuXG5mdW5jdGlvbiBlbXB0eSgpIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgY29uc3QgZWwgPSB0aGlzW2ldO1xuXG4gICAgaWYgKGVsLm5vZGVUeXBlID09PSAxKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGVsLmNoaWxkTm9kZXMubGVuZ3RoOyBqICs9IDEpIHtcbiAgICAgICAgaWYgKGVsLmNoaWxkTm9kZXNbal0ucGFyZW50Tm9kZSkge1xuICAgICAgICAgIGVsLmNoaWxkTm9kZXNbal0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbC5jaGlsZE5vZGVzW2pdKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBlbC50ZXh0Q29udGVudCA9ICcnO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcblxuZnVuY3Rpb24gc2Nyb2xsVG8oLi4uYXJncykge1xuICBjb25zdCB3aW5kb3cgPSBnZXRXaW5kb3coKTtcbiAgbGV0IFtsZWZ0LCB0b3AsIGR1cmF0aW9uLCBlYXNpbmcsIGNhbGxiYWNrXSA9IGFyZ3M7XG5cbiAgaWYgKGFyZ3MubGVuZ3RoID09PSA0ICYmIHR5cGVvZiBlYXNpbmcgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYWxsYmFjayA9IGVhc2luZztcbiAgICBbbGVmdCwgdG9wLCBkdXJhdGlvbiwgY2FsbGJhY2ssIGVhc2luZ10gPSBhcmdzO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBlYXNpbmcgPT09ICd1bmRlZmluZWQnKSBlYXNpbmcgPSAnc3dpbmcnO1xuICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uIGFuaW1hdGUoKSB7XG4gICAgY29uc3QgZWwgPSB0aGlzO1xuICAgIGxldCBjdXJyZW50VG9wO1xuICAgIGxldCBjdXJyZW50TGVmdDtcbiAgICBsZXQgbWF4VG9wO1xuICAgIGxldCBtYXhMZWZ0O1xuICAgIGxldCBuZXdUb3A7XG4gICAgbGV0IG5ld0xlZnQ7XG4gICAgbGV0IHNjcm9sbFRvcDsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuXG4gICAgbGV0IHNjcm9sbExlZnQ7IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcblxuICAgIGxldCBhbmltYXRlVG9wID0gdG9wID4gMCB8fCB0b3AgPT09IDA7XG4gICAgbGV0IGFuaW1hdGVMZWZ0ID0gbGVmdCA+IDAgfHwgbGVmdCA9PT0gMDtcblxuICAgIGlmICh0eXBlb2YgZWFzaW5nID09PSAndW5kZWZpbmVkJykge1xuICAgICAgZWFzaW5nID0gJ3N3aW5nJztcbiAgICB9XG5cbiAgICBpZiAoYW5pbWF0ZVRvcCkge1xuICAgICAgY3VycmVudFRvcCA9IGVsLnNjcm9sbFRvcDtcblxuICAgICAgaWYgKCFkdXJhdGlvbikge1xuICAgICAgICBlbC5zY3JvbGxUb3AgPSB0b3A7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGFuaW1hdGVMZWZ0KSB7XG4gICAgICBjdXJyZW50TGVmdCA9IGVsLnNjcm9sbExlZnQ7XG5cbiAgICAgIGlmICghZHVyYXRpb24pIHtcbiAgICAgICAgZWwuc2Nyb2xsTGVmdCA9IGxlZnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFkdXJhdGlvbikgcmV0dXJuO1xuXG4gICAgaWYgKGFuaW1hdGVUb3ApIHtcbiAgICAgIG1heFRvcCA9IGVsLnNjcm9sbEhlaWdodCAtIGVsLm9mZnNldEhlaWdodDtcbiAgICAgIG5ld1RvcCA9IE1hdGgubWF4KE1hdGgubWluKHRvcCwgbWF4VG9wKSwgMCk7XG4gICAgfVxuXG4gICAgaWYgKGFuaW1hdGVMZWZ0KSB7XG4gICAgICBtYXhMZWZ0ID0gZWwuc2Nyb2xsV2lkdGggLSBlbC5vZmZzZXRXaWR0aDtcbiAgICAgIG5ld0xlZnQgPSBNYXRoLm1heChNYXRoLm1pbihsZWZ0LCBtYXhMZWZ0KSwgMCk7XG4gICAgfVxuXG4gICAgbGV0IHN0YXJ0VGltZSA9IG51bGw7XG4gICAgaWYgKGFuaW1hdGVUb3AgJiYgbmV3VG9wID09PSBjdXJyZW50VG9wKSBhbmltYXRlVG9wID0gZmFsc2U7XG4gICAgaWYgKGFuaW1hdGVMZWZ0ICYmIG5ld0xlZnQgPT09IGN1cnJlbnRMZWZ0KSBhbmltYXRlTGVmdCA9IGZhbHNlO1xuXG4gICAgZnVuY3Rpb24gcmVuZGVyKHRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKSkge1xuICAgICAgaWYgKHN0YXJ0VGltZSA9PT0gbnVsbCkge1xuICAgICAgICBzdGFydFRpbWUgPSB0aW1lO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBwcm9ncmVzcyA9IE1hdGgubWF4KE1hdGgubWluKCh0aW1lIC0gc3RhcnRUaW1lKSAvIGR1cmF0aW9uLCAxKSwgMCk7XG4gICAgICBjb25zdCBlYXNlUHJvZ3Jlc3MgPSBlYXNpbmcgPT09ICdsaW5lYXInID8gcHJvZ3Jlc3MgOiAwLjUgLSBNYXRoLmNvcyhwcm9ncmVzcyAqIE1hdGguUEkpIC8gMjtcbiAgICAgIGxldCBkb25lO1xuICAgICAgaWYgKGFuaW1hdGVUb3ApIHNjcm9sbFRvcCA9IGN1cnJlbnRUb3AgKyBlYXNlUHJvZ3Jlc3MgKiAobmV3VG9wIC0gY3VycmVudFRvcCk7XG4gICAgICBpZiAoYW5pbWF0ZUxlZnQpIHNjcm9sbExlZnQgPSBjdXJyZW50TGVmdCArIGVhc2VQcm9ncmVzcyAqIChuZXdMZWZ0IC0gY3VycmVudExlZnQpO1xuXG4gICAgICBpZiAoYW5pbWF0ZVRvcCAmJi
15BuZXdUb3AgPiBjdXJyZW50VG9wICYmIHNjcm9sbFRvcCA+PSBuZXdUb3ApIHtcbiAgICAgICAgZWwuc2Nyb2xsVG9wID0gbmV3VG9wO1xuICAgICAgICBkb25lID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFuaW1hdGVUb3AgJiYgbmV3VG9wIDwgY3VycmVudFRvcCAmJiBzY3JvbGxUb3AgPD0gbmV3VG9wKSB7XG4gICAgICAgIGVsLnNjcm9sbFRvcCA9IG5ld1RvcDtcbiAgICAgICAgZG9uZSA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChhbmltYXRlTGVmdCAmJiBuZXdMZWZ0ID4gY3VycmVudExlZnQgJiYgc2Nyb2xsTGVmdCA+PSBuZXdMZWZ0KSB7XG4gICAgICAgIGVsLnNjcm9sbExlZnQgPSBuZXdMZWZ0O1xuICAgICAgICBkb25lID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFuaW1hdGVMZWZ0ICYmIG5ld0xlZnQgPCBjdXJyZW50TGVmdCAmJiBzY3JvbGxMZWZ0IDw9IG5ld0xlZnQpIHtcbiAgICAgICAgZWwuc2Nyb2xsTGVmdCA9IG5ld0xlZnQ7XG4gICAgICAgIGRvbmUgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZG9uZSkge1xuICAgICAgICBpZiAoY2FsbGJhY2spIGNhbGxiYWNrKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKGFuaW1hdGVUb3ApIGVsLnNjcm9sbFRvcCA9IHNjcm9sbFRvcDtcbiAgICAgIGlmIChhbmltYXRlTGVmdCkgZWwuc2Nyb2xsTGVmdCA9IHNjcm9sbExlZnQ7XG4gICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKHJlbmRlcik7XG4gICAgfVxuXG4gICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShyZW5kZXIpO1xuICB9KTtcbn0gLy8gc2Nyb2xsVG9wKHRvcCwgZHVyYXRpb24sIGVhc2luZywgY2FsbGJhY2spIHtcblxuXG5mdW5jdGlvbiBzY3JvbGxUb3AoLi4uYXJncykge1xuICBsZXQgW3RvcCwgZHVyYXRpb24sIGVhc2luZywgY2FsbGJhY2tdID0gYXJncztcblxuICBpZiAoYXJncy5sZW5ndGggPT09IDMgJiYgdHlwZW9mIGVhc2luZyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIFt0b3AsIGR1cmF0aW9uLCBjYWxsYmFjaywgZWFzaW5nXSA9IGFyZ3M7XG4gIH1cblxuICBjb25zdCBkb20gPSB0aGlzO1xuXG4gIGlmICh0eXBlb2YgdG9wID09PSAndW5kZWZpbmVkJykge1xuICAgIGlmIChkb20ubGVuZ3RoID4gMCkgcmV0dXJuIGRvbVswXS5zY3JvbGxUb3A7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gZG9tLnNjcm9sbFRvKHVuZGVmaW5lZCwgdG9wLCBkdXJhdGlvbiwgZWFzaW5nLCBjYWxsYmFjayk7XG59XG5cbmZ1bmN0aW9uIHNjcm9sbExlZnQoLi4uYXJncykge1xuICBsZXQgW2xlZnQsIGR1cmF0aW9uLCBlYXNpbmcsIGNhbGxiYWNrXSA9IGFyZ3M7XG5cbiAgaWYgKGFyZ3MubGVuZ3RoID09PSAzICYmIHR5cGVvZiBlYXNpbmcgPT09ICdmdW5jdGlvbicpIHtcbiAgICBbbGVmdCwgZHVyYXRpb24sIGNhbGxiYWNrLCBlYXNpbmddID0gYXJncztcbiAgfVxuXG4gIGNvbnN0IGRvbSA9IHRoaXM7XG5cbiAgaWYgKHR5cGVvZiBsZWZ0ID09PSAndW5kZWZpbmVkJykge1xuICAgIGlmIChkb20ubGVuZ3RoID4gMCkgcmV0dXJuIGRvbVswXS5zY3JvbGxMZWZ0O1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIGRvbS5zY3JvbGxUbyhsZWZ0LCB1bmRlZmluZWQsIGR1cmF0aW9uLCBlYXNpbmcsIGNhbGxiYWNrKTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5cbmZ1bmN0aW9uIGFuaW1hdGUoaW5pdGlhbFByb3BzLCBpbml0aWFsUGFyYW1zKSB7XG4gIGNvbnN0IHdpbmRvdyA9IGdldFdpbmRvdygpO1xuICBjb25zdCBlbHMgPSB0aGlzO1xuICBjb25zdCBhID0ge1xuICAgIHByb3BzOiBPYmplY3QuYXNzaWduKHt9LCBpbml0aWFsUHJvcHMpLFxuICAgIHBhcmFtczogT2JqZWN0LmFzc2lnbih7XG4gICAgICBkdXJhdGlvbjogMzAwLFxuICAgICAgZWFzaW5nOiAnc3dpbmcnIC8vIG9yICdsaW5lYXInXG5cbiAgICAgIC8qIENhbGxiYWNrc1xuICAgICAgYmVnaW4oZWxlbWVudHMpXG4gICAgICBjb21wbGV0ZShlbGVtZW50cylcbiAgICAgIHByb2dyZXNzKGVsZW1lbnRzLCBjb21wbGV0ZSwgcmVtYWluaW5nLCBzdGFydCwgdHdlZW5WYWx1ZSlcbiAgICAgICovXG5cbiAgICB9LCBpbml0aWFsUGFyYW1zKSxcbiAgICBlbGVtZW50czogZWxzLFxuICAgIGFuaW1hdGluZzogZmFsc2UsXG4gICAgcXVlOiBbXSxcblxuICAgIGVhc2luZ1Byb2dyZXNzKGVhc2luZywgcHJvZ3Jlc3MpIHtcbiAgICAgIGlmIChlYXNpbmcgPT09ICdzd2luZycpIHtcbiAgICAgICAgcmV0dXJuIDAuNSAtIE1hdGguY29zKHByb2dyZXNzICogTWF0aC5QSSkgLyAyO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGVhc2luZyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gZWFzaW5nKHByb2dyZXNzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHByb2dyZXNzO1xuICAgIH0sXG5cbiAgICBzdG9wKCkge1xuICAgICAgaWYgKGEuZnJhbWVJZCkge1xuICAgICAgICB3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUoYS5mcmFtZUlkKTtcbiAgICAgIH1cblxuICAgICAgYS5hbmltYXRpbmcgPSBmYWxzZTtcbiAgICAgIGEuZWxlbWVudHMuZWFjaChlbCA9PiB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBlbDtcbiAgICAgICAgZGVsZXRlIGVsZW1lbnQuZG9tN0FuaW1hdGVJbnN0YW5jZTtcbiAgICAgIH0pO1xuICAgICAgYS5xdWUgPSBbXTtcbiAgICB9LFxuXG4gICAgZG9uZShjb21wbGV0ZSkge1xuICAgICAgYS5hbmltYXRpbmcgPSBmYWxzZTtcbiAgICAgIGEuZWxlbWVudHMuZWFjaChlbCA9PiB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBlbDtcbiAgICAgICAgZGVsZXRlIGVsZW1lbnQuZG9tN0FuaW1hdGVJbnN0YW5jZTtcbiAgICAgIH0pO1xuICAgICAgaWYgKGNvbXBsZXRlKSBjb21wbGV0ZShlbHMpO1xuXG4gICAgICBpZiAoYS5xdWUubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBxdWUgPSBhLnF1ZS5zaGlmdCgpO1xuICAgICAgICBhLmFuaW1hdGUocXVlWzBdLCBxdWVbMV0pO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBhbmltYXRlKHByb3BzLCBwYXJhbXMpIHtcbiAgICAgIGlmIChhLmFuaW1hdGluZykge1xuICAgICAgICBhLnF1ZS5wdXNoKFtwcm9wcywgcGFyYW1zXSk7XG4gICAgICAgI
15HJldHVybiBhO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBlbGVtZW50cyA9IFtdOyAvLyBEZWZpbmUgJiBDYWNoZSBJbml0aWFscyAmIFVuaXRzXG5cbiAgICAgIGEuZWxlbWVudHMuZWFjaCgoZWwsIGluZGV4KSA9PiB7XG4gICAgICAgIGxldCBpbml0aWFsRnVsbFZhbHVlO1xuICAgICAgICBsZXQgaW5pdGlhbFZhbHVlO1xuICAgICAgICBsZXQgdW5pdDtcbiAgICAgICAgbGV0IGZpbmFsVmFsdWU7XG4gICAgICAgIGxldCBmaW5hbEZ1bGxWYWx1ZTtcbiAgICAgICAgaWYgKCFlbC5kb203QW5pbWF0ZUluc3RhbmNlKSBhLmVsZW1lbnRzW2luZGV4XS5kb203QW5pbWF0ZUluc3RhbmNlID0gYTtcbiAgICAgICAgZWxlbWVudHNbaW5kZXhdID0ge1xuICAgICAgICAgIGNvbnRhaW5lcjogZWxcbiAgICAgICAgfTtcbiAgICAgICAgT2JqZWN0LmtleXMocHJvcHMpLmZvckVhY2gocHJvcCA9PiB7XG4gICAgICAgICAgaW5pdGlhbEZ1bGxWYWx1ZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKHByb3ApLnJlcGxhY2UoJywnLCAnLicpO1xuICAgICAgICAgIGluaXRpYWxWYWx1ZSA9IHBhcnNlRmxvYXQoaW5pdGlhbEZ1bGxWYWx1ZSk7XG4gICAgICAgICAgdW5pdCA9IGluaXRpYWxGdWxsVmFsdWUucmVwbGFjZShpbml0aWFsVmFsdWUsICcnKTtcbiAgICAgICAgICBmaW5hbFZhbHVlID0gcGFyc2VGbG9hdChwcm9wc1twcm9wXSk7XG4gICAgICAgICAgZmluYWxGdWxsVmFsdWUgPSBwcm9wc1twcm9wXSArIHVuaXQ7XG4gICAgICAgICAgZWxlbWVudHNbaW5kZXhdW3Byb3BdID0ge1xuICAgICAgICAgICAgaW5pdGlhbEZ1bGxWYWx1ZSxcbiAgICAgICAgICAgIGluaXRpYWxWYWx1ZSxcbiAgICAgICAgICAgIHVuaXQsXG4gICAgICAgICAgICBmaW5hbFZhbHVlLFxuICAgICAgICAgICAgZmluYWxGdWxsVmFsdWUsXG4gICAgICAgICAgICBjdXJyZW50VmFsdWU6IGluaXRpYWxWYWx1ZVxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICBsZXQgc3RhcnRUaW1lID0gbnVsbDtcbiAgICAgIGxldCB0aW1lO1xuICAgICAgbGV0IGVsZW1lbnRzRG9uZSA9IDA7XG4gICAgICBsZXQgcHJvcHNEb25lID0gMDtcbiAgICAgIGxldCBkb25lO1xuICAgICAgbGV0IGJlZ2FuID0gZmFsc2U7XG4gICAgICBhLmFuaW1hdGluZyA9IHRydWU7XG5cbiAgICAgIGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgICAgdGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICBsZXQgcHJvZ3Jlc3M7XG4gICAgICAgIGxldCBlYXNlUHJvZ3Jlc3M7IC8vIGxldCBlbDtcblxuICAgICAgICBpZiAoIWJlZ2FuKSB7XG4gICAgICAgICAgYmVnYW4gPSB0cnVlO1xuICAgICAgICAgIGlmIChwYXJhbXMuYmVnaW4pIHBhcmFtcy5iZWdpbihlbHMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0YXJ0VGltZSA9PT0gbnVsbCkge1xuICAgICAgICAgIHN0YXJ0VGltZSA9IHRpbWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGFyYW1zLnByb2dyZXNzKSB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgICAgICAgcGFyYW1zLnByb2dyZXNzKGVscywgTWF0aC5tYXgoTWF0aC5taW4oKHRpbWUgLSBzdGFydFRpbWUpIC8gcGFyYW1zLmR1cmF0aW9uLCAxKSwgMCksIHN0YXJ0VGltZSArIHBhcmFtcy5kdXJhdGlvbiAtIHRpbWUgPCAwID8gMCA6IHN0YXJ0VGltZSArIHBhcmFtcy5kdXJhdGlvbiAtIHRpbWUsIHN0YXJ0VGltZSk7XG4gICAgICAgIH1cblxuICAgICAgICBlbGVtZW50cy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgIGNvbnN0IGVsID0gZWxlbWVudDtcbiAgICAgICAgICBpZiAoZG9uZSB8fCBlbC5kb25lKSByZXR1cm47XG4gICAgICAgICAgT2JqZWN0LmtleXMocHJvcHMpLmZvckVhY2gocHJvcCA9PiB7XG4gICAgICAgICAgICBpZiAoZG9uZSB8fCBlbC5kb25lKSByZXR1cm47XG4gICAgICAgICAgICBwcm9ncmVzcyA9IE1hdGgubWF4KE1hdGgubWluKCh0aW1lIC0gc3RhcnRUaW1lKSAvIHBhcmFtcy5kdXJhdGlvbiwgMSksIDApO1xuICAgICAgICAgICAgZWFzZVByb2dyZXNzID0gYS5lYXNpbmdQcm9ncmVzcyhwYXJhbXMuZWFzaW5nLCBwcm9ncmVzcyk7XG4gICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgIGluaXRpYWxWYWx1ZSxcbiAgICAgICAgICAgICAgZmluYWxWYWx1ZSxcbiAgICAgICAgICAgICAgdW5pdFxuICAgICAgICAgICAgfSA9IGVsW3Byb3BdO1xuICAgICAgICAgICAgZWxbcHJvcF0uY3VycmVudFZhbHVlID0gaW5pdGlhbFZhbHVlICsgZWFzZVByb2dyZXNzICogKGZpbmFsVmFsdWUgLSBpbml0aWFsVmFsdWUpO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gZWxbcHJvcF0uY3VycmVudFZhbHVlO1xuXG4gICAgICAgICAgICBpZiAoZmluYWxWYWx1ZSA+IGluaXRpYWxWYWx1ZSAmJiBjdXJyZW50VmFsdWUgPj0gZmluYWxWYWx1ZSB8fCBmaW5hbFZhbHVlIDwgaW5pdGlhbFZhbHVlICYmIGN1cnJlbnRWYWx1ZSA8PSBmaW5hbFZhbHVlKSB7XG4gICAgICAgICAgICAgIGVsLmNvbnRhaW5lci5zdHlsZVtwcm9wXSA9IGZpbmFsVmFsdWUgKyB1bml0O1xuICAgICAgICAgICAgICBwcm9wc0RvbmUgKz0gMTtcblxuICAgICAgICAgICAgICBpZiAocHJvcHNEb25lID09PSBPYmplY3Qua2V5cyhwcm9wcykubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgZWwuZG9uZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgZWxlbWVudHNEb25lICs9IDE7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoZWxlbWVudHNEb25lID09PSBlbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBkb25lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZG9uZSkge1xuICAgICAgICAgICAgICBhLmRvbmUocGFyYW1zLmNvbXBsZXRlKTtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBlbC5jb250YWluZXIuc3R5bGVbcHJvcF0gPSBjdXJyZW50VmFsdWUgKyB1bml0O1xuICAgICAgICAgI
15H0pO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGRvbmUpIHJldHVybjsgLy8gVGhlbiBjYWxsXG5cbiAgICAgICAgYS5mcmFtZUlkID0gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShyZW5kZXIpO1xuICAgICAgfVxuXG4gICAgICBhLmZyYW1lSWQgPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKHJlbmRlcik7XG4gICAgICByZXR1cm4gYTtcbiAgICB9XG5cbiAgfTtcblxuICBpZiAoYS5lbGVtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gZWxzO1xuICB9XG5cbiAgbGV0IGFuaW1hdGVJbnN0YW5jZTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGEuZWxlbWVudHMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICBpZiAoYS5lbGVtZW50c1tpXS5kb203QW5pbWF0ZUluc3RhbmNlKSB7XG4gICAgICBhbmltYXRlSW5zdGFuY2UgPSBhLmVsZW1lbnRzW2ldLmRvbTdBbmltYXRlSW5zdGFuY2U7XG4gICAgfSBlbHNlIGEuZWxlbWVudHNbaV0uZG9tN0FuaW1hdGVJbnN0YW5jZSA9IGE7XG4gIH1cblxuICBpZiAoIWFuaW1hdGVJbnN0YW5jZSkge1xuICAgIGFuaW1hdGVJbnN0YW5jZSA9IGE7XG4gIH1cblxuICBpZiAoaW5pdGlhbFByb3BzID09PSAnc3RvcCcpIHtcbiAgICBhbmltYXRlSW5zdGFuY2Uuc3RvcCgpO1xuICB9IGVsc2Uge1xuICAgIGFuaW1hdGVJbnN0YW5jZS5hbmltYXRlKGEucHJvcHMsIGEucGFyYW1zKTtcbiAgfVxuXG4gIHJldHVybiBlbHM7XG59XG5cbmZ1bmN0aW9uIHN0b3AoKSB7XG4gIGNvbnN0IGVscyA9IHRoaXM7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbHMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICBpZiAoZWxzW2ldLmRvbTdBbmltYXRlSW5zdGFuY2UpIHtcbiAgICAgIGVsc1tpXS5kb203QW5pbWF0ZUluc3RhbmNlLnN0b3AoKTtcbiAgICB9XG4gIH1cbn1cblxuY29uc3Qgbm9UcmlnZ2VyID0gJ3Jlc2l6ZSBzY3JvbGwnLnNwbGl0KCcgJyk7XG5cbmZ1bmN0aW9uIHNob3J0Y3V0KG5hbWUpIHtcbiAgZnVuY3Rpb24gZXZlbnRIYW5kbGVyKC4uLmFyZ3MpIHtcbiAgICBpZiAodHlwZW9mIGFyZ3NbMF0gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgaWYgKG5vVHJpZ2dlci5pbmRleE9mKG5hbWUpIDwgMCkge1xuICAgICAgICAgIGlmIChuYW1lIGluIHRoaXNbaV0pIHRoaXNbaV1bbmFtZV0oKTtlbHNlIHtcbiAgICAgICAgICAgICQodGhpc1tpXSkudHJpZ2dlcihuYW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMub24obmFtZSwgLi4uYXJncyk7XG4gIH1cblxuICByZXR1cm4gZXZlbnRIYW5kbGVyO1xufVxuXG5jb25zdCBjbGljayA9IHNob3J0Y3V0KCdjbGljaycpO1xuY29uc3QgYmx1ciA9IHNob3J0Y3V0KCdibHVyJyk7XG5jb25zdCBmb2N1cyA9IHNob3J0Y3V0KCdmb2N1cycpO1xuY29uc3QgZm9jdXNpbiA9IHNob3J0Y3V0KCdmb2N1c2luJyk7XG5jb25zdCBmb2N1c291dCA9IHNob3J0Y3V0KCdmb2N1c291dCcpO1xuY29uc3Qga2V5dXAgPSBzaG9ydGN1dCgna2V5dXAnKTtcbmNvbnN0IGtleWRvd24gPSBzaG9ydGN1dCgna2V5ZG93bicpO1xuY29uc3Qga2V5cHJlc3MgPSBzaG9ydGN1dCgna2V5cHJlc3MnKTtcbmNvbnN0IHN1Ym1pdCA9IHNob3J0Y3V0KCdzdWJtaXQnKTtcbmNvbnN0IGNoYW5nZSA9IHNob3J0Y3V0KCdjaGFuZ2UnKTtcbmNvbnN0IG1vdXNlZG93biA9IHNob3J0Y3V0KCdtb3VzZWRvd24nKTtcbmNvbnN0IG1vdXNlbW92ZSA9IHNob3J0Y3V0KCdtb3VzZW1vdmUnKTtcbmNvbnN0IG1vdXNldXAgPSBzaG9ydGN1dCgnbW91c2V1cCcpO1xuY29uc3QgbW91c2VlbnRlciA9IHNob3J0Y3V0KCdtb3VzZWVudGVyJyk7XG5jb25zdCBtb3VzZWxlYXZlID0gc2hvcnRjdXQoJ21vdXNlbGVhdmUnKTtcbmNvbnN0IG1vdXNlb3V0ID0gc2hvcnRjdXQoJ21vdXNlb3V0Jyk7XG5jb25zdCBtb3VzZW92ZXIgPSBzaG9ydGN1dCgnbW91c2VvdmVyJyk7XG5jb25zdCB0b3VjaHN0YXJ0ID0gc2hvcnRjdXQoJ3RvdWNoc3RhcnQnKTtcbmNvbnN0IHRvdWNoZW5kID0gc2hvcnRjdXQoJ3RvdWNoZW5kJyk7XG5jb25zdCB0b3VjaG1vdmUgPSBzaG9ydGN1dCgndG91Y2htb3ZlJyk7XG5jb25zdCByZXNpemUgPSBzaG9ydGN1dCgncmVzaXplJyk7XG5jb25zdCBzY3JvbGwgPSBzaG9ydGN1dCgnc2Nyb2xsJyk7XG5cbmV4cG9ydCBkZWZhdWx0ICQ7XG5leHBvcnQgeyAkLCBhZGQsIGFkZENsYXNzLCBhbmltYXRlLCBhbmltYXRpb25FbmQsIGFwcGVuZCwgYXBwZW5kVG8sIGF0dHIsIGJsdXIsIGNoYW5nZSwgY2hpbGRyZW4sIGNsaWNrLCBjbG9zZXN0LCBjc3MsIGRhdGEsIGRhdGFzZXQsIGRldGFjaCwgZWFjaCwgZW1wdHksIGVxLCBmaWx0ZXIsIGZpbmQsIGZvY3VzLCBmb2N1c2luLCBmb2N1c291dCwgaGFzQ2xhc3MsIGhlaWdodCwgaGlkZSwgaHRtbCwgaW5kZXgsIGluc2VydEFmdGVyLCBpbnNlcnRCZWZvcmUsIGlzLCBrZXlkb3duLCBrZXlwcmVzcywga2V5dXAsIG1vdXNlZG93biwgbW91c2VlbnRlciwgbW91c2VsZWF2ZSwgbW91c2Vtb3ZlLCBtb3VzZW91dCwgbW91c2VvdmVyLCBtb3VzZXVwLCBuZXh0LCBuZXh0QWxsLCBvZmYsIG9mZnNldCwgb24sIG9uY2UsIG91dGVySGVpZ2h0LCBvdXRlcldpZHRoLCBwYXJlbnQsIHBhcmVudHMsIHByZXBlbmQsIHByZXBlbmRUbywgcHJldiwgcHJldkFsbCwgcHJvcCwgcmVtb3ZlLCByZW1vdmVBdHRyLCByZW1vdmVDbGFzcywgcmVtb3ZlRGF0YSwgcmVzaXplLCBzY3JvbGwsIHNjcm9sbExlZnQsIHNjcm9sbFRvLCBzY3JvbGxUb3AsIHNob3csIHNpYmxpbmdzLCBzdG9wLCBzdHlsZXMsIHN1Ym1pdCwgdGV4dCwgdG9nZ2xlQ2xhc3MsIHRvdWNoZW5kLCB0b3VjaG1vdmUsIHRvdWNoc3RhcnQsIHRyYW5zZm9ybSwgdHJhbnNpdGlvbiwgdHJhbnNpdGlvbkVuZCwgdHJhbnNpdGlvblN0YXJ0LCB0cmlnZ2VyLCB2YWwsIHZhbHVlLCB3aWR0aCB9O1xuIiwiaW1wb3J0IHsgJCwgYWRkQ2xhc3MsIHJlbW92ZUNsYXNzLCBoYXNDbGFzcywgdG9nZ2xlQ2xhc3MsIGF0dHIsIHJlbW92ZUF0dHIsIHRyYW5zZm9ybSwgdHJhbnNpdGlvbiwgb24sIG9mZiwgdHJpZ2dlciwgdHJhbnNpdGlvbkVuZCwgb3V0ZXJXaWR0aCwgb3V0ZXJIZWlnaHQsIHN0eWxlcywgb2Zmc2V0LCBjc3MsIGVhY2gsIGh0bWwsIHRleHQsIGlzLCBpbmRleCwgZXEsIGFwcGVuZCwgcHJlcGVuZCwgbmV4dCwgbmV4dEFsbCwgcHJldiwgcHJldkFsbCwgcGFyZW50LCBwYXJlbnRzLCBjbG9zZXN0LCBmaW5kLCBjaGlsZHJlbiwgZmlsdGVyLCByZW1vdmUgfSBmcm9tICdkb203JztcbmNvbnN0IE1ldGhvZHMgPSB7XG4gIGFkZENsYXNzLFxuICByZW1vdmVDbGFzcyxcbiAgaGFzQ2xhc3MsXG4gIHRvZ2dsZUNsYXNzLFxuICBhdHRyLFxuICByZW1vdmVBdHRyLFxuICB0cmFuc2Zvcm0sXG4gIHRyYW5zaXRpb24sXG4gIG9uLFxuICBvZmYsXG4gIHRyaWdnZXIsXG4gIHRyYW5zaXRpb25FbmQsXG4gIG91dGVyV2lkdGgsXG4gIG91dGVySGVpZ2h0LFxuICBzdHlsZXMsXG4gIG9mZnNldCxcbiAgY3NzLFxuICBlYWNoLFxuICBodG1sLFxuICB0ZXh0LFxuICBpcyxcbiAgaW5kZXgsXG4gIGVxLFxuICBhcHBlbmQsXG4gIHByZXBlbmQsXG4gIG5leHQsXG4gIG5leHRBbGwsXG4gIHByZXYsXG4gIHByZXZBbGwsXG4gIHBhcmVudCxcbiAgcGFyZW50cyxcbiAgY2xvc2VzdCxcbiAgZmluZCxcbiAgY2hpbGRyZW4sXG4gIGZpbHRlcixcbiAgcmVtb3ZlXG59O1xuT2JqZWN0LmtleXMoTWV0aG9kcykuZm9yRWFjaChtZXRob2ROYW1lID0+IHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KCQuZm4sIG1ldGhvZE5hbWUsIHtcbiAgICB2YWx1ZTogTWV0aG9kc1ttZXRob2ROYW1lXSxcbiAgICB3cml0YWJsZTogdHJ1ZVxuICB9KTtcbn0pO1xuZXhwb3J0IGRlZmF1bHQgJDsiLCJpbXBvcnQgeyBnZXRXaW5kb3cgfSBmcm9tICdzc3Itd2luZG93JztcblxuZnVuY3Rpb24gZGVsZXRlUHJvcHMob2JqKSB7XG4gIGNvbnN0IG9iamVjdCA9IG9iajtcbiAgT2JqZWN0LmtleXMob2JqZWN0KS5mb3JFYWNoKGtleSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIG9iamVjdFtrZXldID0gbnVsbDtcbiAgICB9IGNhdGNoIChlKSB7Ly8gbm8gZ2V0dGVyIGZvciBvYmplY3RcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgZGVsZXRlIG9iamVjdFtrZXldO1xuICAgIH0gY2F0Y2ggKGUpIHsvLyBzb21ldGhpbmcgZ290IHdyb25nXG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gbmV4dFRpY2soY2FsbGJhY2ssIGRlbGF5ID0gMCkge1xuICByZXR1cm4gc2V0VGltZW91dChjYWxsYmFjaywgZGVsYXkpO1xufVxuXG5mdW5jdGlvbiBub3coKSB7XG4gIHJldHVybi
15BEYXRlLm5vdygpO1xufVxuXG5mdW5jdGlvbiBnZXRDb21wdXRlZFN0eWxlKGVsKSB7XG4gIGNvbnN0IHdpbmRvdyA9IGdldFdpbmRvdygpO1xuICBsZXQgc3R5bGU7XG5cbiAgaWYgKHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKSB7XG4gICAgc3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCk7XG4gIH1cblxuICBpZiAoIXN0eWxlICYmIGVsLmN1cnJlbnRTdHlsZSkge1xuICAgIHN0eWxlID0gZWwuY3VycmVudFN0eWxlO1xuICB9XG5cbiAgaWYgKCFzdHlsZSkge1xuICAgIHN0eWxlID0gZWwuc3R5bGU7XG4gIH1cblxuICByZXR1cm4gc3R5bGU7XG59XG5cbmZ1bmN0aW9uIGdldFRyYW5zbGF0ZShlbCwgYXhpcyA9ICd4Jykge1xuICBjb25zdCB3aW5kb3cgPSBnZXRXaW5kb3coKTtcbiAgbGV0IG1hdHJpeDtcbiAgbGV0IGN1clRyYW5zZm9ybTtcbiAgbGV0IHRyYW5zZm9ybU1hdHJpeDtcbiAgY29uc3QgY3VyU3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKTtcblxuICBpZiAod2luZG93LldlYktpdENTU01hdHJpeCkge1xuICAgIGN1clRyYW5zZm9ybSA9IGN1clN0eWxlLnRyYW5zZm9ybSB8fCBjdXJTdHlsZS53ZWJraXRUcmFuc2Zvcm07XG5cbiAgICBpZiAoY3VyVHJhbnNmb3JtLnNwbGl0KCcsJykubGVuZ3RoID4gNikge1xuICAgICAgY3VyVHJhbnNmb3JtID0gY3VyVHJhbnNmb3JtLnNwbGl0KCcsICcpLm1hcChhID0+IGEucmVwbGFjZSgnLCcsICcuJykpLmpvaW4oJywgJyk7XG4gICAgfSAvLyBTb21lIG9sZCB2ZXJzaW9ucyBvZiBXZWJraXQgY2hva2Ugd2hlbiAnbm9uZScgaXMgcGFzc2VkOyBwYXNzXG4gICAgLy8gZW1wdHkgc3RyaW5nIGluc3RlYWQgaW4gdGhpcyBjYXNlXG5cblxuICAgIHRyYW5zZm9ybU1hdHJpeCA9IG5ldyB3aW5kb3cuV2ViS2l0Q1NTTWF0cml4KGN1clRyYW5zZm9ybSA9PT0gJ25vbmUnID8gJycgOiBjdXJUcmFuc2Zvcm0pO1xuICB9IGVsc2Uge1xuICAgIHRyYW5zZm9ybU1hdHJpeCA9IGN1clN0eWxlLk1velRyYW5zZm9ybSB8fCBjdXJTdHlsZS5PVHJhbnNmb3JtIHx8IGN1clN0eWxlLk1zVHJhbnNmb3JtIHx8IGN1clN0eWxlLm1zVHJhbnNmb3JtIHx8IGN1clN0eWxlLnRyYW5zZm9ybSB8fCBjdXJTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCd0cmFuc2Zvcm0nKS5yZXBsYWNlKCd0cmFuc2xhdGUoJywgJ21hdHJpeCgxLCAwLCAwLCAxLCcpO1xuICAgIG1hdHJpeCA9IHRyYW5zZm9ybU1hdHJpeC50b1N0cmluZygpLnNwbGl0KCcsJyk7XG4gIH1cblxuICBpZiAoYXhpcyA9PT0gJ3gnKSB7XG4gICAgLy8gTGF0ZXN0IENocm9tZSBhbmQgd2Via2l0cyBGaXhcbiAgICBpZiAod2luZG93LldlYktpdENTU01hdHJpeCkgY3VyVHJhbnNmb3JtID0gdHJhbnNmb3JtTWF0cml4Lm00MTsgLy8gQ3JhenkgSUUxMCBNYXRyaXhcbiAgICBlbHNlIGlmIChtYXRyaXgubGVuZ3RoID09PSAxNikgY3VyVHJhbnNmb3JtID0gcGFyc2VGbG9hdChtYXRyaXhbMTJdKTsgLy8gTm9ybWFsIEJyb3dzZXJzXG4gICAgZWxzZSBjdXJUcmFuc2Zvcm0gPSBwYXJzZUZsb2F0KG1hdHJpeFs0XSk7XG4gIH1cblxuICBpZiAoYXhpcyA9PT0gJ3knKSB7XG4gICAgLy8gTGF0ZXN0IENocm9tZSBhbmQgd2Via2l0cyBGaXhcbiAgICBpZiAod2luZG93LldlYktpdENTU01hdHJpeCkgY3VyVHJhbnNmb3JtID0gdHJhbnNmb3JtTWF0cml4Lm00MjsgLy8gQ3JhenkgSUUxMCBNYXRyaXhcbiAgICBlbHNlIGlmIChtYXRyaXgubGVuZ3RoID09PSAxNikgY3VyVHJhbnNmb3JtID0gcGFyc2VGbG9hdChtYXRyaXhbMTNdKTsgLy8gTm9ybWFsIEJyb3dzZXJzXG4gICAgZWxzZSBjdXJUcmFuc2Zvcm0gPSBwYXJzZUZsb2F0KG1hdHJpeFs1XSk7XG4gIH1cblxuICByZXR1cm4gY3VyVHJhbnNmb3JtIHx8IDA7XG59XG5cbmZ1bmN0aW9uIGlzT2JqZWN0KG8pIHtcbiAgcmV0dXJuIHR5cGVvZiBvID09PSAnb2JqZWN0JyAmJiBvICE9PSBudWxsICYmIG8uY29uc3RydWN0b3IgJiYgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKSA9PT0gJ09iamVjdCc7XG59XG5cbmZ1bmN0aW9uIGlzTm9kZShub2RlKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHdpbmRvdy5IVE1MRWxlbWVudCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50O1xuICB9XG5cbiAgcmV0dXJuIG5vZGUgJiYgKG5vZGUubm9kZVR5cGUgPT09IDEgfHwgbm9kZS5ub2RlVHlwZSA9PT0gMTEpO1xufVxuXG5mdW5jdGlvbiBleHRlbmQoLi4uYXJncykge1xuICBjb25zdCB0byA9IE9iamVjdChhcmdzWzBdKTtcbiAgY29uc3Qgbm9FeHRlbmQgPSBbJ19fcHJvdG9fXycsICdjb25zdHJ1Y3RvcicsICdwcm90b3R5cGUnXTtcblxuICBmb3IgKGxldCBpID0gMTsgaSA8IGFyZ3MubGVuZ3RoOyBpICs9IDEpIHtcbiAgICBjb25zdCBuZXh0U291cmNlID0gYXJnc1tpXTtcblxuICAgIGlmIChuZXh0U291cmNlICE9PSB1bmRlZmluZWQgJiYgbmV4dFNvdXJjZSAhPT0gbnVsbCAmJiAhaXNOb2RlKG5leHRTb3VyY2UpKSB7XG4gICAgICBjb25zdCBrZXlzQXJyYXkgPSBPYmplY3Qua2V5cyhPYmplY3QobmV4dFNvdXJjZSkpLmZpbHRlcihrZXkgPT4gbm9FeHRlbmQuaW5kZXhPZihrZXkpIDwgMCk7XG5cbiAgICAgIGZvciAobGV0IG5leHRJbmRleCA9IDAsIGxlbiA9IGtleXNBcnJheS5sZW5ndGg7IG5leHRJbmRleCA8IGxlbjsgbmV4dEluZGV4ICs9IDEpIHtcbiAgICAgICAgY29uc3QgbmV4dEtleSA9IGtleXNBcnJheVtuZXh0SW5kZXhdO1xuICAgICAgICBjb25zdCBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuZXh0U291cmNlLCBuZXh0S2V5KTtcblxuICAgICAgICBpZiAoZGVzYyAhPT0gdW5kZWZpbmVkICYmIGRlc2MuZW51bWVyYWJsZSkge1xuICAgICAgICAgIGlmIChpc09iamVjdCh0b1tuZXh0S2V5XSkgJiYgaXNPYmplY3QobmV4dFNvdXJjZVtuZXh0S2V5XSkpIHtcbiAgICAgICAgICAgIGlmIChuZXh0U291cmNlW25leHRLZXldLl9fc3dpcGVyX18pIHtcbiAgICAgICAgICAgICAgdG9bbmV4dEtleV0gPSBuZXh0U291cmNlW25leHRLZXldO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZXh0ZW5kKHRvW25leHRLZXldLCBuZXh0U291cmNlW25leHRLZXldKTtcbiAgICAgICAgICAgI
15H1cbiAgICAgICAgICB9IGVsc2UgaWYgKCFpc09iamVjdCh0b1tuZXh0S2V5XSkgJiYgaXNPYmplY3QobmV4dFNvdXJjZVtuZXh0S2V5XSkpIHtcbiAgICAgICAgICAgIHRvW25leHRLZXldID0ge307XG5cbiAgICAgICAgICAgIGlmIChuZXh0U291cmNlW25leHRLZXldLl9fc3dpcGVyX18pIHtcbiAgICAgICAgICAgICAgdG9bbmV4dEtleV0gPSBuZXh0U291cmNlW25leHRLZXldO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZXh0ZW5kKHRvW25leHRLZXldLCBuZXh0U291cmNlW25leHRLZXldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdG9bbmV4dEtleV0gPSBuZXh0U291cmNlW25leHRLZXldO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0bztcbn1cblxuZnVuY3Rpb24gc2V0Q1NTUHJvcGVydHkoZWwsIHZhck5hbWUsIHZhclZhbHVlKSB7XG4gIGVsLnN0eWxlLnNldFByb3BlcnR5KHZhck5hbWUsIHZhclZhbHVlKTtcbn1cblxuZnVuY3Rpb24gYW5pbWF0ZUNTU01vZGVTY3JvbGwoe1xuICBzd2lwZXIsXG4gIHRhcmdldFBvc2l0aW9uLFxuICBzaWRlXG59KSB7XG4gIGNvbnN0IHdpbmRvdyA9IGdldFdpbmRvdygpO1xuICBjb25zdCBzdGFydFBvc2l0aW9uID0gLXN3aXBlci50cmFuc2xhdGU7XG4gIGxldCBzdGFydFRpbWUgPSBudWxsO1xuICBsZXQgdGltZTtcbiAgY29uc3QgZHVyYXRpb24gPSBzd2lwZXIucGFyYW1zLnNwZWVkO1xuICBzd2lwZXIud3JhcHBlckVsLnN0eWxlLnNjcm9sbFNuYXBUeXBlID0gJ25vbmUnO1xuICB3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUoc3dpcGVyLmNzc01vZGVGcmFtZUlEKTtcbiAgY29uc3QgZGlyID0gdGFyZ2V0UG9zaXRpb24gPiBzdGFydFBvc2l0aW9uID8gJ25leHQnIDogJ3ByZXYnO1xuXG4gIGNvbnN0IGlzT3V0T2ZCb3VuZCA9IChjdXJyZW50LCB0YXJnZXQpID0+IHtcbiAgICByZXR1cm4gZGlyID09PSAnbmV4dCcgJiYgY3VycmVudCA+PSB0YXJnZXQgfHwgZGlyID09PSAncHJldicgJiYgY3VycmVudCA8PSB0YXJnZXQ7XG4gIH07XG5cbiAgY29uc3QgYW5pbWF0ZSA9ICgpID0+IHtcbiAgICB0aW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG5cbiAgICBpZiAoc3RhcnRUaW1lID09PSBudWxsKSB7XG4gICAgICBzdGFydFRpbWUgPSB0aW1lO1xuICAgIH1cblxuICAgIGNvbnN0IHByb2dyZXNzID0gTWF0aC5tYXgoTWF0aC5taW4oKHRpbWUgLSBzdGFydFRpbWUpIC8gZHVyYXRpb24sIDEpLCAwKTtcbiAgICBjb25zdCBlYXNlUHJvZ3Jlc3MgPSAwLjUgLSBNYXRoLmNvcyhwcm9ncmVzcyAqIE1hdGguUEkpIC8gMjtcbiAgICBsZXQgY3VycmVudFBvc2l0aW9uID0gc3RhcnRQb3NpdGlvbiArIGVhc2VQcm9ncmVzcyAqICh0YXJnZXRQb3NpdGlvbiAtIHN0YXJ0UG9zaXRpb24pO1xuXG4gICAgaWYgKGlzT3V0T2ZCb3VuZChjdXJyZW50UG9zaXRpb24sIHRhcmdldFBvc2l0aW9uKSkge1xuICAgICAgY3VycmVudFBvc2l0aW9uID0gdGFyZ2V0UG9zaXRpb247XG4gICAgfVxuXG4gICAgc3dpcGVyLndyYXBwZXJFbC5zY3JvbGxUbyh7XG4gICAgICBbc2lkZV06IGN1cnJlbnRQb3NpdGlvblxuICAgIH0pO1xuXG4gICAgaWYgKGlzT3V0T2ZCb3VuZChjdXJyZW50UG9zaXRpb24sIHRhcmdldFBvc2l0aW9uKSkge1xuICAgICAgc3dpcGVyLndyYXBwZXJFbC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuICAgICAgc3dpcGVyLndyYXBwZXJFbC5zdHlsZS5zY3JvbGxTbmFwVHlwZSA9ICcnO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHN3aXBlci53cmFwcGVyRWwuc3R5bGUub3ZlcmZsb3cgPSAnJztcbiAgICAgICAgc3dpcGVyLndyYXBwZXJFbC5zY3JvbGxUbyh7XG4gICAgICAgICAgW3NpZGVdOiBjdXJyZW50UG9zaXRpb25cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZShzd2lwZXIuY3NzTW9kZUZyYW1lSUQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHN3aXBlci5jc3NNb2RlRnJhbWVJRCA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0ZSk7XG4gIH07XG5cbiAgYW5pbWF0ZSgpO1xufVxuXG5leHBvcnQgeyBhbmltYXRlQ1NTTW9kZVNjcm9sbCwgZGVsZXRlUHJvcHMsIG5leHRUaWNrLCBub3csIGdldFRyYW5zbGF0ZSwgaXNPYmplY3QsIGV4dGVuZCwgZ2V0Q29tcHV0ZWRTdHlsZSwgc2V0Q1NTUHJvcGVydHkgfTsiLCJpbXBvcnQgeyBnZXRXaW5kb3csIGdldERvY3VtZW50IH0gZnJvbSAnc3NyLXdpbmRvdyc7XG5sZXQgc3VwcG9ydDtcblxuZnVuY3Rpb24gY2FsY1N1cHBvcnQoKSB7XG4gIGNvbnN0IHdpbmRvdyA9IGdldFdpbmRvdygpO1xuICBjb25zdCBkb2N1bWVudCA9IGdldERvY3VtZW50KCk7XG4gIHJldHVybiB7XG4gICAgc21vb3RoU2Nyb2xsOiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgJiYgJ3Njcm9sbEJlaGF2aW9yJyBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUsXG4gICAgdG91Y2g6ICEhKCdvbnRvdWNoc3RhcnQnIGluIHdpbmRvdyB8fCB3aW5kb3cuRG9jdW1lbnRUb3VjaCAmJiBkb2N1bWVudCBpbnN0YW5jZW9mIHdpbmRvdy5Eb2N1bWVudFRvdWNoKSxcbiAgICBwYXNzaXZlTGlzdGVuZXI6IGZ1bmN0aW9uIGNoZWNrUGFzc2l2ZUxpc3RlbmVyKCkge1xuICAgICAgbGV0IHN1cHBvcnRzUGFzc2l2ZSA9IGZhbHNlO1xuXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBvcHRzID0gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAncGFzc2l2ZScsIHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgICAgICBnZXQoKSB7XG4gICAgICAgICAgICBzdXBwb3J0c1Bhc3NpdmUgPSB0cnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICB9KTtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Rlc3RQYXNzaXZlTGlzdGVuZXInLCBudWxsLCBvcHRzKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHsvLyBObyBzdXBwb3J0XG4gICAgICB9XG5cbiAgICAgIHJldHVybi
15BzdXBwb3J0c1Bhc3NpdmU7XG4gICAgfSgpLFxuICAgIGdlc3R1cmVzOiBmdW5jdGlvbiBjaGVja0dlc3R1cmVzKCkge1xuICAgICAgcmV0dXJuICdvbmdlc3R1cmVzdGFydCcgaW4gd2luZG93O1xuICAgIH0oKVxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRTdXBwb3J0KCkge1xuICBpZiAoIXN1cHBvcnQpIHtcbiAgICBzdXBwb3J0ID0gY2FsY1N1cHBvcnQoKTtcbiAgfVxuXG4gIHJldHVybiBzdXBwb3J0O1xufVxuXG5leHBvcnQgeyBnZXRTdXBwb3J0IH07IiwiaW1wb3J0IHsgZ2V0V2luZG93IH0gZnJvbSAnc3NyLXdpbmRvdyc7XG5pbXBvcnQgeyBnZXRTdXBwb3J0IH0gZnJvbSAnLi9nZXQtc3VwcG9ydC5qcyc7XG5sZXQgZGV2aWNlQ2FjaGVkO1xuXG5mdW5jdGlvbiBjYWxjRGV2aWNlKHtcbiAgdXNlckFnZW50XG59ID0ge30pIHtcbiAgY29uc3Qgc3VwcG9ydCA9IGdldFN1cHBvcnQoKTtcbiAgY29uc3Qgd2luZG93ID0gZ2V0V2luZG93KCk7XG4gIGNvbnN0IHBsYXRmb3JtID0gd2luZG93Lm5hdmlnYXRvci5wbGF0Zm9ybTtcbiAgY29uc3QgdWEgPSB1c2VyQWdlbnQgfHwgd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQ7XG4gIGNvbnN0IGRldmljZSA9IHtcbiAgICBpb3M6IGZhbHNlLFxuICAgIGFuZHJvaWQ6IGZhbHNlXG4gIH07XG4gIGNvbnN0IHNjcmVlbldpZHRoID0gd2luZG93LnNjcmVlbi53aWR0aDtcbiAgY29uc3Qgc2NyZWVuSGVpZ2h0ID0gd2luZG93LnNjcmVlbi5oZWlnaHQ7XG4gIGNvbnN0IGFuZHJvaWQgPSB1YS5tYXRjaCgvKEFuZHJvaWQpOz9bXFxzXFwvXSsoW1xcZC5dKyk/Lyk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcblxuICBsZXQgaXBhZCA9IHVhLm1hdGNoKC8oaVBhZCkuKk9TXFxzKFtcXGRfXSspLyk7XG4gIGNvbnN0IGlwb2QgPSB1YS5tYXRjaCgvKGlQb2QpKC4qT1NcXHMoW1xcZF9dKykpPy8pO1xuICBjb25zdCBpcGhvbmUgPSAhaXBhZCAmJiB1YS5tYXRjaCgvKGlQaG9uZVxcc09TfGlPUylcXHMoW1xcZF9dKykvKTtcbiAgY29uc3Qgd2luZG93cyA9IHBsYXRmb3JtID09PSAnV2luMzInO1xuICBsZXQgbWFjb3MgPSBwbGF0Zm9ybSA9PT0gJ01hY0ludGVsJzsgLy8gaVBhZE9zIDEzIGZpeFxuXG4gIGNvbnN0IGlQYWRTY3JlZW5zID0gWycxMDI0eDEzNjYnLCAnMTM2NngxMDI0JywgJzgzNHgxMTk0JywgJzExOTR4ODM0JywgJzgzNHgxMTEyJywgJzExMTJ4ODM0JywgJzc2OHgxMDI0JywgJzEwMjR4NzY4JywgJzgyMHgxMTgwJywgJzExODB4ODIwJywgJzgxMHgxMDgwJywgJzEwODB4ODEwJ107XG5cbiAgaWYgKCFpcGFkICYmIG1hY29zICYmIHN1cHBvcnQudG91Y2ggJiYgaVBhZFNjcmVlbnMuaW5kZXhPZihgJHtzY3JlZW5XaWR0aH14JHtzY3JlZW5IZWlnaHR9YCkgPj0gMCkge1xuICAgIGlwYWQgPSB1YS5tYXRjaCgvKFZlcnNpb24pXFwvKFtcXGQuXSspLyk7XG4gICAgaWYgKCFpcGFkKSBpcGFkID0gWzAsIDEsICcxM18wXzAnXTtcbiAgICBtYWNvcyA9IGZhbHNlO1xuICB9IC8vIEFuZHJvaWRcblxuXG4gIGlmIChhbmRyb2lkICYmICF3aW5kb3dzKSB7XG4gICAgZGV2aWNlLm9zID0gJ2FuZHJvaWQnO1xuICAgIGRldmljZS5hbmRyb2lkID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChpcGFkIHx8IGlwaG9uZSB8fCBpcG9kKSB7XG4gICAgZGV2aWNlLm9zID0gJ2lvcyc7XG4gICAgZGV2aWNlLmlvcyA9IHRydWU7XG4gIH0gLy8gRXhwb3J0IG9iamVjdFxuXG5cbiAgcmV0dXJuIGRldmljZTtcbn1cblxuZnVuY3Rpb24gZ2V0RGV2aWNlKG92ZXJyaWRlcyA9IHt9KSB7XG4gIGlmICghZGV2aWNlQ2FjaGVkKSB7XG4gICAgZGV2aWNlQ2FjaGVkID0gY2FsY0RldmljZShvdmVycmlkZXMpO1xuICB9XG5cbiAgcmV0dXJuIGRldmljZUNhY2hlZDtcbn1cblxuZXhwb3J0IHsgZ2V0RGV2aWNlIH07IiwiaW1wb3J0IHsgZ2V0V2luZG93IH0gZnJvbSAnc3NyLXdpbmRvdyc7XG5sZXQgYnJvd3NlcjtcblxuZnVuY3Rpb24gY2FsY0Jyb3dzZXIoKSB7XG4gIGNvbnN0IHdpbmRvdyA9IGdldFdpbmRvdygpO1xuXG4gIGZ1bmN0aW9uIGlzU2FmYXJpKCkge1xuICAgIGNvbnN0IHVhID0gd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gdWEuaW5kZXhPZignc2FmYXJpJykgPj0gMCAmJiB1YS5pbmRleE9mKCdjaHJvbWUnKSA8IDAgJiYgdWEuaW5kZXhPZignYW5kcm9pZCcpIDwgMDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgaXNTYWZhcmk6IGlzU2FmYXJpKCksXG4gICAgaXNXZWJWaWV3OiAvKGlQaG9uZXxpUG9kfGlQYWQpLipBcHBsZVdlYktpdCg/IS4qU2FmYXJpKS9pLnRlc3Qod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQpXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldEJyb3dzZXIoKSB7XG4gIGlmICghYnJvd3Nlcikge1xuICAgIGJyb3dzZXIgPSBjYWxjQnJvd3NlcigpO1xuICB9XG5cbiAgcmV0dXJuIGJyb3dzZXI7XG59XG5cbmV4cG9ydCB7IGdldEJyb3dzZXIgfTsiLCIvKiBlc2xpbnQtZGlzYWJsZSBuby11bmRlcnNjb3JlLWRhbmdsZSAqL1xuZXhwb3J0IGRlZmF1bHQge1xuICBvbihldmVudHMsIGhhbmRsZXIsIHByaW9yaXR5KSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgaWYgKCFzZWxmLmV2ZW50c0xpc3RlbmVycyB8fCBzZWxmLmRlc3Ryb3llZCkgcmV0dXJuIHNlbGY7XG4gICAgaWYgKHR5cGVvZiBoYW5kbGVyICE9PSAnZnVuY3Rpb24nKSByZXR1cm4gc2VsZjtcbiAgICBjb25zdCBtZXRob2QgPSBwcmlvcml0eSA/ICd1bnNoaWZ0JyA6ICdwdXNoJztcbiAgICBldmVudHMuc3BsaXQoJyAnKS5mb3JFYWNoKGV2ZW50ID0+IHtcbiAgICAgIGlmICghc2VsZi5ldmVudHNMaXN0ZW5lcnNbZXZlbnRdKSBzZWxmLmV2ZW50c0xpc3RlbmVyc1tldmVudF0gPSBbXTtcbiAgICAgIHNlbGYuZXZlbnRzTGlzdGVuZXJzW2V2ZW50XVttZXRob2RdKGhhbmRsZXIpO1xuICAgIH0pO1xuICAgIHJldHVybiBzZWxmO1xuICB9LFxuXG4gIG9uY2UoZXZlbnRzLCBoYW5kbGVyLCBwcmlvcml0eSkge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIGlmICghc2VsZi5ldmVudHNMaXN0ZW5lcnMgfHwgc2VsZi5kZXN0cm95ZWQpIHJldHVybi
15BzZWxmO1xuICAgIGlmICh0eXBlb2YgaGFuZGxlciAhPT0gJ2Z1bmN0aW9uJykgcmV0dXJuIHNlbGY7XG5cbiAgICBmdW5jdGlvbiBvbmNlSGFuZGxlciguLi5hcmdzKSB7XG4gICAgICBzZWxmLm9mZihldmVudHMsIG9uY2VIYW5kbGVyKTtcblxuICAgICAgaWYgKG9uY2VIYW5kbGVyLl9fZW1pdHRlclByb3h5KSB7XG4gICAgICAgIGRlbGV0ZSBvbmNlSGFuZGxlci5fX2VtaXR0ZXJQcm94eTtcbiAgICAgIH1cblxuICAgICAgaGFuZGxlci5hcHBseShzZWxmLCBhcmdzKTtcbiAgICB9XG5cbiAgICBvbmNlSGFuZGxlci5fX2VtaXR0ZXJQcm94eSA9IGhhbmRsZXI7XG4gICAgcmV0dXJuIHNlbGYub24oZXZlbnRzLCBvbmNlSGFuZGxlciwgcHJpb3JpdHkpO1xuICB9LFxuXG4gIG9uQW55KGhhbmRsZXIsIHByaW9yaXR5KSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgaWYgKCFzZWxmLmV2ZW50c0xpc3RlbmVycyB8fCBzZWxmLmRlc3Ryb3llZCkgcmV0dXJuIHNlbGY7XG4gICAgaWYgKHR5cGVvZiBoYW5kbGVyICE9PSAnZnVuY3Rpb24nKSByZXR1cm4gc2VsZjtcbiAgICBjb25zdCBtZXRob2QgPSBwcmlvcml0eSA/ICd1bnNoaWZ0JyA6ICdwdXNoJztcblxuICAgIGlmIChzZWxmLmV2ZW50c0FueUxpc3RlbmVycy5pbmRleE9mKGhhbmRsZXIpIDwgMCkge1xuICAgICAgc2VsZi5ldmVudHNBbnlMaXN0ZW5lcnNbbWV0aG9kXShoYW5kbGVyKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2VsZjtcbiAgfSxcblxuICBvZmZBbnkoaGFuZGxlcikge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIGlmICghc2VsZi5ldmVudHNMaXN0ZW5lcnMgfHwgc2VsZi5kZXN0cm95ZWQpIHJldHVybiBzZWxmO1xuICAgIGlmICghc2VsZi5ldmVudHNBbnlMaXN0ZW5lcnMpIHJldHVybiBzZWxmO1xuICAgIGNvbnN0IGluZGV4ID0gc2VsZi5ldmVudHNBbnlMaXN0ZW5lcnMuaW5kZXhPZihoYW5kbGVyKTtcblxuICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICBzZWxmLmV2ZW50c0FueUxpc3RlbmVycy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cblxuICAgIHJldHVybiBzZWxmO1xuICB9LFxuXG4gIG9mZihldmVudHMsIGhhbmRsZXIpIHtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBpZiAoIXNlbGYuZXZlbnRzTGlzdGVuZXJzIHx8IHNlbGYuZGVzdHJveWVkKSByZXR1cm4gc2VsZjtcbiAgICBpZiAoIXNlbGYuZXZlbnRzTGlzdGVuZXJzKSByZXR1cm4gc2VsZjtcbiAgICBldmVudHMuc3BsaXQoJyAnKS5mb3JFYWNoKGV2ZW50ID0+IHtcbiAgICAgIGlmICh0eXBlb2YgaGFuZGxlciA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgc2VsZi5ldmVudHNMaXN0ZW5lcnNbZXZlbnRdID0gW107XG4gICAgICB9IGVsc2UgaWYgKHNlbGYuZXZlbnRzTGlzdGVuZXJzW2V2ZW50XSkge1xuICAgICAgICBzZWxmLmV2ZW50c0xpc3RlbmVyc1tldmVudF0uZm9yRWFjaCgoZXZlbnRIYW5kbGVyLCBpbmRleCkgPT4ge1xuICAgICAgICAgIGlmIChldmVudEhhbmRsZXIgPT09IGhhbmRsZXIgfHwgZXZlbnRIYW5kbGVyLl9fZW1pdHRlclByb3h5ICYmIGV2ZW50SGFuZGxlci5fX2VtaXR0ZXJQcm94eSA9PT0gaGFuZGxlcikge1xuICAgICAgICAgICAgc2VsZi5ldmVudHNMaXN0ZW5lcnNbZXZlbnRdLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gc2VsZjtcbiAgfSxcblxuICBlbWl0KC4uLmFyZ3MpIHtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBpZiAoIXNlbGYuZXZlbnRzTGlzdGVuZXJzIHx8IHNlbGYuZGVzdHJveWVkKSByZXR1cm4gc2VsZjtcbiAgICBpZiAoIXNlbGYuZXZlbnRzTGlzdGVuZXJzKSByZXR1cm4gc2VsZjtcbiAgICBsZXQgZXZlbnRzO1xuICAgIGxldCBkYXRhO1xuICAgIGxldCBjb250ZXh0O1xuXG4gICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJyB8fCBBcnJheS5pc0FycmF5KGFyZ3NbMF0pKSB7XG4gICAgICBldmVudHMgPSBhcmdzWzBdO1xuICAgICAgZGF0YSA9IGFyZ3Muc2xpY2UoMSwgYXJncy5sZW5ndGgpO1xuICAgICAgY29udGV4dCA9IHNlbGY7XG4gICAgfSBlbHNlIHtcbiAgICAgIGV2ZW50cyA9IGFyZ3NbMF0uZXZlbnRzO1xuICAgICAgZGF0YSA9IGFyZ3NbMF0uZGF0YTtcbiAgICAgIGNvbnRleHQgPSBhcmdzWzBdLmNvbnRleHQgfHwgc2VsZjtcbiAgICB9XG5cbiAgICBkYXRhLnVuc2hpZnQoY29udGV4dCk7XG4gICAgY29uc3QgZXZlbnRzQXJyYXkgPSBBcnJheS5pc0FycmF5KGV2ZW50cykgPyBldmVudHMgOiBldmVudHMuc3BsaXQoJyAnKTtcbiAgICBldmVudHNBcnJheS5mb3JFYWNoKGV2ZW50ID0+IHtcbiAgICAgIGlmIChzZWxmLmV2ZW50c0FueUxpc3RlbmVycyAmJiBzZWxmLmV2ZW50c0FueUxpc3RlbmVycy5sZW5ndGgpIHtcbiAgICAgICAgc2VsZi5ldmVudHNBbnlMaXN0ZW5lcnMuZm9yRWFjaChldmVudEhhbmRsZXIgPT4ge1xuICAgICAgICAgIGV2ZW50SGFuZGxlci5hcHBseShjb250ZXh0LCBbZXZlbnQsIC4uLmRhdGFdKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChzZWxmLmV2ZW50c0xpc3RlbmVycyAmJiBzZWxmLmV2ZW50c0xpc3RlbmVyc1tldmVudF0pIHtcbiAgICAgICAgc2VsZi5ldmVudHNMaXN0ZW5lcnNbZXZlbnRdLmZvckVhY2goZXZlbnRIYW5kbGVyID0+IHtcbiAgICAgICAgICBldmVudEhhbmRsZXIuYXBwbHkoY29udGV4dCwgZGF0YSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBzZWxmO1xuICB9XG5cbn07IiwiaW1wb3J0IHVwZGF0ZVNpemUgZnJvbSAnLi91cGRhdGVTaXplLmpzJztcbmltcG9ydCB1cGRhdGVTbGlkZXMgZnJvbSAnLi91cGRhdGVTbGlkZXMuanMnO1xuaW1wb3J0IHVwZGF0ZUF1dG9IZWlnaHQgZnJvbSAnLi91cGRhdGVBdXRvSGVpZ2h0LmpzJztcbmltcG9ydCB1cGRhdGVTbGlkZXNPZmZzZXQgZnJvbSAnLi91cGRhdGVTbGlkZXNPZmZzZXQuanMnO1xuaW1wb3J0IHVwZGF0ZVNsaWRlc1Byb2dyZXNzIGZyb20gJy4vdXBkYXRlU2xpZGVzUHJvZ3Jlc3MuanMnO1xuaW1wb3J0IHVwZGF0ZVByb2dyZXNzIGZyb20gJy4vdXBkYXRlUHJvZ3Jlc3MuanMnO1xuaW1wb3J0IHVwZGF0ZVNsaWRlc0NsYXNzZXMgZnJvbSAnLi91cGRhdGVTbGlkZXNDbGFzc2VzLmpzJztcbmltcG9ydCB1cGRhdGVBY3RpdmVJbmRleCBmcm9tICcuL3VwZGF0ZUFjdGl2ZUluZGV4LmpzJztcbmltcG9ydCB1cGRhdGVDbGlja2VkU2xpZGUgZnJvbSAnLi91cGRhdGVDbGlja2VkU2xpZGUuanMnO1xuZXhwb3J0IGRlZmF1bHQge1xuICB1cGRhdGVTaXplLFxuICB1cGRhdGVTbGlkZXMsXG4gIHVwZGF0ZUF1dG9IZWlnaHQsXG4gIHVwZGF0ZVNsaWRlc09mZnNldCxcbiAgdXBkYXRlU2xpZGVzUHJvZ3Jlc3MsXG4gIHVwZGF0ZVByb2dyZXNzLFxuICB1cGRhdGVTbGlkZXNDbGFzc2VzLFxuICB1cGRhdGVBY3RpdmVJbmRleCxcbiAgdXBkYXRlQ2xpY2tlZFNsaWRlXG59OyIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVwZGF0ZVNpemUoKSB7XG4gIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gIGxldCB3aWR0aDtcbiAgbGV0IGhlaWdodDtcbiAgY29uc3QgJGVsID0gc3dpcGVyLiRlbDtcblxuICBpZiAodHlwZW9mIHN3aXBlci5wYXJhbXMud2lkdGggIT09ICd1bmRlZmluZWQnICYmIHN3aXBlci5wYXJhbXMud2lkdGggIT09IG51bGwpIHtcbiAgICB3aWR0aCA9IHN3aXBlci5wYXJhbXMud2lkdGg7XG4gIH0gZWxzZSB7XG4gICAgd2lkdGggPSAkZWxbMF0uY2xpZW50V2lkdGg7XG4gIH1cblxuICBpZiAodHlwZW9mIHN3aXBlci5wYXJhbXMuaGVpZ2h0ICE9PSAndW5kZWZpbmVkJyAmJiBzd2lwZXIucGFyYW1zLmhlaWdodCAhPT0gbnVsbCkge1xuICAgIGhlaWdodCA9IHN3aXBlci5wYXJhbXMuaGVpZ2h0O1xuICB9IGVsc2Uge1xuICAgIGhlaWdodCA9ICRlbFswXS5jbGllbnRIZWlnaHQ7XG4gIH1cblxuICBpZiAod2lkdGggPT09IDAgJiYgc3dpcGVyLmlzSG9yaXpvbn
15RhbCgpIHx8IGhlaWdodCA9PT0gMCAmJiBzd2lwZXIuaXNWZXJ0aWNhbCgpKSB7XG4gICAgcmV0dXJuO1xuICB9IC8vIFN1YnRyYWN0IHBhZGRpbmdzXG5cblxuICB3aWR0aCA9IHdpZHRoIC0gcGFyc2VJbnQoJGVsLmNzcygncGFkZGluZy1sZWZ0JykgfHwgMCwgMTApIC0gcGFyc2VJbnQoJGVsLmNzcygncGFkZGluZy1yaWdodCcpIHx8IDAsIDEwKTtcbiAgaGVpZ2h0ID0gaGVpZ2h0IC0gcGFyc2VJbnQoJGVsLmNzcygncGFkZGluZy10b3AnKSB8fCAwLCAxMCkgLSBwYXJzZUludCgkZWwuY3NzKCdwYWRkaW5nLWJvdHRvbScpIHx8IDAsIDEwKTtcbiAgaWYgKE51bWJlci5pc05hTih3aWR0aCkpIHdpZHRoID0gMDtcbiAgaWYgKE51bWJlci5pc05hTihoZWlnaHQpKSBoZWlnaHQgPSAwO1xuICBPYmplY3QuYXNzaWduKHN3aXBlciwge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICBzaXplOiBzd2lwZXIuaXNIb3Jpem9udGFsKCkgPyB3aWR0aCA6IGhlaWdodFxuICB9KTtcbn0iLCJpbXBvcnQgeyBzZXRDU1NQcm9wZXJ0eSB9IGZyb20gJy4uLy4uL3NoYXJlZC91dGlscy5qcyc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1cGRhdGVTbGlkZXMoKSB7XG4gIGNvbnN0IHN3aXBlciA9IHRoaXM7XG5cbiAgZnVuY3Rpb24gZ2V0RGlyZWN0aW9uTGFiZWwocHJvcGVydHkpIHtcbiAgICBpZiAoc3dpcGVyLmlzSG9yaXpvbnRhbCgpKSB7XG4gICAgICByZXR1cm4gcHJvcGVydHk7XG4gICAgfSAvLyBwcmV0dGllci1pZ25vcmVcblxuXG4gICAgcmV0dXJuIHtcbiAgICAgICd3aWR0aCc6ICdoZWlnaHQnLFxuICAgICAgJ21hcmdpbi10b3AnOiAnbWFyZ2luLWxlZnQnLFxuICAgICAgJ21hcmdpbi1ib3R0b20gJzogJ21hcmdpbi1yaWdodCcsXG4gICAgICAnbWFyZ2luLWxlZnQnOiAnbWFyZ2luLXRvcCcsXG4gICAgICAnbWFyZ2luLXJpZ2h0JzogJ21hcmdpbi1ib3R0b20nLFxuICAgICAgJ3BhZGRpbmctbGVmdCc6ICdwYWRkaW5nLXRvcCcsXG4gICAgICAncGFkZGluZy1yaWdodCc6ICdwYWRkaW5nLWJvdHRvbScsXG4gICAgICAnbWFyZ2luUmlnaHQnOiAnbWFyZ2luQm90dG9tJ1xuICAgIH1bcHJvcGVydHldO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0RGlyZWN0aW9uUHJvcGVydHlWYWx1ZShub2RlLCBsYWJlbCkge1xuICAgIHJldHVybiBwYXJzZUZsb2F0KG5vZGUuZ2V0UHJvcGVydHlWYWx1ZShnZXREaXJlY3Rpb25MYWJlbChsYWJlbCkpIHx8IDApO1xuICB9XG5cbiAgY29uc3QgcGFyYW1zID0gc3dpcGVyLnBhcmFtcztcbiAgY29uc3Qge1xuICAgICR3cmFwcGVyRWwsXG4gICAgc2l6ZTogc3dpcGVyU2l6ZSxcbiAgICBydGxUcmFuc2xhdGU6IHJ0bCxcbiAgICB3cm9uZ1JUTFxuICB9ID0gc3dpcGVyO1xuICBjb25zdCBpc1ZpcnR1YWwgPSBzd2lwZXIudmlydHVhbCAmJiBwYXJhbXMudmlydHVhbC5lbmFibGVkO1xuICBjb25zdCBwcmV2aW91c1NsaWRlc0xlbmd0aCA9IGlzVmlydHVhbCA/IHN3aXBlci52aXJ0dWFsLnNsaWRlcy5sZW5ndGggOiBzd2lwZXIuc2xpZGVzLmxlbmd0aDtcbiAgY29uc3Qgc2xpZGVzID0gJHdyYXBwZXJFbC5jaGlsZHJlbihgLiR7c3dpcGVyLnBhcmFtcy5zbGlkZUNsYXNzfWApO1xuICBjb25zdCBzbGlkZXNMZW5ndGggPSBpc1ZpcnR1YWwgPyBzd2lwZXIudmlydHVhbC5zbGlkZXMubGVuZ3RoIDogc2xpZGVzLmxlbmd0aDtcbiAgbGV0IHNuYXBHcmlkID0gW107XG4gIGNvbnN0IHNsaWRlc0dyaWQgPSBbXTtcbiAgY29uc3Qgc2xpZGVzU2l6ZXNHcmlkID0gW107XG4gIGxldCBvZmZzZXRCZWZvcmUgPSBwYXJhbXMuc2xpZGVzT2Zmc2V0QmVmb3JlO1xuXG4gIGlmICh0eXBlb2Ygb2Zmc2V0QmVmb3JlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgb2Zmc2V0QmVmb3JlID0gcGFyYW1zLnNsaWRlc09mZnNldEJlZm9yZS5jYWxsKHN3aXBlcik7XG4gIH1cblxuICBsZXQgb2Zmc2V0QWZ0ZXIgPSBwYXJhbXMuc2xpZGVzT2Zmc2V0QWZ0ZXI7XG5cbiAgaWYgKHR5cGVvZiBvZmZzZXRBZnRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIG9mZnNldEFmdGVyID0gcGFyYW1zLnNsaWRlc09mZnNldEFmdGVyLmNhbGwoc3dpcGVyKTtcbiAgfVxuXG4gIGNvbnN0IHByZXZpb3VzU25hcEdyaWRMZW5ndGggPSBzd2lwZXIuc25hcEdyaWQubGVuZ3RoO1xuICBjb25zdCBwcmV2aW91c1NsaWRlc0dyaWRMZW5ndGggPSBzd2lwZXIuc2xpZGVzR3JpZC5sZW5ndGg7XG4gIGxldCBzcGFjZUJldHdlZW4gPSBwYXJhbXMuc3BhY2VCZXR3ZWVuO1xuICBsZXQgc2xpZGVQb3NpdGlvbiA9IC1vZmZzZXRCZWZvcmU7XG4gIGxldCBwcmV2U2xpZGVTaXplID0gMDtcbiAgbGV0IGluZGV4ID0gMDtcblxuICBpZiAodHlwZW9mIHN3aXBlclNpemUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBzcGFjZUJldHdlZW4gPT09ICdzdHJpbmcnICYmIHNwYWNlQmV0d2Vlbi5pbmRleE9mKCclJykgPj0gMCkge1xuICAgIHNwYWNlQmV0d2VlbiA9IHBhcnNlRmxvYXQoc3BhY2VCZXR3ZWVuLnJlcGxhY2UoJyUnLCAnJykpIC8gMTAwICogc3dpcGVyU2l6ZTtcbiAgfVxuXG4gIHN3aXBlci52aXJ0dWFsU2l6ZSA9IC1zcGFjZUJldHdlZW47IC8vIHJlc2V0IG1hcmdpbnNcblxuICBpZiAocnRsKSBzbGlkZXMuY3NzKHtcbiAgICBtYXJnaW5MZWZ0OiAnJyxcbiAgICBtYXJnaW5Cb3R0b206ICcnLFxuICAgIG1hcmdpblRvcDogJydcbiAgfSk7ZWxzZSBzbGlkZXMuY3NzKHtcbiAgICBtYXJnaW5SaWdodDogJycsXG4gICAgbWFyZ2luQm90dG9tOiAnJyxcbiAgICBtYXJnaW5Ub3A6ICcnXG4gIH0pOyAvLyByZXNldCBjc3NNb2RlIG9mZnNldHNcblxuICBpZiAocGFyYW1zLmNlbnRlcmVkU2xpZGVzICYmIHBhcmFtcy5jc3NNb2RlKSB7XG4gICAgc2V0Q1NTUHJvcGVydHkoc3dpcGVyLndyYXBwZXJFbCwgJy0tc3dpcGVyLWNlbnRlcmVkLW9mZnNldC1iZWZvcmUnLCAnJyk7XG4gICAgc2V0Q1NTUHJvcGVydHkoc3dpcGVyLndyYXBwZXJFbCwgJy0tc3dpcGVyLWNlbnRlcmVkLW9mZnNldC1hZnRlcicsICcnKTtcbiAgfVxuXG4gIGNvbnN0IGdyaWRFbmFibGVkID0gcGFyYW1zLmdyaWQgJiYgcGFyYW1zLmdyaWQucm93cyA+IDEgJiYgc3dpcGVyLmdyaWQ7XG5cbiAgaWYgKGdyaWRFbmFibGVkKSB7XG4gICAgc3dpcGVyLmdyaWQuaW5pdFNsaWRlcyhzbGlkZXNMZW5ndGgpO1xuICB9IC8vIENhbGMgc2xpZGVzXG5cblxuICBsZXQgc2xpZGVTaXplO1xuICBjb25zdCBzaG91bGRSZXNldFNsaWRlU2l6ZSA9IHBhcmFtcy5zbGlkZXNQZXJWaWV3ID09PSAnYXV0bycgJiYgcGFyYW1zLmJyZWFrcG9pbnRzICYmIE9iamVjdC5rZXlzKHBhcmFtcy5icmVha3BvaW50cykuZmlsdGVyKGtleSA9PiB7XG4gICAgcmV0dXJuIHR5cGVvZiBwYXJhbXMuYnJlYWtwb2ludHNba2V5XS5zbGlkZXNQZXJWaWV3ICE9PSAndW5kZWZpbmVkJztcbiAgfSkubGVuZ3RoID4gMDtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHNsaWRlc0xlbmd0aDsgaSArPSAxKSB7XG4gICAgc2xpZGVTaXplID0gMDtcbiAgICBjb25zdCBzbGlkZSA9IHNsaWRlcy5lcShpKTtcblxuICAgIGlmIChncmlkRW5hYmxlZCkge1xuICAgICAgc3dpcGVyLmdyaWQudXBkYXRlU2xpZGUoaSwgc2xpZGUsIHNsaWRlc0xlbmd0aCwgZ2V0RGlyZWN0aW9uTGFiZWwpO1xuICAgIH1cblxuICAgIGlmIChzbGlkZS5jc3MoJ2Rpc3BsYXknKSA9PT0gJ25vbmUnKSBjb250aW51ZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuXG4gICAgaWYgKHBhcmFtcy5zbGlkZXNQZXJWaWV3ID09PSAnYXV0bycpIHtcbiAgICAgIGlmIChzaG91bGRSZXNldFNsaWRlU2l6ZSkge1xuICAgICAgICBzbGlkZXNbaV0uc3R5bGVbZ2V0RGlyZWN0aW9uTGFiZWwoJ3dpZHRoJyldID0gYGA7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHNsaWRlU3R5bGVzID0gZ2V0Q29tcHV0ZWRTdHlsZShzbGlkZVswXSk7XG4gICAgICBjb25zdCBjdXJyZW50VHJhbnNmb3JtID0gc2xpZGVbMF0uc3R5bGUudHJhbnNmb3JtO1xuICAgICAgY29uc3QgY3VycmVudFdlYktpdFRyYW5zZm9ybSA9IHNsaWRlWzBdLnN0eWxlLndlYmtpdFRyYW5zZm9ybTtcblxuICAgICAgaWYgKGN1cnJlbnRUcmFuc2Zvcm0pIHtcbiAgICAgICAgc2xpZGVbMF0uc3R5bGUudHJhbnNmb3JtID0gJ25vbmUnO1xuICAgICAgfVxuXG4gICAgICBpZiAoY3VycmVudFdlYktpdFRyYW5zZm9ybSkge1xuICAgICAgICBzbGlkZVswXS5zdHlsZS53ZWJraXRUcmFuc2Zvcm0gPSAnbm9uZSc7XG4gICAgICB9XG5cbiAgICAgIGlmIChwYXJhbXMucm91bmRMZW5ndGhzKSB7XG4gICAgICAgI
15HNsaWRlU2l6ZSA9IHN3aXBlci5pc0hvcml6b250YWwoKSA/IHNsaWRlLm91dGVyV2lkdGgodHJ1ZSkgOiBzbGlkZS5vdXRlckhlaWdodCh0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgICAgICBjb25zdCB3aWR0aCA9IGdldERpcmVjdGlvblByb3BlcnR5VmFsdWUoc2xpZGVTdHlsZXMsICd3aWR0aCcpO1xuICAgICAgICBjb25zdCBwYWRkaW5nTGVmdCA9IGdldERpcmVjdGlvblByb3BlcnR5VmFsdWUoc2xpZGVTdHlsZXMsICdwYWRkaW5nLWxlZnQnKTtcbiAgICAgICAgY29uc3QgcGFkZGluZ1JpZ2h0ID0gZ2V0RGlyZWN0aW9uUHJvcGVydHlWYWx1ZShzbGlkZVN0eWxlcywgJ3BhZGRpbmctcmlnaHQnKTtcbiAgICAgICAgY29uc3QgbWFyZ2luTGVmdCA9IGdldERpcmVjdGlvblByb3BlcnR5VmFsdWUoc2xpZGVTdHlsZXMsICdtYXJnaW4tbGVmdCcpO1xuICAgICAgICBjb25zdCBtYXJnaW5SaWdodCA9IGdldERpcmVjdGlvblByb3BlcnR5VmFsdWUoc2xpZGVTdHlsZXMsICdtYXJnaW4tcmlnaHQnKTtcbiAgICAgICAgY29uc3QgYm94U2l6aW5nID0gc2xpZGVTdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZSgnYm94LXNpemluZycpO1xuXG4gICAgICAgIGlmIChib3hTaXppbmcgJiYgYm94U2l6aW5nID09PSAnYm9yZGVyLWJveCcpIHtcbiAgICAgICAgICBzbGlkZVNpemUgPSB3aWR0aCArIG1hcmdpbkxlZnQgKyBtYXJnaW5SaWdodDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBjbGllbnRXaWR0aCxcbiAgICAgICAgICAgIG9mZnNldFdpZHRoXG4gICAgICAgICAgfSA9IHNsaWRlWzBdO1xuICAgICAgICAgIHNsaWRlU2l6ZSA9IHdpZHRoICsgcGFkZGluZ0xlZnQgKyBwYWRkaW5nUmlnaHQgKyBtYXJnaW5MZWZ0ICsgbWFyZ2luUmlnaHQgKyAob2Zmc2V0V2lkdGggLSBjbGllbnRXaWR0aCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGN1cnJlbnRUcmFuc2Zvcm0pIHtcbiAgICAgICAgc2xpZGVbMF0uc3R5bGUudHJhbnNmb3JtID0gY3VycmVudFRyYW5zZm9ybTtcbiAgICAgIH1cblxuICAgICAgaWYgKGN1cnJlbnRXZWJLaXRUcmFuc2Zvcm0pIHtcbiAgICAgICAgc2xpZGVbMF0uc3R5bGUud2Via2l0VHJhbnNmb3JtID0gY3VycmVudFdlYktpdFRyYW5zZm9ybTtcbiAgICAgIH1cblxuICAgICAgaWYgKHBhcmFtcy5yb3VuZExlbmd0aHMpIHNsaWRlU2l6ZSA9IE1hdGguZmxvb3Ioc2xpZGVTaXplKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2xpZGVTaXplID0gKHN3aXBlclNpemUgLSAocGFyYW1zLnNsaWRlc1BlclZpZXcgLSAxKSAqIHNwYWNlQmV0d2VlbikgLyBwYXJhbXMuc2xpZGVzUGVyVmlldztcbiAgICAgIGlmIChwYXJhbXMucm91bmRMZW5ndGhzKSBzbGlkZVNpemUgPSBNYXRoLmZsb29yKHNsaWRlU2l6ZSk7XG5cbiAgICAgIGlmIChzbGlkZXNbaV0pIHtcbiAgICAgICAgc2xpZGVzW2ldLnN0eWxlW2dldERpcmVjdGlvbkxhYmVsKCd3aWR0aCcpXSA9IGAke3NsaWRlU2l6ZX1weGA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHNsaWRlc1tpXSkge1xuICAgICAgc2xpZGVzW2ldLnN3aXBlclNsaWRlU2l6ZSA9IHNsaWRlU2l6ZTtcbiAgICB9XG5cbiAgICBzbGlkZXNTaXplc0dyaWQucHVzaChzbGlkZVNpemUpO1xuXG4gICAgaWYgKHBhcmFtcy5jZW50ZXJlZFNsaWRlcykge1xuICAgICAgc2xpZGVQb3NpdGlvbiA9IHNsaWRlUG9zaXRpb24gKyBzbGlkZVNpemUgLyAyICsgcHJldlNsaWRlU2l6ZSAvIDIgKyBzcGFjZUJldHdlZW47XG4gICAgICBpZiAocHJldlNsaWRlU2l6ZSA9PT0gMCAmJiBpICE9PSAwKSBzbGlkZVBvc2l0aW9uID0gc2xpZGVQb3NpdGlvbiAtIHN3aXBlclNpemUgLyAyIC0gc3BhY2VCZXR3ZWVuO1xuICAgICAgaWYgKGkgPT09IDApIHNsaWRlUG9zaXRpb24gPSBzbGlkZVBvc2l0aW9uIC0gc3dpcGVyU2l6ZSAvIDIgLSBzcGFjZUJldHdlZW47XG4gICAgICBpZiAoTWF0aC5hYnMoc2xpZGVQb3NpdGlvbikgPCAxIC8gMTAwMCkgc2xpZGVQb3NpdGlvbiA9IDA7XG4gICAgICBpZiAocGFyYW1zLnJvdW5kTGVuZ3Rocykgc2xpZGVQb3NpdGlvbiA9IE1hdGguZmxvb3Ioc2xpZGVQb3NpdGlvbik7XG4gICAgICBpZiAoaW5kZXggJSBwYXJhbXMuc2xpZGVzUGVyR3JvdXAgPT09IDApIHNuYXBHcmlkLnB1c2goc2xpZGVQb3NpdGlvbik7XG4gICAgICBzbGlkZXNHcmlkLnB1c2goc2xpZGVQb3NpdGlvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwYXJhbXMucm91bmRMZW5ndGhzKSBzbGlkZVBvc2l0aW9uID0gTWF0aC5mbG9vcihzbGlkZVBvc2l0aW9uKTtcbiAgICAgIGlmICgoaW5kZXggLSBNYXRoLm1pbihzd2lwZXIucGFyYW1zLnNsaWRlc1Blckdyb3VwU2tpcCwgaW5kZXgpKSAlIHN3aXBlci5wYXJhbXMuc2xpZGVzUGVyR3JvdXAgPT09IDApIHNuYXBHcmlkLnB1c2goc2xpZGVQb3NpdGlvbik7XG4gICAgICBzbGlkZXNHcmlkLnB1c2goc2xpZGVQb3NpdGlvbik7XG4gICAgICBzbGlkZVBvc2l0aW9uID0gc2xpZGVQb3NpdGlvbiArIHNsaWRlU2l6ZSArIHNwYWNlQmV0d2VlbjtcbiAgICB9XG5cbiAgICBzd2lwZXIudmlydHVhbFNpemUgKz0gc2xpZGVTaXplICsgc3BhY2VCZXR3ZWVuO1xuICAgIHByZXZTbGlkZVNpemUgPSBzbGlkZVNpemU7XG4gICAgaW5kZXggKz0gMTtcbiAgfVxuXG4gIHN3aXBlci52aXJ0dWFsU2l6ZSA9IE1hdGgubWF4KHN3aXBlci52aXJ0dWFsU2l6ZSwgc3dpcGVyU2l6ZSkgKyBvZmZzZXRBZnRlcjtcblxuICBpZiAocnRsICYmIHdyb25nUlRMICYmIChwYXJhbXMuZWZmZWN0ID09PSAnc2xpZGUnIHx8IHBhcmFtcy5lZmZlY3QgPT09ICdjb3ZlcmZsb3cnKSkge1xuICAgICR3cmFwcGVyRWwuY3NzKHtcbiAgICAgIHdpZHRoOiBgJHtzd2lwZXIudmlydHVhbFNpemUgKyBwYXJhbXMuc3BhY2VCZXR3ZWVufXB4YFxuICAgIH0pO1xuICB9XG5cbiAgaWYgKHBhcmFtcy5zZXRXcmFwcGVyU2l6ZSkge1xuICAgICR3cmFwcGVyRWwuY3NzKHtcbiAgICAgIFtnZXREaXJlY3Rpb25MYWJlbCgnd2lkdGgnKV06IGAke3N3aXBlci52aXJ0dWFsU2l6ZSArIHBhcmFtcy5zcGFjZUJldHdlZW59cHhgXG4gICAgfSk7XG4gIH1cblxuICBpZiAoZ3JpZEVuYWJsZWQpIHtcbiAgICBzd2lwZXIuZ3JpZC51cGRhdGVXcmFwcGVyU2l6ZShzbGlkZVNpemUsIHNuYXBHcmlkLCBnZXREaXJlY3Rpb25MYWJlbCk7XG4gIH0gLy8gUmVtb3ZlIGxhc3QgZ3JpZCBlbGVtZW50cyBkZXBlbmRpbmcgb24gd2lkdGhcblxuXG4gIGlmICghcGFyYW1zLmNlbnRlcmVkU2xpZGVzKSB7XG4gICAgY29uc3QgbmV3U2xpZGVzR3JpZCA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzbmFwR3JpZC5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgbGV0IHNsaWRlc0dyaWRJdGVtID0gc25hcEdyaWRbaV07XG4gICAgICBpZiAocGFyYW1zLnJvdW5kTGVuZ3Rocykgc2xpZGVzR3JpZEl0ZW0gPSBNYXRoLmZsb29yKHNsaWRlc0dyaWRJdGVtKTtcblxuICAgICAgaWYgKHNuYXBHcmlkW2ldIDw9IHN3aXBlci52aXJ0dWFsU2l6ZSAtIHN3aXBlclNpemUpIHtcbiAgICAgICAgbmV3
15U2xpZGVzR3JpZC5wdXNoKHNsaWRlc0dyaWRJdGVtKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzbmFwR3JpZCA9IG5ld1NsaWRlc0dyaWQ7XG5cbiAgICBpZiAoTWF0aC5mbG9vcihzd2lwZXIudmlydHVhbFNpemUgLSBzd2lwZXJTaXplKSAtIE1hdGguZmxvb3Ioc25hcEdyaWRbc25hcEdyaWQubGVuZ3RoIC0gMV0pID4gMSkge1xuICAgICAgc25hcEdyaWQucHVzaChzd2lwZXIudmlydHVhbFNpemUgLSBzd2lwZXJTaXplKTtcbiAgICB9XG4gIH1cblxuICBpZiAoc25hcEdyaWQubGVuZ3RoID09PSAwKSBzbmFwR3JpZCA9IFswXTtcblxuICBpZiAocGFyYW1zLnNwYWNlQmV0d2VlbiAhPT0gMCkge1xuICAgIGNvbnN0IGtleSA9IHN3aXBlci5pc0hvcml6b250YWwoKSAmJiBydGwgPyAnbWFyZ2luTGVmdCcgOiBnZXREaXJlY3Rpb25MYWJlbCgnbWFyZ2luUmlnaHQnKTtcbiAgICBzbGlkZXMuZmlsdGVyKChfLCBzbGlkZUluZGV4KSA9PiB7XG4gICAgICBpZiAoIXBhcmFtcy5jc3NNb2RlKSByZXR1cm4gdHJ1ZTtcblxuICAgICAgaWYgKHNsaWRlSW5kZXggPT09IHNsaWRlcy5sZW5ndGggLSAxKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSkuY3NzKHtcbiAgICAgIFtrZXldOiBgJHtzcGFjZUJldHdlZW59cHhgXG4gICAgfSk7XG4gIH1cblxuICBpZiAocGFyYW1zLmNlbnRlcmVkU2xpZGVzICYmIHBhcmFtcy5jZW50ZXJlZFNsaWRlc0JvdW5kcykge1xuICAgIGxldCBhbGxTbGlkZXNTaXplID0gMDtcbiAgICBzbGlkZXNTaXplc0dyaWQuZm9yRWFjaChzbGlkZVNpemVWYWx1ZSA9PiB7XG4gICAgICBhbGxTbGlkZXNTaXplICs9IHNsaWRlU2l6ZVZhbHVlICsgKHBhcmFtcy5zcGFjZUJldHdlZW4gPyBwYXJhbXMuc3BhY2VCZXR3ZWVuIDogMCk7XG4gICAgfSk7XG4gICAgYWxsU2xpZGVzU2l6ZSAtPSBwYXJhbXMuc3BhY2VCZXR3ZWVuO1xuICAgIGNvbnN0IG1heFNuYXAgPSBhbGxTbGlkZXNTaXplIC0gc3dpcGVyU2l6ZTtcbiAgICBzbmFwR3JpZCA9IHNuYXBHcmlkLm1hcChzbmFwID0+IHtcbiAgICAgIGlmIChzbmFwIDwgMCkgcmV0dXJuIC1vZmZzZXRCZWZvcmU7XG4gICAgICBpZiAoc25hcCA+IG1heFNuYXApIHJldHVybiBtYXhTbmFwICsgb2Zmc2V0QWZ0ZXI7XG4gICAgICByZXR1cm4gc25hcDtcbiAgICB9KTtcbiAgfVxuXG4gIGlmIChwYXJhbXMuY2VudGVySW5zdWZmaWNpZW50U2xpZGVzKSB7XG4gICAgbGV0IGFsbFNsaWRlc1NpemUgPSAwO1xuICAgIHNsaWRlc1NpemVzR3JpZC5mb3JFYWNoKHNsaWRlU2l6ZVZhbHVlID0+IHtcbiAgICAgIGFsbFNsaWRlc1NpemUgKz0gc2xpZGVTaXplVmFsdWUgKyAocGFyYW1zLnNwYWNlQmV0d2VlbiA/IHBhcmFtcy5zcGFjZUJldHdlZW4gOiAwKTtcbiAgICB9KTtcbiAgICBhbGxTbGlkZXNTaXplIC09IHBhcmFtcy5zcGFjZUJldHdlZW47XG5cbiAgICBpZiAoYWxsU2xpZGVzU2l6ZSA8IHN3aXBlclNpemUpIHtcbiAgICAgIGNvbnN0IGFsbFNsaWRlc09mZnNldCA9IChzd2lwZXJTaXplIC0gYWxsU2xpZGVzU2l6ZSkgLyAyO1xuICAgICAgc25hcEdyaWQuZm9yRWFjaCgoc25hcCwgc25hcEluZGV4KSA9PiB7XG4gICAgICAgIHNuYXBHcmlkW3NuYXBJbmRleF0gPSBzbmFwIC0gYWxsU2xpZGVzT2Zmc2V0O1xuICAgICAgfSk7XG4gICAgICBzbGlkZXNHcmlkLmZvckVhY2goKHNuYXAsIHNuYXBJbmRleCkgPT4ge1xuICAgICAgICBzbGlkZXNHcmlkW3NuYXBJbmRleF0gPSBzbmFwICsgYWxsU2xpZGVzT2Zmc2V0O1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgT2JqZWN0LmFzc2lnbihzd2lwZXIsIHtcbiAgICBzbGlkZXMsXG4gICAgc25hcEdyaWQsXG4gICAgc2xpZGVzR3JpZCxcbiAgICBzbGlkZXNTaXplc0dyaWRcbiAgfSk7XG5cbiAgaWYgKHBhcmFtcy5jZW50ZXJlZFNsaWRlcyAmJiBwYXJhbXMuY3NzTW9kZSAmJiAhcGFyYW1zLmNlbnRlcmVkU2xpZGVzQm91bmRzKSB7XG4gICAgc2V0Q1NTUHJvcGVydHkoc3dpcGVyLndyYXBwZXJFbCwgJy0tc3dpcGVyLWNlbnRlcmVkLW9mZnNldC1iZWZvcmUnLCBgJHstc25hcEdyaWRbMF19cHhgKTtcbiAgICBzZXRDU1NQcm9wZXJ0eShzd2lwZXIud3JhcHBlckVsLCAnLS1zd2lwZXItY2VudGVyZWQtb2Zmc2V0LWFmdGVyJywgYCR7c3dpcGVyLnNpemUgLyAyIC0gc2xpZGVzU2l6ZXNHcmlkW3NsaWRlc1NpemVzR3JpZC5sZW5ndGggLSAxXSAvIDJ9cHhgKTtcbiAgICBjb25zdCBhZGRUb1NuYXBHcmlkID0gLXN3aXBlci5zbmFwR3JpZFswXTtcbiAgICBjb25zdCBhZGRUb1NsaWRlc0dyaWQgPSAtc3dpcGVyLnNsaWRlc0dyaWRbMF07XG4gICAgc3dpcGVyLnNuYXBHcmlkID0gc3dpcGVyLnNuYXBHcmlkLm1hcCh2ID0+IHYgKyBhZGRUb1NuYXBHcmlkKTtcbiAgICBzd2lwZXIuc2xpZGVzR3JpZCA9IHN3aXBlci5zbGlkZXNHcmlkLm1hcCh2ID0+IHYgKyBhZGRUb1NsaWRlc0dyaWQpO1xuICB9XG5cbiAgaWYgKHNsaWRlc0xlbmd0aCAhPT0gcHJldmlvdXNTbGlkZXNMZW5ndGgpIHtcbiAgICBzd2lwZXIuZW1pdCgnc2xpZGVzTGVuZ3RoQ2hhbmdlJyk7XG4gIH1cblxuICBpZiAoc25hcEdyaWQubGVuZ3RoICE9PSBwcmV2aW91c1NuYXBHcmlkTGVuZ3RoKSB7XG4gICAgaWYgKHN3aXBlci5wYXJhbXMud2F0Y2hPdmVyZmxvdykgc3dpcGVyLmNoZWNrT3ZlcmZsb3coKTtcbiAgICBzd2lwZXIuZW1pdCgnc25hcEdyaWRMZW5ndGhDaGFuZ2UnKTtcbiAgfVxuXG4gIGlmIChzbGlkZXNHcmlkLmxlbmd0aCAhPT0gcHJldmlvdXNTbGlkZXNHcmlkTGVuZ3RoKSB7XG4gICAgc3dpcGVyLmVtaXQoJ3NsaWRlc0dyaWRMZW5ndGhDaGFuZ2UnKTtcbiAgfVxuXG4gIGlmIChwYXJhbXMud2F0Y2hTbGlkZXNQcm9ncmVzcykge1xuICAgIHN3aXBlci51cGRhdGVTbGlkZXNPZmZzZXQoKTtcbiAgfVxuXG4gIGlmICghaXNWaXJ0dWFsICYmICFwYXJhbXMuY3NzTW9kZSAmJiAocGFyYW1zLmVmZmVjdCA9PT0gJ3NsaWRlJyB8fCBwYXJhbXMuZWZmZWN0ID09PSAnZmFkZScpKSB7XG4gICAgY29uc3QgYmFja0ZhY2VIaWRkZW5DbGFzcyA9IGAke3BhcmFtcy5jb250YWluZXJNb2RpZmllckNsYXNzfWJhY2tmYWNlLWhpZGRlbmA7XG4gICAgY29uc3QgaGFzQ2xhc3NCYWNrZmFjZUNsYXNzQWRkZWQgPSBzd2lwZXIuJGVsLmhhc0NsYXNzKGJhY2tGYWNlSGlkZGVuQ2xhc3MpO1xuXG4gICAgaWYgKHNsaWRlc0xlbmd0aCA8PSBwYXJhbXMubWF4QmFja2ZhY2VIaWRkZW5TbGlkZXMpIHtcbiAgICAgIGlmICghaGFzQ2xhc3NCYWNrZmFjZUNsYXNzQWRkZWQpIHN3aXBlci4kZWwuYWRkQ2xhc3MoYmFja0ZhY2VIaWRkZW5DbGFzcyk7XG4gICAgfSBlbHNlIGlmIChoYXNDbGFzc0JhY2tmYWNlQ2xhc3NBZGRlZCkge1xuICAgICAgc3dpcGVyLiRlbC5yZW1vdmVDbGFzcyhiYWNrRmFjZUhpZGRlbkNsYXNzKTtcbiAgICB9XG4gI
15H1cbn0iLCJpbXBvcnQgJCBmcm9tICcuLi8uLi9zaGFyZWQvZG9tLmpzJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVwZGF0ZUF1dG9IZWlnaHQoc3BlZWQpIHtcbiAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgY29uc3QgYWN0aXZlU2xpZGVzID0gW107XG4gIGNvbnN0IGlzVmlydHVhbCA9IHN3aXBlci52aXJ0dWFsICYmIHN3aXBlci5wYXJhbXMudmlydHVhbC5lbmFibGVkO1xuICBsZXQgbmV3SGVpZ2h0ID0gMDtcbiAgbGV0IGk7XG5cbiAgaWYgKHR5cGVvZiBzcGVlZCA9PT0gJ251bWJlcicpIHtcbiAgICBzd2lwZXIuc2V0VHJhbnNpdGlvbihzcGVlZCk7XG4gIH0gZWxzZSBpZiAoc3BlZWQgPT09IHRydWUpIHtcbiAgICBzd2lwZXIuc2V0VHJhbnNpdGlvbihzd2lwZXIucGFyYW1zLnNwZWVkKTtcbiAgfVxuXG4gIGNvbnN0IGdldFNsaWRlQnlJbmRleCA9IGluZGV4ID0+IHtcbiAgICBpZiAoaXNWaXJ0dWFsKSB7XG4gICAgICByZXR1cm4gc3dpcGVyLnNsaWRlcy5maWx0ZXIoZWwgPT4gcGFyc2VJbnQoZWwuZ2V0QXR0cmlidXRlKCdkYXRhLXN3aXBlci1zbGlkZS1pbmRleCcpLCAxMCkgPT09IGluZGV4KVswXTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3dpcGVyLnNsaWRlcy5lcShpbmRleClbMF07XG4gIH07IC8vIEZpbmQgc2xpZGVzIGN1cnJlbnRseSBpbiB2aWV3XG5cblxuICBpZiAoc3dpcGVyLnBhcmFtcy5zbGlkZXNQZXJWaWV3ICE9PSAnYXV0bycgJiYgc3dpcGVyLnBhcmFtcy5zbGlkZXNQZXJWaWV3ID4gMSkge1xuICAgIGlmIChzd2lwZXIucGFyYW1zLmNlbnRlcmVkU2xpZGVzKSB7XG4gICAgICAoc3dpcGVyLnZpc2libGVTbGlkZXMgfHwgJChbXSkpLmVhY2goc2xpZGUgPT4ge1xuICAgICAgICBhY3RpdmVTbGlkZXMucHVzaChzbGlkZSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChpID0gMDsgaSA8IE1hdGguY2VpbChzd2lwZXIucGFyYW1zLnNsaWRlc1BlclZpZXcpOyBpICs9IDEpIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSBzd2lwZXIuYWN0aXZlSW5kZXggKyBpO1xuICAgICAgICBpZiAoaW5kZXggPiBzd2lwZXIuc2xpZGVzLmxlbmd0aCAmJiAhaXNWaXJ0dWFsKSBicmVhaztcbiAgICAgICAgYWN0aXZlU2xpZGVzLnB1c2goZ2V0U2xpZGVCeUluZGV4KGluZGV4KSk7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGFjdGl2ZVNsaWRlcy5wdXNoKGdldFNsaWRlQnlJbmRleChzd2lwZXIuYWN0aXZlSW5kZXgpKTtcbiAgfSAvLyBGaW5kIG5ldyBoZWlnaHQgZnJvbSBoaWdoZXN0IHNsaWRlIGluIHZpZXdcblxuXG4gIGZvciAoaSA9IDA7IGkgPCBhY3RpdmVTbGlkZXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICBpZiAodHlwZW9mIGFjdGl2ZVNsaWRlc1tpXSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGNvbnN0IGhlaWdodCA9IGFjdGl2ZVNsaWRlc1tpXS5vZmZzZXRIZWlnaHQ7XG4gICAgICBuZXdIZWlnaHQgPSBoZWlnaHQgPiBuZXdIZWlnaHQgPyBoZWlnaHQgOiBuZXdIZWlnaHQ7XG4gICAgfVxuICB9IC8vIFVwZGF0ZSBIZWlnaHRcblxuXG4gIGlmIChuZXdIZWlnaHQgfHwgbmV3SGVpZ2h0ID09PSAwKSBzd2lwZXIuJHdyYXBwZXJFbC5jc3MoJ2hlaWdodCcsIGAke25ld0hlaWdodH1weGApO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVwZGF0ZVNsaWRlc09mZnNldCgpIHtcbiAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgY29uc3Qgc2xpZGVzID0gc3dpcGVyLnNsaWRlcztcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHNsaWRlcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgIHNsaWRlc1tpXS5zd2lwZXJTbGlkZU9mZnNldCA9IHN3aXBlci5pc0hvcml6b250YWwoKSA/IHNsaWRlc1tpXS5vZmZzZXRMZWZ0IDogc2xpZGVzW2ldLm9mZnNldFRvcDtcbiAgfVxufSIsImltcG9ydCAkIGZyb20gJy4uLy4uL3NoYXJlZC9kb20uanMnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXBkYXRlU2xpZGVzUHJvZ3Jlc3ModHJhbnNsYXRlID0gdGhpcyAmJiB0aGlzLnRyYW5zbGF0ZSB8fCAwKSB7XG4gIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gIGNvbnN0IHBhcmFtcyA9IHN3aXBlci5wYXJhbXM7XG4gIGNvbnN0IHtcbiAgICBzbGlkZXMsXG4gICAgcnRsVHJhbnNsYXRlOiBydGwsXG4gICAgc25hcEdyaWRcbiAgfSA9IHN3aXBlcjtcbiAgaWYgKHNsaWRlcy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgaWYgKHR5cGVvZiBzbGlkZXNbMF0uc3dpcGVyU2xpZGVPZmZzZXQgPT09ICd1bmRlZmluZWQnKSBzd2lwZXIudXBkYXRlU2xpZGVzT2Zmc2V0KCk7XG4gIGxldCBvZmZzZXRDZW50ZXIgPSAtdHJhbnNsYXRlO1xuICBpZiAocnRsKSBvZmZzZXRDZW50ZXIgPSB0cmFuc2xhdGU7IC8vIFZpc2libGUgU2xpZGVzXG5cbiAgc2xpZGVzLnJlbW92ZUNsYXNzKHBhcmFtcy5zbGlkZVZpc2libGVDbGFzcyk7XG4gIHN3aXBlci52aXNpYmxlU2xpZGVzSW5kZXhlcyA9IFtdO1xuICBzd2lwZXIudmlzaWJsZVNsaWRlcyA9IFtdO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2xpZGVzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgY29uc3Qgc2xpZGUgPSBzbGlkZXNbaV07XG4gICAgbGV0IHNsaWRlT2Zmc2V0ID0gc2xpZGUuc3dpcGVyU2xpZGVPZmZzZXQ7XG5cbiAgICBpZiAocGFyYW1zLmNzc01vZGUgJiYgcGFyYW1zLmNlbnRlcmVkU2xpZGVzKSB7XG4gICAgICBzbGlkZU9mZnNldCAtPSBzbGlkZXNbMF0uc3dpcGVyU2xpZGVPZmZzZXQ7XG4gICAgfVxuXG4gICAgY29uc3Qgc2xpZGVQcm9ncmVzcyA9IChvZmZzZXRDZW50ZXIgKyAocGFyYW1zLmNlbnRlcmVkU2xpZGVzID8gc3dpcGVyLm1pblRyYW5zbGF0ZSgpIDogMCkgLSBzbGlkZU9mZnNldCkgLyAoc2xpZGUuc3dpcGVyU2xpZGVTaXplICsgcGFyYW1zLnNwYWNlQmV0d2Vlbik7XG4gICAgY29uc3Qgb3JpZ2luYWxTbGlkZVByb2dyZXNzID0gKG9mZnNldENlbnRlciAtIHNuYXBHcmlkWzBdICsgKHBhcmFtcy5jZW50ZXJlZFNsaWRlcyA/IHN3aXBlci5taW5UcmFuc2xhdGUoKSA6IDApIC0gc2xpZGVPZmZzZXQpIC8gKHNsaWRlLnN3aXBlclNsaWRlU2l6ZSArIHBhcmFtcy5zcGFjZUJldHdlZW4pO1xuICAgIGNvbnN0IHNsaWRlQmVmb3JlID0gLShvZmZzZXRDZW50ZXIgLSBzbGlkZU9mZnNldCk7XG4gICAgY29uc3Qgc2xpZGVBZnRlciA9IHNsaWRlQmVmb3JlICsgc3dpcGVyLnNsaWRlc1NpemVzR3JpZFtpXTtcbiAgICBjb25zdCBpc1Zpc2libGUgPSBzbGlkZUJlZm9yZSA+PSAwICYmIHNsaWRlQmVmb3JlIDwgc3dpcGVyLnNpemUgLSAxIHx8IHNsaWRlQWZ0ZXIgPiAxICYmIHNsaWRlQWZ0ZXIgPD0gc3dpcGVyLnNpemUgfHwgc2xpZGVCZWZvcmUgPD0gMCAmJiBzbGlkZUFmdGVyID49IHN3aXBlci5zaXplO1xuXG4gICAgaWYgKGlzVmlzaWJsZSkge1xuICAgICAgc3dpcGVyLnZpc2libGVTbGlkZXMucHVzaChzbGlkZSk7XG4gICAgICBzd2lwZXIudmlzaWJsZVNsaWRlc0luZGV4ZXMucHVzaChpKTtcbiAgICAgIHNsaWRlcy5lcShpKS5hZGRDbGFzcyhwYXJhbXMuc2xpZGVWaXNpYmxlQ2xhc3MpO1xuICAgIH1cblxuICAgI
15HNsaWRlLnByb2dyZXNzID0gcnRsID8gLXNsaWRlUHJvZ3Jlc3MgOiBzbGlkZVByb2dyZXNzO1xuICAgIHNsaWRlLm9yaWdpbmFsUHJvZ3Jlc3MgPSBydGwgPyAtb3JpZ2luYWxTbGlkZVByb2dyZXNzIDogb3JpZ2luYWxTbGlkZVByb2dyZXNzO1xuICB9XG5cbiAgc3dpcGVyLnZpc2libGVTbGlkZXMgPSAkKHN3aXBlci52aXNpYmxlU2xpZGVzKTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1cGRhdGVQcm9ncmVzcyh0cmFuc2xhdGUpIHtcbiAgY29uc3Qgc3dpcGVyID0gdGhpcztcblxuICBpZiAodHlwZW9mIHRyYW5zbGF0ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBjb25zdCBtdWx0aXBsaWVyID0gc3dpcGVyLnJ0bFRyYW5zbGF0ZSA/IC0xIDogMTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5cbiAgICB0cmFuc2xhdGUgPSBzd2lwZXIgJiYgc3dpcGVyLnRyYW5zbGF0ZSAmJiBzd2lwZXIudHJhbnNsYXRlICogbXVsdGlwbGllciB8fCAwO1xuICB9XG5cbiAgY29uc3QgcGFyYW1zID0gc3dpcGVyLnBhcmFtcztcbiAgY29uc3QgdHJhbnNsYXRlc0RpZmYgPSBzd2lwZXIubWF4VHJhbnNsYXRlKCkgLSBzd2lwZXIubWluVHJhbnNsYXRlKCk7XG4gIGxldCB7XG4gICAgcHJvZ3Jlc3MsXG4gICAgaXNCZWdpbm5pbmcsXG4gICAgaXNFbmRcbiAgfSA9IHN3aXBlcjtcbiAgY29uc3Qgd2FzQmVnaW5uaW5nID0gaXNCZWdpbm5pbmc7XG4gIGNvbnN0IHdhc0VuZCA9IGlzRW5kO1xuXG4gIGlmICh0cmFuc2xhdGVzRGlmZiA9PT0gMCkge1xuICAgIHByb2dyZXNzID0gMDtcbiAgICBpc0JlZ2lubmluZyA9IHRydWU7XG4gICAgaXNFbmQgPSB0cnVlO1xuICB9IGVsc2Uge1xuICAgIHByb2dyZXNzID0gKHRyYW5zbGF0ZSAtIHN3aXBlci5taW5UcmFuc2xhdGUoKSkgLyB0cmFuc2xhdGVzRGlmZjtcbiAgICBpc0JlZ2lubmluZyA9IHByb2dyZXNzIDw9IDA7XG4gICAgaXNFbmQgPSBwcm9ncmVzcyA+PSAxO1xuICB9XG5cbiAgT2JqZWN0LmFzc2lnbihzd2lwZXIsIHtcbiAgICBwcm9ncmVzcyxcbiAgICBpc0JlZ2lubmluZyxcbiAgICBpc0VuZFxuICB9KTtcbiAgaWYgKHBhcmFtcy53YXRjaFNsaWRlc1Byb2dyZXNzIHx8IHBhcmFtcy5jZW50ZXJlZFNsaWRlcyAmJiBwYXJhbXMuYXV0b0hlaWdodCkgc3dpcGVyLnVwZGF0ZVNsaWRlc1Byb2dyZXNzKHRyYW5zbGF0ZSk7XG5cbiAgaWYgKGlzQmVnaW5uaW5nICYmICF3YXNCZWdpbm5pbmcpIHtcbiAgICBzd2lwZXIuZW1pdCgncmVhY2hCZWdpbm5pbmcgdG9FZGdlJyk7XG4gIH1cblxuICBpZiAoaXNFbmQgJiYgIXdhc0VuZCkge1xuICAgIHN3aXBlci5lbWl0KCdyZWFjaEVuZCB0b0VkZ2UnKTtcbiAgfVxuXG4gIGlmICh3YXNCZWdpbm5pbmcgJiYgIWlzQmVnaW5uaW5nIHx8IHdhc0VuZCAmJiAhaXNFbmQpIHtcbiAgICBzd2lwZXIuZW1pdCgnZnJvbUVkZ2UnKTtcbiAgfVxuXG4gIHN3aXBlci5lbWl0KCdwcm9ncmVzcycsIHByb2dyZXNzKTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1cGRhdGVTbGlkZXNDbGFzc2VzKCkge1xuICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICBjb25zdCB7XG4gICAgc2xpZGVzLFxuICAgIHBhcmFtcyxcbiAgICAkd3JhcHBlckVsLFxuICAgIGFjdGl2ZUluZGV4LFxuICAgIHJlYWxJbmRleFxuICB9ID0gc3dpcGVyO1xuICBjb25zdCBpc1ZpcnR1YWwgPSBzd2lwZXIudmlydHVhbCAmJiBwYXJhbXMudmlydHVhbC5lbmFibGVkO1xuICBzbGlkZXMucmVtb3ZlQ2xhc3MoYCR7cGFyYW1zLnNsaWRlQWN0aXZlQ2xhc3N9ICR7cGFyYW1zLnNsaWRlTmV4dENsYXNzfSAke3BhcmFtcy5zbGlkZVByZXZDbGFzc30gJHtwYXJhbXMuc2xpZGVEdXBsaWNhdGVBY3RpdmVDbGFzc30gJHtwYXJhbXMuc2xpZGVEdXBsaWNhdGVOZXh0Q2xhc3N9ICR7cGFyYW1zLnNsaWRlRHVwbGljYXRlUHJldkNsYXNzfWApO1xuICBsZXQgYWN0aXZlU2xpZGU7XG5cbiAgaWYgKGlzVmlydHVhbCkge1xuICAgIGFjdGl2ZVNsaWRlID0gc3dpcGVyLiR3cmFwcGVyRWwuZmluZChgLiR7cGFyYW1zLnNsaWRlQ2xhc3N9W2RhdGEtc3dpcGVyLXNsaWRlLWluZGV4PVwiJHthY3RpdmVJbmRleH1cIl1gKTtcbiAgfSBlbHNlIHtcbiAgICBhY3RpdmVTbGlkZSA9IHNsaWRlcy5lcShhY3RpdmVJbmRleCk7XG4gIH0gLy8gQWN0aXZlIGNsYXNzZXNcblxuXG4gIGFjdGl2ZVNsaWRlLmFkZENsYXNzKHBhcmFtcy5zbGlkZUFjdGl2ZUNsYXNzKTtcblxuICBpZiAocGFyYW1zLmxvb3ApIHtcbiAgICAvLyBEdXBsaWNhdGUgdG8gYWxsIGxvb3BlZCBzbGlkZXNcbiAgICBpZiAoYWN0aXZlU2xpZGUuaGFzQ2xhc3MocGFyYW1zLnNsaWRlRHVwbGljYXRlQ2xhc3MpKSB7XG4gICAgICAkd3JhcHBlckVsLmNoaWxkcmVuKGAuJHtwYXJhbXMuc2xpZGVDbGFzc306bm90KC4ke3BhcmFtcy5zbGlkZUR1cGxpY2F0ZUNsYXNzfSlbZGF0YS1zd2lwZXItc2xpZGUtaW5kZXg9XCIke3JlYWxJbmRleH1cIl1gKS5hZGRDbGFzcyhwYXJhbXMuc2xpZGVEdXBsaWNhdGVBY3RpdmVDbGFzcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICR3cmFwcGVyRWwuY2hpbGRyZW4oYC4ke3BhcmFtcy5zbGlkZUNsYXNzfS4ke3BhcmFtcy5zbGlkZUR1cGxpY2F0ZUNsYXNzfVtkYXRhLXN3aXBlci1zbGlkZS1pbmRleD1cIiR7cmVhbEluZGV4fVwiXWApLmFkZENsYXNzKHBhcmFtcy5zbGlkZUR1cGxpY2F0ZUFjdGl2ZUNsYXNzKTtcbiAgICB9XG4gIH0gLy8gTmV4dCBTbGlkZVxuXG5cbiAgbGV0IG5leHRTbGlkZSA9IGFjdGl2ZVNsaWRlLm5leHRBbGwoYC4ke3BhcmFtcy5zbGlkZUNsYXNzfWApLmVxKDApLmFkZENsYXNzKHBhcmFtcy5zbGlkZU5leHRDbGFzcyk7XG5cbiAgaWYgKHBhcmFtcy5sb29wICYmIG5leHRTbGlkZS5sZW5ndGggPT09IDApIHtcbiAgICBuZXh0U2xpZGUgPSBzbGlkZXMuZXEoMCk7XG4gICAgbmV4dFNsaWRlLmFkZENsYXNzKHBhcmFtcy5zbGlkZU5leHRDbGFzcyk7XG4gIH0gLy8gUHJldiBTbGlkZVxuXG5cbiAgbGV0IHByZXZTbGlkZSA9IGFjdGl2ZVNsaWRlLnByZXZBbGwoYC4ke3BhcmFtcy5zbGlkZUNsYXNzfWApLmVxKDApLmFkZENsYXNzKHBhcmFtcy5zbGlkZVByZXZDbGFzcyk7XG5cbiAgaWYgKHBhcmFtcy5sb29w
15ICYmIHByZXZTbGlkZS5sZW5ndGggPT09IDApIHtcbiAgICBwcmV2U2xpZGUgPSBzbGlkZXMuZXEoLTEpO1xuICAgIHByZXZTbGlkZS5hZGRDbGFzcyhwYXJhbXMuc2xpZGVQcmV2Q2xhc3MpO1xuICB9XG5cbiAgaWYgKHBhcmFtcy5sb29wKSB7XG4gICAgLy8gRHVwbGljYXRlIHRvIGFsbCBsb29wZWQgc2xpZGVzXG4gICAgaWYgKG5leHRTbGlkZS5oYXNDbGFzcyhwYXJhbXMuc2xpZGVEdXBsaWNhdGVDbGFzcykpIHtcbiAgICAgICR3cmFwcGVyRWwuY2hpbGRyZW4oYC4ke3BhcmFtcy5zbGlkZUNsYXNzfTpub3QoLiR7cGFyYW1zLnNsaWRlRHVwbGljYXRlQ2xhc3N9KVtkYXRhLXN3aXBlci1zbGlkZS1pbmRleD1cIiR7bmV4dFNsaWRlLmF0dHIoJ2RhdGEtc3dpcGVyLXNsaWRlLWluZGV4Jyl9XCJdYCkuYWRkQ2xhc3MocGFyYW1zLnNsaWRlRHVwbGljYXRlTmV4dENsYXNzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgJHdyYXBwZXJFbC5jaGlsZHJlbihgLiR7cGFyYW1zLnNsaWRlQ2xhc3N9LiR7cGFyYW1zLnNsaWRlRHVwbGljYXRlQ2xhc3N9W2RhdGEtc3dpcGVyLXNsaWRlLWluZGV4PVwiJHtuZXh0U2xpZGUuYXR0cignZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgnKX1cIl1gKS5hZGRDbGFzcyhwYXJhbXMuc2xpZGVEdXBsaWNhdGVOZXh0Q2xhc3MpO1xuICAgIH1cblxuICAgIGlmIChwcmV2U2xpZGUuaGFzQ2xhc3MocGFyYW1zLnNsaWRlRHVwbGljYXRlQ2xhc3MpKSB7XG4gICAgICAkd3JhcHBlckVsLmNoaWxkcmVuKGAuJHtwYXJhbXMuc2xpZGVDbGFzc306bm90KC4ke3BhcmFtcy5zbGlkZUR1cGxpY2F0ZUNsYXNzfSlbZGF0YS1zd2lwZXItc2xpZGUtaW5kZXg9XCIke3ByZXZTbGlkZS5hdHRyKCdkYXRhLXN3aXBlci1zbGlkZS1pbmRleCcpfVwiXWApLmFkZENsYXNzKHBhcmFtcy5zbGlkZUR1cGxpY2F0ZVByZXZDbGFzcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICR3cmFwcGVyRWwuY2hpbGRyZW4oYC4ke3BhcmFtcy5zbGlkZUNsYXNzfS4ke3BhcmFtcy5zbGlkZUR1cGxpY2F0ZUNsYXNzfVtkYXRhLXN3aXBlci1zbGlkZS1pbmRleD1cIiR7cHJldlNsaWRlLmF0dHIoJ2RhdGEtc3dpcGVyLXNsaWRlLWluZGV4Jyl9XCJdYCkuYWRkQ2xhc3MocGFyYW1zLnNsaWRlRHVwbGljYXRlUHJldkNsYXNzKTtcbiAgICB9XG4gIH1cblxuICBzd2lwZXIuZW1pdFNsaWRlc0NsYXNzZXMoKTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1cGRhdGVBY3RpdmVJbmRleChuZXdBY3RpdmVJbmRleCkge1xuICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICBjb25zdCB0cmFuc2xhdGUgPSBzd2lwZXIucnRsVHJhbnNsYXRlID8gc3dpcGVyLnRyYW5zbGF0ZSA6IC1zd2lwZXIudHJhbnNsYXRlO1xuICBjb25zdCB7XG4gICAgc2xpZGVzR3JpZCxcbiAgICBzbmFwR3JpZCxcbiAgICBwYXJhbXMsXG4gICAgYWN0aXZlSW5kZXg6IHByZXZpb3VzSW5kZXgsXG4gICAgcmVhbEluZGV4OiBwcmV2aW91c1JlYWxJbmRleCxcbiAgICBzbmFwSW5kZXg6IHByZXZpb3VzU25hcEluZGV4XG4gIH0gPSBzd2lwZXI7XG4gIGxldCBhY3RpdmVJbmRleCA9IG5ld0FjdGl2ZUluZGV4O1xuICBsZXQgc25hcEluZGV4O1xuXG4gIGlmICh0eXBlb2YgYWN0aXZlSW5kZXggPT09ICd1bmRlZmluZWQnKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzbGlkZXNHcmlkLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBpZiAodHlwZW9mIHNsaWRlc0dyaWRbaSArIDFdICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBpZiAodHJhbnNsYXRlID49IHNsaWRlc0dyaWRbaV0gJiYgdHJhbnNsYXRlIDwgc2xpZGVzR3JpZFtpICsgMV0gLSAoc2xpZGVzR3JpZFtpICsgMV0gLSBzbGlkZXNHcmlkW2ldKSAvIDIpIHtcbiAgICAgICAgICBhY3RpdmVJbmRleCA9IGk7XG4gICAgICAgIH0gZWxzZSBpZiAodHJhbnNsYXRlID49IHNsaWRlc0dyaWRbaV0gJiYgdHJhbnNsYXRlIDwgc2xpZGVzR3JpZFtpICsgMV0pIHtcbiAgICAgICAgICBhY3RpdmVJbmRleCA9IGkgKyAxO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHRyYW5zbGF0ZSA+PSBzbGlkZXNHcmlkW2ldKSB7XG4gICAgICAgIGFjdGl2ZUluZGV4ID0gaTtcbiAgICAgIH1cbiAgICB9IC8vIE5vcm1hbGl6ZSBzbGlkZUluZGV4XG5cblxuICAgIGlmIChwYXJhbXMubm9ybWFsaXplU2xpZGVJbmRleCkge1xuICAgICAgaWYgKGFjdGl2ZUluZGV4IDwgMCB8fCB0eXBlb2YgYWN0aXZlSW5kZXggPT09ICd1bmRlZmluZWQnKSBhY3RpdmVJbmRleCA9IDA7XG4gICAgfVxuICB9XG5cbiAgaWYgKHNuYXBHcmlkLmluZGV4T2YodHJhbnNsYXRlKSA+PSAwKSB7XG4gICAgc25hcEluZGV4ID0gc25hcEdyaWQuaW5kZXhPZih0cmFuc2xhdGUpO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHNraXAgPSBNYXRoLm1pbihwYXJhbXMuc2xpZGVzUGVyR3JvdXBTa2lwLCBhY3RpdmVJbmRleCk7XG4gICAgc25hcEluZGV4ID0gc2tpcCArIE1hdGguZmxvb3IoKGFjdGl2ZUluZGV4IC0gc2tpcCkgLyBwYXJhbXMuc2xpZGVzUGVyR3JvdXApO1xuICB9XG5cbiAgaWYgKHNuYXBJbmRleCA+PSBzbmFwR3JpZC5sZW5ndGgpIHNuYXBJbmRleCA9IHNuYXBHcmlkLmxlbmd0aCAtIDE7XG5cbiAgaWYgKGFjdGl2ZUluZGV4ID09PSBwcmV2aW91c0luZGV4KSB7XG4gICAgaWYgKHNuYXBJbmRleCAhPT0gcHJldmlvdXNTbmFwSW5kZXgpIHtcbiAgICAgIHN3aXBlci5zbmFwSW5kZXggPSBzbmFwSW5kZXg7XG4gICAgICBzd2lwZXIuZW1pdCgnc25hcEluZGV4Q2hhbmdlJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuO1xuICB9IC8vIEdldCByZWFsIGluZGV4XG5cblxuICBjb25zdCByZWFsSW5kZXggPSBwYXJzZUludChzd2lwZXIuc2xpZGVzLmVxKGFjdGl2ZUluZGV4KS5hdHRyKCdkYXRhLXN3aXBlci1zbGlkZS1pbmRleCcpIHx8IGFjdGl2ZUluZGV4LCAxMCk7XG4gIE9iamVjdC5hc3NpZ24oc3dpcGVyLCB7XG4gICAgc25hcEluZGV4LFxuICAgIHJlYWxJbmRleCxcbiAgICBwcmV2aW91c0luZGV4LFxuICAgIGFjdGl2ZUluZGV4XG4gIH0pO1xuICBzd2lwZXIuZW1pdCgnYWN0aXZlSW5kZXhDaGFuZ2UnKTtcbiAgc3dpcGVyLmVtaXQoJ3NuYXBJbmRleENoYW5nZScpO1xuXG4gIGlmIChwcmV2aW91c1JlYWxJbmRleCAhPT0gcmVhbEluZGV4KSB7XG4gICAgc3dpcGVyLmVtaXQoJ3JlYWxJbmRleENoYW5nZScpO1xuICB9XG5cbiAgaWYgKHN3aXBlci5pbml0aWFsaXplZCB8fCBzd2lwZXIucGFyYW1zLnJ1bkNhbGxiYWNrc09uSW5pdCkge1xuICAgIHN3aXBlci5lbWl0KCdzbGlkZUNoYW5nZScpO1xuICB9XG59IiwiaW1wb3J0ICQgZnJvbSAnLi4vLi4vc2hhcmVkL2RvbS5qcyc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1cGRhdGVDbGlja2VkU2xpZGUoZSkge1xuICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICBjb25zdCBwYXJhbXMgPSBzd2lwZXIucGFyYW1zO1xuICBjb25zdCBzbGlkZSA9ICQoZSkuY2xvc2VzdChgLiR7cGFyYW1zLnNsaWRlQ2xhc3N9YClbMF07XG4gIGxldCBzbGlkZUZvdW5kID0gZmFsc2U7XG4gIGxldCBzbGlkZUluZGV4O1xuXG4gIGlmIChzbGlkZSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3dpcGVyLnNsaWRlcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgaWYgKHN3aXBlci5zbGlkZXNbaV0gPT09IHNsaWRlKSB7XG4gICAgICAgI
15HNsaWRlRm91bmQgPSB0cnVlO1xuICAgICAgICBzbGlkZUluZGV4ID0gaTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKHNsaWRlICYmIHNsaWRlRm91bmQpIHtcbiAgICBzd2lwZXIuY2xpY2tlZFNsaWRlID0gc2xpZGU7XG5cbiAgICBpZiAoc3dpcGVyLnZpcnR1YWwgJiYgc3dpcGVyLnBhcmFtcy52aXJ0dWFsLmVuYWJsZWQpIHtcbiAgICAgIHN3aXBlci5jbGlja2VkSW5kZXggPSBwYXJzZUludCgkKHNsaWRlKS5hdHRyKCdkYXRhLXN3aXBlci1zbGlkZS1pbmRleCcpLCAxMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN3aXBlci5jbGlja2VkSW5kZXggPSBzbGlkZUluZGV4O1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBzd2lwZXIuY2xpY2tlZFNsaWRlID0gdW5kZWZpbmVkO1xuICAgIHN3aXBlci5jbGlja2VkSW5kZXggPSB1bmRlZmluZWQ7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHBhcmFtcy5zbGlkZVRvQ2xpY2tlZFNsaWRlICYmIHN3aXBlci5jbGlja2VkSW5kZXggIT09IHVuZGVmaW5lZCAmJiBzd2lwZXIuY2xpY2tlZEluZGV4ICE9PSBzd2lwZXIuYWN0aXZlSW5kZXgpIHtcbiAgICBzd2lwZXIuc2xpZGVUb0NsaWNrZWRTbGlkZSgpO1xuICB9XG59IiwiaW1wb3J0IGdldFRyYW5zbGF0ZSBmcm9tICcuL2dldFRyYW5zbGF0ZS5qcyc7XG5pbXBvcnQgc2V0VHJhbnNsYXRlIGZyb20gJy4vc2V0VHJhbnNsYXRlLmpzJztcbmltcG9ydCBtaW5UcmFuc2xhdGUgZnJvbSAnLi9taW5UcmFuc2xhdGUuanMnO1xuaW1wb3J0IG1heFRyYW5zbGF0ZSBmcm9tICcuL21heFRyYW5zbGF0ZS5qcyc7XG5pbXBvcnQgdHJhbnNsYXRlVG8gZnJvbSAnLi90cmFuc2xhdGVUby5qcyc7XG5leHBvcnQgZGVmYXVsdCB7XG4gIGdldFRyYW5zbGF0ZSxcbiAgc2V0VHJhbnNsYXRlLFxuICBtaW5UcmFuc2xhdGUsXG4gIG1heFRyYW5zbGF0ZSxcbiAgdHJhbnNsYXRlVG9cbn07IiwiaW1wb3J0IHsgZ2V0VHJhbnNsYXRlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3V0aWxzLmpzJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFN3aXBlclRyYW5zbGF0ZShheGlzID0gdGhpcy5pc0hvcml6b250YWwoKSA/ICd4JyA6ICd5Jykge1xuICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICBjb25zdCB7XG4gICAgcGFyYW1zLFxuICAgIHJ0bFRyYW5zbGF0ZTogcnRsLFxuICAgIHRyYW5zbGF0ZSxcbiAgICAkd3JhcHBlckVsXG4gIH0gPSBzd2lwZXI7XG5cbiAgaWYgKHBhcmFtcy52aXJ0dWFsVHJhbnNsYXRlKSB7XG4gICAgcmV0dXJuIHJ0bCA/IC10cmFuc2xhdGUgOiB0cmFuc2xhdGU7XG4gIH1cblxuICBpZiAocGFyYW1zLmNzc01vZGUpIHtcbiAgICByZXR1cm4gdHJhbnNsYXRlO1xuICB9XG5cbiAgbGV0IGN1cnJlbnRUcmFuc2xhdGUgPSBnZXRUcmFuc2xhdGUoJHdyYXBwZXJFbFswXSwgYXhpcyk7XG4gIGlmIChydGwpIGN1cnJlbnRUcmFuc2xhdGUgPSAtY3VycmVudFRyYW5zbGF0ZTtcbiAgcmV0dXJuIGN1cnJlbnRUcmFuc2xhdGUgfHwgMDtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZXRUcmFuc2xhdGUodHJhbnNsYXRlLCBieUNvbnRyb2xsZXIpIHtcbiAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgY29uc3Qge1xuICAgIHJ0bFRyYW5zbGF0ZTogcnRsLFxuICAgIHBhcmFtcyxcbiAgICAkd3JhcHBlckVsLFxuICAgIHdyYXBwZXJFbCxcbiAgICBwcm9ncmVzc1xuICB9ID0gc3dpcGVyO1xuICBsZXQgeCA9IDA7XG4gIGxldCB5ID0gMDtcbiAgY29uc3QgeiA9IDA7XG5cbiAgaWYgKHN3aXBlci5pc0hvcml6b250YWwoKSkge1xuICAgIHggPSBydGwgPyAtdHJhbnNsYXRlIDogdHJhbnNsYXRlO1xuICB9IGVsc2Uge1xuICAgIHkgPSB0cmFuc2xhdGU7XG4gIH1cblxuICBpZiAocGFyYW1zLnJvdW5kTGVuZ3Rocykge1xuICAgIHggPSBNYXRoLmZsb29yKHgpO1xuICAgIHkgPSBNYXRoLmZsb29yKHkpO1xuICB9XG5cbiAgaWYgKHBhcmFtcy5jc3NNb2RlKSB7XG4gICAgd3JhcHBlckVsW3N3aXBlci5pc0hvcml6b250YWwoKSA/ICdzY3JvbGxMZWZ0JyA6ICdzY3JvbGxUb3AnXSA9IHN3aXBlci5pc0hvcml6b250YWwoKSA/IC14IDogLXk7XG4gIH0gZWxzZSBpZiAoIXBhcmFtcy52aXJ0dWFsVHJhbnNsYXRlKSB7XG4gICAgJHdyYXBwZXJFbC50cmFuc2Zvcm0oYHRyYW5zbGF0ZTNkKCR7eH1weCwgJHt5fXB4LCAke3p9cHgpYCk7XG4gIH1cblxuICBzd2lwZXIucHJldmlvdXNUcmFuc2xhdGUgPSBzd2lwZXIudHJhbnNsYXRlO1xuICBzd2lwZXIudHJhbnNsYXRlID0gc3dpcGVyLmlzSG9yaXpvbnRhbCgpID8geCA6IHk7IC8vIENoZWNrIGlmIHdlIG5lZWQgdG8gdXBkYXRlIHByb2dyZXNzXG5cbiAgbGV0IG5ld1Byb2dyZXNzO1xuICBjb25zdCB0cmFuc2xhdGVzRGlmZiA9IHN3aXBlci5tYXhUcmFuc2xhdGUoKSAtIHN3aXBlci5taW5UcmFuc2xhdGUoKTtcblxuICBpZiAodHJhbnNsYXRlc0RpZmYgPT09IDApIHtcbiAgICBuZXdQcm9ncmVzcyA9IDA7XG4gIH0gZWxzZSB7XG4gICAgbmV3UHJvZ3Jlc3MgPSAodHJhbnNsYXRlIC0gc3dpcGVyLm1pblRyYW5zbGF0ZSgpKSAvIHRyYW5zbGF0ZXNEaWZmO1xuICB9XG5cbiAgaWYgKG5ld1Byb2dyZXNzICE9PSBwcm9ncmVzcykge1xuICAgIHN3aXBlci51cGRhdGVQcm9ncmVzcyh0cmFuc2xhdGUpO1xuICB9XG5cbiAgc3dpcGVyLmVtaXQoJ3NldFRyYW5zbGF0ZScsIHN3aXBlci50cmFuc2xhdGUsIGJ5Q29udHJvbGxlcik7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWluVHJhbnNsYXRlKCkge1xuICByZXR1cm4gLXRoaXMuc25hcEdyaWRbMF07XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWF4VHJhbnNsYXRlKCkge1xuICByZXR1cm4gLXRoaXMuc25hcEdyaWRbdGhpcy5zbmFwR3JpZC5sZW5ndGggLSAxXTtcbn0iLCJpbXBvcnQgeyBhbmltYXRlQ1NTTW9kZVNjcm9sbCB9IGZyb20gJy4uLy4uL3NoYXJlZC91dGlscy5qcyc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0cmFuc2xhdGVUbyh0cmFuc2xhdGUgPSAwLCBzcGVlZCA9IHRoaXMucGFyYW1zLnNwZWVkLCBydW5DYWxsYmFja3MgPSB0cnVlLCB0cmFuc2xhdGVCb3VuZHMgPSB0cnVlLCBpbnRlcm5hbCkge1xuICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICBjb25zdCB7XG4gICAgcGFyYW1zLFxuICAgIHdyYXBwZXJFbFxuICB9ID0gc3dpcGVyO1xuXG4gIGlmIChzd2lwZXIuYW5pbWF0aW5nICYmIHBhcmFtcy5wcmV2ZW50SW50ZXJhY3Rpb25PblRyYW5zaXRpb24pIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBtaW5UcmFuc2xhdGUgPSBzd2lwZXIubWluVHJhbnNsYXRlKCk7XG4gIGNvbnN0IG1heFRyYW5zbGF0ZSA9IHN3aXBlci5tYXhUcmFuc2xhdGUoKTtcbiAgbGV0IG5ld1RyYW5zbGF0ZTtcbiAgaWYgKHRyYW5zbGF0ZUJvdW5kcyAmJiB0cmFuc2xhdGUgPiBtaW5UcmFuc2xhdGUpIG5ld1RyYW5zbGF0ZSA9IG1pblRyYW5zbGF0ZTtlbHNlIGlmICh0cmFuc2xhdGVCb3VuZHMgJiYgdHJhbnNsYXRlIDwgbWF4VHJhbnNsYXRlKSBuZXdUcmFuc2xhdGUgPSBtYXhUcmFuc2xhdGU7ZWxzZSBuZXdUcmFuc2xhdGUgPSB0cmFuc2xhdGU7IC8vIFVwZGF0ZSBwcm9ncmVzc1xuXG4gIHN3aXBlci51cGRhdGVQcm9ncmVzcyhuZXdUcmFuc2xhdGUpO1xuXG4gIGlmIChwYXJhbXMuY3NzTW9kZSkge1xuICAgIGNvbnN0IGlzSCA9IHN3aXBlci5pc0hvcml6b250YWwoKTtcblxuICAgIGlmIChzcGVlZCA9PT0gMCkge1xuICAgICAgd3JhcHBlckVsW2lzSCA/ICdzY3JvbGxMZWZ0JyA6ICdzY3JvbGxUb3AnXSA9IC1uZXdUcmFuc2xhdGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghc3dpcGVyLnN1cHBvcnQuc21vb3RoU2Nyb2xsKSB7XG4gICAgICAgIGFuaW1hdGVDU1NNb2RlU2Nyb2xsKHtcbiAgICAgICAgICBzd2lwZXIsXG4gICAgICAgICAgdGFyZ2V0UG9zaXRpb246IC1uZXdUcmFuc2xhdGUsXG4gICAgICAgICAgc2lkZTogaXNIID8gJ2xlZnQnIDogJ3RvcCdcbiAgICAgICAgfSk7XG4gICAgICAgI
15HJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICB3cmFwcGVyRWwuc2Nyb2xsVG8oe1xuICAgICAgICBbaXNIID8gJ2xlZnQnIDogJ3RvcCddOiAtbmV3VHJhbnNsYXRlLFxuICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCdcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKHNwZWVkID09PSAwKSB7XG4gICAgc3dpcGVyLnNldFRyYW5zaXRpb24oMCk7XG4gICAgc3dpcGVyLnNldFRyYW5zbGF0ZShuZXdUcmFuc2xhdGUpO1xuXG4gICAgaWYgKHJ1bkNhbGxiYWNrcykge1xuICAgICAgc3dpcGVyLmVtaXQoJ2JlZm9yZVRyYW5zaXRpb25TdGFydCcsIHNwZWVkLCBpbnRlcm5hbCk7XG4gICAgICBzd2lwZXIuZW1pdCgndHJhbnNpdGlvbkVuZCcpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBzd2lwZXIuc2V0VHJhbnNpdGlvbihzcGVlZCk7XG4gICAgc3dpcGVyLnNldFRyYW5zbGF0ZShuZXdUcmFuc2xhdGUpO1xuXG4gICAgaWYgKHJ1bkNhbGxiYWNrcykge1xuICAgICAgc3dpcGVyLmVtaXQoJ2JlZm9yZVRyYW5zaXRpb25TdGFydCcsIHNwZWVkLCBpbnRlcm5hbCk7XG4gICAgICBzd2lwZXIuZW1pdCgndHJhbnNpdGlvblN0YXJ0Jyk7XG4gICAgfVxuXG4gICAgaWYgKCFzd2lwZXIuYW5pbWF0aW5nKSB7XG4gICAgICBzd2lwZXIuYW5pbWF0aW5nID0gdHJ1ZTtcblxuICAgICAgaWYgKCFzd2lwZXIub25UcmFuc2xhdGVUb1dyYXBwZXJUcmFuc2l0aW9uRW5kKSB7XG4gICAgICAgIHN3aXBlci5vblRyYW5zbGF0ZVRvV3JhcHBlclRyYW5zaXRpb25FbmQgPSBmdW5jdGlvbiB0cmFuc2l0aW9uRW5kKGUpIHtcbiAgICAgICAgICBpZiAoIXN3aXBlciB8fCBzd2lwZXIuZGVzdHJveWVkKSByZXR1cm47XG4gICAgICAgICAgaWYgKGUudGFyZ2V0ICE9PSB0aGlzKSByZXR1cm47XG4gICAgICAgICAgc3dpcGVyLiR3cmFwcGVyRWxbMF0ucmVtb3ZlRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIHN3aXBlci5vblRyYW5zbGF0ZVRvV3JhcHBlclRyYW5zaXRpb25FbmQpO1xuICAgICAgICAgIHN3aXBlci4kd3JhcHBlckVsWzBdLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3dlYmtpdFRyYW5zaXRpb25FbmQnLCBzd2lwZXIub25UcmFuc2xhdGVUb1dyYXBwZXJUcmFuc2l0aW9uRW5kKTtcbiAgICAgICAgICBzd2lwZXIub25UcmFuc2xhdGVUb1dyYXBwZXJUcmFuc2l0aW9uRW5kID0gbnVsbDtcbiAgICAgICAgICBkZWxldGUgc3dpcGVyLm9uVHJhbnNsYXRlVG9XcmFwcGVyVHJhbnNpdGlvbkVuZDtcblxuICAgICAgICAgIGlmIChydW5DYWxsYmFja3MpIHtcbiAgICAgICAgICAgIHN3aXBlci5lbWl0KCd0cmFuc2l0aW9uRW5kJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBzd2lwZXIuJHdyYXBwZXJFbFswXS5hZGRFdmVudExpc3RlbmVyKCd0cmFuc2l0aW9uZW5kJywgc3dpcGVyLm9uVHJhbnNsYXRlVG9XcmFwcGVyVHJhbnNpdGlvbkVuZCk7XG4gICAgICBzd2lwZXIuJHdyYXBwZXJFbFswXS5hZGRFdmVudExpc3RlbmVyKCd3ZWJraXRUcmFuc2l0aW9uRW5kJywgc3dpcGVyLm9uVHJhbnNsYXRlVG9XcmFwcGVyVHJhbnNpdGlvbkVuZCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdHJhbnNpdGlvbkVtaXQoe1xuICBzd2lwZXIsXG4gIHJ1bkNhbGxiYWNrcyxcbiAgZGlyZWN0aW9uLFxuICBzdGVwXG59KSB7XG4gIGNvbnN0IHtcbiAgICBhY3RpdmVJbmRleCxcbiAgICBwcmV2aW91c0luZGV4XG4gIH0gPSBzd2lwZXI7XG4gIGxldCBkaXIgPSBkaXJlY3Rpb247XG5cbiAgaWYgKCFkaXIpIHtcbiAgICBpZiAoYWN0aXZlSW5kZXggPiBwcmV2aW91c0luZGV4KSBkaXIgPSAnbmV4dCc7ZWxzZSBpZiAoYWN0aXZlSW5kZXggPCBwcmV2aW91c0luZGV4KSBkaXIgPSAncHJldic7ZWxzZSBkaXIgPSAncmVzZXQnO1xuICB9XG5cbiAgc3dpcGVyLmVtaXQoYHRyYW5zaXRpb24ke3N0ZXB9YCk7XG5cbiAgaWYgKHJ1bkNhbGxiYWNrcyAmJiBhY3RpdmVJbmRleCAhPT0gcHJldmlvdXNJbmRleCkge1xuICAgIGlmIChkaXIgPT09ICdyZXNldCcpIHtcbiAgICAgIHN3aXBlci5lbWl0KGBzbGlkZVJlc2V0VHJhbnNpdGlvbiR7c3RlcH1gKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzd2lwZXIuZW1pdChgc2xpZGVDaGFuZ2VUcmFuc2l0aW9uJHtzdGVwfWApO1xuXG4gICAgaWYgKGRpciA9PT0gJ25leHQnKSB7XG4gICAgICBzd2lwZXIuZW1pdChgc2xpZGVOZXh0VHJhbnNpdGlvbiR7c3RlcH1gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3dpcGVyLmVtaXQoYHNsaWRlUHJldlRyYW5zaXRpb24ke3N0ZXB9YCk7XG4gICAgfVxuICB9XG59IiwiaW1wb3J0IHNsaWRlVG8gZnJvbSAnLi9zbGlkZVRvLmpzJztcbmltcG9ydCBzbGlkZVRvTG9vcCBmcm9tICcuL3NsaWRlVG9Mb29wLmpzJztcbmltcG9ydCBzbGlkZU5leHQgZnJvbSAnLi9zbGlkZU5leHQuanMnO1xuaW1wb3J0IHNsaWRlUHJldiBmcm9tICcuL3NsaWRlUHJldi5qcyc7XG5pbXBvcnQgc2xpZGVSZXNldCBmcm9tICcuL3NsaWRlUmVzZXQuanMnO1xuaW1wb3J0IHNsaWRlVG9DbG9zZXN0IGZyb20gJy4vc2xpZGVUb0Nsb3Nlc3QuanMnO1xuaW1wb3J0IHNsaWRlVG9DbGlja2VkU2xpZGUgZnJvbSAnLi9zbGlkZVRvQ2xpY2tlZFNsaWRlLmpzJztcbmV4cG9ydCBkZWZhdWx0IHtcbiAgc2xpZGVUbyxcbiAgc2xpZGVUb0xvb3AsXG4gIHNsaWRlTmV4dCxcbiAgc2xpZGVQcmV2LFxuICBzbGlkZVJlc2V0LFxuICBzbGlkZVRvQ2xvc2VzdCxcbiAgc2xpZGVUb0NsaWNrZWRTbGlkZVxufTsiLCJpbXBvcnQgeyBhbmltYXRlQ1NTTW9kZVNjcm9sbCB9IGZyb20gJy4uLy4uL3NoYXJlZC91dGlscy5qcyc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzbGlkZVRvKGluZGV4ID0gMCwgc3BlZWQgPSB0aGlzLnBhcmFtcy5zcGVlZCwgcnVuQ2FsbGJhY2tzID0gdHJ1ZSwgaW50ZXJuYWwsIGluaXRpYWwpIHtcbiAgaWYgKHR5cGVvZiBpbmRleCAhPT0gJ251bWJlcicgJiYgdHlwZW9mIGluZGV4ICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBFcnJvcihgVGhlICdpbmRleCcgYXJndW1lbnQgY2Fubm90IGhhdmUgdHlwZSBvdGhlciB0aGFuICdudW1iZXInIG9yICdzdHJpbmcnLiBbJHt0eXBlb2YgaW5kZXh9XSBnaXZlbi5gKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgaW5kZXggPT09ICdzdHJpbmcnKSB7XG4gICAgLyoqXG4gICAgICogVGhlIGBpbmRleGAgYXJndW1lbnQgY29udmVydGVkIGZyb20gYHN0cmluZ2AgdG8gYG51bWJlcmAuXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKi9cbiAgICBjb25zdCBpbmRleEFzTnVtYmVyID0gcGFyc2VJbnQoaW5kZXgsIDEwKTtcbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGBpbmRleGAgYXJndW1lbnQgaXMgYSB2YWxpZCBgbnVtYmVyYFxuICAgICAqIGFmdGVyIGJlaW5nIGNvbnZlcnRlZCBmcm9tIHRoZSBgc3RyaW5nYCB0eXBlLlxuICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAqL1xuXG4gICAgY29uc3QgaXNWYWxpZE51bWJlciA9IGlzRmluaXRlKGluZGV4QXNOdW1iZXIpO1xuXG4gICAgaWYgKCFpc1ZhbGlkTnVtYmVyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBwYXNzZWQtaW4gJ2luZGV4JyAoc3RyaW5nKSBjb3VsZG4ndCBiZSBjb252ZXJ0ZWQgdG8gJ251bWJlcicuIFske2luZGV4fV0gZ2l2ZW4uYCk7XG4gICAgfSAvLyBLbm93aW5nIHRoYXQgdGhlIGNvbnZlcnRlZCBgaW5kZXhgIGlzIGEgdmFsaWQgbnVtYmVyLFxuICAgIC8vIHdlIGNhbiB1cGRhdGUgdGhlIG9yaWdpbmFsIGFyZ3VtZW50J3MgdmFsdWUuXG5cblxuICAgIGluZGV4ID0gaW5kZXhBc051bWJlcjtcbiAgfVxuXG4gIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gIGxldCBzbGlkZUluZGV4ID0gaW5kZXg7XG4gIGlmIChzbGlkZUluZGV4IDwgMCkgc2xpZGVJbmRleCA9IDA7XG4gIGNvbnN0IHtcbiAgICBwYXJhbXMsXG4gICAgc25hcEdyaWQsXG4gICAgc2xpZGVzR3JpZCxcbiAgICBwcmV2aW91c0luZGV4LFxuICAgIGFjdGl2ZUluZGV4LFxuICAgIHJ0bFRyYW5zbGF0ZTogcnRsLFxuICAgIHdyYXBwZXJFbCxcbiAgICBlbmFibGVkXG4gIH0gPSBzd2lwZXI7XG5cbiAgaWYgKHN3aXBlci5hbmltYXRpbmcgJiYgcGFyYW1zLnByZX
15ZlbnRJbnRlcmFjdGlvbk9uVHJhbnNpdGlvbiB8fCAhZW5hYmxlZCAmJiAhaW50ZXJuYWwgJiYgIWluaXRpYWwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBza2lwID0gTWF0aC5taW4oc3dpcGVyLnBhcmFtcy5zbGlkZXNQZXJHcm91cFNraXAsIHNsaWRlSW5kZXgpO1xuICBsZXQgc25hcEluZGV4ID0gc2tpcCArIE1hdGguZmxvb3IoKHNsaWRlSW5kZXggLSBza2lwKSAvIHN3aXBlci5wYXJhbXMuc2xpZGVzUGVyR3JvdXApO1xuICBpZiAoc25hcEluZGV4ID49IHNuYXBHcmlkLmxlbmd0aCkgc25hcEluZGV4ID0gc25hcEdyaWQubGVuZ3RoIC0gMTtcbiAgY29uc3QgdHJhbnNsYXRlID0gLXNuYXBHcmlkW3NuYXBJbmRleF07IC8vIE5vcm1hbGl6ZSBzbGlkZUluZGV4XG5cbiAgaWYgKHBhcmFtcy5ub3JtYWxpemVTbGlkZUluZGV4KSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzbGlkZXNHcmlkLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBjb25zdCBub3JtYWxpemVkVHJhbnNsYXRlID0gLU1hdGguZmxvb3IodHJhbnNsYXRlICogMTAwKTtcbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWRHcmlkID0gTWF0aC5mbG9vcihzbGlkZXNHcmlkW2ldICogMTAwKTtcbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWRHcmlkTmV4dCA9IE1hdGguZmxvb3Ioc2xpZGVzR3JpZFtpICsgMV0gKiAxMDApO1xuXG4gICAgICBpZiAodHlwZW9mIHNsaWRlc0dyaWRbaSArIDFdICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBpZiAobm9ybWFsaXplZFRyYW5zbGF0ZSA+PSBub3JtYWxpemVkR3JpZCAmJiBub3JtYWxpemVkVHJhbnNsYXRlIDwgbm9ybWFsaXplZEdyaWROZXh0IC0gKG5vcm1hbGl6ZWRHcmlkTmV4dCAtIG5vcm1hbGl6ZWRHcmlkKSAvIDIpIHtcbiAgICAgICAgICBzbGlkZUluZGV4ID0gaTtcbiAgICAgICAgfSBlbHNlIGlmIChub3JtYWxpemVkVHJhbnNsYXRlID49IG5vcm1hbGl6ZWRHcmlkICYmIG5vcm1hbGl6ZWRUcmFuc2xhdGUgPCBub3JtYWxpemVkR3JpZE5leHQpIHtcbiAgICAgICAgICBzbGlkZUluZGV4ID0gaSArIDE7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAobm9ybWFsaXplZFRyYW5zbGF0ZSA+PSBub3JtYWxpemVkR3JpZCkge1xuICAgICAgICBzbGlkZUluZGV4ID0gaTtcbiAgICAgIH1cbiAgICB9XG4gIH0gLy8gRGlyZWN0aW9ucyBsb2Nrc1xuXG5cbiAgaWYgKHN3aXBlci5pbml0aWFsaXplZCAmJiBzbGlkZUluZGV4ICE9PSBhY3RpdmVJbmRleCkge1xuICAgIGlmICghc3dpcGVyLmFsbG93U2xpZGVOZXh0ICYmIHRyYW5zbGF0ZSA8IHN3aXBlci50cmFuc2xhdGUgJiYgdHJhbnNsYXRlIDwgc3dpcGVyLm1pblRyYW5zbGF0ZSgpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCFzd2lwZXIuYWxsb3dTbGlkZVByZXYgJiYgdHJhbnNsYXRlID4gc3dpcGVyLnRyYW5zbGF0ZSAmJiB0cmFuc2xhdGUgPiBzd2lwZXIubWF4VHJhbnNsYXRlKCkpIHtcbiAgICAgIGlmICgoYWN0aXZlSW5kZXggfHwgMCkgIT09IHNsaWRlSW5kZXgpIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBpZiAoc2xpZGVJbmRleCAhPT0gKHByZXZpb3VzSW5kZXggfHwgMCkgJiYgcnVuQ2FsbGJhY2tzKSB7XG4gICAgc3dpcGVyLmVtaXQoJ2JlZm9yZVNsaWRlQ2hhbmdlU3RhcnQnKTtcbiAgfSAvLyBVcGRhdGUgcHJvZ3Jlc3NcblxuXG4gIHN3aXBlci51cGRhdGVQcm9ncmVzcyh0cmFuc2xhdGUpO1xuICBsZXQgZGlyZWN0aW9uO1xuICBpZiAoc2xpZGVJbmRleCA+IGFjdGl2ZUluZGV4KSBkaXJlY3Rpb24gPSAnbmV4dCc7ZWxzZSBpZiAoc2xpZGVJbmRleCA8IGFjdGl2ZUluZGV4KSBkaXJlY3Rpb24gPSAncHJldic7ZWxzZSBkaXJlY3Rpb24gPSAncmVzZXQnOyAvLyBVcGRhdGUgSW5kZXhcblxuICBpZiAocnRsICYmIC10cmFuc2xhdGUgPT09IHN3aXBlci50cmFuc2xhdGUgfHwgIXJ0bCAmJiB0cmFuc2xhdGUgPT09IHN3aXBlci50cmFuc2xhdGUpIHtcbiAgICBzd2lwZXIudXBkYXRlQWN0aXZlSW5kZXgoc2xpZGVJbmRleCk7IC8vIFVwZGF0ZSBIZWlnaHRcblxuICAgIGlmIChwYXJhbXMuYXV0b0hlaWdodCkge1xuICAgICAgc3dpcGVyLnVwZGF0ZUF1dG9IZWlnaHQoKTtcbiAgICB9XG5cbiAgICBzd2lwZXIudXBkYXRlU2xpZGVzQ2xhc3NlcygpO1xuXG4gICAgaWYgKHBhcmFtcy5lZmZlY3QgIT09ICdzbGlkZScpIHtcbiAgICAgIHN3aXBlci5zZXRUcmFuc2xhdGUodHJhbnNsYXRlKTtcbiAgICB9XG5cbiAgICBpZiAoZGlyZWN0aW9uICE9PSAncmVzZXQnKSB7XG4gICAgICBzd2lwZXIudHJhbnNpdGlvblN0YXJ0KHJ1bkNhbGxiYWNrcywgZGlyZWN0aW9uKTtcbiAgICAgIHN3aXBlci50cmFuc2l0aW9uRW5kKHJ1bkNhbGxiYWNrcywgZGlyZWN0aW9uKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAocGFyYW1zLmNzc01vZGUpIHtcbiAgICBjb25zdCBpc0ggPSBzd2lwZXIuaXNIb3Jpem9udGFsKCk7XG4gICAgY29uc3QgdCA9IHJ0bCA/IHRyYW5zbGF0ZSA6IC10cmFuc2xhdGU7XG5cbiAgICBpZiAoc3BlZWQgPT09IDApIHtcbiAgICAgIGNvbnN0IGlzVmlydHVhbCA9IHN3aXBlci52aXJ0dWFsICYmIHN3aXBlci5wYXJhbXMudmlydHVhbC5lbmFibGVkO1xuXG4gICAgICBpZiAoaXNWaXJ0dWFsKSB7XG4gICAgICAgIHN3aXBlci53cmFwcGVyRWwuc3R5bGUuc2Nyb2xsU25hcFR5cGUgPSAnbm9uZSc7XG4gICAgICAgIHN3aXBlci5faW1tZWRpYXRlVmlydHVhbCA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIHdyYXBwZXJFbFtpc0ggPyAnc2Nyb2xsTGVmdCcgOiAnc2Nyb2xsVG9wJ10gPSB0O1xuXG4gICAgICBpZiAoaXNWaXJ0dWFsKSB7XG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgc3dpcGVyLndyYXBwZXJFbC5zdHlsZS5zY3JvbGxTbmFwVHlwZSA9ICcnO1xuICAgICAgICAgIHN3aXBlci5fc3dpcGVySW1tZWRpYXRlVmlydHVhbCA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFzd2lwZXIuc3VwcG9ydC5zbW9vdGhTY3JvbGwpIHtcbiAgICAgICAgYW5pbWF0ZUNTU01vZGVTY3JvbGwoe1xuICAgICAgICAgI
15HN3aXBlcixcbiAgICAgICAgICB0YXJnZXRQb3NpdGlvbjogdCxcbiAgICAgICAgICBzaWRlOiBpc0ggPyAnbGVmdCcgOiAndG9wJ1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIHdyYXBwZXJFbC5zY3JvbGxUbyh7XG4gICAgICAgIFtpc0ggPyAnbGVmdCcgOiAndG9wJ106IHQsXG4gICAgICAgIGJlaGF2aW9yOiAnc21vb3RoJ1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBzd2lwZXIuc2V0VHJhbnNpdGlvbihzcGVlZCk7XG4gIHN3aXBlci5zZXRUcmFuc2xhdGUodHJhbnNsYXRlKTtcbiAgc3dpcGVyLnVwZGF0ZUFjdGl2ZUluZGV4KHNsaWRlSW5kZXgpO1xuICBzd2lwZXIudXBkYXRlU2xpZGVzQ2xhc3NlcygpO1xuICBzd2lwZXIuZW1pdCgnYmVmb3JlVHJhbnNpdGlvblN0YXJ0Jywgc3BlZWQsIGludGVybmFsKTtcbiAgc3dpcGVyLnRyYW5zaXRpb25TdGFydChydW5DYWxsYmFja3MsIGRpcmVjdGlvbik7XG5cbiAgaWYgKHNwZWVkID09PSAwKSB7XG4gICAgc3dpcGVyLnRyYW5zaXRpb25FbmQocnVuQ2FsbGJhY2tzLCBkaXJlY3Rpb24pO1xuICB9IGVsc2UgaWYgKCFzd2lwZXIuYW5pbWF0aW5nKSB7XG4gICAgc3dpcGVyLmFuaW1hdGluZyA9IHRydWU7XG5cbiAgICBpZiAoIXN3aXBlci5vblNsaWRlVG9XcmFwcGVyVHJhbnNpdGlvbkVuZCkge1xuICAgICAgc3dpcGVyLm9uU2xpZGVUb1dyYXBwZXJUcmFuc2l0aW9uRW5kID0gZnVuY3Rpb24gdHJhbnNpdGlvbkVuZChlKSB7XG4gICAgICAgIGlmICghc3dpcGVyIHx8IHN3aXBlci5kZXN0cm95ZWQpIHJldHVybjtcbiAgICAgICAgaWYgKGUudGFyZ2V0ICE9PSB0aGlzKSByZXR1cm47XG4gICAgICAgIHN3aXBlci4kd3JhcHBlckVsWzBdLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCBzd2lwZXIub25TbGlkZVRvV3JhcHBlclRyYW5zaXRpb25FbmQpO1xuICAgICAgICBzd2lwZXIuJHdyYXBwZXJFbFswXS5yZW1vdmVFdmVudExpc3RlbmVyKCd3ZWJraXRUcmFuc2l0aW9uRW5kJywgc3dpcGVyLm9uU2xpZGVUb1dyYXBwZXJUcmFuc2l0aW9uRW5kKTtcbiAgICAgICAgc3dpcGVyLm9uU2xpZGVUb1dyYXBwZXJUcmFuc2l0aW9uRW5kID0gbnVsbDtcbiAgICAgICAgZGVsZXRlIHN3aXBlci5vblNsaWRlVG9XcmFwcGVyVHJhbnNpdGlvbkVuZDtcbiAgICAgICAgc3dpcGVyLnRyYW5zaXRpb25FbmQocnVuQ2FsbGJhY2tzLCBkaXJlY3Rpb24pO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICBzd2lwZXIuJHdyYXBwZXJFbFswXS5hZGRFdmVudExpc3RlbmVyKCd0cmFuc2l0aW9uZW5kJywgc3dpcGVyLm9uU2xpZGVUb1dyYXBwZXJUcmFuc2l0aW9uRW5kKTtcbiAgICBzd2lwZXIuJHdyYXBwZXJFbFswXS5hZGRFdmVudExpc3RlbmVyKCd3ZWJraXRUcmFuc2l0aW9uRW5kJywgc3dpcGVyLm9uU2xpZGVUb1dyYXBwZXJUcmFuc2l0aW9uRW5kKTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNsaWRlVG9Mb29wKGluZGV4ID0gMCwgc3BlZWQgPSB0aGlzLnBhcmFtcy5zcGVlZCwgcnVuQ2FsbGJhY2tzID0gdHJ1ZSwgaW50ZXJuYWwpIHtcbiAgaWYgKHR5cGVvZiBpbmRleCA9PT0gJ3N0cmluZycpIHtcbiAgICAvKipcbiAgICAgKiBUaGUgYGluZGV4YCBhcmd1bWVudCBjb252ZXJ0ZWQgZnJvbSBgc3RyaW5nYCB0byBgbnVtYmVyYC5cbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqL1xuICAgIGNvbnN0IGluZGV4QXNOdW1iZXIgPSBwYXJzZUludChpbmRleCwgMTApO1xuICAgIC8qKlxuICAgICAqIERldGVybWluZXMgd2hldGhlciB0aGUgYGluZGV4YCBhcmd1bWVudCBpcyBhIHZhbGlkIGBudW1iZXJgXG4gICAgICogYWZ0ZXIgYmVpbmcgY29udmVydGVkIGZyb20gdGhlIGBzdHJpbmdgIHR5cGUuXG4gICAgICogQHR5cGUge2Jvb2xlYW59XG4gICAgICovXG5cbiAgICBjb25zdCBpc1ZhbGlkTnVtYmVyID0gaXNGaW5pdGUoaW5kZXhBc051bWJlcik7XG5cbiAgICBpZiAoIWlzVmFsaWROdW1iZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIHBhc3NlZC1pbiAnaW5kZXgnIChzdHJpbmcpIGNvdWxkbid0IGJlIGNvbnZlcnRlZCB0byAnbnVtYmVyJy4gWyR7aW5kZXh9XSBnaXZlbi5gKTtcbiAgICB9IC8vIEtub3dpbmcgdGhhdCB0aGUgY29udmVydGVkIGBpbmRleGAgaXMgYSB2YWxpZCBudW1iZXIsXG4gICAgLy8gd2UgY2FuIHVwZGF0ZSB0aGUgb3JpZ2luYWwgYXJndW1lbnQncyB2YWx1ZS5cblxuXG4gICAgaW5kZXggPSBpbmRleEFzTnVtYmVyO1xuICB9XG5cbiAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgbGV0IG5ld0luZGV4ID0gaW5kZXg7XG5cbiAgaWYgKHN3aXBlci5wYXJhbXMubG9vcCkge1xuICAgIG5ld0luZGV4ICs9IHN3aXBlci5sb29wZWRTbGlkZXM7XG4gIH1cblxuICByZXR1cm4gc3dpcGVyLnNsaWRlVG8obmV3SW5kZXgsIHNwZWVkLCBydW5DYWxsYmFja3MsIGludGVybmFsKTtcbn0iLCIvKiBlc2xpbnQgbm8tdW51c2VkLXZhcnM6IFwib2ZmXCIgKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNsaWRlTmV4dChzcGVlZCA9IHRoaXMucGFyYW1zLnNwZWVkLCBydW5DYWxsYmFja3MgPSB0cnVlLCBpbnRlcm5hbCkge1xuICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICBjb25zdCB7XG4gICAgYW5pbWF0aW5nLFxuICAgIGVuYWJsZWQsXG4gICAgcGFyYW1zXG4gIH0gPSBzd2lwZXI7XG4gIGlmICghZW5hYmxlZCkgcmV0dXJuIHN3aXBlcjtcbiAgbGV0IHBlckdyb3VwID0gcGFyYW1zLnNsaWRlc1Blckdyb3VwO1xuXG4gIGlmIChwYXJhbXMuc2xpZGVzUGVyVmlldyA9PT0gJ2F1dG8nICYmIHBhcmFtcy5zbGlkZXNQZXJHcm91cCA9PT0gMSAmJiBwYXJhbXMuc2xpZGVzUGVyR3JvdXBBdXRvKSB7XG4gICAgcGVyR3JvdXAgPSBNYXRoLm1heChzd2lwZXIuc2xpZGVzUGVyVmlld0R5bmFtaWMoJ2N1cnJlbnQnLCB0cnVlKSwgMSk7XG4gIH1cblxuICBjb25zdCBpbmNyZW1lbnQgPSBzd2lwZXIuYWN0aXZlSW5kZXggPCBwYXJhbXMuc2xpZGVzUGVyR3JvdXBTa2lwID8gMSA6IHBlckdyb3VwO1xuXG4gIGlmIChwYXJhbXMubG9vcCkge1xuICAgIGlmIChhbmltYXRpbmcgJiYgcGFyYW1zLmxvb3BQcmV2ZW50c1NsaWRlKSByZXR1cm4gZmFsc2U7XG4gICAgc3dpcGVyLmxvb3BGaXgoKTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5cbiAgICBzd2lwZXIuX2NsaWVudExlZnQgPSBzd2lwZXIuJHdyYXBwZXJFbFswXS5jbGllbnRMZWZ0O1xuICB9XG5cbiAgaWYgKHBhcmFtcy5yZXdpbmQgJiYgc3dpcGVyLmlzRW5kKSB7XG4gICAgcmV0dXJuIHN3aXBlci5zbGlkZVRvKDAsIHNwZWVkLCBydW5DYWxsYmFja3MsIGludGVybmFsKTtcbiAgfVxuXG4gIHJldHVybi
15Bzd2lwZXIuc2xpZGVUbyhzd2lwZXIuYWN0aXZlSW5kZXggKyBpbmNyZW1lbnQsIHNwZWVkLCBydW5DYWxsYmFja3MsIGludGVybmFsKTtcbn0iLCIvKiBlc2xpbnQgbm8tdW51c2VkLXZhcnM6IFwib2ZmXCIgKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNsaWRlUHJldihzcGVlZCA9IHRoaXMucGFyYW1zLnNwZWVkLCBydW5DYWxsYmFja3MgPSB0cnVlLCBpbnRlcm5hbCkge1xuICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICBjb25zdCB7XG4gICAgcGFyYW1zLFxuICAgIGFuaW1hdGluZyxcbiAgICBzbmFwR3JpZCxcbiAgICBzbGlkZXNHcmlkLFxuICAgIHJ0bFRyYW5zbGF0ZSxcbiAgICBlbmFibGVkXG4gIH0gPSBzd2lwZXI7XG4gIGlmICghZW5hYmxlZCkgcmV0dXJuIHN3aXBlcjtcblxuICBpZiAocGFyYW1zLmxvb3ApIHtcbiAgICBpZiAoYW5pbWF0aW5nICYmIHBhcmFtcy5sb29wUHJldmVudHNTbGlkZSkgcmV0dXJuIGZhbHNlO1xuICAgIHN3aXBlci5sb29wRml4KCk7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuXG4gICAgc3dpcGVyLl9jbGllbnRMZWZ0ID0gc3dpcGVyLiR3cmFwcGVyRWxbMF0uY2xpZW50TGVmdDtcbiAgfVxuXG4gIGNvbnN0IHRyYW5zbGF0ZSA9IHJ0bFRyYW5zbGF0ZSA/IHN3aXBlci50cmFuc2xhdGUgOiAtc3dpcGVyLnRyYW5zbGF0ZTtcblxuICBmdW5jdGlvbiBub3JtYWxpemUodmFsKSB7XG4gICAgaWYgKHZhbCA8IDApIHJldHVybiAtTWF0aC5mbG9vcihNYXRoLmFicyh2YWwpKTtcbiAgICByZXR1cm4gTWF0aC5mbG9vcih2YWwpO1xuICB9XG5cbiAgY29uc3Qgbm9ybWFsaXplZFRyYW5zbGF0ZSA9IG5vcm1hbGl6ZSh0cmFuc2xhdGUpO1xuICBjb25zdCBub3JtYWxpemVkU25hcEdyaWQgPSBzbmFwR3JpZC5tYXAodmFsID0+IG5vcm1hbGl6ZSh2YWwpKTtcbiAgbGV0IHByZXZTbmFwID0gc25hcEdyaWRbbm9ybWFsaXplZFNuYXBHcmlkLmluZGV4T2Yobm9ybWFsaXplZFRyYW5zbGF0ZSkgLSAxXTtcblxuICBpZiAodHlwZW9mIHByZXZTbmFwID09PSAndW5kZWZpbmVkJyAmJiBwYXJhbXMuY3NzTW9kZSkge1xuICAgIGxldCBwcmV2U25hcEluZGV4O1xuICAgIHNuYXBHcmlkLmZvckVhY2goKHNuYXAsIHNuYXBJbmRleCkgPT4ge1xuICAgICAgaWYgKG5vcm1hbGl6ZWRUcmFuc2xhdGUgPj0gc25hcCkge1xuICAgICAgICAvLyBwcmV2U25hcCA9IHNuYXA7XG4gICAgICAgIHByZXZTbmFwSW5kZXggPSBzbmFwSW5kZXg7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAodHlwZW9mIHByZXZTbmFwSW5kZXggIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBwcmV2U25hcCA9IHNuYXBHcmlkW3ByZXZTbmFwSW5kZXggPiAwID8gcHJldlNuYXBJbmRleCAtIDEgOiBwcmV2U25hcEluZGV4XTtcbiAgICB9XG4gIH1cblxuICBsZXQgcHJldkluZGV4ID0gMDtcblxuICBpZiAodHlwZW9mIHByZXZTbmFwICE9PSAndW5kZWZpbmVkJykge1xuICAgIHByZXZJbmRleCA9IHNsaWRlc0dyaWQuaW5kZXhPZihwcmV2U25hcCk7XG4gICAgaWYgKHByZXZJbmRleCA8IDApIHByZXZJbmRleCA9IHN3aXBlci5hY3RpdmVJbmRleCAtIDE7XG5cbiAgICBpZiAocGFyYW1zLnNsaWRlc1BlclZpZXcgPT09ICdhdXRvJyAmJiBwYXJhbXMuc2xpZGVzUGVyR3JvdXAgPT09IDEgJiYgcGFyYW1zLnNsaWRlc1Blckdyb3VwQXV0bykge1xuICAgICAgcHJldkluZGV4ID0gcHJldkluZGV4IC0gc3dpcGVyLnNsaWRlc1BlclZpZXdEeW5hbWljKCdwcmV2aW91cycsIHRydWUpICsgMTtcbiAgICAgIHByZXZJbmRleCA9IE1hdGgubWF4KHByZXZJbmRleCwgMCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHBhcmFtcy5yZXdpbmQgJiYgc3dpcGVyLmlzQmVnaW5uaW5nKSB7XG4gICAgY29uc3QgbGFzdEluZGV4ID0gc3dpcGVyLnBhcmFtcy52aXJ0dWFsICYmIHN3aXBlci5wYXJhbXMudmlydHVhbC5lbmFibGVkICYmIHN3aXBlci52aXJ0dWFsID8gc3dpcGVyLnZpcnR1YWwuc2xpZGVzLmxlbmd0aCAtIDEgOiBzd2lwZXIuc2xpZGVzLmxlbmd0aCAtIDE7XG4gICAgcmV0dXJuIHN3aXBlci5zbGlkZVRvKGxhc3RJbmRleCwgc3BlZWQsIHJ1bkNhbGxiYWNrcywgaW50ZXJuYWwpO1xuICB9XG5cbiAgcmV0dXJuIHN3aXBlci5zbGlkZVRvKHByZXZJbmRleCwgc3BlZWQsIHJ1bkNhbGxiYWNrcywgaW50ZXJuYWwpO1xufSIsIi8qIGVzbGludCBuby11bnVzZWQtdmFyczogXCJvZmZcIiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2xpZGVSZXNldChzcGVlZCA9IHRoaXMucGFyYW1zLnNwZWVkLCBydW5DYWxsYmFja3MgPSB0cnVlLCBpbnRlcm5hbCkge1xuICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICByZXR1cm4gc3dpcGVyLnNsaWRlVG8oc3dpcGVyLmFjdGl2ZUluZGV4LCBzcGVlZCwgcnVuQ2FsbGJhY2tzLCBpbnRlcm5hbCk7XG59IiwiLyogZXNsaW50IG5vLXVudXNlZC12YXJzOiBcIm9mZlwiICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzbGlkZVRvQ2xvc2VzdChzcGVlZCA9IHRoaXMucGFyYW1zLnNwZWVkLCBydW5DYWxsYmFja3MgPSB0cnVlLCBpbnRlcm5hbCwgdGhyZXNob2xkID0gMC41KSB7XG4gIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gIGxldCBpbmRleCA9IHN3aXBlci5hY3RpdmVJbmRleDtcbiAgY29uc3Qgc2tpcCA9IE1hdGgubWluKHN3aXBlci5wYXJhbXMuc2xpZGVzUGVyR3JvdXBTa2lwLCBpbmRleCk7XG4gIGNvbnN0IHNuYXBJbmRleCA9IHNraXAgKyBNYXRoLmZsb29yKChpbmRleCAtIHNraXApIC8gc3dpcGVyLnBhcmFtcy5zbGlkZXNQZXJHcm91cCk7XG4gIGNvbnN0IHRyYW5zbGF0ZSA9IHN3aXBlci5ydGxUcmFuc2xhdGUgPyBzd2lwZXIudHJhbnNsYXRlIDogLXN3aXBlci50cmFuc2xhdGU7XG5cbiAgaWYgKHRyYW5zbGF0ZSA+PSBzd2lwZXIuc25hcEdyaWRbc25hcEluZGV4XSkge1xuICAgIC8vIFRoZSBjdXJyZW50IHRyYW5zbGF0ZSBpcyBvbiBvciBhZnRlciB0aGUgY3VycmVudCBzbmFwIGluZGV4LCBzbyB0aGUgY2hvaWNlXG4gICAgLy8gaXMgYmV0d2VlbiB0aGUgY3VycmVudCBpbmRleCBhbmQgdGhlIG9uZSBhZnRlciBpdC5cbiAgICBjb25zdCBjdXJyZW50U25hcCA9IHN3aXBlci5zbmFwR3JpZFtzbmFwSW5kZXhdO1xuICAgIGNvbnN0IG5leHRTbmFwID0gc3dpcGVyLnNuYXBHcmlkW3NuYXBJbmRleCArIDFdO1xuXG4gICAgaWYgKHRyYW5zbGF0ZSAtIGN1cnJlbnRTbmFwID4gKG5leHRTbmFwIC0gY3VycmVudFNuYXApICogdGhyZXNob2xkKSB7XG4gICAgICBpbmRleCArPSBzd2lwZXIucGFyYW1zLnNsaWRlc1Blckdyb3VwO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBUaGUgY3VycmVudCB0cmFuc2xhdGUgaXMgYmVmb3JlIHRoZSBjdXJyZW50IHNuYXAgaW5kZXgsIHNvIHRoZSBjaG9pY2VcbiAgICAvLyBpcyBiZXR3ZWVuIHRoZSBjdXJyZW50IGluZGV4IGFuZCB0aGUgb25lIGJlZm9yZSBpdC5cbiAgICBjb25zdCBwcmV2U25hcCA9IHN3aXBlci5zbmFwR3JpZFtzbmFwSW5kZXggLSAxXTtcbiAgICBjb25zdCBjdXJyZW50U25hcCA9IHN3aXBlci5zbmFwR3JpZFtzbmFwSW5kZXhdO1xuXG4gICAgaWYgKHRyYW5zbGF0ZSAtIHByZXZTbmFwIDw9IChjdXJyZW50U25hcCAtIHByZXZTbmFwKSAqIHRocmVzaG9sZCkge1xuICAgICAgaW5kZXggLT0gc3dpcGVyLnBhcmFtcy5zbGlkZXNQZXJHcm91cDtcbiAgICB9XG4gI
15H1cblxuICBpbmRleCA9IE1hdGgubWF4KGluZGV4LCAwKTtcbiAgaW5kZXggPSBNYXRoLm1pbihpbmRleCwgc3dpcGVyLnNsaWRlc0dyaWQubGVuZ3RoIC0gMSk7XG4gIHJldHVybiBzd2lwZXIuc2xpZGVUbyhpbmRleCwgc3BlZWQsIHJ1bkNhbGxiYWNrcywgaW50ZXJuYWwpO1xufSIsImltcG9ydCAkIGZyb20gJy4uLy4uL3NoYXJlZC9kb20uanMnO1xuaW1wb3J0IHsgbmV4dFRpY2sgfSBmcm9tICcuLi8uLi9zaGFyZWQvdXRpbHMuanMnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2xpZGVUb0NsaWNrZWRTbGlkZSgpIHtcbiAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgY29uc3Qge1xuICAgIHBhcmFtcyxcbiAgICAkd3JhcHBlckVsXG4gIH0gPSBzd2lwZXI7XG4gIGNvbnN0IHNsaWRlc1BlclZpZXcgPSBwYXJhbXMuc2xpZGVzUGVyVmlldyA9PT0gJ2F1dG8nID8gc3dpcGVyLnNsaWRlc1BlclZpZXdEeW5hbWljKCkgOiBwYXJhbXMuc2xpZGVzUGVyVmlldztcbiAgbGV0IHNsaWRlVG9JbmRleCA9IHN3aXBlci5jbGlja2VkSW5kZXg7XG4gIGxldCByZWFsSW5kZXg7XG5cbiAgaWYgKHBhcmFtcy5sb29wKSB7XG4gICAgaWYgKHN3aXBlci5hbmltYXRpbmcpIHJldHVybjtcbiAgICByZWFsSW5kZXggPSBwYXJzZUludCgkKHN3aXBlci5jbGlja2VkU2xpZGUpLmF0dHIoJ2RhdGEtc3dpcGVyLXNsaWRlLWluZGV4JyksIDEwKTtcblxuICAgIGlmIChwYXJhbXMuY2VudGVyZWRTbGlkZXMpIHtcbiAgICAgIGlmIChzbGlkZVRvSW5kZXggPCBzd2lwZXIubG9vcGVkU2xpZGVzIC0gc2xpZGVzUGVyVmlldyAvIDIgfHwgc2xpZGVUb0luZGV4ID4gc3dpcGVyLnNsaWRlcy5sZW5ndGggLSBzd2lwZXIubG9vcGVkU2xpZGVzICsgc2xpZGVzUGVyVmlldyAvIDIpIHtcbiAgICAgICAgc3dpcGVyLmxvb3BGaXgoKTtcbiAgICAgICAgc2xpZGVUb0luZGV4ID0gJHdyYXBwZXJFbC5jaGlsZHJlbihgLiR7cGFyYW1zLnNsaWRlQ2xhc3N9W2RhdGEtc3dpcGVyLXNsaWRlLWluZGV4PVwiJHtyZWFsSW5kZXh9XCJdOm5vdCguJHtwYXJhbXMuc2xpZGVEdXBsaWNhdGVDbGFzc30pYCkuZXEoMCkuaW5kZXgoKTtcbiAgICAgICAgbmV4dFRpY2soKCkgPT4ge1xuICAgICAgICAgIHN3aXBlci5zbGlkZVRvKHNsaWRlVG9JbmRleCk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3dpcGVyLnNsaWRlVG8oc2xpZGVUb0luZGV4KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHNsaWRlVG9JbmRleCA+IHN3aXBlci5zbGlkZXMubGVuZ3RoIC0gc2xpZGVzUGVyVmlldykge1xuICAgICAgc3dpcGVyLmxvb3BGaXgoKTtcbiAgICAgIHNsaWRlVG9JbmRleCA9ICR3cmFwcGVyRWwuY2hpbGRyZW4oYC4ke3BhcmFtcy5zbGlkZUNsYXNzfVtkYXRhLXN3aXBlci1zbGlkZS1pbmRleD1cIiR7cmVhbEluZGV4fVwiXTpub3QoLiR7cGFyYW1zLnNsaWRlRHVwbGljYXRlQ2xhc3N9KWApLmVxKDApLmluZGV4KCk7XG4gICAgICBuZXh0VGljaygoKSA9PiB7XG4gICAgICAgIHN3aXBlci5zbGlkZVRvKHNsaWRlVG9JbmRleCk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3dpcGVyLnNsaWRlVG8oc2xpZGVUb0luZGV4KTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgc3dpcGVyLnNsaWRlVG8oc2xpZGVUb0luZGV4KTtcbiAgfVxufSIsImltcG9ydCBsb29wQ3JlYXRlIGZyb20gJy4vbG9vcENyZWF0ZS5qcyc7XG5pbXBvcnQgbG9vcEZpeCBmcm9tICcuL2xvb3BGaXguanMnO1xuaW1wb3J0IGxvb3BEZXN0cm95IGZyb20gJy4vbG9vcERlc3Ryb3kuanMnO1xuZXhwb3J0IGRlZmF1bHQge1xuICBsb29wQ3JlYXRlLFxuICBsb29wRml4LFxuICBsb29wRGVzdHJveVxufTsiLCJpbXBvcnQgeyBnZXREb2N1bWVudCB9IGZyb20gJ3Nzci13aW5kb3cnO1xuaW1wb3J0ICQgZnJvbSAnLi4vLi4vc2hhcmVkL2RvbS5qcyc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBsb29wQ3JlYXRlKCkge1xuICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICBjb25zdCBkb2N1bWVudCA9IGdldERvY3VtZW50KCk7XG4gIGNvbnN0IHtcbiAgICBwYXJhbXMsXG4gICAgJHdyYXBwZXJFbFxuICB9ID0gc3dpcGVyOyAvLyBSZW1vdmUgZHVwbGljYXRlZCBzbGlkZXNcblxuICBjb25zdCAkc2VsZWN0b3IgPSAkd3JhcHBlckVsLmNoaWxkcmVuKCkubGVuZ3RoID4gMCA/ICQoJHdyYXBwZXJFbC5jaGlsZHJlbigpWzBdLnBhcmVudE5vZGUpIDogJHdyYXBwZXJFbDtcbiAgJHNlbGVjdG9yLmNoaWxkcmVuKGAuJHtwYXJhbXMuc2xpZGVDbGFzc30uJHtwYXJhbXMuc2xpZGVEdXBsaWNhdGVDbGFzc31gKS5yZW1vdmUoKTtcbiAgbGV0IHNsaWRlcyA9ICRzZWxlY3Rvci5jaGlsZHJlbihgLiR7cGFyYW1zLnNsaWRlQ2xhc3N9YCk7XG5cbiAgaWYgKHBhcmFtcy5sb29wRmlsbEdyb3VwV2l0aEJsYW5rKSB7XG4gICAgY29uc3QgYmxhbmtTbGlkZXNOdW0gPSBwYXJhbXMuc2xpZGVzUGVyR3JvdXAgLSBzbGlkZXMubGVuZ3RoICUgcGFyYW1zLnNsaWRlc1Blckdyb3VwO1xuXG4gICAgaWYgKGJsYW5rU2xpZGVzTnVtICE9PSBwYXJhbXMuc2xpZGVzUGVyR3JvdXApIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYmxhbmtTbGlkZXNOdW07IGkgKz0gMSkge1xuICAgICAgICBjb25zdCBibGFua05vZGUgPSAkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKS5hZGRDbGFzcyhgJHtwYXJhbXMuc2xpZGVDbGFzc30gJHtwYXJhbXMuc2xpZGVCbGFua0NsYXNzfWApO1xuICAgICAgICAkc2VsZWN0b3IuYXBwZW5kKGJsYW5rTm9kZSk7XG4gICAgICB9XG5cbiAgICAgIHNsaWRlcyA9ICRzZWxlY3Rvci5jaGlsZHJlbihgLiR7cGFyYW1zLnNsaWRlQ2xhc3N9YCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHBhcmFtcy5zbGlkZXNQZXJWaWV3ID09PSAnYXV0bycgJiYgIXBhcmFtcy5sb29wZWRTbGlkZXMpIHBhcmFtcy5sb29wZWRTbGlkZXMgPSBzbGlkZXMubGVuZ3RoO1xuICBzd2lwZXIubG9vcGVkU2xpZGVzID0gTWF0aC5jZWlsKHBhcnNlRmxvYXQocGFyYW1zLmxvb3BlZFNsaWRlcyB8fCBwYXJhbXMuc2xpZGVzUGVyVmlldywgMTApKTtcbiAgc3dpcGVyLmxvb3BlZFNsaWRlcyArPSBwYXJhbXMubG9vcEFkZGl0aW9uYWxTbGlkZXM7XG5cbiAgaWYgKHN3aXBlci5sb29wZWRTbGlkZXMgPiBzbGlkZXMubGVuZ3RoICYmIHN3aXBlci5wYXJhbXMubG9vcGVkU2xpZGVzTGltaXQpIHtcbiAgICBzd2lwZXIubG9vcGVkU2xpZGVzID0gc2xpZGVzLmxlbmd0aDtcbiAgfVxuXG4gIGNvbnN0IHByZXBlbmRTbGlkZXMgPSBbXTtcbiAgY29uc3QgYXBwZW5kU2xpZGVzID0gW107XG4gIHNsaWRlcy5lYWNoKChlbCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBzbGlkZSA9ICQoZWwpO1xuICAgIHNsaWRlLmF0dHIoJ2RhdGEtc3dpcGVyLXNsaWRlLWluZGV4JywgaW5kZXgpO1xuICB9KTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHN3aXBlci5sb29wZWRTbGlkZXM7IGkgKz
150gMSkge1xuICAgIGNvbnN0IGluZGV4ID0gaSAtIE1hdGguZmxvb3IoaSAvIHNsaWRlcy5sZW5ndGgpICogc2xpZGVzLmxlbmd0aDtcbiAgICBhcHBlbmRTbGlkZXMucHVzaChzbGlkZXMuZXEoaW5kZXgpWzBdKTtcbiAgICBwcmVwZW5kU2xpZGVzLnVuc2hpZnQoc2xpZGVzLmVxKHNsaWRlcy5sZW5ndGggLSBpbmRleCAtIDEpWzBdKTtcbiAgfVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYXBwZW5kU2xpZGVzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgJHNlbGVjdG9yLmFwcGVuZCgkKGFwcGVuZFNsaWRlc1tpXS5jbG9uZU5vZGUodHJ1ZSkpLmFkZENsYXNzKHBhcmFtcy5zbGlkZUR1cGxpY2F0ZUNsYXNzKSk7XG4gIH1cblxuICBmb3IgKGxldCBpID0gcHJlcGVuZFNsaWRlcy5sZW5ndGggLSAxOyBpID49IDA7IGkgLT0gMSkge1xuICAgICRzZWxlY3Rvci5wcmVwZW5kKCQocHJlcGVuZFNsaWRlc1tpXS5jbG9uZU5vZGUodHJ1ZSkpLmFkZENsYXNzKHBhcmFtcy5zbGlkZUR1cGxpY2F0ZUNsYXNzKSk7XG4gIH1cbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBsb29wRml4KCkge1xuICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICBzd2lwZXIuZW1pdCgnYmVmb3JlTG9vcEZpeCcpO1xuICBjb25zdCB7XG4gICAgYWN0aXZlSW5kZXgsXG4gICAgc2xpZGVzLFxuICAgIGxvb3BlZFNsaWRlcyxcbiAgICBhbGxvd1NsaWRlUHJldixcbiAgICBhbGxvd1NsaWRlTmV4dCxcbiAgICBzbmFwR3JpZCxcbiAgICBydGxUcmFuc2xhdGU6IHJ0bFxuICB9ID0gc3dpcGVyO1xuICBsZXQgbmV3SW5kZXg7XG4gIHN3aXBlci5hbGxvd1NsaWRlUHJldiA9IHRydWU7XG4gIHN3aXBlci5hbGxvd1NsaWRlTmV4dCA9IHRydWU7XG4gIGNvbnN0IHNuYXBUcmFuc2xhdGUgPSAtc25hcEdyaWRbYWN0aXZlSW5kZXhdO1xuICBjb25zdCBkaWZmID0gc25hcFRyYW5zbGF0ZSAtIHN3aXBlci5nZXRUcmFuc2xhdGUoKTsgLy8gRml4IEZvciBOZWdhdGl2ZSBPdmVyc2xpZGluZ1xuXG4gIGlmIChhY3RpdmVJbmRleCA8IGxvb3BlZFNsaWRlcykge1xuICAgIG5ld0luZGV4ID0gc2xpZGVzLmxlbmd0aCAtIGxvb3BlZFNsaWRlcyAqIDMgKyBhY3RpdmVJbmRleDtcbiAgICBuZXdJbmRleCArPSBsb29wZWRTbGlkZXM7XG4gICAgY29uc3Qgc2xpZGVDaGFuZ2VkID0gc3dpcGVyLnNsaWRlVG8obmV3SW5kZXgsIDAsIGZhbHNlLCB0cnVlKTtcblxuICAgIGlmIChzbGlkZUNoYW5nZWQgJiYgZGlmZiAhPT0gMCkge1xuICAgICAgc3dpcGVyLnNldFRyYW5zbGF0ZSgocnRsID8gLXN3aXBlci50cmFuc2xhdGUgOiBzd2lwZXIudHJhbnNsYXRlKSAtIGRpZmYpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChhY3RpdmVJbmRleCA+PSBzbGlkZXMubGVuZ3RoIC0gbG9vcGVkU2xpZGVzKSB7XG4gICAgLy8gRml4IEZvciBQb3NpdGl2ZSBPdmVyc2xpZGluZ1xuICAgIG5ld0luZGV4ID0gLXNsaWRlcy5sZW5ndGggKyBhY3RpdmVJbmRleCArIGxvb3BlZFNsaWRlcztcbiAgICBuZXdJbmRleCArPSBsb29wZWRTbGlkZXM7XG4gICAgY29uc3Qgc2xpZGVDaGFuZ2VkID0gc3dpcGVyLnNsaWRlVG8obmV3SW5kZXgsIDAsIGZhbHNlLCB0cnVlKTtcblxuICAgIGlmIChzbGlkZUNoYW5nZWQgJiYgZGlmZiAhPT0gMCkge1xuICAgICAgc3dpcGVyLnNldFRyYW5zbGF0ZSgocnRsID8gLXN3aXBlci50cmFuc2xhdGUgOiBzd2lwZXIudHJhbnNsYXRlKSAtIGRpZmYpO1xuICAgIH1cbiAgfVxuXG4gIHN3aXBlci5hbGxvd1NsaWRlUHJldiA9IGFsbG93U2xpZGVQcmV2O1xuICBzd2lwZXIuYWxsb3dTbGlkZU5leHQgPSBhbGxvd1NsaWRlTmV4dDtcbiAgc3dpcGVyLmVtaXQoJ2xvb3BGaXgnKTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBsb29wRGVzdHJveSgpIHtcbiAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgY29uc3Qge1xuICAgICR3cmFwcGVyRWwsXG4gICAgcGFyYW1zLFxuICAgIHNsaWRlc1xuICB9ID0gc3dpcGVyO1xuICAkd3JhcHBlckVsLmNoaWxkcmVuKGAuJHtwYXJhbXMuc2xpZGVDbGFzc30uJHtwYXJhbXMuc2xpZGVEdXBsaWNhdGVDbGFzc30sLiR7cGFyYW1zLnNsaWRlQ2xhc3N9LiR7cGFyYW1zLnNsaWRlQmxhbmtDbGFzc31gKS5yZW1vdmUoKTtcbiAgc2xpZGVzLnJlbW92ZUF0dHIoJ2RhdGEtc3dpcGVyLXNsaWRlLWluZGV4Jyk7XG59IiwiaW1wb3J0IHsgZ2V0V2luZG93LCBnZXREb2N1bWVudCB9IGZyb20gJ3Nzci13aW5kb3cnO1xuaW1wb3J0ICQgZnJvbSAnLi4vLi4vc2hhcmVkL2RvbS5qcyc7XG5pbXBvcnQgeyBub3cgfSBmcm9tICcuLi8uLi9zaGFyZWQvdXRpbHMuanMnOyAvLyBNb2RpZmllZCBmcm9tIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzU0NTIwNTU0L2N1c3RvbS1lbGVtZW50LWdldHJvb3Rub2RlLWNsb3Nlc3QtZnVuY3Rpb24tY3Jvc3NpbmctbXVsdGlwbGUtcGFyZW50LXNoYWRvd2RcblxuZnVuY3Rpb24gY2xvc2VzdEVsZW1lbnQoc2VsZWN0b3IsIGJhc2UgPSB0aGlzKSB7XG4gIGZ1bmN0aW9uIF9fY2xvc2VzdEZyb20oZWwpIHtcbiAgICBpZiAoIWVsIHx8IGVsID09PSBnZXREb2N1bWVudCgpIHx8IGVsID09PSBnZXRXaW5kb3coKSkgcmV0dXJuIG51bGw7XG4gICAgaWYgKGVsLmFzc2lnbmVkU2xvdCkgZWwgPSBlbC5hc3NpZ25lZFNsb3Q7XG4gICAgY29uc3QgZm91bmQgPSBlbC5jbG9zZXN0KHNlbGVjdG9yKTtcblxuICAgIGlmICghZm91bmQgJiYgIWVsLmdldFJvb3ROb2RlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gZm91bmQgfHwgX19jbG9zZXN0RnJvbShlbC5nZXRSb290Tm9kZSgpLmhvc3QpO1xuICB9XG5cbiAgcmV0dXJuIF9fY2xvc2VzdEZyb20oYmFzZSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG9uVG91Y2hTdGFydChldmVudCkge1xuICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICBjb25zdCBkb2N1bWVudCA9IGdldERvY3VtZW50KCk7XG4gIGNvbnN0IHdpbmRvdyA9IGdldFdpbmRvdygpO1xuICBjb25zdCBkYXRhID0gc3dpcGVyLnRvdWNoRXZlbnRzRGF0YTtcbiAgY29uc3Qge1xuICAgIHBhcmFtcyxcbiAgICB0b3VjaGVzLFxuICAgIGVuYWJsZWRcbiAgfSA9IHN3aXBlcjtcbiAgaWYgKCFlbmFibGVkKSByZXR1cm47XG5cbiAgaWYgKHN3aXBlci5hbmltYXRpbmcgJiYgcGFyYW1zLnByZX
15ZlbnRJbnRlcmFjdGlvbk9uVHJhbnNpdGlvbikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmICghc3dpcGVyLmFuaW1hdGluZyAmJiBwYXJhbXMuY3NzTW9kZSAmJiBwYXJhbXMubG9vcCkge1xuICAgIHN3aXBlci5sb29wRml4KCk7XG4gIH1cblxuICBsZXQgZSA9IGV2ZW50O1xuICBpZiAoZS5vcmlnaW5hbEV2ZW50KSBlID0gZS5vcmlnaW5hbEV2ZW50O1xuICBsZXQgJHRhcmdldEVsID0gJChlLnRhcmdldCk7XG5cbiAgaWYgKHBhcmFtcy50b3VjaEV2ZW50c1RhcmdldCA9PT0gJ3dyYXBwZXInKSB7XG4gICAgaWYgKCEkdGFyZ2V0RWwuY2xvc2VzdChzd2lwZXIud3JhcHBlckVsKS5sZW5ndGgpIHJldHVybjtcbiAgfVxuXG4gIGRhdGEuaXNUb3VjaEV2ZW50ID0gZS50eXBlID09PSAndG91Y2hzdGFydCc7XG4gIGlmICghZGF0YS5pc1RvdWNoRXZlbnQgJiYgJ3doaWNoJyBpbiBlICYmIGUud2hpY2ggPT09IDMpIHJldHVybjtcbiAgaWYgKCFkYXRhLmlzVG91Y2hFdmVudCAmJiAnYnV0dG9uJyBpbiBlICYmIGUuYnV0dG9uID4gMCkgcmV0dXJuO1xuICBpZiAoZGF0YS5pc1RvdWNoZWQgJiYgZGF0YS5pc01vdmVkKSByZXR1cm47IC8vIGNoYW5nZSB0YXJnZXQgZWwgZm9yIHNoYWRvdyByb290IGNvbXBvbmVudFxuXG4gIGNvbnN0IHN3aXBpbmdDbGFzc0hhc1ZhbHVlID0gISFwYXJhbXMubm9Td2lwaW5nQ2xhc3MgJiYgcGFyYW1zLm5vU3dpcGluZ0NsYXNzICE9PSAnJzsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5cbiAgY29uc3QgZXZlbnRQYXRoID0gZXZlbnQuY29tcG9zZWRQYXRoID8gZXZlbnQuY29tcG9zZWRQYXRoKCkgOiBldmVudC5wYXRoO1xuXG4gIGlmIChzd2lwaW5nQ2xhc3NIYXNWYWx1ZSAmJiBlLnRhcmdldCAmJiBlLnRhcmdldC5zaGFkb3dSb290ICYmIGV2ZW50UGF0aCkge1xuICAgICR0YXJnZXRFbCA9ICQoZXZlbnRQYXRoWzBdKTtcbiAgfVxuXG4gIGNvbnN0IG5vU3dpcGluZ1NlbGVjdG9yID0gcGFyYW1zLm5vU3dpcGluZ1NlbGVjdG9yID8gcGFyYW1zLm5vU3dpcGluZ1NlbGVjdG9yIDogYC4ke3BhcmFtcy5ub1N3aXBpbmdDbGFzc31gO1xuICBjb25zdCBpc1RhcmdldFNoYWRvdyA9ICEhKGUudGFyZ2V0ICYmIGUudGFyZ2V0LnNoYWRvd1Jvb3QpOyAvLyB1c2UgY2xvc2VzdEVsZW1lbnQgZm9yIHNoYWRvdyByb290IGVsZW1lbnQgdG8gZ2V0IHRoZSBhY3R1YWwgY2xvc2VzdCBmb3IgbmVzdGVkIHNoYWRvdyByb290IGVsZW1lbnRcblxuICBpZiAocGFyYW1zLm5vU3dpcGluZyAmJiAoaXNUYXJnZXRTaGFkb3cgPyBjbG9zZXN0RWxlbWVudChub1N3aXBpbmdTZWxlY3RvciwgJHRhcmdldEVsWzBdKSA6ICR0YXJnZXRFbC5jbG9zZXN0KG5vU3dpcGluZ1NlbGVjdG9yKVswXSkpIHtcbiAgICBzd2lwZXIuYWxsb3dDbGljayA9IHRydWU7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHBhcmFtcy5zd2lwZUhhbmRsZXIpIHtcbiAgICBpZiAoISR0YXJnZXRFbC5jbG9zZXN0KHBhcmFtcy5zd2lwZUhhbmRsZXIpWzBdKSByZXR1cm47XG4gIH1cblxuICB0b3VjaGVzLmN1cnJlbnRYID0gZS50eXBlID09PSAndG91Y2hzdGFydCcgPyBlLnRhcmdldFRvdWNoZXNbMF0ucGFnZVggOiBlLnBhZ2VYO1xuICB0b3VjaGVzLmN1cnJlbnRZID0gZS50eXBlID09PSAndG91Y2hzdGFydCcgPyBlLnRhcmdldFRvdWNoZXNbMF0ucGFnZVkgOiBlLnBhZ2VZO1xuICBjb25zdCBzdGFydFggPSB0b3VjaGVzLmN1cnJlbnRYO1xuICBjb25zdCBzdGFydFkgPSB0b3VjaGVzLmN1cnJlbnRZOyAvLyBEbyBOT1Qgc3RhcnQgaWYgaU9TIGVkZ2Ugc3dpcGUgaXMgZGV0ZWN0ZWQuIE90aGVyd2lzZSBpT1MgYXBwIGNhbm5vdCBzd2lwZS10by1nby1iYWNrIGFueW1vcmVcblxuICBjb25zdCBlZGdlU3dpcGVEZXRlY3Rpb24gPSBwYXJhbXMuZWRnZVN3aXBlRGV0ZWN0aW9uIHx8IHBhcmFtcy5pT1NFZGdlU3dpcGVEZXRlY3Rpb247XG4gIGNvbnN0IGVkZ2VTd2lwZVRocmVzaG9sZCA9IHBhcmFtcy5lZGdlU3dpcGVUaHJlc2hvbGQgfHwgcGFyYW1zLmlPU0VkZ2VTd2lwZVRocmVzaG9sZDtcblxuICBpZiAoZWRnZVN3aXBlRGV0ZWN0aW9uICYmIChzdGFydFggPD0gZWRnZVN3aXBlVGhyZXNob2xkIHx8IHN0YXJ0WCA+PSB3aW5kb3cuaW5uZXJXaWR0aCAtIGVkZ2VTd2lwZVRocmVzaG9sZCkpIHtcbiAgICBpZiAoZWRnZVN3aXBlRGV0ZWN0aW9uID09PSAncHJldmVudCcpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBPYmplY3QuYXNzaWduKGRhdGEsIHtcbiAgICBpc1RvdWNoZWQ6IHRydWUsXG4gICAgaXNNb3ZlZDogZmFsc2UsXG4gICAgYWxsb3dUb3VjaENhbGxiYWNrczogdHJ1ZSxcbiAgICBpc1Njcm9sbGluZzogdW5kZWZpbmVkLFxuICAgIHN0YXJ0TW92aW5nOiB1bmRlZmluZWRcbiAgfSk7XG4gIHRvdWNoZXMuc3RhcnRYID0gc3RhcnRYO1xuICB0b3VjaGVzLnN0YXJ0WSA9IHN0YXJ0WTtcbiAgZGF0YS50b3VjaFN0YXJ0VGltZSA9IG5vdygpO1xuICBzd2lwZXIuYWxsb3dDbGljayA9IHRydWU7XG4gIHN3aXBlci51cGRhdGVTaXplKCk7XG4gIHN3aXBlci5zd2lwZURpcmVjdGlvbiA9IHVuZGVmaW5lZDtcbiAgaWYgKHBhcmFtcy50aHJlc2hvbGQgPiAwKSBkYXRhLmFsbG93VGhyZXNob2xkTW92ZSA9IGZhbHNlO1xuXG4gIGlmIChlLnR5cGUgIT09ICd0b3VjaHN0YXJ0Jykge1xuICAgIGxldCBwcmV2ZW50RGVmYXVsdCA9IHRydWU7XG5cbiAgICBpZiAoJHRhcmdldEVsLmlzKGRhdGEuZm9jdXNhYmxlRWxlbWVudHMpKSB7XG4gICAgICBwcmV2ZW50RGVmYXVsdCA9IGZhbHNlO1xuXG4gICAgICBpZiAoJHRhcmdldEVsWzBdLm5vZGVOYW1lID09PSAnU0VMRUNUJykge1xuICAgICAgICBkYXRhLmlzVG91Y2hlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ICYmICQoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkuaXMoZGF0YS5mb2N1c2FibGVFbGVtZW50cykgJiYgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAhPT0gJHRhcmdldEVsWzBdKSB7XG4gICAgICBkb2
15N1bWVudC5hY3RpdmVFbGVtZW50LmJsdXIoKTtcbiAgICB9XG5cbiAgICBjb25zdCBzaG91bGRQcmV2ZW50RGVmYXVsdCA9IHByZXZlbnREZWZhdWx0ICYmIHN3aXBlci5hbGxvd1RvdWNoTW92ZSAmJiBwYXJhbXMudG91Y2hTdGFydFByZXZlbnREZWZhdWx0O1xuXG4gICAgaWYgKChwYXJhbXMudG91Y2hTdGFydEZvcmNlUHJldmVudERlZmF1bHQgfHwgc2hvdWxkUHJldmVudERlZmF1bHQpICYmICEkdGFyZ2V0RWxbMF0uaXNDb250ZW50RWRpdGFibGUpIHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH1cblxuICBpZiAoc3dpcGVyLnBhcmFtcy5mcmVlTW9kZSAmJiBzd2lwZXIucGFyYW1zLmZyZWVNb2RlLmVuYWJsZWQgJiYgc3dpcGVyLmZyZWVNb2RlICYmIHN3aXBlci5hbmltYXRpbmcgJiYgIXBhcmFtcy5jc3NNb2RlKSB7XG4gICAgc3dpcGVyLmZyZWVNb2RlLm9uVG91Y2hTdGFydCgpO1xuICB9XG5cbiAgc3dpcGVyLmVtaXQoJ3RvdWNoU3RhcnQnLCBlKTtcbn0iLCJpbXBvcnQgeyBnZXREb2N1bWVudCB9IGZyb20gJ3Nzci13aW5kb3cnO1xuaW1wb3J0ICQgZnJvbSAnLi4vLi4vc2hhcmVkL2RvbS5qcyc7XG5pbXBvcnQgeyBub3cgfSBmcm9tICcuLi8uLi9zaGFyZWQvdXRpbHMuanMnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gb25Ub3VjaE1vdmUoZXZlbnQpIHtcbiAgY29uc3QgZG9jdW1lbnQgPSBnZXREb2N1bWVudCgpO1xuICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICBjb25zdCBkYXRhID0gc3dpcGVyLnRvdWNoRXZlbnRzRGF0YTtcbiAgY29uc3Qge1xuICAgIHBhcmFtcyxcbiAgICB0b3VjaGVzLFxuICAgIHJ0bFRyYW5zbGF0ZTogcnRsLFxuICAgIGVuYWJsZWRcbiAgfSA9IHN3aXBlcjtcbiAgaWYgKCFlbmFibGVkKSByZXR1cm47XG4gIGxldCBlID0gZXZlbnQ7XG4gIGlmIChlLm9yaWdpbmFsRXZlbnQpIGUgPSBlLm9yaWdpbmFsRXZlbnQ7XG5cbiAgaWYgKCFkYXRhLmlzVG91Y2hlZCkge1xuICAgIGlmIChkYXRhLnN0YXJ0TW92aW5nICYmIGRhdGEuaXNTY3JvbGxpbmcpIHtcbiAgICAgIHN3aXBlci5lbWl0KCd0b3VjaE1vdmVPcHBvc2l0ZScsIGUpO1xuICAgIH1cblxuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChkYXRhLmlzVG91Y2hFdmVudCAmJiBlLnR5cGUgIT09ICd0b3VjaG1vdmUnKSByZXR1cm47XG4gIGNvbnN0IHRhcmdldFRvdWNoID0gZS50eXBlID09PSAndG91Y2htb3ZlJyAmJiBlLnRhcmdldFRvdWNoZXMgJiYgKGUudGFyZ2V0VG91Y2hlc1swXSB8fCBlLmNoYW5nZWRUb3VjaGVzWzBdKTtcbiAgY29uc3QgcGFnZVggPSBlLnR5cGUgPT09ICd0b3VjaG1vdmUnID8gdGFyZ2V0VG91Y2gucGFnZVggOiBlLnBhZ2VYO1xuICBjb25zdCBwYWdlWSA9IGUudHlwZSA9PT0gJ3RvdWNobW92ZScgPyB0YXJnZXRUb3VjaC5wYWdlWSA6IGUucGFnZVk7XG5cbiAgaWYgKGUucHJldmVudGVkQnlOZXN0ZWRTd2lwZXIpIHtcbiAgICB0b3VjaGVzLnN0YXJ0WCA9IHBhZ2VYO1xuICAgIHRvdWNoZXMuc3RhcnRZID0gcGFnZVk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKCFzd2lwZXIuYWxsb3dUb3VjaE1vdmUpIHtcbiAgICBpZiAoISQoZS50YXJnZXQpLmlzKGRhdGEuZm9jdXNhYmxlRWxlbWVudHMpKSB7XG4gICAgICBzd2lwZXIuYWxsb3dDbGljayA9IGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChkYXRhLmlzVG91Y2hlZCkge1xuICAgICAgT2JqZWN0LmFzc2lnbih0b3VjaGVzLCB7XG4gICAgICAgIHN0YXJ0WDogcGFnZVgsXG4gICAgICAgIHN0YXJ0WTogcGFnZVksXG4gICAgICAgIGN1cnJlbnRYOiBwYWdlWCxcbiAgICAgICAgY3VycmVudFk6IHBhZ2VZXG4gICAgICB9KTtcbiAgICAgIGRhdGEudG91Y2hTdGFydFRpbWUgPSBub3coKTtcbiAgICB9XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoZGF0YS5pc1RvdWNoRXZlbnQgJiYgcGFyYW1zLnRvdWNoUmVsZWFzZU9uRWRnZXMgJiYgIXBhcmFtcy5sb29wKSB7XG4gICAgaWYgKHN3aXBlci5pc1ZlcnRpY2FsKCkpIHtcbiAgICAgIC8vIFZlcnRpY2FsXG4gICAgICBpZiAocGFnZVkgPCB0b3VjaGVzLnN0YXJ0WSAmJiBzd2lwZXIudHJhbnNsYXRlIDw9IHN3aXBlci5tYXhUcmFuc2xhdGUoKSB8fCBwYWdlWSA+IHRvdWNoZXMuc3RhcnRZICYmIHN3aXBlci50cmFuc2xhdGUgPj0gc3dpcGVyLm1pblRyYW5zbGF0ZSgpKSB7XG4gICAgICAgIGRhdGEuaXNUb3VjaGVkID0gZmFsc2U7XG4gICAgICAgIGRhdGEuaXNNb3ZlZCA9IGZhbHNlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChwYWdlWCA8IHRvdWNoZXMuc3RhcnRYICYmIHN3aXBlci50cmFuc2xhdGUgPD0gc3dpcGVyLm1heFRyYW5zbGF0ZSgpIHx8IHBhZ2VYID4gdG91Y2hlcy5zdGFydFggJiYgc3dpcGVyLnRyYW5zbGF0ZSA+PSBzd2lwZXIubWluVHJhbnNsYXRlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBpZiAoZGF0YS5pc1RvdWNoRXZlbnQgJiYgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkge1xuICAgIGlmIChlLnRhcmdldCA9PT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAmJiAkKGUudGFyZ2V0KS5pcyhkYXRhLmZvY3VzYWJsZUVsZW1lbnRzKSkge1xuICAgICAgZGF0YS5pc01vdmVkID0gdHJ1ZTtcbiAgICAgIHN3aXBlci5hbGxvd0NsaWNrID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgaWYgKGRhdGEuYWxsb3dUb3VjaENhbGxiYWNrcykge1xuICAgIHN3aXBlci5lbWl0KCd0b3VjaE1vdmUnLCBlKTtcbiAgfVxuXG4gIGlmIChlLnRhcmdldFRvdWNoZXMgJiYgZS50YXJnZXRUb3VjaGVzLmxlbmd0aCA+IDEpIHJldHVybjtcbiAgdG91Y2hlcy5jdXJyZW50WCA9IHBhZ2VYO1xuICB0b3VjaGVzLmN1cnJlbnRZID0gcGFnZVk7XG4gIGNvbnN0IGRpZmZYID0gdG91Y2hlcy5jdXJyZW50WCAtIHRvdWNoZXMuc3RhcnRYO1xuICBjb25zdCBkaWZmWSA9IHRvdWNoZXMuY3VycmVudFkgLSB0b3VjaGVzLnN0YXJ0WTtcbiAgaWYgKHN3aXBlci5wYXJhbXMudGhyZXNob2xkICYmIE1hdGguc3FydChkaWZmWCAqKiAyICsgZGlmZlkgKiogMikgPCBzd2lwZXIucGFyYW1zLnRocmVzaG9sZCkgcmV0dXJuO1xuXG4gIGlmICh0eXBlb2YgZGF0YS5pc1Njcm9sbGluZyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBsZXQgdG91Y2hBbmdsZTtcblxuICAgIGlmIChzd2lwZXIuaXNIb3Jpem9udGFsKCkgJiYgdG91Y2hlcy5jdXJyZW50WSA9PT0gdG91Y2hlcy5zdGFydFkgfHwgc3dpcGVyLmlzVmVydGljYWwoKSAmJi
15B0b3VjaGVzLmN1cnJlbnRYID09PSB0b3VjaGVzLnN0YXJ0WCkge1xuICAgICAgZGF0YS5pc1Njcm9sbGluZyA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgIGlmIChkaWZmWCAqIGRpZmZYICsgZGlmZlkgKiBkaWZmWSA+PSAyNSkge1xuICAgICAgICB0b3VjaEFuZ2xlID0gTWF0aC5hdGFuMihNYXRoLmFicyhkaWZmWSksIE1hdGguYWJzKGRpZmZYKSkgKiAxODAgLyBNYXRoLlBJO1xuICAgICAgICBkYXRhLmlzU2Nyb2xsaW5nID0gc3dpcGVyLmlzSG9yaXpvbnRhbCgpID8gdG91Y2hBbmdsZSA+IHBhcmFtcy50b3VjaEFuZ2xlIDogOTAgLSB0b3VjaEFuZ2xlID4gcGFyYW1zLnRvdWNoQW5nbGU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGRhdGEuaXNTY3JvbGxpbmcpIHtcbiAgICBzd2lwZXIuZW1pdCgndG91Y2hNb3ZlT3Bwb3NpdGUnLCBlKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgZGF0YS5zdGFydE1vdmluZyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBpZiAodG91Y2hlcy5jdXJyZW50WCAhPT0gdG91Y2hlcy5zdGFydFggfHwgdG91Y2hlcy5jdXJyZW50WSAhPT0gdG91Y2hlcy5zdGFydFkpIHtcbiAgICAgIGRhdGEuc3RhcnRNb3ZpbmcgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGlmIChkYXRhLmlzU2Nyb2xsaW5nKSB7XG4gICAgZGF0YS5pc1RvdWNoZWQgPSBmYWxzZTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoIWRhdGEuc3RhcnRNb3ZpbmcpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBzd2lwZXIuYWxsb3dDbGljayA9IGZhbHNlO1xuXG4gIGlmICghcGFyYW1zLmNzc01vZGUgJiYgZS5jYW5jZWxhYmxlKSB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbiAgaWYgKHBhcmFtcy50b3VjaE1vdmVTdG9wUHJvcGFnYXRpb24gJiYgIXBhcmFtcy5uZXN0ZWQpIHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgaWYgKCFkYXRhLmlzTW92ZWQpIHtcbiAgICBpZiAocGFyYW1zLmxvb3AgJiYgIXBhcmFtcy5jc3NNb2RlKSB7XG4gICAgICBzd2lwZXIubG9vcEZpeCgpO1xuICAgIH1cblxuICAgIGRhdGEuc3RhcnRUcmFuc2xhdGUgPSBzd2lwZXIuZ2V0VHJhbnNsYXRlKCk7XG4gICAgc3dpcGVyLnNldFRyYW5zaXRpb24oMCk7XG5cbiAgICBpZiAoc3dpcGVyLmFuaW1hdGluZykge1xuICAgICAgc3dpcGVyLiR3cmFwcGVyRWwudHJpZ2dlcignd2Via2l0VHJhbnNpdGlvbkVuZCB0cmFuc2l0aW9uZW5kJyk7XG4gICAgfVxuXG4gICAgZGF0YS5hbGxvd01vbWVudHVtQm91bmNlID0gZmFsc2U7IC8vIEdyYWIgQ3Vyc29yXG5cbiAgICBpZiAocGFyYW1zLmdyYWJDdXJzb3IgJiYgKHN3aXBlci5hbGxvd1NsaWRlTmV4dCA9PT0gdHJ1ZSB8fCBzd2lwZXIuYWxsb3dTbGlkZVByZXYgPT09IHRydWUpKSB7XG4gICAgICBzd2lwZXIuc2V0R3JhYkN1cnNvcih0cnVlKTtcbiAgICB9XG5cbiAgICBzd2lwZXIuZW1pdCgnc2xpZGVyRmlyc3RNb3ZlJywgZSk7XG4gIH1cblxuICBzd2lwZXIuZW1pdCgnc2xpZGVyTW92ZScsIGUpO1xuICBkYXRhLmlzTW92ZWQgPSB0cnVlO1xuICBsZXQgZGlmZiA9IHN3aXBlci5pc0hvcml6b250YWwoKSA/IGRpZmZYIDogZGlmZlk7XG4gIHRvdWNoZXMuZGlmZiA9IGRpZmY7XG4gIGRpZmYgKj0gcGFyYW1zLnRvdWNoUmF0aW87XG4gIGlmIChydGwpIGRpZmYgPSAtZGlmZjtcbiAgc3dpcGVyLnN3aXBlRGlyZWN0aW9uID0gZGlmZiA+IDAgPyAncHJldicgOiAnbmV4dCc7XG4gIGRhdGEuY3VycmVudFRyYW5zbGF0ZSA9IGRpZmYgKyBkYXRhLnN0YXJ0VHJhbnNsYXRlO1xuICBsZXQgZGlzYWJsZVBhcmVudFN3aXBlciA9IHRydWU7XG4gIGxldCByZXNpc3RhbmNlUmF0aW8gPSBwYXJhbXMucmVzaXN0YW5jZVJhdGlvO1xuXG4gIGlmIChwYXJhbXMudG91Y2hSZWxlYXNlT25FZGdlcykge1xuICAgIHJlc2lzdGFuY2VSYXRpbyA9IDA7XG4gIH1cblxuICBpZiAoZGlmZiA+IDAgJiYgZGF0YS5jdXJyZW50VHJhbnNsYXRlID4gc3dpcGVyLm1pblRyYW5zbGF0ZSgpKSB7XG4gICAgZGlzYWJsZVBhcmVudFN3aXBlciA9IGZhbHNlO1xuICAgIGlmIChwYXJhbXMucmVzaXN0YW5jZSkgZGF0YS5jdXJyZW50VHJhbnNsYXRlID0gc3dpcGVyLm1pblRyYW5zbGF0ZSgpIC0gMSArICgtc3dpcGVyLm1pblRyYW5zbGF0ZSgpICsgZGF0YS5zdGFydFRyYW5zbGF0ZSArIGRpZmYpICoqIHJlc2lzdGFuY2VSYXRpbztcbiAgfSBlbHNlIGlmIChkaWZmIDwgMCAmJiBkYXRhLmN1cnJlbnRUcmFuc2xhdGUgPCBzd2lwZXIubWF4VHJhbnNsYXRlKCkpIHtcbiAgICBkaXNhYmxlUGFyZW50U3dpcGVyID0gZmFsc2U7XG4gICAgaWYgKHBhcmFtcy5yZXNpc3RhbmNlKSBkYXRhLmN1cnJlbnRUcmFuc2xhdGUgPSBzd2lwZXIubWF4VHJhbnNsYXRlKCkgKyAxIC0gKHN3aXBlci5tYXhUcmFuc2xhdGUoKSAtIGRhdGEuc3RhcnRUcmFuc2xhdGUgLSBkaWZmKSAqKiByZXNpc3RhbmNlUmF0aW87XG4gIH1cblxuICBpZiAoZGlzYWJsZVBhcmVudFN3aXBlcikge1xuICAgIGUucHJldmVudGVkQnlOZXN0ZWRTd2lwZXIgPSB0cnVlO1xuICB9IC8vIERpcmVjdGlvbnMgbG9ja3NcblxuXG4gIGlmICghc3dpcGVyLmFsbG93U2xpZGVOZXh0ICYmIHN3aXBlci5zd2lwZURpcmVjdGlvbiA9PT0gJ25leHQnICYmIGRhdGEuY3VycmVudFRyYW5zbGF0ZSA8IGRhdGEuc3RhcnRUcmFuc2xhdGUpIHtcbiAgICBkYXRhLmN1cnJlbnRUcmFuc2xhdGUgPSBkYXRhLnN0YXJ0VHJhbnNsYXRlO1xuICB9XG5cbiAgaWYgKCFzd2lwZXIuYWxsb3dTbGlkZVByZXYgJiYgc3dpcGVyLnN3aXBlRGlyZWN0aW9uID09PSAncHJldicgJiYgZGF0YS5jdXJyZW50VHJhbnNsYXRlID4gZGF0YS5zdGFydFRyYW5zbGF0ZSkge1xuICAgIGRhdGEuY3VycmVudFRyYW5zbGF0ZSA9IGRhdGEuc3RhcnRUcmFuc2xhdGU7XG4gIH1cblxuICBpZiAoIXN3aXBlci5hbGxvd1NsaWRlUHJldiAmJiAhc3dpcGVyLmFsbG93U2xpZGVOZXh0KSB7XG4gICAgZGF0YS5jdXJyZW50VHJhbnNsYXRlID0gZGF0YS5zdGFydFRyYW5zbGF0ZTtcbiAgfSAvLyBUaHJlc2hvbGRcblxuXG4gIGlmIChwYXJhbXMudGhyZXNob2xkID4gMCkge1xuICAgIGlmIChNYXRoLmFicyhkaWZmKSA+IHBhcmFtcy50aHJlc2hvbGQgfHwgZGF0YS5hbGxvd1RocmVzaG9sZE1vdmUpIHtcbiAgICAgIGlmICghZGF0YS5hbGxvd1RocmVzaG9sZE1vdmUpIHtcbiAgICAgICAgZGF0YS5hbGxvd1RocmVzaG9sZE1vdmUgPSB0cnVlO1xuICAgICAgICB0b3VjaGVzLnN0YXJ0WCA9IHRvdWNoZXMuY3VycmVudFg7XG4gICAgICAgI
15HRvdWNoZXMuc3RhcnRZID0gdG91Y2hlcy5jdXJyZW50WTtcbiAgICAgICAgZGF0YS5jdXJyZW50VHJhbnNsYXRlID0gZGF0YS5zdGFydFRyYW5zbGF0ZTtcbiAgICAgICAgdG91Y2hlcy5kaWZmID0gc3dpcGVyLmlzSG9yaXpvbnRhbCgpID8gdG91Y2hlcy5jdXJyZW50WCAtIHRvdWNoZXMuc3RhcnRYIDogdG91Y2hlcy5jdXJyZW50WSAtIHRvdWNoZXMuc3RhcnRZO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGRhdGEuY3VycmVudFRyYW5zbGF0ZSA9IGRhdGEuc3RhcnRUcmFuc2xhdGU7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgaWYgKCFwYXJhbXMuZm9sbG93RmluZ2VyIHx8IHBhcmFtcy5jc3NNb2RlKSByZXR1cm47IC8vIFVwZGF0ZSBhY3RpdmUgaW5kZXggaW4gZnJlZSBtb2RlXG5cbiAgaWYgKHBhcmFtcy5mcmVlTW9kZSAmJiBwYXJhbXMuZnJlZU1vZGUuZW5hYmxlZCAmJiBzd2lwZXIuZnJlZU1vZGUgfHwgcGFyYW1zLndhdGNoU2xpZGVzUHJvZ3Jlc3MpIHtcbiAgICBzd2lwZXIudXBkYXRlQWN0aXZlSW5kZXgoKTtcbiAgICBzd2lwZXIudXBkYXRlU2xpZGVzQ2xhc3NlcygpO1xuICB9XG5cbiAgaWYgKHN3aXBlci5wYXJhbXMuZnJlZU1vZGUgJiYgcGFyYW1zLmZyZWVNb2RlLmVuYWJsZWQgJiYgc3dpcGVyLmZyZWVNb2RlKSB7XG4gICAgc3dpcGVyLmZyZWVNb2RlLm9uVG91Y2hNb3ZlKCk7XG4gIH0gLy8gVXBkYXRlIHByb2dyZXNzXG5cblxuICBzd2lwZXIudXBkYXRlUHJvZ3Jlc3MoZGF0YS5jdXJyZW50VHJhbnNsYXRlKTsgLy8gVXBkYXRlIHRyYW5zbGF0ZVxuXG4gIHN3aXBlci5zZXRUcmFuc2xhdGUoZGF0YS5jdXJyZW50VHJhbnNsYXRlKTtcbn0iLCJpbXBvcnQgeyBub3csIG5leHRUaWNrIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3V0aWxzLmpzJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG9uVG91Y2hFbmQoZXZlbnQpIHtcbiAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgY29uc3QgZGF0YSA9IHN3aXBlci50b3VjaEV2ZW50c0RhdGE7XG4gIGNvbnN0IHtcbiAgICBwYXJhbXMsXG4gICAgdG91Y2hlcyxcbiAgICBydGxUcmFuc2xhdGU6IHJ0bCxcbiAgICBzbGlkZXNHcmlkLFxuICAgIGVuYWJsZWRcbiAgfSA9IHN3aXBlcjtcbiAgaWYgKCFlbmFibGVkKSByZXR1cm47XG4gIGxldCBlID0gZXZlbnQ7XG4gIGlmIChlLm9yaWdpbmFsRXZlbnQpIGUgPSBlLm9yaWdpbmFsRXZlbnQ7XG5cbiAgaWYgKGRhdGEuYWxsb3dUb3VjaENhbGxiYWNrcykge1xuICAgIHN3aXBlci5lbWl0KCd0b3VjaEVuZCcsIGUpO1xuICB9XG5cbiAgZGF0YS5hbGxvd1RvdWNoQ2FsbGJhY2tzID0gZmFsc2U7XG5cbiAgaWYgKCFkYXRhLmlzVG91Y2hlZCkge1xuICAgIGlmIChkYXRhLmlzTW92ZWQgJiYgcGFyYW1zLmdyYWJDdXJzb3IpIHtcbiAgICAgIHN3aXBlci5zZXRHcmFiQ3Vyc29yKGZhbHNlKTtcbiAgICB9XG5cbiAgICBkYXRhLmlzTW92ZWQgPSBmYWxzZTtcbiAgICBkYXRhLnN0YXJ0TW92aW5nID0gZmFsc2U7XG4gICAgcmV0dXJuO1xuICB9IC8vIFJldHVybiBHcmFiIEN1cnNvclxuXG5cbiAgaWYgKHBhcmFtcy5ncmFiQ3Vyc29yICYmIGRhdGEuaXNNb3ZlZCAmJiBkYXRhLmlzVG91Y2hlZCAmJiAoc3dpcGVyLmFsbG93U2xpZGVOZXh0ID09PSB0cnVlIHx8IHN3aXBlci5hbGxvd1NsaWRlUHJldiA9PT0gdHJ1ZSkpIHtcbiAgICBzd2lwZXIuc2V0R3JhYkN1cnNvcihmYWxzZSk7XG4gIH0gLy8gVGltZSBkaWZmXG5cblxuICBjb25zdCB0b3VjaEVuZFRpbWUgPSBub3coKTtcbiAgY29uc3QgdGltZURpZmYgPSB0b3VjaEVuZFRpbWUgLSBkYXRhLnRvdWNoU3RhcnRUaW1lOyAvLyBUYXAsIGRvdWJsZVRhcCwgQ2xpY2tcblxuICBpZiAoc3dpcGVyLmFsbG93Q2xpY2spIHtcbiAgICBjb25zdCBwYXRoVHJlZSA9IGUucGF0aCB8fCBlLmNvbXBvc2VkUGF0aCAmJiBlLmNvbXBvc2VkUGF0aCgpO1xuICAgIHN3aXBlci51cGRhdGVDbGlja2VkU2xpZGUocGF0aFRyZWUgJiYgcGF0aFRyZWVbMF0gfHwgZS50YXJnZXQpO1xuICAgIHN3aXBlci5lbWl0KCd0YXAgY2xpY2snLCBlKTtcblxuICAgIGlmICh0aW1lRGlmZiA8IDMwMCAmJiB0b3VjaEVuZFRpbWUgLSBkYXRhLmxhc3RDbGlja1RpbWUgPCAzMDApIHtcbiAgICAgIHN3aXBlci5lbWl0KCdkb3VibGVUYXAgZG91YmxlQ2xpY2snLCBlKTtcbiAgICB9XG4gIH1cblxuICBkYXRhLmxhc3RDbGlja1RpbWUgPSBub3coKTtcbiAgbmV4dFRpY2soKCkgPT4ge1xuICAgIGlmICghc3dpcGVyLmRlc3Ryb3llZCkgc3dpcGVyLmFsbG93Q2xpY2sgPSB0cnVlO1xuICB9KTtcblxuICBpZiAoIWRhdGEuaXNUb3VjaGVkIHx8ICFkYXRhLmlzTW92ZWQgfHwgIXN3aXBlci5zd2lwZURpcmVjdGlvbiB8fCB0b3VjaGVzLmRpZmYgPT09IDAgfHwgZGF0YS5jdXJyZW50VHJhbnNsYXRlID09PSBkYXRhLnN0YXJ0VHJhbnNsYXRlKSB7XG4gICAgZGF0YS5pc1RvdWNoZWQgPSBmYWxzZTtcbiAgICBkYXRhLmlzTW92ZWQgPSBmYWxzZTtcbiAgICBkYXRhLnN0YXJ0TW92aW5nID0gZmFsc2U7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZGF0YS5pc1RvdWNoZWQgPSBmYWxzZTtcbiAgZGF0YS5pc01vdmVkID0gZmFsc2U7XG4gIGRhdGEuc3RhcnRNb3ZpbmcgPSBmYWxzZTtcbiAgbGV0IGN1cnJlbnRQb3M7XG5cbiAgaWYgKHBhcmFtcy5mb2xsb3dGaW5nZXIpIHtcbiAgICBjdXJyZW50UG9zID0gcnRsID8gc3dpcGVyLnRyYW5zbGF0ZSA6IC1zd2lwZXIudHJhbnNsYXRlO1xuICB9IGVsc2Uge1xuICAgIGN1cnJlbnRQb3MgPSAtZGF0YS5jdXJyZW50VHJhbnNsYXRlO1xuICB9XG5cbiAgaWYgKHBhcmFtcy5jc3NNb2RlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHN3aXBlci5wYXJhbXMuZnJlZU1vZGUgJiYgcGFyYW1zLmZyZWVNb2RlLmVuYWJsZWQpIHtcbiAgICBzd2lwZXIuZnJlZU1vZGUub25Ub3VjaEVuZCh7XG4gICAgICBjdXJyZW50UG9zXG4gICAgfSk7XG4gICAgcmV0dXJuO1xuICB9IC8vIEZpbmQgY3VycmVudCBzbGlkZVxuXG5cbiAgbGV0IHN0b3BJbmRleCA9IDA7XG4gIGxldCBncm91cFNpemUgPSBzd2lwZXIuc2xpZGVzU2l6ZXNHcmlkWzBdO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2xpZGVzR3JpZC5sZW5ndGg7IGkgKz0gaSA8IHBhcmFtcy5zbGlkZXNQZXJHcm91cFNraXAgPyAxIDogcGFyYW1zLnNsaWRlc1Blckdyb3VwKSB7XG4gICAgY29uc3QgaW5jcmVtZW50ID0gaSA8IHBhcmFtcy5zbGlkZXNQZXJHcm91cFNraXAgLSAxID8gMSA6IHBhcmFtcy5zbGlkZXNQZXJHcm91cDtcblxuICAgIGlmICh0eXBlb2Ygc2xpZGVzR3JpZFtpICsgaW5jcmVtZW50XSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGlmIChjdXJyZW50UG9zID49IHNsaWRlc0dyaWRbaV0gJiYgY3VycmVudFBvcyA8IHNsaWRlc0dyaWRbaSArIGluY3JlbWVudF0pIHtcbiAgICAgICAgc3RvcEluZGV4ID0gaTtcbiAgICAgICAgZ3JvdXBTaXplID0gc2xpZGVzR3JpZFtpICsgaW5jcmVtZW50XSAtIHNsaWRlc0dyaWRbaV07XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjdXJyZW50UG9zID49IHNsaWRlc0dyaWRbaV0pIHtcbiAgICAgIHN0b3BJbmRleCA9IG
15k7XG4gICAgICBncm91cFNpemUgPSBzbGlkZXNHcmlkW3NsaWRlc0dyaWQubGVuZ3RoIC0gMV0gLSBzbGlkZXNHcmlkW3NsaWRlc0dyaWQubGVuZ3RoIC0gMl07XG4gICAgfVxuICB9XG5cbiAgbGV0IHJld2luZEZpcnN0SW5kZXggPSBudWxsO1xuICBsZXQgcmV3aW5kTGFzdEluZGV4ID0gbnVsbDtcblxuICBpZiAocGFyYW1zLnJld2luZCkge1xuICAgIGlmIChzd2lwZXIuaXNCZWdpbm5pbmcpIHtcbiAgICAgIHJld2luZExhc3RJbmRleCA9IHN3aXBlci5wYXJhbXMudmlydHVhbCAmJiBzd2lwZXIucGFyYW1zLnZpcnR1YWwuZW5hYmxlZCAmJiBzd2lwZXIudmlydHVhbCA/IHN3aXBlci52aXJ0dWFsLnNsaWRlcy5sZW5ndGggLSAxIDogc3dpcGVyLnNsaWRlcy5sZW5ndGggLSAxO1xuICAgIH0gZWxzZSBpZiAoc3dpcGVyLmlzRW5kKSB7XG4gICAgICByZXdpbmRGaXJzdEluZGV4ID0gMDtcbiAgICB9XG4gIH0gLy8gRmluZCBjdXJyZW50IHNsaWRlIHNpemVcblxuXG4gIGNvbnN0IHJhdGlvID0gKGN1cnJlbnRQb3MgLSBzbGlkZXNHcmlkW3N0b3BJbmRleF0pIC8gZ3JvdXBTaXplO1xuICBjb25zdCBpbmNyZW1lbnQgPSBzdG9wSW5kZXggPCBwYXJhbXMuc2xpZGVzUGVyR3JvdXBTa2lwIC0gMSA/IDEgOiBwYXJhbXMuc2xpZGVzUGVyR3JvdXA7XG5cbiAgaWYgKHRpbWVEaWZmID4gcGFyYW1zLmxvbmdTd2lwZXNNcykge1xuICAgIC8vIExvbmcgdG91Y2hlc1xuICAgIGlmICghcGFyYW1zLmxvbmdTd2lwZXMpIHtcbiAgICAgIHN3aXBlci5zbGlkZVRvKHN3aXBlci5hY3RpdmVJbmRleCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHN3aXBlci5zd2lwZURpcmVjdGlvbiA9PT0gJ25leHQnKSB7XG4gICAgICBpZiAocmF0aW8gPj0gcGFyYW1zLmxvbmdTd2lwZXNSYXRpbykgc3dpcGVyLnNsaWRlVG8ocGFyYW1zLnJld2luZCAmJiBzd2lwZXIuaXNFbmQgPyByZXdpbmRGaXJzdEluZGV4IDogc3RvcEluZGV4ICsgaW5jcmVtZW50KTtlbHNlIHN3aXBlci5zbGlkZVRvKHN0b3BJbmRleCk7XG4gICAgfVxuXG4gICAgaWYgKHN3aXBlci5zd2lwZURpcmVjdGlvbiA9PT0gJ3ByZXYnKSB7XG4gICAgICBpZiAocmF0aW8gPiAxIC0gcGFyYW1zLmxvbmdTd2lwZXNSYXRpbykge1xuICAgICAgICBzd2lwZXIuc2xpZGVUbyhzdG9wSW5kZXggKyBpbmNyZW1lbnQpO1xuICAgICAgfSBlbHNlIGlmIChyZXdpbmRMYXN0SW5kZXggIT09IG51bGwgJiYgcmF0aW8gPCAwICYmIE1hdGguYWJzKHJhdGlvKSA+IHBhcmFtcy5sb25nU3dpcGVzUmF0aW8pIHtcbiAgICAgICAgc3dpcGVyLnNsaWRlVG8ocmV3aW5kTGFzdEluZGV4KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN3aXBlci5zbGlkZVRvKHN0b3BJbmRleCk7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIFNob3J0IHN3aXBlc1xuICAgIGlmICghcGFyYW1zLnNob3J0U3dpcGVzKSB7XG4gICAgICBzd2lwZXIuc2xpZGVUbyhzd2lwZXIuYWN0aXZlSW5kZXgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGlzTmF2QnV0dG9uVGFyZ2V0ID0gc3dpcGVyLm5hdmlnYXRpb24gJiYgKGUudGFyZ2V0ID09PSBzd2lwZXIubmF2aWdhdGlvbi5uZXh0RWwgfHwgZS50YXJnZXQgPT09IHN3aXBlci5uYXZpZ2F0aW9uLnByZXZFbCk7XG5cbiAgICBpZiAoIWlzTmF2QnV0dG9uVGFyZ2V0KSB7XG4gICAgICBpZiAoc3dpcGVyLnN3aXBlRGlyZWN0aW9uID09PSAnbmV4dCcpIHtcbiAgICAgICAgc3dpcGVyLnNsaWRlVG8ocmV3aW5kRmlyc3RJbmRleCAhPT0gbnVsbCA/IHJld2luZEZpcnN0SW5kZXggOiBzdG9wSW5kZXggKyBpbmNyZW1lbnQpO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3dpcGVyLnN3aXBlRGlyZWN0aW9uID09PSAncHJldicpIHtcbiAgICAgICAgc3dpcGVyLnNsaWRlVG8ocmV3aW5kTGFzdEluZGV4ICE9PSBudWxsID8gcmV3aW5kTGFzdEluZGV4IDogc3RvcEluZGV4KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGUudGFyZ2V0ID09PSBzd2lwZXIubmF2aWdhdGlvbi5uZXh0RWwpIHtcbiAgICAgIHN3aXBlci5zbGlkZVRvKHN0b3BJbmRleCArIGluY3JlbWVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN3aXBlci5zbGlkZVRvKHN0b3BJbmRleCk7XG4gICAgfVxuICB9XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gb25SZXNpemUoKSB7XG4gIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gIGNvbnN0IHtcbiAgICBwYXJhbXMsXG4gICAgZWxcbiAgfSA9IHN3aXBlcjtcbiAgaWYgKGVsICYmIGVsLm9mZnNldFdpZHRoID09PSAwKSByZXR1cm47IC8vIEJyZWFrcG9pbnRzXG5cbiAgaWYgKHBhcmFtcy5icmVha3BvaW50cykge1xuICAgIHN3aXBlci5zZXRCcmVha3BvaW50KCk7XG4gIH0gLy8gU2F2ZSBsb2Nrc1xuXG5cbiAgY29uc3Qge1xuICAgIGFsbG93U2xpZGVOZXh0LFxuICAgIGFsbG93U2xpZGVQcmV2LFxuICAgIHNuYXBHcmlkXG4gIH0gPSBzd2lwZXI7IC8vIERpc2FibGUgbG9ja3Mgb24gcmVzaXplXG5cbiAgc3dpcGVyLmFsbG93U2xpZGVOZXh0ID0gdHJ1ZTtcbiAgc3dpcGVyLmFsbG93U2xpZGVQcmV2ID0gdHJ1ZTtcbiAgc3dpcGVyLnVwZGF0ZVNpemUoKTtcbiAgc3dpcGVyLnVwZGF0ZVNsaWRlcygpO1xuICBzd2lwZXIudXBkYXRlU2xpZGVzQ2xhc3NlcygpO1xuXG4gIGlmICgocGFyYW1zLnNsaWRlc1BlclZpZXcgPT09ICdhdXRvJyB8fCBwYXJhbXMuc2xpZGVzUGVyVmlldyA+IDEpICYmIHN3aXBlci5pc0VuZCAmJiAhc3dpcGVyLmlzQmVnaW5uaW5nICYmICFzd2lwZXIucGFyYW1zLmNlbnRlcmVkU2xpZGVzKSB7XG4gICAgc3dpcGVyLnNsaWRlVG8oc3dpcGVyLnNsaWRlcy5sZW5ndGggLSAxLCAwLCBmYWxzZSwgdHJ1ZSk7XG4gIH0gZWxzZSB7XG4gICAgc3dpcGVyLnNsaWRlVG8oc3dpcGVyLmFjdGl2ZUluZGV4LCAwLCBmYWxzZSwgdHJ1ZSk7XG4gIH1cblxuICBpZiAoc3dpcGVyLmF1dG9wbGF5ICYmIHN3aXBlci5hdXRvcGxheS5ydW5uaW5nICYmIHN3aXBlci5hdXRvcGxheS5wYXVzZWQpIHtcbiAgICBzd2lwZXIuYXV0b3BsYXkucnVuKCk7XG4gIH0gLy8gUmV0dXJuIGxvY2tzIGFmdGVyIHJlc2l6ZVxuXG5cbiAgc3dpcGVyLmFsbG93U2xpZGVQcmV2ID0gYWxsb3dTbGlkZVByZXY7XG4gIHN3aXBlci5hbGxvd1NsaWRlTmV4dCA9IGFsbG93U2xpZGVOZXh0O1xuXG4gIGlmIChzd2lwZXIucGFyYW1zLndhdGNoT3ZlcmZsb3cgJiYgc25hcEdyaWQgIT09I
15HN3aXBlci5zbmFwR3JpZCkge1xuICAgIHN3aXBlci5jaGVja092ZXJmbG93KCk7XG4gIH1cbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBvbkNsaWNrKGUpIHtcbiAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgaWYgKCFzd2lwZXIuZW5hYmxlZCkgcmV0dXJuO1xuXG4gIGlmICghc3dpcGVyLmFsbG93Q2xpY2spIHtcbiAgICBpZiAoc3dpcGVyLnBhcmFtcy5wcmV2ZW50Q2xpY2tzKSBlLnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICBpZiAoc3dpcGVyLnBhcmFtcy5wcmV2ZW50Q2xpY2tzUHJvcGFnYXRpb24gJiYgc3dpcGVyLmFuaW1hdGluZykge1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICB9XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gb25TY3JvbGwoKSB7XG4gIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gIGNvbnN0IHtcbiAgICB3cmFwcGVyRWwsXG4gICAgcnRsVHJhbnNsYXRlLFxuICAgIGVuYWJsZWRcbiAgfSA9IHN3aXBlcjtcbiAgaWYgKCFlbmFibGVkKSByZXR1cm47XG4gIHN3aXBlci5wcmV2aW91c1RyYW5zbGF0ZSA9IHN3aXBlci50cmFuc2xhdGU7XG5cbiAgaWYgKHN3aXBlci5pc0hvcml6b250YWwoKSkge1xuICAgIHN3aXBlci50cmFuc2xhdGUgPSAtd3JhcHBlckVsLnNjcm9sbExlZnQ7XG4gIH0gZWxzZSB7XG4gICAgc3dpcGVyLnRyYW5zbGF0ZSA9IC13cmFwcGVyRWwuc2Nyb2xsVG9wO1xuICB9IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuXG5cbiAgaWYgKHN3aXBlci50cmFuc2xhdGUgPT09IDApIHN3aXBlci50cmFuc2xhdGUgPSAwO1xuICBzd2lwZXIudXBkYXRlQWN0aXZlSW5kZXgoKTtcbiAgc3dpcGVyLnVwZGF0ZVNsaWRlc0NsYXNzZXMoKTtcbiAgbGV0IG5ld1Byb2dyZXNzO1xuICBjb25zdCB0cmFuc2xhdGVzRGlmZiA9IHN3aXBlci5tYXhUcmFuc2xhdGUoKSAtIHN3aXBlci5taW5UcmFuc2xhdGUoKTtcblxuICBpZiAodHJhbnNsYXRlc0RpZmYgPT09IDApIHtcbiAgICBuZXdQcm9ncmVzcyA9IDA7XG4gIH0gZWxzZSB7XG4gICAgbmV3UHJvZ3Jlc3MgPSAoc3dpcGVyLnRyYW5zbGF0ZSAtIHN3aXBlci5taW5UcmFuc2xhdGUoKSkgLyB0cmFuc2xhdGVzRGlmZjtcbiAgfVxuXG4gIGlmIChuZXdQcm9ncmVzcyAhPT0gc3dpcGVyLnByb2dyZXNzKSB7XG4gICAgc3dpcGVyLnVwZGF0ZVByb2dyZXNzKHJ0bFRyYW5zbGF0ZSA/IC1zd2lwZXIudHJhbnNsYXRlIDogc3dpcGVyLnRyYW5zbGF0ZSk7XG4gIH1cblxuICBzd2lwZXIuZW1pdCgnc2V0VHJhbnNsYXRlJywgc3dpcGVyLnRyYW5zbGF0ZSwgZmFsc2UpO1xufSIsImltcG9ydCB7IGdldERvY3VtZW50IH0gZnJvbSAnc3NyLXdpbmRvdyc7XG5pbXBvcnQgb25Ub3VjaFN0YXJ0IGZyb20gJy4vb25Ub3VjaFN0YXJ0LmpzJztcbmltcG9ydCBvblRvdWNoTW92ZSBmcm9tICcuL29uVG91Y2hNb3ZlLmpzJztcbmltcG9ydCBvblRvdWNoRW5kIGZyb20gJy4vb25Ub3VjaEVuZC5qcyc7XG5pbXBvcnQgb25SZXNpemUgZnJvbSAnLi9vblJlc2l6ZS5qcyc7XG5pbXBvcnQgb25DbGljayBmcm9tICcuL29uQ2xpY2suanMnO1xuaW1wb3J0IG9uU2Nyb2xsIGZyb20gJy4vb25TY3JvbGwuanMnO1xubGV0IGR1bW15RXZlbnRBdHRhY2hlZCA9IGZhbHNlO1xuXG5mdW5jdGlvbiBkdW1teUV2ZW50TGlzdGVuZXIoKSB7fVxuXG5jb25zdCBldmVudHMgPSAoc3dpcGVyLCBtZXRob2QpID0+IHtcbiAgY29uc3QgZG9jdW1lbnQgPSBnZXREb2N1bWVudCgpO1xuICBjb25zdCB7XG4gICAgcGFyYW1zLFxuICAgIHRvdWNoRXZlbnRzLFxuICAgIGVsLFxuICAgIHdyYXBwZXJFbCxcbiAgICBkZXZpY2UsXG4gICAgc3VwcG9ydFxuICB9ID0gc3dpcGVyO1xuICBjb25zdCBjYXB0dXJlID0gISFwYXJhbXMubmVzdGVkO1xuICBjb25zdCBkb21NZXRob2QgPSBtZXRob2QgPT09ICdvbicgPyAnYWRkRXZlbnRMaXN0ZW5lcicgOiAncmVtb3ZlRXZlbnRMaXN0ZW5lcic7XG4gIGNvbnN0IHN3aXBlck1ldGhvZCA9IG1ldGhvZDsgLy8gVG91Y2ggRXZlbnRzXG5cbiAgaWYgKCFzdXBwb3J0LnRvdWNoKSB7XG4gICAgZWxbZG9tTWV0aG9kXSh0b3VjaEV2ZW50cy5zdGFydCwgc3dpcGVyLm9uVG91Y2hTdGFydCwgZmFsc2UpO1xuICAgIGRvY3VtZW50W2RvbU1ldGhvZF0odG91Y2hFdmVudHMubW92ZSwgc3dpcGVyLm9uVG91Y2hNb3ZlLCBjYXB0dXJlKTtcbiAgICBkb2N1bWVudFtkb21NZXRob2RdKHRvdWNoRXZlbnRzLmVuZCwgc3dpcGVyLm9uVG91Y2hFbmQsIGZhbHNlKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBwYXNzaXZlTGlzdGVuZXIgPSB0b3VjaEV2ZW50cy5zdGFydCA9PT0gJ3RvdWNoc3RhcnQnICYmIHN1cHBvcnQucGFzc2l2ZUxpc3RlbmVyICYmIHBhcmFtcy5wYXNzaXZlTGlzdGVuZXJzID8ge1xuICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICAgIGNhcHR1cmU6IGZhbHNlXG4gICAgfSA6IGZhbHNlO1xuICAgIGVsW2RvbU1ldGhvZF0odG91Y2hFdmVudHMuc3RhcnQsIHN3aXBlci5vblRvdWNoU3RhcnQsIHBhc3NpdmVMaXN0ZW5lcik7XG4gICAgZWxbZG9tTWV0aG9kXSh0b3VjaEV2ZW50cy5tb3ZlLCBzd2lwZXIub25Ub3VjaE1vdmUsIHN1cHBvcnQucGFzc2l2ZUxpc3RlbmVyID8ge1xuICAgICAgcGFzc2l2ZTogZmFsc2UsXG4gICAgICBjYXB0dXJlXG4gICAgfSA6IGNhcHR1cmUpO1xuICAgIGVsW2RvbU1ldGhvZF0odG91Y2hFdmVudHMuZW5kLCBzd2lwZXIub25Ub3VjaEVuZCwgcGFzc2l2ZUxpc3RlbmVyKTtcblxuICAgIGlmICh0b3VjaEV2ZW50cy5jYW5jZWwpIHtcbiAgICAgIGVsW2RvbU1ldGhvZF0odG91Y2hFdmVudHMuY2FuY2VsLCBzd2lwZXIub25Ub3VjaEVuZCwgcGFzc2l2ZUxpc3RlbmVyKTtcbiAgICB9XG4gIH0gLy8gUHJldmVudCBMaW5rcyBDbGlja3NcblxuXG4gIGlmIChwYXJhbXMucHJldmVudENsaWNrcyB8fCBwYXJhbXMucHJldmVudENsaWNrc1Byb3BhZ2F0aW9uKSB7XG4gICAgZWxbZG9tTWV0aG9kXSgnY2xpY2snLCBzd2lwZXIub25DbGljaywgdHJ1ZSk7XG4gIH1cblxuICBpZiAocGFyYW1zLmNzc01vZGUpIHtcbiAgICB3cmFwcGVyRWxbZG9tTWV0aG9kXSgnc2Nyb2xsJywgc3dpcGVyLm9uU2Nyb2xsKTtcbiAgfSAvLyBSZXNpemUgaGFuZGxlclxuXG5cbiAgaWYgKHBhcmFtcy51cGRhdGVPbldpbmRvd1Jlc2l6ZSkge1xuICAgIHN3aXBlcltzd2lwZXJNZXRob2RdKGRldmljZS5pb3MgfHwgZGV2aWNlLmFuZHJvaWQgPyAncmVzaXplIG9yaWVudGF0aW9uY2hhbmdlIG9ic2VydmVyVXBkYXRlJyA6ICdyZXNpemUgb2JzZXJ2ZXJVcGRhdGUnLCBvblJlc2l6ZSwgdHJ1ZSk7XG4gIH0gZWxzZSB7XG4gICAgc3dpcGVyW3N3aXBlck1ldGhvZF0oJ29ic2VydmVyVXBkYXRlJywgb25SZXNpemUsIHRydWUpO1xuICB9XG59O1xuXG5mdW5jdGlvbiBhdHRhY2hFdmVudHMoKSB7XG4gIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gIGNvbnN0IGRvY3VtZW50ID0gZ2V0RG9jdW1lbnQoKTtcbiAgY29uc3Qge1xuICAgIHBhcmFtcyxcbiAgICBzdXBwb3J0XG4gIH0gPSBzd2lwZXI7XG4gIHN3aXBlci5vblRvdWNoU3RhcnQgPSBvblRvdWNoU3RhcnQuYmluZChzd2lwZXIpO1xuICBzd2lwZXIub25Ub3VjaE1vdmUgPSBvblRvdWNoTW92ZS5iaW5kKHN3aXBlcik7XG4gIHN3aXBlci5vblRvdWNoRW5kID0gb25Ub3VjaEVuZC5iaW5kKHN3aXBlcik7XG5cbiAgaWYgKHBhcmFtcy5jc3NNb2RlKSB7XG4gICAgc3dpcGVyLm9uU2Nyb2xsID0gb25TY3JvbGwuYmluZChzd2lwZXIpO1xuICB9XG5cbiAgc3dpcGVyLm9uQ2xpY2sgP
15SBvbkNsaWNrLmJpbmQoc3dpcGVyKTtcblxuICBpZiAoc3VwcG9ydC50b3VjaCAmJiAhZHVtbXlFdmVudEF0dGFjaGVkKSB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIGR1bW15RXZlbnRMaXN0ZW5lcik7XG4gICAgZHVtbXlFdmVudEF0dGFjaGVkID0gdHJ1ZTtcbiAgfVxuXG4gIGV2ZW50cyhzd2lwZXIsICdvbicpO1xufVxuXG5mdW5jdGlvbiBkZXRhY2hFdmVudHMoKSB7XG4gIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gIGV2ZW50cyhzd2lwZXIsICdvZmYnKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBhdHRhY2hFdmVudHMsXG4gIGRldGFjaEV2ZW50c1xufTsiLCJpbXBvcnQgeyBleHRlbmQgfSBmcm9tICcuLi8uLi9zaGFyZWQvdXRpbHMuanMnO1xuXG5jb25zdCBpc0dyaWRFbmFibGVkID0gKHN3aXBlciwgcGFyYW1zKSA9PiB7XG4gIHJldHVybiBzd2lwZXIuZ3JpZCAmJiBwYXJhbXMuZ3JpZCAmJiBwYXJhbXMuZ3JpZC5yb3dzID4gMTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNldEJyZWFrcG9pbnQoKSB7XG4gIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gIGNvbnN0IHtcbiAgICBhY3RpdmVJbmRleCxcbiAgICBpbml0aWFsaXplZCxcbiAgICBsb29wZWRTbGlkZXMgPSAwLFxuICAgIHBhcmFtcyxcbiAgICAkZWxcbiAgfSA9IHN3aXBlcjtcbiAgY29uc3QgYnJlYWtwb2ludHMgPSBwYXJhbXMuYnJlYWtwb2ludHM7XG4gIGlmICghYnJlYWtwb2ludHMgfHwgYnJlYWtwb2ludHMgJiYgT2JqZWN0LmtleXMoYnJlYWtwb2ludHMpLmxlbmd0aCA9PT0gMCkgcmV0dXJuOyAvLyBHZXQgYnJlYWtwb2ludCBmb3Igd2luZG93IHdpZHRoIGFuZCB1cGRhdGUgcGFyYW1ldGVyc1xuXG4gIGNvbnN0IGJyZWFrcG9pbnQgPSBzd2lwZXIuZ2V0QnJlYWtwb2ludChicmVha3BvaW50cywgc3dpcGVyLnBhcmFtcy5icmVha3BvaW50c0Jhc2UsIHN3aXBlci5lbCk7XG4gIGlmICghYnJlYWtwb2ludCB8fCBzd2lwZXIuY3VycmVudEJyZWFrcG9pbnQgPT09IGJyZWFrcG9pbnQpIHJldHVybjtcbiAgY29uc3QgYnJlYWtwb2ludE9ubHlQYXJhbXMgPSBicmVha3BvaW50IGluIGJyZWFrcG9pbnRzID8gYnJlYWtwb2ludHNbYnJlYWtwb2ludF0gOiB1bmRlZmluZWQ7XG4gIGNvbnN0IGJyZWFrcG9pbnRQYXJhbXMgPSBicmVha3BvaW50T25seVBhcmFtcyB8fCBzd2lwZXIub3JpZ2luYWxQYXJhbXM7XG4gIGNvbnN0IHdhc011bHRpUm93ID0gaXNHcmlkRW5hYmxlZChzd2lwZXIsIHBhcmFtcyk7XG4gIGNvbnN0IGlzTXVsdGlSb3cgPSBpc0dyaWRFbmFibGVkKHN3aXBlciwgYnJlYWtwb2ludFBhcmFtcyk7XG4gIGNvbnN0IHdhc0VuYWJsZWQgPSBwYXJhbXMuZW5hYmxlZDtcblxuICBpZiAod2FzTXVsdGlSb3cgJiYgIWlzTXVsdGlSb3cpIHtcbiAgICAkZWwucmVtb3ZlQ2xhc3MoYCR7cGFyYW1zLmNvbnRhaW5lck1vZGlmaWVyQ2xhc3N9Z3JpZCAke3BhcmFtcy5jb250YWluZXJNb2RpZmllckNsYXNzfWdyaWQtY29sdW1uYCk7XG4gICAgc3dpcGVyLmVtaXRDb250YWluZXJDbGFzc2VzKCk7XG4gIH0gZWxzZSBpZiAoIXdhc011bHRpUm93ICYmIGlzTXVsdGlSb3cpIHtcbiAgICAkZWwuYWRkQ2xhc3MoYCR7cGFyYW1zLmNvbnRhaW5lck1vZGlmaWVyQ2xhc3N9Z3JpZGApO1xuXG4gICAgaWYgKGJyZWFrcG9pbnRQYXJhbXMuZ3JpZC5maWxsICYmIGJyZWFrcG9pbnRQYXJhbXMuZ3JpZC5maWxsID09PSAnY29sdW1uJyB8fCAhYnJlYWtwb2ludFBhcmFtcy5ncmlkLmZpbGwgJiYgcGFyYW1zLmdyaWQuZmlsbCA9PT0gJ2NvbHVtbicpIHtcbiAgICAgICRlbC5hZGRDbGFzcyhgJHtwYXJhbXMuY29udGFpbmVyTW9kaWZpZXJDbGFzc31ncmlkLWNvbHVtbmApO1xuICAgIH1cblxuICAgIHN3aXBlci5lbWl0Q29udGFpbmVyQ2xhc3NlcygpO1xuICB9IC8vIFRvZ2dsZSBuYXZpZ2F0aW9uLCBwYWdpbmF0aW9uLCBzY3JvbGxiYXJcblxuXG4gIFsnbmF2aWdhdGlvbicsICdwYWdpbmF0aW9uJywgJ3Njcm9sbGJhciddLmZvckVhY2gocHJvcCA9PiB7XG4gICAgY29uc3Qgd2FzTW9kdWxlRW5hYmxlZCA9IHBhcmFtc1twcm9wXSAmJiBwYXJhbXNbcHJvcF0uZW5hYmxlZDtcbiAgICBjb25zdCBpc01vZHVsZUVuYWJsZWQgPSBicmVha3BvaW50UGFyYW1zW3Byb3BdICYmIGJyZWFrcG9pbnRQYXJhbXNbcHJvcF0uZW5hYmxlZDtcblxuICAgIGlmICh3YXNNb2R1bGVFbmFibGVkICYmICFpc01vZHVsZUVuYWJsZWQpIHtcbiAgICAgIHN3aXBlcltwcm9wXS5kaXNhYmxlKCk7XG4gICAgfVxuXG4gICAgaWYgKCF3YXNNb2R1bGVFbmFibGVkICYmIGlzTW9kdWxlRW5hYmxlZCkge1xuICAgICAgc3dpcGVyW3Byb3BdLmVuYWJsZSgpO1xuICAgIH1cbiAgfSk7XG4gIGNvbnN0IGRpcmVjdGlvbkNoYW5nZWQgPSBicmVha3BvaW50UGFyYW1zLmRpcmVjdGlvbiAmJiBicmVha3BvaW50UGFyYW1zLmRpcmVjdGlvbiAhPT0gcGFyYW1zLmRpcmVjdGlvbjtcbiAgY29uc3QgbmVlZHNSZUxvb3AgPSBwYXJhbXMubG9vcCAmJiAoYnJlYWtwb2ludFBhcmFtcy5zbGlkZXNQZXJWaWV3ICE9PSBwYXJhbXMuc2xpZGVzUGVyVmlldyB8fCBkaXJlY3Rpb25DaGFuZ2VkKTtcblxuICBpZiAoZGlyZWN0aW9uQ2hhbmdlZCAmJiBpbml0aWFsaXplZCkge1xuICAgIHN3aXBlci5jaGFuZ2VEaXJlY3Rpb24oKTtcbiAgfVxuXG4gIGV4dGVuZChzd2lwZXIucGFyYW1zLCBicmVha3BvaW50UGFyYW1zKTtcbiAgY29uc3QgaXNFbmFibGVkID0gc3dpcGVyLnBhcmFtcy5lbmFibGVkO1xuICBPYmplY3QuYXNzaWduKHN3aXBlciwge1xuICAgIGFsbG93VG91Y2hNb3ZlOiBzd2lwZXIucGFyYW1zLmFsbG93VG91Y2hNb3ZlLFxuICAgIGFsbG93U2xpZGVOZXh0OiBzd2lwZXIucGFyYW1zLmFsbG93U2xpZGVOZXh0LFxuICAgIGFsbG93U2xpZGVQcmV2OiBzd2lwZXIucGFyYW1zLmFsbG93U2xpZGVQcmV2XG4gIH0pO1xuXG4gIGlmICh3YXNFbmFibGVkICYmICFpc0VuYWJsZWQpIHtcbiAgICBzd2lwZXIuZGlzYWJsZSgpO1xuICB9IGVsc2UgaWYgKCF3YXNFbmFibGVkICYmIGlzRW5hYmxlZCkge1xuICAgIHN3aXBlci5lbmFibGUoKTtcbiAgfVxuXG4gIHN3aXBlci5jdXJyZW50QnJlYWtwb2ludCA9IGJyZWFrcG9pbnQ7XG4gIHN3aXBlci5lbWl0KCdfYmVmb3JlQnJlYWtwb2ludCcsIGJyZWFrcG9pbnRQYXJhbXMpO1xuXG4gIGlmIChuZWVkc1JlTG9vcCAmJiBpbml0aWFsaXplZCkge1xuICAgIHN3aXBlci5sb29wRGVzdHJveSgpO1xuICAgIHN3aXBlci5sb29wQ3JlYXRlKCk7XG4gICAgc3dpcGVyLnVwZGF0ZVNsaWRlcygpO1xuICAgIHN3aXBlci5zbGlkZVRvKGFjdGl2ZUluZGV4IC0gbG9vcGVkU2xpZGVzICsgc3dpcGVyLmxvb3BlZFNsaWRlcywgMCwgZmFsc2UpO1xuICB9XG5cbiAgc3dpcGVyLmVtaXQoJ2JyZWFrcG9pbnQnLCBicmVha3BvaW50UGFyYW1zKTtcbn0iLCJpbXBvcnQgc2V0QnJlYWtwb2ludCBmcm9tICcuL3NldEJyZWFrcG9pbnQuanMnO1xuaW1wb3J0IGdldEJyZWFrcG9pbnQgZnJvbSAnLi9nZXRCcmVha3BvaW50LmpzJztcbmV4cG9ydCBkZWZhdWx0IHtcbiAgc2V0QnJlYWtwb2ludCxcbiAgZ2V0QnJlYWtwb2ludFxufTsiLCJpbXBvcnQgeyBnZXRXaW5kb3cgfSBmcm9tICdzc3Itd2luZG93JztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEJyZWFrcG9pbnQoYnJlYWtwb2ludHMsIGJhc2UgPSAnd2luZG93JywgY29udGFpbmVyRWwpIHtcbiAgaWYgKCFicmVha3BvaW50cyB8fCBiYXNlID09PSAnY29udGFpbmVyJyAmJiAhY29udGFpbmVyRWwpIHJldHVybi
15B1bmRlZmluZWQ7XG4gIGxldCBicmVha3BvaW50ID0gZmFsc2U7XG4gIGNvbnN0IHdpbmRvdyA9IGdldFdpbmRvdygpO1xuICBjb25zdCBjdXJyZW50SGVpZ2h0ID0gYmFzZSA9PT0gJ3dpbmRvdycgPyB3aW5kb3cuaW5uZXJIZWlnaHQgOiBjb250YWluZXJFbC5jbGllbnRIZWlnaHQ7XG4gIGNvbnN0IHBvaW50cyA9IE9iamVjdC5rZXlzKGJyZWFrcG9pbnRzKS5tYXAocG9pbnQgPT4ge1xuICAgIGlmICh0eXBlb2YgcG9pbnQgPT09ICdzdHJpbmcnICYmIHBvaW50LmluZGV4T2YoJ0AnKSA9PT0gMCkge1xuICAgICAgY29uc3QgbWluUmF0aW8gPSBwYXJzZUZsb2F0KHBvaW50LnN1YnN0cigxKSk7XG4gICAgICBjb25zdCB2YWx1ZSA9IGN1cnJlbnRIZWlnaHQgKiBtaW5SYXRpbztcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbHVlLFxuICAgICAgICBwb2ludFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdmFsdWU6IHBvaW50LFxuICAgICAgcG9pbnRcbiAgICB9O1xuICB9KTtcbiAgcG9pbnRzLnNvcnQoKGEsIGIpID0+IHBhcnNlSW50KGEudmFsdWUsIDEwKSAtIHBhcnNlSW50KGIudmFsdWUsIDEwKSk7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICBjb25zdCB7XG4gICAgICBwb2ludCxcbiAgICAgIHZhbHVlXG4gICAgfSA9IHBvaW50c1tpXTtcblxuICAgIGlmIChiYXNlID09PSAnd2luZG93Jykge1xuICAgICAgaWYgKHdpbmRvdy5tYXRjaE1lZGlhKGAobWluLXdpZHRoOiAke3ZhbHVlfXB4KWApLm1hdGNoZXMpIHtcbiAgICAgICAgYnJlYWtwb2ludCA9IHBvaW50O1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodmFsdWUgPD0gY29udGFpbmVyRWwuY2xpZW50V2lkdGgpIHtcbiAgICAgIGJyZWFrcG9pbnQgPSBwb2ludDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYnJlYWtwb2ludCB8fCAnbWF4Jztcbn0iLCJpbXBvcnQgYWRkQ2xhc3NlcyBmcm9tICcuL2FkZENsYXNzZXMuanMnO1xuaW1wb3J0IHJlbW92ZUNsYXNzZXMgZnJvbSAnLi9yZW1vdmVDbGFzc2VzLmpzJztcbmV4cG9ydCBkZWZhdWx0IHtcbiAgYWRkQ2xhc3NlcyxcbiAgcmVtb3ZlQ2xhc3Nlc1xufTsiLCJmdW5jdGlvbiBwcmVwYXJlQ2xhc3NlcyhlbnRyaWVzLCBwcmVmaXgpIHtcbiAgY29uc3QgcmVzdWx0Q2xhc3NlcyA9IFtdO1xuICBlbnRyaWVzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgaWYgKHR5cGVvZiBpdGVtID09PSAnb2JqZWN0Jykge1xuICAgICAgT2JqZWN0LmtleXMoaXRlbSkuZm9yRWFjaChjbGFzc05hbWVzID0+IHtcbiAgICAgICAgaWYgKGl0ZW1bY2xhc3NOYW1lc10pIHtcbiAgICAgICAgICByZXN1bHRDbGFzc2VzLnB1c2gocHJlZml4ICsgY2xhc3NOYW1lcyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXN1bHRDbGFzc2VzLnB1c2gocHJlZml4ICsgaXRlbSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlc3VsdENsYXNzZXM7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFkZENsYXNzZXMoKSB7XG4gIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gIGNvbnN0IHtcbiAgICBjbGFzc05hbWVzLFxuICAgIHBhcmFtcyxcbiAgICBydGwsXG4gICAgJGVsLFxuICAgIGRldmljZSxcbiAgICBzdXBwb3J0XG4gIH0gPSBzd2lwZXI7IC8vIHByZXR0aWVyLWlnbm9yZVxuXG4gIGNvbnN0IHN1ZmZpeGVzID0gcHJlcGFyZUNsYXNzZXMoWydpbml0aWFsaXplZCcsIHBhcmFtcy5kaXJlY3Rpb24sIHtcbiAgICAncG9pbnRlci1ldmVudHMnOiAhc3VwcG9ydC50b3VjaFxuICB9LCB7XG4gICAgJ2ZyZWUtbW9kZSc6IHN3aXBlci5wYXJhbXMuZnJlZU1vZGUgJiYgcGFyYW1zLmZyZWVNb2RlLmVuYWJsZWRcbiAgfSwge1xuICAgICdhdXRvaGVpZ2h0JzogcGFyYW1zLmF1dG9IZWlnaHRcbiAgfSwge1xuICAgICdydGwnOiBydGxcbiAgfSwge1xuICAgICdncmlkJzogcGFyYW1zLmdyaWQgJiYgcGFyYW1zLmdyaWQucm93cyA+IDFcbiAgfSwge1xuICAgICdncmlkLWNvbHVtbic6IHBhcmFtcy5ncmlkICYmIHBhcmFtcy5ncmlkLnJvd3MgPiAxICYmIHBhcmFtcy5ncmlkLmZpbGwgPT09ICdjb2x1bW4nXG4gIH0sIHtcbiAgICAnYW5kcm9pZCc6IGRldmljZS5hbmRyb2lkXG4gIH0sIHtcbiAgICAnaW9zJzogZGV2aWNlLmlvc1xuICB9LCB7XG4gICAgJ2Nzcy1tb2RlJzogcGFyYW1zLmNzc01vZGVcbiAgfSwge1xuICAgICdjZW50ZXJlZCc6IHBhcmFtcy5jc3NNb2RlICYmIHBhcmFtcy5jZW50ZXJlZFNsaWRlc1xuICB9LCB7XG4gICAgJ3dhdGNoLXByb2dyZXNzJzogcGFyYW1zLndhdGNoU2xpZGVzUHJvZ3Jlc3NcbiAgfV0sIHBhcmFtcy5jb250YWluZXJNb2RpZmllckNsYXNzKTtcbiAgY2xhc3NOYW1lcy5wdXNoKC4uLnN1ZmZpeGVzKTtcbiAgJGVsLmFkZENsYXNzKFsuLi5jbGFzc05hbWVzXS5qb2luKCcgJykpO1xuICBzd2lwZXIuZW1pdENvbnRhaW5lckNsYXNzZXMoKTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZW1vdmVDbGFzc2VzKCkge1xuICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICBjb25zdCB7XG4gICAgJGVsLFxuICAgIGNsYXNzTmFtZXNcbiAgfSA9IHN3aXBlcjtcbiAgJGVsLnJlbW92ZUNsYXNzKGNsYXNzTmFtZXMuam9pbignICcpKTtcbiAgc3dpcGVyLmVtaXRDb250YWluZXJDbGFzc2VzKCk7XG59IiwiaW1wb3J0IGxvYWRJbWFnZSBmcm9tICcuL2xvYWRJbWFnZS5qcyc7XG5pbXBvcnQgcHJlbG9hZEltYWdlcyBmcm9tICcuL3ByZWxvYWRJbWFnZXMuanMnO1xuZXhwb3J0IGRlZmF1bHQge1xuICBsb2FkSW1hZ2UsXG4gIHByZWxvYWRJbWFnZXNcbn07IiwiaW1wb3J0IHsgZ2V0V2luZG93IH0gZnJvbSAnc3NyLXdpbmRvdyc7XG5pbXBvcnQgJCBmcm9tICcuLi8uLi9zaGFyZWQvZG9tLmpzJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxvYWRJbWFnZShpbWFnZUVsLCBzcmMsIHNyY3NldCwgc2l6ZXMsIGNoZWNrRm9yQ29tcGxldGUsIGNhbGxiYWNrKSB7XG4gIGNvbnN0IHdpbmRvdyA9IGdldFdpbmRvdygpO1xuICBsZXQgaW1hZ2U7XG5cbiAgZnVuY3Rpb24gb25SZWFkeSgpIHtcbiAgICBpZiAoY2FsbGJhY2spIGNhbGxiYWNrKCk7XG4gIH1cblxuICBjb25zdCBpc1BpY3R1cmUgPSAkKGltYWdlRWwpLnBhcmVudCgncGljdHVyZScpWzBdO1xuXG4gIGlmICghaXNQaWN0dXJlICYmICghaW1hZ2VFbC5jb21wbGV0ZSB8fCAhY2hlY2tGb3JDb21wbGV0ZSkpIHtcbiAgICBpZiAoc3JjKSB7XG4gICAgICBpbWFnZSA9IG5ldyB3aW5kb3cuSW1hZ2UoKTtcbiAgICAgIGltYWdlLm9ubG9hZCA9IG9uUmVhZHk7XG4gICAgICBpbWFnZS5vbmVycm9yID0gb25SZWFkeTtcblxuICAgICAgaWYgKHNpemVzKSB7XG4gICAgICAgIGltYWdlLnNpemVzID0gc2l6ZXM7XG4gICAgICB9XG5cbiAgICAgIGlmIChzcmNzZXQpIHtcbiAgICAgICAgaW1hZ2Uuc3Jjc2V0ID0gc3Jjc2V0O1xuICAgICAgfVxuXG4gICAgICBpZiAoc3JjKSB7XG4gICAgICAgIGltYWdlLnNyYyA9IHNyYztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgb25SZWFkeSgpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBpbWFnZSBhbHJlYWR5IGxvYWRlZC4uLlxuICAgIG9uUmVhZHkoKTtcbiAgfVxufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHByZWxvYWRJbWFnZXMoKSB7XG4gIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gIHN3aXBlci5pbWFnZXNUb0xvYWQgPSBzd2lwZXIuJGVsLmZpbmQoJ2ltZycpO1xuXG4gIGZ1bmN0aW9uIG9uUmVhZHkoKSB7XG4gICAgaWYgKHR5cGVvZiBzd2lwZXIgPT09ICd1bmRlZmluZWQnIHx8IHN3aXBlciA9PT0gbnVsbCB8fCAhc3dpcGVyIHx8IHN3aXBlci5kZXN0cm95ZWQpIHJldHVybjtcbiAgICBpZiAoc3dpcGVyLmltYWdlc0xvYWRlZCAhPT0gdW5kZWZpbmVkKSBzd2lwZXIuaW1hZ2VzTG9h
15ZGVkICs9IDE7XG5cbiAgICBpZiAoc3dpcGVyLmltYWdlc0xvYWRlZCA9PT0gc3dpcGVyLmltYWdlc1RvTG9hZC5sZW5ndGgpIHtcbiAgICAgIGlmIChzd2lwZXIucGFyYW1zLnVwZGF0ZU9uSW1hZ2VzUmVhZHkpIHN3aXBlci51cGRhdGUoKTtcbiAgICAgIHN3aXBlci5lbWl0KCdpbWFnZXNSZWFkeScpO1xuICAgIH1cbiAgfVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3dpcGVyLmltYWdlc1RvTG9hZC5sZW5ndGg7IGkgKz0gMSkge1xuICAgIGNvbnN0IGltYWdlRWwgPSBzd2lwZXIuaW1hZ2VzVG9Mb2FkW2ldO1xuICAgIHN3aXBlci5sb2FkSW1hZ2UoaW1hZ2VFbCwgaW1hZ2VFbC5jdXJyZW50U3JjIHx8IGltYWdlRWwuZ2V0QXR0cmlidXRlKCdzcmMnKSwgaW1hZ2VFbC5zcmNzZXQgfHwgaW1hZ2VFbC5nZXRBdHRyaWJ1dGUoJ3NyY3NldCcpLCBpbWFnZUVsLnNpemVzIHx8IGltYWdlRWwuZ2V0QXR0cmlidXRlKCdzaXplcycpLCB0cnVlLCBvblJlYWR5KTtcbiAgfVxufSIsImZ1bmN0aW9uIGNoZWNrT3ZlcmZsb3coKSB7XG4gIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gIGNvbnN0IHtcbiAgICBpc0xvY2tlZDogd2FzTG9ja2VkLFxuICAgIHBhcmFtc1xuICB9ID0gc3dpcGVyO1xuICBjb25zdCB7XG4gICAgc2xpZGVzT2Zmc2V0QmVmb3JlXG4gIH0gPSBwYXJhbXM7XG5cbiAgaWYgKHNsaWRlc09mZnNldEJlZm9yZSkge1xuICAgIGNvbnN0IGxhc3RTbGlkZUluZGV4ID0gc3dpcGVyLnNsaWRlcy5sZW5ndGggLSAxO1xuICAgIGNvbnN0IGxhc3RTbGlkZVJpZ2h0RWRnZSA9IHN3aXBlci5zbGlkZXNHcmlkW2xhc3RTbGlkZUluZGV4XSArIHN3aXBlci5zbGlkZXNTaXplc0dyaWRbbGFzdFNsaWRlSW5kZXhdICsgc2xpZGVzT2Zmc2V0QmVmb3JlICogMjtcbiAgICBzd2lwZXIuaXNMb2NrZWQgPSBzd2lwZXIuc2l6ZSA+IGxhc3RTbGlkZVJpZ2h0RWRnZTtcbiAgfSBlbHNlIHtcbiAgICBzd2lwZXIuaXNMb2NrZWQgPSBzd2lwZXIuc25hcEdyaWQubGVuZ3RoID09PSAxO1xuICB9XG5cbiAgaWYgKHBhcmFtcy5hbGxvd1NsaWRlTmV4dCA9PT0gdHJ1ZSkge1xuICAgIHN3aXBlci5hbGxvd1NsaWRlTmV4dCA9ICFzd2lwZXIuaXNMb2NrZWQ7XG4gIH1cblxuICBpZiAocGFyYW1zLmFsbG93U2xpZGVQcmV2ID09PSB0cnVlKSB7XG4gICAgc3dpcGVyLmFsbG93U2xpZGVQcmV2ID0gIXN3aXBlci5pc0xvY2tlZDtcbiAgfVxuXG4gIGlmICh3YXNMb2NrZWQgJiYgd2FzTG9ja2VkICE9PSBzd2lwZXIuaXNMb2NrZWQpIHtcbiAgICBzd2lwZXIuaXNFbmQgPSBmYWxzZTtcbiAgfVxuXG4gIGlmICh3YXNMb2NrZWQgIT09IHN3aXBlci5pc0xvY2tlZCkge1xuICAgIHN3aXBlci5lbWl0KHN3aXBlci5pc0xvY2tlZCA/ICdsb2NrJyA6ICd1bmxvY2snKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGNoZWNrT3ZlcmZsb3dcbn07IiwiZXhwb3J0IGRlZmF1bHQge1xuICBpbml0OiB0cnVlLFxuICBkaXJlY3Rpb246ICdob3Jpem9udGFsJyxcbiAgdG91Y2hFdmVudHNUYXJnZXQ6ICd3cmFwcGVyJyxcbiAgaW5pdGlhbFNsaWRlOiAwLFxuICBzcGVlZDogMzAwLFxuICBjc3NNb2RlOiBmYWxzZSxcbiAgdXBkYXRlT25XaW5kb3dSZXNpemU6IHRydWUsXG4gIHJlc2l6ZU9ic2VydmVyOiB0cnVlLFxuICBuZXN0ZWQ6IGZhbHNlLFxuICBjcmVhdGVFbGVtZW50czogZmFsc2UsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIGZvY3VzYWJsZUVsZW1lbnRzOiAnaW5wdXQsIHNlbGVjdCwgb3B0aW9uLCB0ZXh0YXJlYSwgYnV0dG9uLCB2aWRlbywgbGFiZWwnLFxuICAvLyBPdmVycmlkZXNcbiAgd2lkdGg6IG51bGwsXG4gIGhlaWdodDogbnVsbCxcbiAgLy9cbiAgcHJldmVudEludGVyYWN0aW9uT25UcmFuc2l0aW9uOiBmYWxzZSxcbiAgLy8gc3NyXG4gIHVzZXJBZ2VudDogbnVsbCxcbiAgdXJsOiBudWxsLFxuICAvLyBUbyBzdXBwb3J0IGlPUydzIHN3aXBlLXRvLWdvLWJhY2sgZ2VzdHVyZSAod2hlbiBiZWluZyB1c2VkIGluLWFwcCkuXG4gIGVkZ2VTd2lwZURldGVjdGlvbjogZmFsc2UsXG4gIGVkZ2VTd2lwZVRocmVzaG9sZDogMjAsXG4gIC8vIEF1dG9oZWlnaHRcbiAgYXV0b0hlaWdodDogZmFsc2UsXG4gIC8vIFNldCB3cmFwcGVyIHdpZHRoXG4gIHNldFdyYXBwZXJTaXplOiBmYWxzZSxcbiAgLy8gVmlydHVhbCBUcmFuc2xhdGVcbiAgdmlydHVhbFRyYW5zbGF0ZTogZmFsc2UsXG4gIC8vIEVmZmVjdHNcbiAgZWZmZWN0OiAnc2xpZGUnLFxuICAvLyAnc2xpZGUnIG9yICdmYWRlJyBvciAnY3ViZScgb3IgJ2NvdmVyZmxvdycgb3IgJ2ZsaXAnXG4gIC8vIEJyZWFrcG9pbnRzXG4gIGJyZWFrcG9pbnRzOiB1bmRlZmluZWQsXG4gIGJyZWFrcG9pbnRzQmFzZTogJ3dpbmRvdycsXG4gIC8vIFNsaWRlcyBncmlkXG4gIHNwYWNlQmV0d2VlbjogMCxcbiAgc2xpZGVzUGVyVmlldzogMSxcbiAgc2xpZGVzUGVyR3JvdXA6IDEsXG4gIHNsaWRlc1Blckdyb3VwU2tpcDogMCxcbiAgc2xpZGVzUGVyR3JvdXBBdXRvOiBmYWxzZSxcbiAgY2VudGVyZWRTbGlkZXM6IGZhbHNlLFxuICBjZW50ZXJlZFNsaWRlc0JvdW5kczogZmFsc2UsXG4gIHNsaWRlc09mZnNldEJlZm9yZTogMCxcbiAgLy8gaW4gcHhcbiAgc2xpZGVzT2Zmc2V0QWZ0ZXI6IDAsXG4gIC8vIGluIHB4XG4gIG5vcm1hbGl6ZVNsaWRlSW5kZXg6IHRydWUsXG4gIGNlbnRlckluc3VmZmljaWVudFNsaWRlczogZmFsc2UsXG4gIC8vIERpc2FibGUgc3dpcGVyIGFuZCBoaWRlIG5hdmlnYXRpb24gd2hlbiBjb250YWluZXIgbm90IG92ZXJmbG93XG4gIHdhdGNoT3ZlcmZsb3c6IHRydWUsXG4gIC8vIFJvdW5kIGxlbmd0aFxuICByb3VuZExlbmd0aHM6IGZhbHNlLFxuICAvLyBUb3VjaGVzXG4gIHRvdWNoUmF0aW86IDEsXG4gIHRvdWNoQW5nbGU6IDQ1LFxuICBzaW11bGF0ZVRvdWNoOiB0cnVlLFxuICBzaG9ydFN3aXBlczogdHJ1ZSxcbiAgbG9uZ1N3aXBlczogdHJ1ZSxcbiAgbG9uZ1N3aXBlc1JhdGlvOiAwLjUsXG4gIGxvbmdTd2lwZXNNczogMzAwLFxuICBmb2xsb3dGaW5nZXI6IHRydWUsXG4gIGFsbG93VG91Y2hNb3ZlOiB0cnVlLFxuICB0aHJlc2hvbGQ6IDAsXG4gIHRvdWNoTW92ZVN0b3BQcm9wYWdhdGlvbjogZmFsc2UsXG4gIHRvdWNoU3RhcnRQcmV2ZW50RGVmYXVsdDogdHJ1ZSxcbiAgdG91Y2hTdGFydEZvcmNlUHJldmVudERlZmF1bHQ6IGZhbHNlLFxuICB0b3VjaFJlbGVhc2VPbkVkZ2VzOiBmYWxzZSxcbiAgLy8gVW5pcXVlIE5hdmlnYXRpb24gRWxlbWVudHNcbiAgdW5pcXVlTmF2RWxlbWVudHM6IHRydWUsXG4gIC8vIFJlc2lzdGFuY2VcbiAgcmVzaXN0YW5jZTogdHJ1ZSxcbiAgcmVzaXN0YW5jZVJhdGlvOiAwLjg1LFxuICAvLyBQcm9ncmVzc1xuICB3YXRjaFNsaWRlc1Byb2dyZXNzOiBmYWxzZSxcbiAgLy8gQ3Vyc29yXG4gIGdyYWJDdXJzb3I6IGZhbHNlLFxuICAvLyBDbGlja3NcbiAgcHJldmVudENsaWNrczogdHJ1ZSxcbiAgcHJldmVudENsaWNrc1Byb3BhZ2F0aW9uOiB0cnVlLFxuICBzbGlkZVRvQ2xpY2tlZFNsaWRlOiBmYWxzZSxcbiAgLy8gSW1hZ2VzXG4gIHByZWxvYWRJbWFnZXM6IHRydWUsXG4gIHVwZGF0ZU9uSW1hZ2VzUmVhZHk6IHRydWUsXG4gIC8vIGxvb3BcbiAgbG9vcDogZmFsc2UsXG4gIGxvb3BBZGRpdGlvbmFsU2xpZGVzOiAwLFxuICBsb29wZWRTbGlkZXM6IG51bGwsXG4gIGxvb3BlZFNsaWRlc0xpbWl0OiB0cnVlLFxuICBsb29wRmlsbEdyb3VwV2l0aEJsYW5rOiBmYWxzZSxcbiAgbG9vcFByZXZlbn
15RzU2xpZGU6IHRydWUsXG4gIC8vIHJld2luZFxuICByZXdpbmQ6IGZhbHNlLFxuICAvLyBTd2lwaW5nL25vIHN3aXBpbmdcbiAgYWxsb3dTbGlkZVByZXY6IHRydWUsXG4gIGFsbG93U2xpZGVOZXh0OiB0cnVlLFxuICBzd2lwZUhhbmRsZXI6IG51bGwsXG4gIC8vICcuc3dpcGUtaGFuZGxlcicsXG4gIG5vU3dpcGluZzogdHJ1ZSxcbiAgbm9Td2lwaW5nQ2xhc3M6ICdzd2lwZXItbm8tc3dpcGluZycsXG4gIG5vU3dpcGluZ1NlbGVjdG9yOiBudWxsLFxuICAvLyBQYXNzaXZlIExpc3RlbmVyc1xuICBwYXNzaXZlTGlzdGVuZXJzOiB0cnVlLFxuICBtYXhCYWNrZmFjZUhpZGRlblNsaWRlczogMTAsXG4gIC8vIE5TXG4gIGNvbnRhaW5lck1vZGlmaWVyQ2xhc3M6ICdzd2lwZXItJyxcbiAgLy8gTkVXXG4gIHNsaWRlQ2xhc3M6ICdzd2lwZXItc2xpZGUnLFxuICBzbGlkZUJsYW5rQ2xhc3M6ICdzd2lwZXItc2xpZGUtaW52aXNpYmxlLWJsYW5rJyxcbiAgc2xpZGVBY3RpdmVDbGFzczogJ3N3aXBlci1zbGlkZS1hY3RpdmUnLFxuICBzbGlkZUR1cGxpY2F0ZUFjdGl2ZUNsYXNzOiAnc3dpcGVyLXNsaWRlLWR1cGxpY2F0ZS1hY3RpdmUnLFxuICBzbGlkZVZpc2libGVDbGFzczogJ3N3aXBlci1zbGlkZS12aXNpYmxlJyxcbiAgc2xpZGVEdXBsaWNhdGVDbGFzczogJ3N3aXBlci1zbGlkZS1kdXBsaWNhdGUnLFxuICBzbGlkZU5leHRDbGFzczogJ3N3aXBlci1zbGlkZS1uZXh0JyxcbiAgc2xpZGVEdXBsaWNhdGVOZXh0Q2xhc3M6ICdzd2lwZXItc2xpZGUtZHVwbGljYXRlLW5leHQnLFxuICBzbGlkZVByZXZDbGFzczogJ3N3aXBlci1zbGlkZS1wcmV2JyxcbiAgc2xpZGVEdXBsaWNhdGVQcmV2Q2xhc3M6ICdzd2lwZXItc2xpZGUtZHVwbGljYXRlLXByZXYnLFxuICB3cmFwcGVyQ2xhc3M6ICdzd2lwZXItd3JhcHBlcicsXG4gIC8vIENhbGxiYWNrc1xuICBydW5DYWxsYmFja3NPbkluaXQ6IHRydWUsXG4gIC8vIEludGVybmFsc1xuICBfZW1pdENsYXNzZXM6IGZhbHNlXG59OyIsImltcG9ydCB7IGV4dGVuZCB9IGZyb20gJy4uL3NoYXJlZC91dGlscy5qcyc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtb2R1bGVFeHRlbmRQYXJhbXMocGFyYW1zLCBhbGxNb2R1bGVzUGFyYW1zKSB7XG4gIHJldHVybiBmdW5jdGlvbiBleHRlbmRQYXJhbXMob2JqID0ge30pIHtcbiAgICBjb25zdCBtb2R1bGVQYXJhbU5hbWUgPSBPYmplY3Qua2V5cyhvYmopWzBdO1xuICAgIGNvbnN0IG1vZHVsZVBhcmFtcyA9IG9ialttb2R1bGVQYXJhbU5hbWVdO1xuXG4gICAgaWYgKHR5cGVvZiBtb2R1bGVQYXJhbXMgIT09ICdvYmplY3QnIHx8IG1vZHVsZVBhcmFtcyA9PT0gbnVsbCkge1xuICAgICAgZXh0ZW5kKGFsbE1vZHVsZXNQYXJhbXMsIG9iaik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKFsnbmF2aWdhdGlvbicsICdwYWdpbmF0aW9uJywgJ3Njcm9sbGJhciddLmluZGV4T2YobW9kdWxlUGFyYW1OYW1lKSA+PSAwICYmIHBhcmFtc1ttb2R1bGVQYXJhbU5hbWVdID09PSB0cnVlKSB7XG4gICAgICBwYXJhbXNbbW9kdWxlUGFyYW1OYW1lXSA9IHtcbiAgICAgICAgYXV0bzogdHJ1ZVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoIShtb2R1bGVQYXJhbU5hbWUgaW4gcGFyYW1zICYmICdlbmFibGVkJyBpbiBtb2R1bGVQYXJhbXMpKSB7XG4gICAgICBleHRlbmQoYWxsTW9kdWxlc1BhcmFtcywgb2JqKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAocGFyYW1zW21vZHVsZVBhcmFtTmFtZV0gPT09IHRydWUpIHtcbiAgICAgIHBhcmFtc1ttb2R1bGVQYXJhbU5hbWVdID0ge1xuICAgICAgICBlbmFibGVkOiB0cnVlXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgcGFyYW1zW21vZHVsZVBhcmFtTmFtZV0gPT09ICdvYmplY3QnICYmICEoJ2VuYWJsZWQnIGluIHBhcmFtc1ttb2R1bGVQYXJhbU5hbWVdKSkge1xuICAgICAgcGFyYW1zW21vZHVsZVBhcmFtTmFtZV0uZW5hYmxlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKCFwYXJhbXNbbW9kdWxlUGFyYW1OYW1lXSkgcGFyYW1zW21vZHVsZVBhcmFtTmFtZV0gPSB7XG4gICAgICBlbmFibGVkOiBmYWxzZVxuICAgIH07XG4gICAgZXh0ZW5kKGFsbE1vZHVsZXNQYXJhbXMsIG9iaik7XG4gIH07XG59IiwiLyogZXNsaW50IG5vLXBhcmFtLXJlYXNzaWduOiBcIm9mZlwiICovXG5pbXBvcnQgeyBnZXREb2N1bWVudCB9IGZyb20gJ3Nzci13aW5kb3cnO1xuaW1wb3J0ICQgZnJvbSAnLi4vc2hhcmVkL2RvbS5qcyc7XG5pbXBvcnQgeyBleHRlbmQsIG5vdywgZGVsZXRlUHJvcHMgfSBmcm9tICcuLi9zaGFyZWQvdXRpbHMuanMnO1xuaW1wb3J0IHsgZ2V0U3VwcG9ydCB9IGZyb20gJy4uL3NoYXJlZC9nZXQtc3VwcG9ydC5qcyc7XG5pbXBvcnQgeyBnZXREZXZpY2UgfSBmcm9tICcuLi9zaGFyZWQvZ2V0LWRldmljZS5qcyc7XG5pbXBvcnQgeyBnZXRCcm93c2VyIH0gZnJvbSAnLi4vc2hhcmVkL2dldC1icm93c2VyLmpzJztcbmltcG9ydCBSZXNpemUgZnJvbSAnLi9tb2R1bGVzL3Jlc2l6ZS9yZXNpemUuanMnO1xuaW1wb3J0IE9ic2VydmVyIGZyb20gJy4vbW9kdWxlcy9vYnNlcnZlci9vYnNlcnZlci5qcyc7XG5pbXBvcnQgZXZlbnRzRW1pdHRlciBmcm9tICcuL2V2ZW50cy1lbWl0dGVyLmpzJztcbmltcG9ydCB1cGRhdGUgZnJvbSAnLi91cGRhdGUvaW5kZXguanMnO1xuaW1wb3J0IHRyYW5zbGF0ZSBmcm9tICcuL3RyYW5zbGF0ZS9pbmRleC5qcyc7XG5pbXBvcnQgdHJhbnNpdGlvbiBmcm9tICcuL3RyYW5zaXRpb24vaW5kZXguanMnO1xuaW1wb3J0IHNsaWRlIGZyb20gJy4vc2xpZGUvaW5kZXguanMnO1xuaW1wb3J0IGxvb3AgZnJvbSAnLi9sb29wL2luZGV4LmpzJztcbmltcG9ydCBncmFiQ3Vyc29yIGZyb20gJy4vZ3JhYi1jdXJzb3IvaW5kZXguanMnO1xuaW1wb3J0IGV2ZW50cyBmcm9tICcuL2V2ZW50cy9pbmRleC5qcyc7XG5pbXBvcnQgYnJlYWtwb2ludHMgZnJvbSAnLi9icmVha3BvaW50cy9pbmRleC5qcyc7XG5pbXBvcnQgY2xhc3NlcyBmcm9tICcuL2NsYXNzZXMvaW5kZXguanMnO1xuaW1wb3J0IGltYWdlcyBmcm9tICcuL2ltYWdlcy9pbmRleC5qcyc7XG5pbXBvcnQgY2hlY2tPdmVyZmxvdyBmcm9tICcuL2NoZWNrLW92ZXJmbG93L2luZGV4LmpzJztcbmltcG9ydCBkZWZhdWx0cyBmcm9tICcuL2RlZmF1bHRzLmpzJztcbmltcG9ydCBtb2R1bGVFeHRlbmRQYXJhbXMgZnJvbSAnLi9tb2R1bGVFeHRlbmRQYXJhbXMuanMnO1xuY29uc3QgcHJvdG90eXBlcyA9IHtcbiAgZXZlbnRzRW1pdHRlcixcbiAgdXBkYXRlLFxuICB0cmFuc2xhdGUsXG4gIHRyYW5zaXRpb24sXG4gIHNsaWRlLFxuICBsb29wLFxuICBncmFiQ3Vyc29yLFxuICBldmVudHMsXG4gIGJyZWFrcG9pbnRzLFxuICBjaGVja092ZXJmbG93LFxuICBjbGFzc2VzLFxuICBpbWFnZXNcbn07XG5jb25zdCBleHRlbmRlZERlZmF1bHRzID0ge307XG5cbmNsYXNzIFN3aXBlciB7XG4gIGNvbnN0cnVjdG9yKC4uLmFyZ3MpIHtcbiAgICBsZXQgZWw7XG4gICAgbGV0IHBhcmFtcztcblxuICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gMSAmJi
15BhcmdzWzBdLmNvbnN0cnVjdG9yICYmIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhcmdzWzBdKS5zbGljZSg4LCAtMSkgPT09ICdPYmplY3QnKSB7XG4gICAgICBwYXJhbXMgPSBhcmdzWzBdO1xuICAgIH0gZWxzZSB7XG4gICAgICBbZWwsIHBhcmFtc10gPSBhcmdzO1xuICAgIH1cblxuICAgIGlmICghcGFyYW1zKSBwYXJhbXMgPSB7fTtcbiAgICBwYXJhbXMgPSBleHRlbmQoe30sIHBhcmFtcyk7XG4gICAgaWYgKGVsICYmICFwYXJhbXMuZWwpIHBhcmFtcy5lbCA9IGVsO1xuXG4gICAgaWYgKHBhcmFtcy5lbCAmJiAkKHBhcmFtcy5lbCkubGVuZ3RoID4gMSkge1xuICAgICAgY29uc3Qgc3dpcGVycyA9IFtdO1xuICAgICAgJChwYXJhbXMuZWwpLmVhY2goY29udGFpbmVyRWwgPT4ge1xuICAgICAgICBjb25zdCBuZXdQYXJhbXMgPSBleHRlbmQoe30sIHBhcmFtcywge1xuICAgICAgICAgIGVsOiBjb250YWluZXJFbFxuICAgICAgICB9KTtcbiAgICAgICAgc3dpcGVycy5wdXNoKG5ldyBTd2lwZXIobmV3UGFyYW1zKSk7XG4gICAgICB9KTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnN0cnVjdG9yLXJldHVyblxuXG4gICAgICByZXR1cm4gc3dpcGVycztcbiAgICB9IC8vIFN3aXBlciBJbnN0YW5jZVxuXG5cbiAgICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICAgIHN3aXBlci5fX3N3aXBlcl9fID0gdHJ1ZTtcbiAgICBzd2lwZXIuc3VwcG9ydCA9IGdldFN1cHBvcnQoKTtcbiAgICBzd2lwZXIuZGV2aWNlID0gZ2V0RGV2aWNlKHtcbiAgICAgIHVzZXJBZ2VudDogcGFyYW1zLnVzZXJBZ2VudFxuICAgIH0pO1xuICAgIHN3aXBlci5icm93c2VyID0gZ2V0QnJvd3NlcigpO1xuICAgIHN3aXBlci5ldmVudHNMaXN0ZW5lcnMgPSB7fTtcbiAgICBzd2lwZXIuZXZlbnRzQW55TGlzdGVuZXJzID0gW107XG4gICAgc3dpcGVyLm1vZHVsZXMgPSBbLi4uc3dpcGVyLl9fbW9kdWxlc19fXTtcblxuICAgIGlmIChwYXJhbXMubW9kdWxlcyAmJiBBcnJheS5pc0FycmF5KHBhcmFtcy5tb2R1bGVzKSkge1xuICAgICAgc3dpcGVyLm1vZHVsZXMucHVzaCguLi5wYXJhbXMubW9kdWxlcyk7XG4gICAgfVxuXG4gICAgY29uc3QgYWxsTW9kdWxlc1BhcmFtcyA9IHt9O1xuICAgIHN3aXBlci5tb2R1bGVzLmZvckVhY2gobW9kID0+IHtcbiAgICAgIG1vZCh7XG4gICAgICAgIHN3aXBlcixcbiAgICAgICAgZXh0ZW5kUGFyYW1zOiBtb2R1bGVFeHRlbmRQYXJhbXMocGFyYW1zLCBhbGxNb2R1bGVzUGFyYW1zKSxcbiAgICAgICAgb246IHN3aXBlci5vbi5iaW5kKHN3aXBlciksXG4gICAgICAgIG9uY2U6IHN3aXBlci5vbmNlLmJpbmQoc3dpcGVyKSxcbiAgICAgICAgb2ZmOiBzd2lwZXIub2ZmLmJpbmQoc3dpcGVyKSxcbiAgICAgICAgZW1pdDogc3dpcGVyLmVtaXQuYmluZChzd2lwZXIpXG4gICAgICB9KTtcbiAgICB9KTsgLy8gRXh0ZW5kIGRlZmF1bHRzIHdpdGggbW9kdWxlcyBwYXJhbXNcblxuICAgIGNvbnN0IHN3aXBlclBhcmFtcyA9IGV4dGVuZCh7fSwgZGVmYXVsdHMsIGFsbE1vZHVsZXNQYXJhbXMpOyAvLyBFeHRlbmQgZGVmYXVsdHMgd2l0aCBwYXNzZWQgcGFyYW1zXG5cbiAgICBzd2lwZXIucGFyYW1zID0gZXh0ZW5kKHt9LCBzd2lwZXJQYXJhbXMsIGV4dGVuZGVkRGVmYXVsdHMsIHBhcmFtcyk7XG4gICAgc3dpcGVyLm9yaWdpbmFsUGFyYW1zID0gZXh0ZW5kKHt9LCBzd2lwZXIucGFyYW1zKTtcbiAgICBzd2lwZXIucGFzc2VkUGFyYW1zID0gZXh0ZW5kKHt9LCBwYXJhbXMpOyAvLyBhZGQgZXZlbnQgbGlzdGVuZXJzXG5cbiAgICBpZiAoc3dpcGVyLnBhcmFtcyAmJiBzd2lwZXIucGFyYW1zLm9uKSB7XG4gICAgICBPYmplY3Qua2V5cyhzd2lwZXIucGFyYW1zLm9uKS5mb3JFYWNoKGV2ZW50TmFtZSA9PiB7XG4gICAgICAgIHN3aXBlci5vbihldmVudE5hbWUsIHN3aXBlci5wYXJhbXMub25bZXZlbnROYW1lXSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoc3dpcGVyLnBhcmFtcyAmJiBzd2lwZXIucGFyYW1zLm9uQW55KSB7XG4gICAgICBzd2lwZXIub25Bbnkoc3dpcGVyLnBhcmFtcy5vbkFueSk7XG4gICAgfSAvLyBTYXZlIERvbSBsaWJcblxuXG4gICAgc3dpcGVyLiQgPSAkOyAvLyBFeHRlbmQgU3dpcGVyXG5cbiAgICBPYmplY3QuYXNzaWduKHN3aXBlciwge1xuICAgICAgZW5hYmxlZDogc3dpcGVyLnBhcmFtcy5lbmFibGVkLFxuICAgICAgZWwsXG4gICAgICAvLyBDbGFzc2VzXG4gICAgICBjbGFzc05hbWVzOiBbXSxcbiAgICAgIC8vIFNsaWRlc1xuICAgICAgc2xpZGVzOiAkKCksXG4gICAgICBzbGlkZXNHcmlkOiBbXSxcbiAgICAgIHNuYXBHcmlkOiBbXSxcbiAgICAgIHNsaWRlc1NpemVzR3JpZDogW10sXG5cbiAgICAgIC8vIGlzRGlyZWN0aW9uXG4gICAgICBpc0hvcml6b250YWwoKSB7XG4gICAgICAgIHJldHVybiBzd2lwZXIucGFyYW1zLmRpcmVjdGlvbiA9PT0gJ2hvcml6b250YWwnO1xuICAgICAgfSxcblxuICAgICAgaXNWZXJ0aWNhbCgpIHtcbiAgICAgICAgcmV0dXJuIHN3aXBlci5wYXJhbXMuZGlyZWN0aW9uID09PSAndmVydGljYWwnO1xuICAgICAgfSxcblxuICAgICAgLy8gSW5kZXhlc1xuICAgICAgYWN0aXZlSW5kZXg6IDAsXG4gICAgICByZWFsSW5kZXg6IDAsXG4gICAgICAvL1xuICAgICAgaXNCZWdpbm5pbmc6IHRydWUsXG4gICAgICBpc0VuZDogZmFsc2UsXG4gICAgICAvLyBQcm9wc1xuICAgICAgdHJhbnNsYXRlOiAwLFxuICAgICAgcHJldmlvdXNUcmFuc2xhdGU6IDAsXG4gICAgICBwcm9ncmVzczogMCxcbiAgICAgIHZlbG9jaXR5OiAwLFxuICAgICAgYW5pbWF0aW5nOiBmYWxzZSxcbiAgICAgIC8vIExvY2tzXG4gICAgICBhbGxvd1NsaWRlTmV4dDogc3dpcGVyLnBhcmFtcy5hbGxvd1NsaWRlTmV4dCxcbiAgICAgIGFsbG93U2xpZGVQcmV2OiBzd2lwZXIucGFyYW1zLmFsbG93U2xpZGVQcmV2LFxuICAgICAgLy8gVG91Y2ggRXZlbnRzXG4gICAgICB0b3VjaEV2ZW50czogZnVuY3Rpb24gdG91Y2hFdmVudHMoKSB7XG4gICAgICAgIGNvbnN0IHRvdWNoID0gWyd0b3VjaHN0YXJ0JywgJ3RvdWNobW92ZScsICd0b3VjaGVuZCcsICd0b3VjaGNhbmNlbCddO1xuICAgICAgICBjb25zdCBkZXNrdG9wID0gWydwb2ludGVyZG93bicsICdwb2ludGVybW92ZScsICdwb2ludGVydXAnXTtcbiAgICAgICAgc3dpcGVyLnRvdWNoRXZlbnRzVG91Y2ggPSB7XG4gICAgICAgICAgc3RhcnQ6IHRvdWNoWzBdLFxuICAgICAgICAgIG1vdmU6IHRvdWNoWzFdLFxuICAgICAgICAgIGVuZDogdG91Y2hbMl0sXG4gICAgICAgICAgY2FuY2VsOiB0b3VjaFszXVxuICAgICAgICB9O1xuICAgICAgICBzd2lwZXIudG91Y2hFdmVudHNEZXNrdG9wID0ge1xuICAgICAgICAgI
15HN0YXJ0OiBkZXNrdG9wWzBdLFxuICAgICAgICAgIG1vdmU6IGRlc2t0b3BbMV0sXG4gICAgICAgICAgZW5kOiBkZXNrdG9wWzJdXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBzd2lwZXIuc3VwcG9ydC50b3VjaCB8fCAhc3dpcGVyLnBhcmFtcy5zaW11bGF0ZVRvdWNoID8gc3dpcGVyLnRvdWNoRXZlbnRzVG91Y2ggOiBzd2lwZXIudG91Y2hFdmVudHNEZXNrdG9wO1xuICAgICAgfSgpLFxuICAgICAgdG91Y2hFdmVudHNEYXRhOiB7XG4gICAgICAgIGlzVG91Y2hlZDogdW5kZWZpbmVkLFxuICAgICAgICBpc01vdmVkOiB1bmRlZmluZWQsXG4gICAgICAgIGFsbG93VG91Y2hDYWxsYmFja3M6IHVuZGVmaW5lZCxcbiAgICAgICAgdG91Y2hTdGFydFRpbWU6IHVuZGVmaW5lZCxcbiAgICAgICAgaXNTY3JvbGxpbmc6IHVuZGVmaW5lZCxcbiAgICAgICAgY3VycmVudFRyYW5zbGF0ZTogdW5kZWZpbmVkLFxuICAgICAgICBzdGFydFRyYW5zbGF0ZTogdW5kZWZpbmVkLFxuICAgICAgICBhbGxvd1RocmVzaG9sZE1vdmU6IHVuZGVmaW5lZCxcbiAgICAgICAgLy8gRm9ybSBlbGVtZW50cyB0byBtYXRjaFxuICAgICAgICBmb2N1c2FibGVFbGVtZW50czogc3dpcGVyLnBhcmFtcy5mb2N1c2FibGVFbGVtZW50cyxcbiAgICAgICAgLy8gTGFzdCBjbGljayB0aW1lXG4gICAgICAgIGxhc3RDbGlja1RpbWU6IG5vdygpLFxuICAgICAgICBjbGlja1RpbWVvdXQ6IHVuZGVmaW5lZCxcbiAgICAgICAgLy8gVmVsb2NpdGllc1xuICAgICAgICB2ZWxvY2l0aWVzOiBbXSxcbiAgICAgICAgYWxsb3dNb21lbnR1bUJvdW5jZTogdW5kZWZpbmVkLFxuICAgICAgICBpc1RvdWNoRXZlbnQ6IHVuZGVmaW5lZCxcbiAgICAgICAgc3RhcnRNb3Zpbmc6IHVuZGVmaW5lZFxuICAgICAgfSxcbiAgICAgIC8vIENsaWNrc1xuICAgICAgYWxsb3dDbGljazogdHJ1ZSxcbiAgICAgIC8vIFRvdWNoZXNcbiAgICAgIGFsbG93VG91Y2hNb3ZlOiBzd2lwZXIucGFyYW1zLmFsbG93VG91Y2hNb3ZlLFxuICAgICAgdG91Y2hlczoge1xuICAgICAgICBzdGFydFg6IDAsXG4gICAgICAgIHN0YXJ0WTogMCxcbiAgICAgICAgY3VycmVudFg6IDAsXG4gICAgICAgIGN1cnJlbnRZOiAwLFxuICAgICAgICBkaWZmOiAwXG4gICAgICB9LFxuICAgICAgLy8gSW1hZ2VzXG4gICAgICBpbWFnZXNUb0xvYWQ6IFtdLFxuICAgICAgaW1hZ2VzTG9hZGVkOiAwXG4gICAgfSk7XG4gICAgc3dpcGVyLmVtaXQoJ19zd2lwZXInKTsgLy8gSW5pdFxuXG4gICAgaWYgKHN3aXBlci5wYXJhbXMuaW5pdCkge1xuICAgICAgc3dpcGVyLmluaXQoKTtcbiAgICB9IC8vIFJldHVybiBhcHAgaW5zdGFuY2VcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc3RydWN0b3ItcmV0dXJuXG5cblxuICAgIHJldHVybiBzd2lwZXI7XG4gIH1cblxuICBlbmFibGUoKSB7XG4gICAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgICBpZiAoc3dpcGVyLmVuYWJsZWQpIHJldHVybjtcbiAgICBzd2lwZXIuZW5hYmxlZCA9IHRydWU7XG5cbiAgICBpZiAoc3dpcGVyLnBhcmFtcy5ncmFiQ3Vyc29yKSB7XG4gICAgICBzd2lwZXIuc2V0R3JhYkN1cnNvcigpO1xuICAgIH1cblxuICAgIHN3aXBlci5lbWl0KCdlbmFibGUnKTtcbiAgfVxuXG4gIGRpc2FibGUoKSB7XG4gICAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgICBpZiAoIXN3aXBlci5lbmFibGVkKSByZXR1cm47XG4gICAgc3dpcGVyLmVuYWJsZWQgPSBmYWxzZTtcblxuICAgIGlmIChzd2lwZXIucGFyYW1zLmdyYWJDdXJzb3IpIHtcbiAgICAgIHN3aXBlci51bnNldEdyYWJDdXJzb3IoKTtcbiAgICB9XG5cbiAgICBzd2lwZXIuZW1pdCgnZGlzYWJsZScpO1xuICB9XG5cbiAgc2V0UHJvZ3Jlc3MocHJvZ3Jlc3MsIHNwZWVkKSB7XG4gICAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgICBwcm9ncmVzcyA9IE1hdGgubWluKE1hdGgubWF4KHByb2dyZXNzLCAwKSwgMSk7XG4gICAgY29uc3QgbWluID0gc3dpcGVyLm1pblRyYW5zbGF0ZSgpO1xuICAgIGNvbnN0IG1heCA9IHN3aXBlci5tYXhUcmFuc2xhdGUoKTtcbiAgICBjb25zdCBjdXJyZW50ID0gKG1heCAtIG1pbikgKiBwcm9ncmVzcyArIG1pbjtcbiAgICBzd2lwZXIudHJhbnNsYXRlVG8oY3VycmVudCwgdHlwZW9mIHNwZWVkID09PSAndW5kZWZpbmVkJyA/IDAgOiBzcGVlZCk7XG4gICAgc3dpcGVyLnVwZGF0ZUFjdGl2ZUluZGV4KCk7XG4gICAgc3dpcGVyLnVwZGF0ZVNsaWRlc0NsYXNzZXMoKTtcbiAgfVxuXG4gIGVtaXRDb250YWluZXJDbGFzc2VzKCkge1xuICAgIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gICAgaWYgKCFzd2lwZXIucGFyYW1zLl9lbWl0Q2xhc3NlcyB8fCAhc3dpcGVyLmVsKSByZXR1cm47XG4gICAgY29uc3QgY2xzID0gc3dpcGVyLmVsLmNsYXNzTmFtZS5zcGxpdCgnICcpLmZpbHRlcihjbGFzc05hbWUgPT4ge1xuICAgICAgcmV0dXJuIGNsYXNzTmFtZS5pbmRleE9mKCdzd2lwZXInKSA9PT0gMCB8fCBjbGFzc05hbWUuaW5kZXhPZihzd2lwZXIucGFyYW1zLmNvbnRhaW5lck1vZGlmaWVyQ2xhc3MpID09PSAwO1xuICAgIH0pO1xuICAgIHN3aXBlci5lbWl0KCdfY29udGFpbmVyQ2xhc3NlcycsIGNscy5qb2luKCcgJykpO1xuICB9XG5cbiAgZ2V0U2xpZGVDbGFzc2VzKHNsaWRlRWwpIHtcbiAgICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICAgIGlmIChzd2lwZXIuZGVzdHJveWVkKSByZXR1cm4gJyc7XG4gICAgcmV0dXJuIHNsaWRlRWwuY2xhc3NOYW1lLnNwbGl0KCcgJykuZmlsdGVyKGNsYXNzTmFtZSA9PiB7XG4gICAgICByZXR1cm4gY2xhc3NOYW1lLmluZGV4T2YoJ3N3aXBlci1zbGlkZScpID09PSAwIHx8IGNsYXNzTmFtZS5pbmRleE9mKHN3aXBlci5wYXJhbXMuc2xpZGVDbGFzcykgPT09IDA7XG4gICAgfSkuam9pbignICcpO1xuICB9XG5cbiAgZW1pdFNsaWRlc0NsYXNzZXMoKSB7XG4gICAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgICBpZiAoIXN3aXBlci5wYXJhbXMuX2VtaXRDbGFzc2VzIHx8ICFzd2lwZXIuZWwpIHJldHVybjtcbiAgICBjb25zdCB1cGRhdGVzID0gW107XG4gICAgc3dpcGVyLnNsaWRlcy5lYWNoKHNsaWRlRWwgPT4ge1xuICAgICAgY29uc3QgY2xhc3NOYW1lcyA9IHN3aXBlci5nZXRTbGlkZUNsYXNzZXMoc2xpZGVFbCk7XG4gICAgICB1cGRhdGVzLnB1c2goe1xuICAgICAgICBzbGlkZUVsLFxuICAgICAgICBjbGFzc05hbWVzXG4gICAgICB9KTtcbiAgICAgIHN3aXBlci5lbWl0KCdfc2xpZGVDbGFzcycsIHNsaWRlRWwsIGNsYXNzTmFtZXMpO1xuICAgIH0pO1xuICAgIHN3aXBlci5lbWl0KCdfc2xpZGVDbGFzc2VzJywgdXBkYXRlcyk7XG4gIH1cblxuICBzbGlkZXNQZXJWaWV3RHluYW1pYyh2aWV3ID0gJ2N1cnJlbnQnLCBleGFjdCA9IGZhbHNlKSB7XG4gICAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgICBjb25zdCB7XG4gICAgICBwYXJhbXMsXG4gICAgICBzbGlkZXMsXG4gICAgICBzbGlkZXNHcmlkLFxuICAgICAgc2xpZGVzU2l6ZXNHcmlkLFxuICAgICAgc2l6ZTogc3dpcGVyU2l6ZSxcbiAgICAgIGFjdGl2ZUluZGV4XG4gICAgfSA9IHN3aXBlcjtcbiAgICBsZXQgc3B2ID0gMTtcblxuICAgIGlmIChwYXJhbXMuY2VudGVyZWRTbGlkZXMpIHtcbiAgICAgIGxldCBzbGlkZVNpemUgPSBzbGlkZXNbYWN0aXZlSW5kZXhdLnN3aXBlclNsaWRlU2l6ZTtcbiAgICAgIGxldCBicmVha0xvb3A7XG5cbiAgICAgIGZvciAobGV0IGkgPSBhY3RpdmVJbmRleCArIDE7IGkgPCBzbGlkZXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgaWYgKHNsaWRlc1tpXSAmJiAhYnJlYWtMb29wKSB7XG4gICAgICAgICAgc2xpZGVTaXplICs9IHNsaWRlc1tpXS5zd2lwZXJTbGlkZVNpemU7XG4gICAgICAgICAgc3B2ICs9IDE7XG4gICAgICAgICAgaWYgKHNsaWRlU2l6ZSA+IHN3aXBlclNpemUpIGJyZWFrTG9vcCA9IHRydWU7XG4gICAgICAgI
15H1cbiAgICAgIH1cblxuICAgICAgZm9yIChsZXQgaSA9IGFjdGl2ZUluZGV4IC0gMTsgaSA+PSAwOyBpIC09IDEpIHtcbiAgICAgICAgaWYgKHNsaWRlc1tpXSAmJiAhYnJlYWtMb29wKSB7XG4gICAgICAgICAgc2xpZGVTaXplICs9IHNsaWRlc1tpXS5zd2lwZXJTbGlkZVNpemU7XG4gICAgICAgICAgc3B2ICs9IDE7XG4gICAgICAgICAgaWYgKHNsaWRlU2l6ZSA+IHN3aXBlclNpemUpIGJyZWFrTG9vcCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgICBpZiAodmlldyA9PT0gJ2N1cnJlbnQnKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSBhY3RpdmVJbmRleCArIDE7IGkgPCBzbGlkZXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgICBjb25zdCBzbGlkZUluVmlldyA9IGV4YWN0ID8gc2xpZGVzR3JpZFtpXSArIHNsaWRlc1NpemVzR3JpZFtpXSAtIHNsaWRlc0dyaWRbYWN0aXZlSW5kZXhdIDwgc3dpcGVyU2l6ZSA6IHNsaWRlc0dyaWRbaV0gLSBzbGlkZXNHcmlkW2FjdGl2ZUluZGV4XSA8IHN3aXBlclNpemU7XG5cbiAgICAgICAgICBpZiAoc2xpZGVJblZpZXcpIHtcbiAgICAgICAgICAgIHNwdiArPSAxO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gcHJldmlvdXNcbiAgICAgICAgZm9yIChsZXQgaSA9IGFjdGl2ZUluZGV4IC0gMTsgaSA+PSAwOyBpIC09IDEpIHtcbiAgICAgICAgICBjb25zdCBzbGlkZUluVmlldyA9IHNsaWRlc0dyaWRbYWN0aXZlSW5kZXhdIC0gc2xpZGVzR3JpZFtpXSA8IHN3aXBlclNpemU7XG5cbiAgICAgICAgICBpZiAoc2xpZGVJblZpZXcpIHtcbiAgICAgICAgICAgIHNwdiArPSAxO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzcHY7XG4gIH1cblxuICB1cGRhdGUoKSB7XG4gICAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgICBpZiAoIXN3aXBlciB8fCBzd2lwZXIuZGVzdHJveWVkKSByZXR1cm47XG4gICAgY29uc3Qge1xuICAgICAgc25hcEdyaWQsXG4gICAgICBwYXJhbXNcbiAgICB9ID0gc3dpcGVyOyAvLyBCcmVha3BvaW50c1xuXG4gICAgaWYgKHBhcmFtcy5icmVha3BvaW50cykge1xuICAgICAgc3dpcGVyLnNldEJyZWFrcG9pbnQoKTtcbiAgICB9XG5cbiAgICBzd2lwZXIudXBkYXRlU2l6ZSgpO1xuICAgIHN3aXBlci51cGRhdGVTbGlkZXMoKTtcbiAgICBzd2lwZXIudXBkYXRlUHJvZ3Jlc3MoKTtcbiAgICBzd2lwZXIudXBkYXRlU2xpZGVzQ2xhc3NlcygpO1xuXG4gICAgZnVuY3Rpb24gc2V0VHJhbnNsYXRlKCkge1xuICAgICAgY29uc3QgdHJhbnNsYXRlVmFsdWUgPSBzd2lwZXIucnRsVHJhbnNsYXRlID8gc3dpcGVyLnRyYW5zbGF0ZSAqIC0xIDogc3dpcGVyLnRyYW5zbGF0ZTtcbiAgICAgIGNvbnN0IG5ld1RyYW5zbGF0ZSA9IE1hdGgubWluKE1hdGgubWF4KHRyYW5zbGF0ZVZhbHVlLCBzd2lwZXIubWF4VHJhbnNsYXRlKCkpLCBzd2lwZXIubWluVHJhbnNsYXRlKCkpO1xuICAgICAgc3dpcGVyLnNldFRyYW5zbGF0ZShuZXdUcmFuc2xhdGUpO1xuICAgICAgc3dpcGVyLnVwZGF0ZUFjdGl2ZUluZGV4KCk7XG4gICAgICBzd2lwZXIudXBkYXRlU2xpZGVzQ2xhc3NlcygpO1xuICAgIH1cblxuICAgIGxldCB0cmFuc2xhdGVkO1xuXG4gICAgaWYgKHN3aXBlci5wYXJhbXMuZnJlZU1vZGUgJiYgc3dpcGVyLnBhcmFtcy5mcmVlTW9kZS5lbmFibGVkKSB7XG4gICAgICBzZXRUcmFuc2xhdGUoKTtcblxuICAgICAgaWYgKHN3aXBlci5wYXJhbXMuYXV0b0hlaWdodCkge1xuICAgICAgICBzd2lwZXIudXBkYXRlQXV0b0hlaWdodCgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoKHN3aXBlci5wYXJhbXMuc2xpZGVzUGVyVmlldyA9PT0gJ2F1dG8nIHx8IHN3aXBlci5wYXJhbXMuc2xpZGVzUGVyVmlldyA+IDEpICYmIHN3aXBlci5pc0VuZCAmJiAhc3dpcGVyLnBhcmFtcy5jZW50ZXJlZFNsaWRlcykge1xuICAgICAgICB0cmFuc2xhdGVkID0gc3dpcGVyLnNsaWRlVG8oc3dpcGVyLnNsaWRlcy5sZW5ndGggLSAxLCAwLCBmYWxzZSwgdHJ1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0cmFuc2xhdGVkID0gc3dpcGVyLnNsaWRlVG8oc3dpcGVyLmFjdGl2ZUluZGV4LCAwLCBmYWxzZSwgdHJ1ZSk7XG4gICAgICB9XG5cbiAgICAgIGlmICghdHJhbnNsYXRlZCkge1xuICAgICAgICBzZXRUcmFuc2xhdGUoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocGFyYW1zLndhdGNoT3ZlcmZsb3cgJiYgc25hcEdyaWQgIT09I
15HN3aXBlci5zbmFwR3JpZCkge1xuICAgICAgc3dpcGVyLmNoZWNrT3ZlcmZsb3coKTtcbiAgICB9XG5cbiAgICBzd2lwZXIuZW1pdCgndXBkYXRlJyk7XG4gIH1cblxuICBjaGFuZ2VEaXJlY3Rpb24obmV3RGlyZWN0aW9uLCBuZWVkVXBkYXRlID0gdHJ1ZSkge1xuICAgIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gICAgY29uc3QgY3VycmVudERpcmVjdGlvbiA9IHN3aXBlci5wYXJhbXMuZGlyZWN0aW9uO1xuXG4gICAgaWYgKCFuZXdEaXJlY3Rpb24pIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgICAgbmV3RGlyZWN0aW9uID0gY3VycmVudERpcmVjdGlvbiA9PT0gJ2hvcml6b250YWwnID8gJ3ZlcnRpY2FsJyA6ICdob3Jpem9udGFsJztcbiAgICB9XG5cbiAgICBpZiAobmV3RGlyZWN0aW9uID09PSBjdXJyZW50RGlyZWN0aW9uIHx8IG5ld0RpcmVjdGlvbiAhPT0gJ2hvcml6b250YWwnICYmIG5ld0RpcmVjdGlvbiAhPT0gJ3ZlcnRpY2FsJykge1xuICAgICAgcmV0dXJuIHN3aXBlcjtcbiAgICB9XG5cbiAgICBzd2lwZXIuJGVsLnJlbW92ZUNsYXNzKGAke3N3aXBlci5wYXJhbXMuY29udGFpbmVyTW9kaWZpZXJDbGFzc30ke2N1cnJlbnREaXJlY3Rpb259YCkuYWRkQ2xhc3MoYCR7c3dpcGVyLnBhcmFtcy5jb250YWluZXJNb2RpZmllckNsYXNzfSR7bmV3RGlyZWN0aW9ufWApO1xuICAgIHN3aXBlci5lbWl0Q29udGFpbmVyQ2xhc3NlcygpO1xuICAgIHN3aXBlci5wYXJhbXMuZGlyZWN0aW9uID0gbmV3RGlyZWN0aW9uO1xuICAgIHN3aXBlci5zbGlkZXMuZWFjaChzbGlkZUVsID0+IHtcbiAgICAgIGlmIChuZXdEaXJlY3Rpb24gPT09ICd2ZXJ0aWNhbCcpIHtcbiAgICAgICAgc2xpZGVFbC5zdHlsZS53aWR0aCA9ICcnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2xpZGVFbC5zdHlsZS5oZWlnaHQgPSAnJztcbiAgICAgIH1cbiAgICB9KTtcbiAgICBzd2lwZXIuZW1pdCgnY2hhbmdlRGlyZWN0aW9uJyk7XG4gICAgaWYgKG5lZWRVcGRhdGUpIHN3aXBlci51cGRhdGUoKTtcbiAgICByZXR1cm4gc3dpcGVyO1xuICB9XG5cbiAgY2hhbmdlTGFuZ3VhZ2VEaXJlY3Rpb24oZGlyZWN0aW9uKSB7XG4gICAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgICBpZiAoc3dpcGVyLnJ0bCAmJiBkaXJlY3Rpb24gPT09ICdydGwnIHx8ICFzd2lwZXIucnRsICYmIGRpcmVjdGlvbiA9PT0gJ2x0cicpIHJldHVybjtcbiAgICBzd2lwZXIucnRsID0gZGlyZWN0aW9uID09PSAncnRsJztcbiAgICBzd2lwZXIucnRsVHJhbnNsYXRlID0gc3dpcGVyLnBhcmFtcy5kaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJyAmJiBzd2lwZXIucnRsO1xuXG4gICAgaWYgKHN3aXBlci5ydGwpIHtcbiAgICAgIHN3aXBlci4kZWwuYWRkQ2xhc3MoYCR7c3dpcGVyLnBhcmFtcy5jb250YWluZXJNb2RpZmllckNsYXNzfXJ0bGApO1xuICAgICAgc3dpcGVyLmVsLmRpciA9ICdydGwnO1xuICAgIH0gZWxzZSB7XG4gICAgICBzd2lwZXIuJGVsLnJlbW92ZUNsYXNzKGAke3N3aXBlci5wYXJhbXMuY29udGFpbmVyTW9kaWZpZXJDbGFzc31ydGxgKTtcbiAgICAgIHN3aXBlci5lbC5kaXIgPSAnbHRyJztcbiAgICB9XG5cbiAgICBzd2lwZXIudXBkYXRlKCk7XG4gIH1cblxuICBtb3VudChlbCkge1xuICAgIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gICAgaWYgKHN3aXBlci5tb3VudGVkKSByZXR1cm4gdHJ1ZTsgLy8gRmluZCBlbFxuXG4gICAgY29uc3QgJGVsID0gJChlbCB8fCBzd2lwZXIucGFyYW1zLmVsKTtcbiAgICBlbCA9ICRlbFswXTtcblxuICAgIGlmICghZWwpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBlbC5zd2lwZXIgPSBzd2lwZXI7XG5cbiAgICBjb25zdCBnZXRXcmFwcGVyU2VsZWN0b3IgPSAoKSA9PiB7XG4gICAgICByZXR1cm4gYC4keyhzd2lwZXIucGFyYW1zLndyYXBwZXJDbGFzcyB8fCAnJykudHJpbSgpLnNwbGl0KCcgJykuam9pbignLicpfWA7XG4gICAgfTtcblxuICAgIGNvbnN0IGdldFdyYXBwZXIgPSAoKSA9PiB7XG4gICAgICBpZiAoZWwgJiYgZWwuc2hhZG93Um9vdCAmJiBlbC5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IpIHtcbiAgICAgICAgY29uc3QgcmVzID0gJChlbC5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoZ2V0V3JhcHBlclNlbGVjdG9yKCkpKTsgLy8gQ2hpbGRyZW4gbmVlZHMgdG8gcmV0dXJuIHNsb3QgaXRlbXNcblxuICAgICAgICByZXMuY2hpbGRyZW4gPSBvcHRpb25zID0+ICRlbC5jaGlsZHJlbihvcHRpb25zKTtcblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgfVxuXG4gICAgICBpZiAoISRlbC5jaGlsZHJlbikge1xuICAgICAgICByZXR1cm4gJCgkZWwpLmNoaWxkcmVuKGdldFdyYXBwZXJTZWxlY3RvcigpKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICRlbC5jaGlsZHJlbihnZXRXcmFwcGVyU2VsZWN0b3IoKSk7XG4gICAgfTsgLy8gRmluZCBXcmFwcGVyXG5cblxuICAgIGxldCAkd3JhcHBlckVsID0gZ2V0V3JhcHBlcigpO1xuXG4gICAgaWYgKCR3cmFwcGVyRWwubGVuZ3RoID09PSAwICYmIHN3aXBlci5wYXJhbXMuY3JlYXRlRWxlbWVudHMpIHtcbiAgICAgIGNvbnN0IGRvY3VtZW50ID0gZ2V0RG9jdW1lbnQoKTtcbiAgICAgIGNvbnN0IHdyYXBwZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICR3cmFwcGVyRWwgPSAkKHdyYXBwZXIpO1xuICAgICAgd3JhcHBlci5jbGFzc05hbWUgPSBzd2lwZXIucGFyYW1zLndyYXBwZXJDbGFzcztcbiAgICAgICRlbC5hcHBlbmQod3JhcHBlcik7XG4gICAgICAkZWwuY2hpbGRyZW4oYC4ke3N3aXBlci5wYXJhbXMuc2xpZGVDbGFzc31gKS5lYWNoKHNsaWRlRWwgPT4ge1xuICAgICAgICAkd3JhcHBlckVsLmFwcGVuZChzbGlkZUVsKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIE9iamVjdC5hc3NpZ24oc3dpcGVyLCB7XG4gICAgICAkZWwsXG4gICAgICBlbCxcbiAgICAgICR3cmFwcGVyRWwsXG4gICAgICB3cmFwcGVyRWw6ICR3cmFwcGVyRWxbMF0sXG4gICAgICBtb3VudGVkOiB0cnVlLFxuICAgICAgLy8gUlRMXG4gICAgICBydGw6IGVsLmRpci50b0xvd2VyQ2FzZSgpID09PSAncnRsJyB8fCAkZWwuY3NzKCdkaXJlY3Rpb24nKSA9PT0gJ3J0bCcsXG4gICAgICBydGxUcmFuc2xhdGU6IHN3aXBlci5wYXJhbXMuZGlyZWN0aW9uID09PSAnaG9yaXpvbn
15RhbCcgJiYgKGVsLmRpci50b0xvd2VyQ2FzZSgpID09PSAncnRsJyB8fCAkZWwuY3NzKCdkaXJlY3Rpb24nKSA9PT0gJ3J0bCcpLFxuICAgICAgd3JvbmdSVEw6ICR3cmFwcGVyRWwuY3NzKCdkaXNwbGF5JykgPT09ICctd2Via2l0LWJveCdcbiAgICB9KTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGluaXQoZWwpIHtcbiAgICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICAgIGlmIChzd2lwZXIuaW5pdGlhbGl6ZWQpIHJldHVybiBzd2lwZXI7XG4gICAgY29uc3QgbW91bnRlZCA9IHN3aXBlci5tb3VudChlbCk7XG4gICAgaWYgKG1vdW50ZWQgPT09IGZhbHNlKSByZXR1cm4gc3dpcGVyO1xuICAgIHN3aXBlci5lbWl0KCdiZWZvcmVJbml0Jyk7IC8vIFNldCBicmVha3BvaW50XG5cbiAgICBpZiAoc3dpcGVyLnBhcmFtcy5icmVha3BvaW50cykge1xuICAgICAgc3dpcGVyLnNldEJyZWFrcG9pbnQoKTtcbiAgICB9IC8vIEFkZCBDbGFzc2VzXG5cblxuICAgIHN3aXBlci5hZGRDbGFzc2VzKCk7IC8vIENyZWF0ZSBsb29wXG5cbiAgICBpZiAoc3dpcGVyLnBhcmFtcy5sb29wKSB7XG4gICAgICBzd2lwZXIubG9vcENyZWF0ZSgpO1xuICAgIH0gLy8gVXBkYXRlIHNpemVcblxuXG4gICAgc3dpcGVyLnVwZGF0ZVNpemUoKTsgLy8gVXBkYXRlIHNsaWRlc1xuXG4gICAgc3dpcGVyLnVwZGF0ZVNsaWRlcygpO1xuXG4gICAgaWYgKHN3aXBlci5wYXJhbXMud2F0Y2hPdmVyZmxvdykge1xuICAgICAgc3dpcGVyLmNoZWNrT3ZlcmZsb3coKTtcbiAgICB9IC8vIFNldCBHcmFiIEN1cnNvclxuXG5cbiAgICBpZiAoc3dpcGVyLnBhcmFtcy5ncmFiQ3Vyc29yICYmIHN3aXBlci5lbmFibGVkKSB7XG4gICAgICBzd2lwZXIuc2V0R3JhYkN1cnNvcigpO1xuICAgIH1cblxuICAgIGlmIChzd2lwZXIucGFyYW1zLnByZWxvYWRJbWFnZXMpIHtcbiAgICAgIHN3aXBlci5wcmVsb2FkSW1hZ2VzKCk7XG4gICAgfSAvLyBTbGlkZSBUbyBJbml0aWFsIFNsaWRlXG5cblxuICAgIGlmIChzd2lwZXIucGFyYW1zLmxvb3ApIHtcbiAgICAgIHN3aXBlci5zbGlkZVRvKHN3aXBlci5wYXJhbXMuaW5pdGlhbFNsaWRlICsgc3dpcGVyLmxvb3BlZFNsaWRlcywgMCwgc3dpcGVyLnBhcmFtcy5ydW5DYWxsYmFja3NPbkluaXQsIGZhbHNlLCB0cnVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3dpcGVyLnNsaWRlVG8oc3dpcGVyLnBhcmFtcy5pbml0aWFsU2xpZGUsIDAsIHN3aXBlci5wYXJhbXMucnVuQ2FsbGJhY2tzT25Jbml0LCBmYWxzZSwgdHJ1ZSk7XG4gICAgfSAvLyBBdHRhY2ggZXZlbnRzXG5cblxuICAgIHN3aXBlci5hdHRhY2hFdmVudHMoKTsgLy8gSW5pdCBGbGFnXG5cbiAgICBzd2lwZXIuaW5pdGlhbGl6ZWQgPSB0cnVlOyAvLyBFbWl0XG5cbiAgICBzd2lwZXIuZW1pdCgnaW5pdCcpO1xuICAgIHN3aXBlci5lbWl0KCdhZnRlckluaXQnKTtcbiAgICByZXR1cm4gc3dpcGVyO1xuICB9XG5cbiAgZGVzdHJveShkZWxldGVJbnN0YW5jZSA9IHRydWUsIGNsZWFuU3R5bGVzID0gdHJ1ZSkge1xuICAgIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gICAgY29uc3Qge1xuICAgICAgcGFyYW1zLFxuICAgICAgJGVsLFxuICAgICAgJHdyYXBwZXJFbCxcbiAgICAgIHNsaWRlc1xuICAgIH0gPSBzd2lwZXI7XG5cbiAgICBpZiAodHlwZW9mIHN3aXBlci5wYXJhbXMgPT09ICd1bmRlZmluZWQnIHx8IHN3aXBlci5kZXN0cm95ZWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHN3aXBlci5lbWl0KCdiZWZvcmVEZXN0cm95Jyk7IC8vIEluaXQgRmxhZ1xuXG4gICAgc3dpcGVyLmluaXRpYWxpemVkID0gZmFsc2U7IC8vIERldGFjaCBldmVudHNcblxuICAgIHN3aXBlci5kZXRhY2hFdmVudHMoKTsgLy8gRGVzdHJveSBsb29wXG5cbiAgICBpZiAocGFyYW1zLmxvb3ApIHtcbiAgICAgIHN3aXBlci5sb29wRGVzdHJveSgpO1xuICAgIH0gLy8gQ2xlYW51cCBzdHlsZXNcblxuXG4gICAgaWYgKGNsZWFuU3R5bGVzKSB7XG4gICAgICBzd2lwZXIucmVtb3ZlQ2xhc3NlcygpO1xuICAgICAgJGVsLnJlbW92ZUF0dHIoJ3N0eWxlJyk7XG4gICAgICAkd3JhcHBlckVsLnJlbW92ZUF0dHIoJ3N0eWxlJyk7XG5cbiAgICAgIGlmIChzbGlkZXMgJiYgc2xpZGVzLmxlbmd0aCkge1xuICAgICAgICBzbGlkZXMucmVtb3ZlQ2xhc3MoW3BhcmFtcy5zbGlkZVZpc2libGVDbGFzcywgcGFyYW1zLnNsaWRlQWN0aXZlQ2xhc3MsIHBhcmFtcy5zbGlkZU5leHRDbGFzcywgcGFyYW1zLnNsaWRlUHJldkNsYXNzXS5qb2luKCcgJykpLnJlbW92ZUF0dHIoJ3N0eWxlJykucmVtb3ZlQXR0cignZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzd2lwZXIuZW1pdCgnZGVzdHJveScpOyAvLyBEZXRhY2ggZW1pdHRlciBldmVudHNcblxuICAgIE9iamVjdC5rZXlzKHN3aXBlci5ldmVudHNMaXN0ZW5lcnMpLmZvckVhY2goZXZlbnROYW1lID0+IHtcbiAgICAgIHN3aXBlci5vZmYoZXZlbnROYW1lKTtcbiAgICB9KTtcblxuICAgIGlmIChkZWxldGVJbnN0YW5jZSAhPT0gZmFsc2UpIHtcbiAgICAgIHN3aXBlci4kZWxbMF0uc3dpcGVyID0gbnVsbDtcbiAgICAgIGRlbGV0ZVByb3BzKHN3aXBlcik7XG4gICAgfVxuXG4gICAgc3dpcGVyLmRlc3Ryb3llZCA9IHRydWU7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBzdGF0aWMgZXh0ZW5kRGVmYXVsdHMobmV3RGVmYXVsdHMpIHtcbiAgICBleHRlbmQoZXh0ZW5kZWREZWZhdWx0cywgbmV3RGVmYXVsdHMpO1xuICB9XG5cbiAgc3RhdGljIGdldCBleHRlbmRlZERlZmF1bHRzKCkge1xuICAgIHJldHVybiBleHRlbmRlZERlZmF1bHRzO1xuICB9XG5cbiAgc3RhdGljIGdldCBkZWZhdWx0cygpIHtcbiAgICByZXR1cm4gZGVmYXVsdHM7XG4gIH1cblxuICBzdGF0aWMgaW5zdGFsbE1vZHVsZShtb2QpIHtcbiAgICBpZiAoIVN3aXBlci5wcm90b3R5cGUuX19tb2R1bGVzX18pIFN3aXBlci5wcm90b3R5cGUuX19tb2R1bGVzX18gPSBbXTtcbiAgICBjb25zdCBtb2R1bGVzID0gU3dpcGVyLnByb3RvdHlwZS5fX21vZHVsZXNfXztcblxuICAgIGlmICh0eXBlb2YgbW9kID09PSAnZnVuY3Rpb24nICYmIG1vZHVsZXMuaW5kZXhPZihtb2QpIDwgMCkge1xuICAgICAgbW9kdWxlcy5wdXNoKG1vZCk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIHVzZShtb2R1bGUpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShtb2R1bGUpKSB7XG4gICAgICBtb2R1bGUuZm9yRWFjaChtID0+IFN3aXBlci5pbnN0YWxsTW9kdWxlKG0pKTtcbiAgICAgIHJldHVybi
15BTd2lwZXI7XG4gICAgfVxuXG4gICAgU3dpcGVyLmluc3RhbGxNb2R1bGUobW9kdWxlKTtcbiAgICByZXR1cm4gU3dpcGVyO1xuICB9XG5cbn1cblxuT2JqZWN0LmtleXMocHJvdG90eXBlcykuZm9yRWFjaChwcm90b3R5cGVHcm91cCA9PiB7XG4gIE9iamVjdC5rZXlzKHByb3RvdHlwZXNbcHJvdG90eXBlR3JvdXBdKS5mb3JFYWNoKHByb3RvTWV0aG9kID0+IHtcbiAgICBTd2lwZXIucHJvdG90eXBlW3Byb3RvTWV0aG9kXSA9IHByb3RvdHlwZXNbcHJvdG90eXBlR3JvdXBdW3Byb3RvTWV0aG9kXTtcbiAgfSk7XG59KTtcblN3aXBlci51c2UoW1Jlc2l6ZSwgT2JzZXJ2ZXJdKTtcbmV4cG9ydCBkZWZhdWx0IFN3aXBlcjsiLCJpbXBvcnQgc2V0VHJhbnNpdGlvbiBmcm9tICcuL3NldFRyYW5zaXRpb24uanMnO1xuaW1wb3J0IHRyYW5zaXRpb25TdGFydCBmcm9tICcuL3RyYW5zaXRpb25TdGFydC5qcyc7XG5pbXBvcnQgdHJhbnNpdGlvbkVuZCBmcm9tICcuL3RyYW5zaXRpb25FbmQuanMnO1xuZXhwb3J0IGRlZmF1bHQge1xuICBzZXRUcmFuc2l0aW9uLFxuICB0cmFuc2l0aW9uU3RhcnQsXG4gIHRyYW5zaXRpb25FbmRcbn07IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2V0VHJhbnNpdGlvbihkdXJhdGlvbiwgYnlDb250cm9sbGVyKSB7XG4gIGNvbnN0IHN3aXBlciA9IHRoaXM7XG5cbiAgaWYgKCFzd2lwZXIucGFyYW1zLmNzc01vZGUpIHtcbiAgICBzd2lwZXIuJHdyYXBwZXJFbC50cmFuc2l0aW9uKGR1cmF0aW9uKTtcbiAgfVxuXG4gIHN3aXBlci5lbWl0KCdzZXRUcmFuc2l0aW9uJywgZHVyYXRpb24sIGJ5Q29udHJvbGxlcik7XG59IiwiaW1wb3J0IHRyYW5zaXRpb25FbWl0IGZyb20gJy4vdHJhbnNpdGlvbkVtaXQuanMnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdHJhbnNpdGlvblN0YXJ0KHJ1bkNhbGxiYWNrcyA9IHRydWUsIGRpcmVjdGlvbikge1xuICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICBjb25zdCB7XG4gICAgcGFyYW1zXG4gIH0gPSBzd2lwZXI7XG4gIGlmIChwYXJhbXMuY3NzTW9kZSkgcmV0dXJuO1xuXG4gIGlmIChwYXJhbXMuYXV0b0hlaWdodCkge1xuICAgIHN3aXBlci51cGRhdGVBdXRvSGVpZ2h0KCk7XG4gIH1cblxuICB0cmFuc2l0aW9uRW1pdCh7XG4gICAgc3dpcGVyLFxuICAgIHJ1bkNhbGxiYWNrcyxcbiAgICBkaXJlY3Rpb24sXG4gICAgc3RlcDogJ1N0YXJ0J1xuICB9KTtcbn0iLCJpbXBvcnQgdHJhbnNpdGlvbkVtaXQgZnJvbSAnLi90cmFuc2l0aW9uRW1pdC5qcyc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0cmFuc2l0aW9uRW5kKHJ1bkNhbGxiYWNrcyA9IHRydWUsIGRpcmVjdGlvbikge1xuICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICBjb25zdCB7XG4gICAgcGFyYW1zXG4gIH0gPSBzd2lwZXI7XG4gIHN3aXBlci5hbmltYXRpbmcgPSBmYWxzZTtcbiAgaWYgKHBhcmFtcy5jc3NNb2RlKSByZXR1cm47XG4gIHN3aXBlci5zZXRUcmFuc2l0aW9uKDApO1xuICB0cmFuc2l0aW9uRW1pdCh7XG4gICAgc3dpcGVyLFxuICAgIHJ1bkNhbGxiYWNrcyxcbiAgICBkaXJlY3Rpb24sXG4gICAgc3RlcDogJ0VuZCdcbiAgfSk7XG59IiwiaW1wb3J0IHNldEdyYWJDdXJzb3IgZnJvbSAnLi9zZXRHcmFiQ3Vyc29yLmpzJztcbmltcG9ydCB1bnNldEdyYWJDdXJzb3IgZnJvbSAnLi91bnNldEdyYWJDdXJzb3IuanMnO1xuZXhwb3J0IGRlZmF1bHQge1xuICBzZXRHcmFiQ3Vyc29yLFxuICB1bnNldEdyYWJDdXJzb3Jcbn07IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2V0R3JhYkN1cnNvcihtb3ZpbmcpIHtcbiAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgaWYgKHN3aXBlci5zdXBwb3J0LnRvdWNoIHx8ICFzd2lwZXIucGFyYW1zLnNpbXVsYXRlVG91Y2ggfHwgc3dpcGVyLnBhcmFtcy53YXRjaE92ZXJmbG93ICYmIHN3aXBlci5pc0xvY2tlZCB8fCBzd2lwZXIucGFyYW1zLmNzc01vZGUpIHJldHVybjtcbiAgY29uc3QgZWwgPSBzd2lwZXIucGFyYW1zLnRvdWNoRXZlbnRzVGFyZ2V0ID09PSAnY29udGFpbmVyJyA/IHN3aXBlci5lbCA6IHN3aXBlci53cmFwcGVyRWw7XG4gIGVsLnN0eWxlLmN1cnNvciA9ICdtb3ZlJztcbiAgZWwuc3R5bGUuY3Vyc29yID0gbW92aW5nID8gJ2dyYWJiaW5nJyA6ICdncmFiJztcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1bnNldEdyYWJDdXJzb3IoKSB7XG4gIGNvbnN0IHN3aXBlciA9IHRoaXM7XG5cbiAgaWYgKHN3aXBlci5zdXBwb3J0LnRvdWNoIHx8IHN3aXBlci5wYXJhbXMud2F0Y2hPdmVyZmxvdyAmJiBzd2lwZXIuaXNMb2NrZWQgfHwgc3dpcGVyLnBhcmFtcy5jc3NNb2RlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3dpcGVyW3N3aXBlci5wYXJhbXMudG91Y2hFdmVudHNUYXJnZXQgPT09ICdjb250YWluZXInID8gJ2VsJyA6ICd3cmFwcGVyRWwnXS5zdHlsZS5jdXJzb3IgPSAnJztcbn0iLCJpbXBvcnQgeyBnZXREb2N1bWVudCB9IGZyb20gJ3Nzci13aW5kb3cnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlRWxlbWVudElmTm90RGVmaW5lZChzd2lwZXIsIG9yaWdpbmFsUGFyYW1zLCBwYXJhbXMsIGNoZWNrUHJvcHMpIHtcbiAgY29uc3QgZG9jdW1lbnQgPSBnZXREb2N1bWVudCgpO1xuXG4gIGlmIChzd2lwZXIucGFyYW1zLmNyZWF0ZUVsZW1lbnRzKSB7XG4gICAgT2JqZWN0LmtleXMoY2hlY2tQcm9wcykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgaWYgKCFwYXJhbXNba2V5XSAmJiBwYXJhbXMuYXV0byA9PT0gdHJ1ZSkge1xuICAgICAgICBsZXQgZWxlbWVudCA9IHN3aXBlci4kZWwuY2hpbGRyZW4oYC4ke2NoZWNrUHJvcHNba2V5XX1gKVswXTtcblxuICAgICAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgICAgICBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgICAgZWxlbWVudC5jbGFzc05hbWUgPSBjaGVja1Byb3BzW2tleV07XG4gICAgICAgICAgc3dpcGVyLiRlbC5hcHBlbmQoZWxlbWVudCk7XG4gICAgICAgIH1cblxuICAgICAgICBwYXJhbXNba2V5XSA9IGVsZW1lbnQ7XG4gICAgICAgIG9yaWdpbmFsUGFyYW1zW2tleV0gPSBlbGVtZW50O1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHBhcmFtcztcbn0iLCJpbXBvcnQgY3JlYXRlRWxlbWVudElmTm90RGVmaW5lZCBmcm9tICcuLi8uLi9zaGFyZWQvY3JlYXRlLWVsZW1lbnQtaWYtbm90LWRlZmluZWQuanMnO1xuaW1wb3J0ICQgZnJvbSAnLi4vLi4vc2hhcmVkL2RvbS5qcyc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBOYXZpZ2F0aW9uKHtcbiAgc3dpcGVyLFxuICBleHRlbmRQYXJhbXMsXG4gIG9uLFxuICBlbWl0XG59KSB7XG4gIGV4dGVuZFBhcmFtcyh7XG4gICAgbmF2aWdhdGlvbjoge1xuICAgICAgbmV4dEVsOiBudWxsLFxuICAgICAgcHJldkVsOiBudWxsLFxuICAgICAgaGlkZU9uQ2xpY2s6IGZhbHNlLFxuICAgICAgZGlzYWJsZWRDbGFzczogJ3N3aXBlci1idXR0b24tZGlzYWJsZWQnLFxuICAgICAgaGlkZGVuQ2xhc3M6ICdzd2lwZXItYnV0dG9uLWhpZGRlbicsXG4gICAgICBsb2NrQ2xhc3M6ICdzd2lwZXItYnV0dG9uLWxvY2snLFxuICAgICAgbmF2aWdhdGlvbkRpc2FibGVkQ2xhc3M6ICdzd2lwZXItbmF2aWdhdGlvbi1kaXNhYmxlZCdcbiAgICB9XG4gI
15H0pO1xuICBzd2lwZXIubmF2aWdhdGlvbiA9IHtcbiAgICBuZXh0RWw6IG51bGwsXG4gICAgJG5leHRFbDogbnVsbCxcbiAgICBwcmV2RWw6IG51bGwsXG4gICAgJHByZXZFbDogbnVsbFxuICB9O1xuXG4gIGZ1bmN0aW9uIGdldEVsKGVsKSB7XG4gICAgbGV0ICRlbDtcblxuICAgIGlmIChlbCkge1xuICAgICAgJGVsID0gJChlbCk7XG5cbiAgICAgIGlmIChzd2lwZXIucGFyYW1zLnVuaXF1ZU5hdkVsZW1lbnRzICYmIHR5cGVvZiBlbCA9PT0gJ3N0cmluZycgJiYgJGVsLmxlbmd0aCA+IDEgJiYgc3dpcGVyLiRlbC5maW5kKGVsKS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgJGVsID0gc3dpcGVyLiRlbC5maW5kKGVsKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gJGVsO1xuICB9XG5cbiAgZnVuY3Rpb24gdG9nZ2xlRWwoJGVsLCBkaXNhYmxlZCkge1xuICAgIGNvbnN0IHBhcmFtcyA9IHN3aXBlci5wYXJhbXMubmF2aWdhdGlvbjtcblxuICAgIGlmICgkZWwgJiYgJGVsLmxlbmd0aCA+IDApIHtcbiAgICAgICRlbFtkaXNhYmxlZCA/ICdhZGRDbGFzcycgOiAncmVtb3ZlQ2xhc3MnXShwYXJhbXMuZGlzYWJsZWRDbGFzcyk7XG4gICAgICBpZiAoJGVsWzBdICYmICRlbFswXS50YWdOYW1lID09PSAnQlVUVE9OJykgJGVsWzBdLmRpc2FibGVkID0gZGlzYWJsZWQ7XG5cbiAgICAgIGlmIChzd2lwZXIucGFyYW1zLndhdGNoT3ZlcmZsb3cgJiYgc3dpcGVyLmVuYWJsZWQpIHtcbiAgICAgICAgJGVsW3N3aXBlci5pc0xvY2tlZCA/ICdhZGRDbGFzcycgOiAncmVtb3ZlQ2xhc3MnXShwYXJhbXMubG9ja0NsYXNzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiB1cGRhdGUoKSB7XG4gICAgLy8gVXBkYXRlIE5hdmlnYXRpb24gQnV0dG9uc1xuICAgIGlmIChzd2lwZXIucGFyYW1zLmxvb3ApIHJldHVybjtcbiAgICBjb25zdCB7XG4gICAgICAkbmV4dEVsLFxuICAgICAgJHByZXZFbFxuICAgIH0gPSBzd2lwZXIubmF2aWdhdGlvbjtcbiAgICB0b2dnbGVFbCgkcHJldkVsLCBzd2lwZXIuaXNCZWdpbm5pbmcgJiYgIXN3aXBlci5wYXJhbXMucmV3aW5kKTtcbiAgICB0b2dnbGVFbCgkbmV4dEVsLCBzd2lwZXIuaXNFbmQgJiYgIXN3aXBlci5wYXJhbXMucmV3aW5kKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uUHJldkNsaWNrKGUpIHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKHN3aXBlci5pc0JlZ2lubmluZyAmJiAhc3dpcGVyLnBhcmFtcy5sb29wICYmICFzd2lwZXIucGFyYW1zLnJld2luZCkgcmV0dXJuO1xuICAgIHN3aXBlci5zbGlkZVByZXYoKTtcbiAgICBlbWl0KCduYXZpZ2F0aW9uUHJldicpO1xuICB9XG5cbiAgZnVuY3Rpb24gb25OZXh0Q2xpY2soZSkge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAoc3dpcGVyLmlzRW5kICYmICFzd2lwZXIucGFyYW1zLmxvb3AgJiYgIXN3aXBlci5wYXJhbXMucmV3aW5kKSByZXR1cm47XG4gICAgc3dpcGVyLnNsaWRlTmV4dCgpO1xuICAgIGVtaXQoJ25hdmlnYXRpb25OZXh0Jyk7XG4gIH1cblxuICBmdW5jdGlvbiBpbml0KCkge1xuICAgIGNvbnN0IHBhcmFtcyA9IHN3aXBlci5wYXJhbXMubmF2aWdhdGlvbjtcbiAgICBzd2lwZXIucGFyYW1zLm5hdmlnYXRpb24gPSBjcmVhdGVFbGVtZW50SWZOb3REZWZpbmVkKHN3aXBlciwgc3dpcGVyLm9yaWdpbmFsUGFyYW1zLm5hdmlnYXRpb24sIHN3aXBlci5wYXJhbXMubmF2aWdhdGlvbiwge1xuICAgICAgbmV4dEVsOiAnc3dpcGVyLWJ1dHRvbi1uZXh0JyxcbiAgICAgIHByZXZFbDogJ3N3aXBlci1idXR0b24tcHJldidcbiAgICB9KTtcbiAgICBpZiAoIShwYXJhbXMubmV4dEVsIHx8IHBhcmFtcy5wcmV2RWwpKSByZXR1cm47XG4gICAgY29uc3QgJG5leHRFbCA9IGdldEVsKHBhcmFtcy5uZXh0RWwpO1xuICAgIGNvbnN0ICRwcmV2RWwgPSBnZXRFbChwYXJhbXMucHJldkVsKTtcblxuICAgIGlmICgkbmV4dEVsICYmICRuZXh0RWwubGVuZ3RoID4gMCkge1xuICAgICAgJG5leHRFbC5vbignY2xpY2snLCBvbk5leHRDbGljayk7XG4gICAgfVxuXG4gICAgaWYgKCRwcmV2RWwgJiYgJHByZXZFbC5sZW5ndGggPiAwKSB7XG4gICAgICAkcHJldkVsLm9uKCdjbGljaycsIG9uUHJldkNsaWNrKTtcbiAgICB9XG5cbiAgICBPYmplY3QuYXNzaWduKHN3aXBlci5uYXZpZ2F0aW9uLCB7XG4gICAgICAkbmV4dEVsLFxuICAgICAgbmV4dEVsOiAkbmV4dEVsICYmICRuZXh0RWxbMF0sXG4gICAgICAkcHJldkVsLFxuICAgICAgcHJldkVsOiAkcHJldkVsICYmICRwcmV2RWxbMF1cbiAgICB9KTtcblxuICAgIGlmICghc3dpcGVyLmVuYWJsZWQpIHtcbiAgICAgIGlmICgkbmV4dEVsKSAkbmV4dEVsLmFkZENsYXNzKHBhcmFtcy5sb2NrQ2xhc3MpO1xuICAgICAgaWYgKCRwcmV2RWwpICRwcmV2RWwuYWRkQ2xhc3MocGFyYW1zLmxvY2tDbGFzcyk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICBjb25zdCB7XG4gICAgICAkbmV4dEVsLFxuICAgICAgJHByZXZFbFxuICAgIH0gPSBzd2lwZXIubmF2aWdhdGlvbjtcblxuICAgIGlmICgkbmV4dEVsICYmICRuZXh0RWwubGVuZ3RoKSB7XG4gICAgICAkbmV4dEVsLm9mZignY2xpY2snLCBvbk5leHRDbGljayk7XG4gICAgICAkbmV4dEVsLnJlbW92ZUNsYXNzKHN3aXBlci5wYXJhbXMubmF2aWdhdGlvbi5kaXNhYmxlZENsYXNzKTtcbiAgICB9XG5cbiAgICBpZiAoJHByZXZFbCAmJiAkcHJldkVsLmxlbmd0aCkge1xuICAgICAgJHByZXZFbC5vZmYoJ2NsaWNrJywgb25QcmV2Q2xpY2spO1xuICAgICAgJHByZXZFbC5yZW1vdmVDbGFzcyhzd2lwZXIucGFyYW1zLm5hdmlnYXRpb24uZGlzYWJsZWRDbGFzcyk7XG4gICAgfVxuICB9XG5cbiAgb24oJ2luaXQnLCAoKSA9PiB7XG4gICAgaWYgKHN3aXBlci5wYXJhbXMubmF2aWdhdGlvbi5lbmFibGVkID09PSBmYWxzZSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgICBkaXNhYmxlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGluaXQoKTtcbiAgICAgIHVwZGF0ZSgpO1xuICAgIH1cbiAgfSk7XG4gIG9uKCd0b0VkZ2UgZnJvbUVkZ2UgbG9jayB1bmxvY2snLCAoKSA9PiB7XG4gICAgdXBkYXRlKCk7XG4gIH0pO1xuICBvbignZGVzdHJveScsICgpID0+IHtcbiAgICBkZXN0cm95KCk7XG4gIH0pO1xuICBvbignZW5hYmxlIGRpc2FibGUnLCAoKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgJG5leHRFbCxcbiAgICAgICRwcmV2RWxcbiAgICB9ID0gc3dpcGVyLm5hdmlnYXRpb247XG5cbiAgICBpZiAoJG5leHRFbCkge1xuICAgICAgJG5leHRFbFtzd2lwZXIuZW5hYmxlZCA/ICdyZW1vdmVDbGFzcycgOiAnYWRkQ2xhc3MnXShzd2lwZXIucGFyYW1zLm5hdmlnYXRpb24ubG9ja0NsYXNzKTtcbiAgICB9XG5cbiAgICBpZiAoJHByZXZFbCkge1xuICAgICAgJHByZXZFbFtzd2lwZXIuZW5hYmxlZCA/ICdyZW1vdmVDbGFzcycgOiAnYWRkQ2xhc3MnXShzd2lwZXIucGFyYW1zLm5hdmlnYXRpb24ubG9ja0NsYXNzKTtcbiAgICB9XG4gI
15H0pO1xuICBvbignY2xpY2snLCAoX3MsIGUpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICAkbmV4dEVsLFxuICAgICAgJHByZXZFbFxuICAgIH0gPSBzd2lwZXIubmF2aWdhdGlvbjtcbiAgICBjb25zdCB0YXJnZXRFbCA9IGUudGFyZ2V0O1xuXG4gICAgaWYgKHN3aXBlci5wYXJhbXMubmF2aWdhdGlvbi5oaWRlT25DbGljayAmJiAhJCh0YXJnZXRFbCkuaXMoJHByZXZFbCkgJiYgISQodGFyZ2V0RWwpLmlzKCRuZXh0RWwpKSB7XG4gICAgICBpZiAoc3dpcGVyLnBhZ2luYXRpb24gJiYgc3dpcGVyLnBhcmFtcy5wYWdpbmF0aW9uICYmIHN3aXBlci5wYXJhbXMucGFnaW5hdGlvbi5jbGlja2FibGUgJiYgKHN3aXBlci5wYWdpbmF0aW9uLmVsID09PSB0YXJnZXRFbCB8fCBzd2lwZXIucGFnaW5hdGlvbi5lbC5jb250YWlucyh0YXJnZXRFbCkpKSByZXR1cm47XG4gICAgICBsZXQgaXNIaWRkZW47XG5cbiAgICAgIGlmICgkbmV4dEVsKSB7XG4gICAgICAgIGlzSGlkZGVuID0gJG5leHRFbC5oYXNDbGFzcyhzd2lwZXIucGFyYW1zLm5hdmlnYXRpb24uaGlkZGVuQ2xhc3MpO1xuICAgICAgfSBlbHNlIGlmICgkcHJldkVsKSB7XG4gICAgICAgIGlzSGlkZGVuID0gJHByZXZFbC5oYXNDbGFzcyhzd2lwZXIucGFyYW1zLm5hdmlnYXRpb24uaGlkZGVuQ2xhc3MpO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNIaWRkZW4gPT09IHRydWUpIHtcbiAgICAgICAgZW1pdCgnbmF2aWdhdGlvblNob3cnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVtaXQoJ25hdmlnYXRpb25IaWRlJyk7XG4gICAgICB9XG5cbiAgICAgIGlmICgkbmV4dEVsKSB7XG4gICAgICAgICRuZXh0RWwudG9nZ2xlQ2xhc3Moc3dpcGVyLnBhcmFtcy5uYXZpZ2F0aW9uLmhpZGRlbkNsYXNzKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCRwcmV2RWwpIHtcbiAgICAgICAgJHByZXZFbC50b2dnbGVDbGFzcyhzd2lwZXIucGFyYW1zLm5hdmlnYXRpb24uaGlkZGVuQ2xhc3MpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgZW5hYmxlID0gKCkgPT4ge1xuICAgIHN3aXBlci4kZWwucmVtb3ZlQ2xhc3Moc3dpcGVyLnBhcmFtcy5uYXZpZ2F0aW9uLm5hdmlnYXRpb25EaXNhYmxlZENsYXNzKTtcbiAgICBpbml0KCk7XG4gICAgdXBkYXRlKCk7XG4gIH07XG5cbiAgY29uc3QgZGlzYWJsZSA9ICgpID0+IHtcbiAgICBzd2lwZXIuJGVsLmFkZENsYXNzKHN3aXBlci5wYXJhbXMubmF2aWdhdGlvbi5uYXZpZ2F0aW9uRGlzYWJsZWRDbGFzcyk7XG4gICAgZGVzdHJveSgpO1xuICB9O1xuXG4gIE9iamVjdC5hc3NpZ24oc3dpcGVyLm5hdmlnYXRpb24sIHtcbiAgICBlbmFibGUsXG4gICAgZGlzYWJsZSxcbiAgICB1cGRhdGUsXG4gICAgaW5pdCxcbiAgICBkZXN0cm95XG4gIH0pO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNsYXNzZXNUb1NlbGVjdG9yKGNsYXNzZXMgPSAnJykge1xuICByZXR1cm4gYC4ke2NsYXNzZXMudHJpbSgpLnJlcGxhY2UoLyhbXFwuOiFcXC9dKS9nLCAnXFxcXCQxJykgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICAucmVwbGFjZSgvIC9nLCAnLicpfWA7XG59IiwiaW1wb3J0ICQgZnJvbSAnLi4vLi4vc2hhcmVkL2RvbS5qcyc7XG5pbXBvcnQgY2xhc3Nlc1RvU2VsZWN0b3IgZnJvbSAnLi4vLi4vc2hhcmVkL2NsYXNzZXMtdG8tc2VsZWN0b3IuanMnO1xuaW1wb3J0IGNyZWF0ZUVsZW1lbnRJZk5vdERlZmluZWQgZnJvbSAnLi4vLi4vc2hhcmVkL2NyZWF0ZS1lbGVtZW50LWlmLW5vdC1kZWZpbmVkLmpzJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFBhZ2luYXRpb24oe1xuICBzd2lwZXIsXG4gIGV4dGVuZFBhcmFtcyxcbiAgb24sXG4gIGVtaXRcbn0pIHtcbiAgY29uc3QgcGZ4ID0gJ3N3aXBlci1wYWdpbmF0aW9uJztcbiAgZXh0ZW5kUGFyYW1zKHtcbiAgICBwYWdpbmF0aW9uOiB7XG4gICAgICBlbDogbnVsbCxcbiAgICAgIGJ1bGxldEVsZW1lbnQ6ICdzcGFuJyxcbiAgICAgIGNsaWNrYWJsZTogZmFsc2UsXG4gICAgICBoaWRlT25DbGljazogZmFsc2UsXG4gICAgICByZW5kZXJCdWxsZXQ6IG51bGwsXG4gICAgICByZW5kZXJQcm9ncmVzc2JhcjogbnVsbCxcbiAgICAgIHJlbmRlckZyYWN0aW9uOiBudWxsLFxuICAgICAgcmVuZGVyQ3VzdG9tOiBudWxsLFxuICAgICAgcHJvZ3Jlc3NiYXJPcHBvc2l0ZTogZmFsc2UsXG4gICAgICB0eXBlOiAnYnVsbGV0cycsXG4gICAgICAvLyAnYnVsbGV0cycgb3IgJ3Byb2dyZXNzYmFyJyBvciAnZnJhY3Rpb24nIG9yICdjdXN0b20nXG4gICAgICBkeW5hbWljQnVsbGV0czogZmFsc2UsXG4gICAgICBkeW5hbWljTWFpbkJ1bGxldHM6IDEsXG4gICAgICBmb3JtYXRGcmFjdGlvbkN1cnJlbnQ6IG51bWJlciA9PiBudW1iZXIsXG4gICAgICBmb3JtYXRGcmFjdGlvblRvdGFsOiBudW1iZXIgPT4gbnVtYmVyLFxuICAgICAgYnVsbGV0Q2xhc3M6IGAke3BmeH0tYnVsbGV0YCxcbiAgICAgIGJ1bGxldEFjdGl2ZUNsYXNzOiBgJHtwZnh9LWJ1bGxldC1hY3RpdmVgLFxuICAgICAgbW9kaWZpZXJDbGFzczogYCR7cGZ4fS1gLFxuICAgICAgY3VycmVudENsYXNzOiBgJHtwZnh9LWN1cnJlbnRgLFxuICAgICAgdG90YWxDbGFzczogYCR7cGZ4fS10b3RhbGAsXG4gICAgICBoaWRkZW5DbGFzczogYCR7cGZ4fS1oaWRkZW5gLFxuICAgICAgcHJvZ3Jlc3NiYXJGaWxsQ2xhc3M6IGAke3BmeH0tcHJvZ3Jlc3NiYXItZmlsbGAsXG4gICAgICBwcm9ncmVzc2Jhck9wcG9zaXRlQ2xhc3M6IGAke3BmeH0tcHJvZ3Jlc3NiYXItb3Bwb3NpdGVgLFxuICAgICAgY2xpY2thYmxlQ2xhc3M6IGAke3BmeH0tY2xpY2thYmxlYCxcbiAgICAgIGxvY2tDbGFzczogYCR7cGZ4fS1sb2NrYCxcbiAgICAgIGhvcml6b250YWxDbGFzczogYCR7cGZ4fS1ob3Jpem9udGFsYCxcbiAgICAgIHZlcnRpY2FsQ2xhc3M6IGAke3BmeH0tdmVydGljYWxgLFxuICAgICAgcGFnaW5hdGlvbkRpc2FibGVkQ2xhc3M6IGAke3BmeH0tZGlzYWJsZWRgXG4gICAgfVxuICB9KTtcbiAgc3dpcGVyLnBhZ2luYXRpb24gPSB7XG4gICAgZWw6IG51bGwsXG4gICAgJGVsOiBudWxsLFxuICAgIGJ1bGxldHM6IFtdXG4gIH07XG4gIGxldCBidWxsZXRTaXplO1xuICBsZXQgZHluYW1pY0J1bGxldEluZGV4ID0gMDtcblxuICBmdW5jdGlvbiBpc1BhZ2luYXRpb25EaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gIXN3aXBlci5wYXJhbXMucGFnaW5hdGlvbi5lbCB8fCAhc3dpcGVyLnBhZ2luYXRpb24uZWwgfHwgIXN3aXBlci5wYWdpbmF0aW9uLiRlbCB8fCBzd2lwZXIucGFnaW5hdGlvbi4kZWwubGVuZ3RoID09PSAwO1xuICB9XG5cbiAgZnVuY3Rpb24gc2V0U2lkZUJ1bGxldHMoJGJ1bGxldEVsLCBwb3NpdGlvbikge1xuICAgIGNvbnN0IHtcbiAgICAgIGJ1bGxldEFjdGl2ZUNsYXNzXG4gICAgfSA9IHN3aXBlci5wYXJhbXMucGFnaW5hdGlvbjtcbiAgICAkYnVsbGV0RWxbcG9zaXRpb25dKCkuYWRkQ2xhc3MoYCR7Y
15nVsbGV0QWN0aXZlQ2xhc3N9LSR7cG9zaXRpb259YClbcG9zaXRpb25dKCkuYWRkQ2xhc3MoYCR7YnVsbGV0QWN0aXZlQ2xhc3N9LSR7cG9zaXRpb259LSR7cG9zaXRpb259YCk7XG4gIH1cblxuICBmdW5jdGlvbiB1cGRhdGUoKSB7XG4gICAgLy8gUmVuZGVyIHx8IFVwZGF0ZSBQYWdpbmF0aW9uIGJ1bGxldHMvaXRlbXNcbiAgICBjb25zdCBydGwgPSBzd2lwZXIucnRsO1xuICAgIGNvbnN0IHBhcmFtcyA9IHN3aXBlci5wYXJhbXMucGFnaW5hdGlvbjtcbiAgICBpZiAoaXNQYWdpbmF0aW9uRGlzYWJsZWQoKSkgcmV0dXJuO1xuICAgIGNvbnN0IHNsaWRlc0xlbmd0aCA9IHN3aXBlci52aXJ0dWFsICYmIHN3aXBlci5wYXJhbXMudmlydHVhbC5lbmFibGVkID8gc3dpcGVyLnZpcnR1YWwuc2xpZGVzLmxlbmd0aCA6IHN3aXBlci5zbGlkZXMubGVuZ3RoO1xuICAgIGNvbnN0ICRlbCA9IHN3aXBlci5wYWdpbmF0aW9uLiRlbDsgLy8gQ3VycmVudC9Ub3RhbFxuXG4gICAgbGV0IGN1cnJlbnQ7XG4gICAgY29uc3QgdG90YWwgPSBzd2lwZXIucGFyYW1zLmxvb3AgPyBNYXRoLmNlaWwoKHNsaWRlc0xlbmd0aCAtIHN3aXBlci5sb29wZWRTbGlkZXMgKiAyKSAvIHN3aXBlci5wYXJhbXMuc2xpZGVzUGVyR3JvdXApIDogc3dpcGVyLnNuYXBHcmlkLmxlbmd0aDtcblxuICAgIGlmIChzd2lwZXIucGFyYW1zLmxvb3ApIHtcbiAgICAgIGN1cnJlbnQgPSBNYXRoLmNlaWwoKHN3aXBlci5hY3RpdmVJbmRleCAtIHN3aXBlci5sb29wZWRTbGlkZXMpIC8gc3dpcGVyLnBhcmFtcy5zbGlkZXNQZXJHcm91cCk7XG5cbiAgICAgIGlmIChjdXJyZW50ID4gc2xpZGVzTGVuZ3RoIC0gMSAtIHN3aXBlci5sb29wZWRTbGlkZXMgKiAyKSB7XG4gICAgICAgIGN1cnJlbnQgLT0gc2xpZGVzTGVuZ3RoIC0gc3dpcGVyLmxvb3BlZFNsaWRlcyAqIDI7XG4gICAgICB9XG5cbiAgICAgIGlmIChjdXJyZW50ID4gdG90YWwgLSAxKSBjdXJyZW50IC09IHRvdGFsO1xuICAgICAgaWYgKGN1cnJlbnQgPCAwICYmIHN3aXBlci5wYXJhbXMucGFnaW5hdGlvblR5cGUgIT09ICdidWxsZXRzJykgY3VycmVudCA9IHRvdGFsICsgY3VycmVudDtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBzd2lwZXIuc25hcEluZGV4ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY3VycmVudCA9IHN3aXBlci5zbmFwSW5kZXg7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJlbnQgPSBzd2lwZXIuYWN0aXZlSW5kZXggfHwgMDtcbiAgICB9IC8vIFR5cGVzXG5cblxuICAgIGlmIChwYXJhbXMudHlwZSA9PT0gJ2J1bGxldHMnICYmIHN3aXBlci5wYWdpbmF0aW9uLmJ1bGxldHMgJiYgc3dpcGVyLnBhZ2luYXRpb24uYnVsbGV0cy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBidWxsZXRzID0gc3dpcGVyLnBhZ2luYXRpb24uYnVsbGV0cztcbiAgICAgIGxldCBmaXJzdEluZGV4O1xuICAgICAgbGV0IGxhc3RJbmRleDtcbiAgICAgIGxldCBtaWRJbmRleDtcblxuICAgICAgaWYgKHBhcmFtcy5keW5hbWljQnVsbGV0cykge1xuICAgICAgICBidWxsZXRTaXplID0gYnVsbGV0cy5lcSgwKVtzd2lwZXIuaXNIb3Jpem9udGFsKCkgPyAnb3V0ZXJXaWR0aCcgOiAnb3V0ZXJIZWlnaHQnXSh0cnVlKTtcbiAgICAgICAgJGVsLmNzcyhzd2lwZXIuaXNIb3Jpem9udGFsKCkgPyAnd2lkdGgnIDogJ2hlaWdodCcsIGAke2J1bGxldFNpemUgKiAocGFyYW1zLmR5bmFtaWNNYWluQnVsbGV0cyArIDQpfXB4YCk7XG5cbiAgICAgICAgaWYgKHBhcmFtcy5keW5hbWljTWFpbkJ1bGxldHMgPiAxICYmIHN3aXBlci5wcmV2aW91c0luZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBkeW5hbWljQnVsbGV0SW5kZXggKz0gY3VycmVudCAtIChzd2lwZXIucHJldmlvdXNJbmRleCAtIHN3aXBlci5sb29wZWRTbGlkZXMgfHwgMCk7XG5cbiAgICAgICAgICBpZiAoZHluYW1pY0J1bGxldEluZGV4ID4gcGFyYW1zLmR5bmFtaWNNYWluQnVsbGV0cyAtIDEpIHtcbiAgICAgICAgICAgIGR5bmFtaWNCdWxsZXRJbmRleCA9IHBhcmFtcy5keW5hbWljTWFpbkJ1bGxldHMgLSAxO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZHluYW1pY0J1bGxldEluZGV4IDwgMCkge1xuICAgICAgICAgICAgZHluYW1pY0J1bGxldEluZGV4ID0gMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmaXJzdEluZGV4ID0gTWF0aC5tYXgoY3VycmVudCAtIGR5bmFtaWNCdWxsZXRJbmRleCwgMCk7XG4gICAgICAgIGxhc3RJbmRleCA9IGZpcnN0SW5kZXggKyAoTWF0aC5taW4oYnVsbGV0cy5sZW5ndGgsIHBhcmFtcy5keW5hbWljTWFpbkJ1bGxldHMpIC0gMSk7XG4gICAgICAgIG1pZEluZGV4ID0gKGxhc3RJbmRleCArIGZpcnN0SW5kZXgpIC8gMjtcbiAgICAgIH1cblxuICAgICAgYnVsbGV0cy5yZW1vdmVDbGFzcyhbJycsICctbmV4dCcsICctbmV4dC1uZXh0JywgJy1wcmV2JywgJy1wcmV2LXByZXYnLCAnLW1haW4nXS5tYXAoc3VmZml4ID0+IGAke3BhcmFtcy5idWxsZXRBY3RpdmVDbGFzc30ke3N1ZmZpeH1gKS5qb2luKCcgJykpO1xuXG4gICAgICBpZiAoJGVsLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgYnVsbGV0cy5lYWNoKGJ1bGxldCA9PiB7XG4gICAgICAgICAgY29uc3QgJGJ1bGxldCA9ICQoYnVsbGV0KTtcbiAgICAgICAgICBjb25zdCBidWxsZXRJbmRleCA9ICRidWxsZXQuaW5kZXgoKTtcblxuICAgICAgICAgIGlmIChidWxsZXRJbmRleCA9PT0gY3VycmVudCkge1xuICAgICAgICAgICAgJGJ1bGxldC5hZGRDbGFzcyhwYXJhbXMuYnVsbGV0QWN0aXZlQ2xhc3MpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChwYXJhbXMuZHluYW1pY0J1bGxldHMpIHtcbiAgICAgICAgICAgIGlmIChidWxsZXRJbmRleCA+PSBmaXJzdEluZGV4ICYmIGJ1bGxldEluZGV4IDw9IGxhc3RJbmRleCkge1xuICAgICAgICAgICAgICAkYnVsbGV0LmFkZENsYXNzKGAke3BhcmFtcy5idWxsZXRBY3RpdmVDbGFzc30tbWFpbmApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoYnVsbGV0SW5kZXggPT09IGZpcnN0SW5kZXgpIHtcbiAgICAgICAgICAgICAgc2V0U2lkZUJ1bGxldHMoJGJ1bGxldCwgJ3ByZXYnKTtcbiAgICAgICAgICAgI
15H1cblxuICAgICAgICAgICAgaWYgKGJ1bGxldEluZGV4ID09PSBsYXN0SW5kZXgpIHtcbiAgICAgICAgICAgICAgc2V0U2lkZUJ1bGxldHMoJGJ1bGxldCwgJ25leHQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgJGJ1bGxldCA9IGJ1bGxldHMuZXEoY3VycmVudCk7XG4gICAgICAgIGNvbnN0IGJ1bGxldEluZGV4ID0gJGJ1bGxldC5pbmRleCgpO1xuICAgICAgICAkYnVsbGV0LmFkZENsYXNzKHBhcmFtcy5idWxsZXRBY3RpdmVDbGFzcyk7XG5cbiAgICAgICAgaWYgKHBhcmFtcy5keW5hbWljQnVsbGV0cykge1xuICAgICAgICAgIGNvbnN0ICRmaXJzdERpc3BsYXllZEJ1bGxldCA9IGJ1bGxldHMuZXEoZmlyc3RJbmRleCk7XG4gICAgICAgICAgY29uc3QgJGxhc3REaXNwbGF5ZWRCdWxsZXQgPSBidWxsZXRzLmVxKGxhc3RJbmRleCk7XG5cbiAgICAgICAgICBmb3IgKGxldCBpID0gZmlyc3RJbmRleDsgaSA8PSBsYXN0SW5kZXg7IGkgKz0gMSkge1xuICAgICAgICAgICAgYnVsbGV0cy5lcShpKS5hZGRDbGFzcyhgJHtwYXJhbXMuYnVsbGV0QWN0aXZlQ2xhc3N9LW1haW5gKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoc3dpcGVyLnBhcmFtcy5sb29wKSB7XG4gICAgICAgICAgICBpZiAoYnVsbGV0SW5kZXggPj0gYnVsbGV0cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IHBhcmFtcy5keW5hbWljTWFpbkJ1bGxldHM7IGkgPj0gMDsgaSAtPSAxKSB7XG4gICAgICAgICAgICAgICAgYnVsbGV0cy5lcShidWxsZXRzLmxlbmd0aCAtIGkpLmFkZENsYXNzKGAke3BhcmFtcy5idWxsZXRBY3RpdmVDbGFzc30tbWFpbmApO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgYnVsbGV0cy5lcShidWxsZXRzLmxlbmd0aCAtIHBhcmFtcy5keW5hbWljTWFpbkJ1bGxldHMgLSAxKS5hZGRDbGFzcyhgJHtwYXJhbXMuYnVsbGV0QWN0aXZlQ2xhc3N9LXByZXZgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHNldFNpZGVCdWxsZXRzKCRmaXJzdERpc3BsYXllZEJ1bGxldCwgJ3ByZXYnKTtcbiAgICAgICAgICAgICAgc2V0U2lkZUJ1bGxldHMoJGxhc3REaXNwbGF5ZWRCdWxsZXQsICduZXh0Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNldFNpZGVCdWxsZXRzKCRmaXJzdERpc3BsYXllZEJ1bGxldCwgJ3ByZXYnKTtcbiAgICAgICAgICAgIHNldFNpZGVCdWxsZXRzKCRsYXN0RGlzcGxheWVkQnVsbGV0LCAnbmV4dCcpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAocGFyYW1zLmR5bmFtaWNCdWxsZXRzKSB7XG4gICAgICAgIGNvbnN0IGR5bmFtaWNCdWxsZXRzTGVuZ3RoID0gTWF0aC5taW4oYnVsbGV0cy5sZW5ndGgsIHBhcmFtcy5keW5hbWljTWFpbkJ1bGxldHMgKyA0KTtcbiAgICAgICAgY29uc3QgYnVsbGV0c09mZnNldCA9IChidWxsZXRTaXplICogZHluYW1pY0J1bGxldHNMZW5ndGggLSBidWxsZXRTaXplKSAvIDIgLSBtaWRJbmRleCAqIGJ1bGxldFNpemU7XG4gICAgICAgIGNvbnN0IG9mZnNldFByb3AgPSBydGwgPyAncmlnaHQnIDogJ2xlZnQnO1xuICAgICAgICBidWxsZXRzLmNzcyhzd2lwZXIuaXNIb3Jpem9udGFsKCkgPyBvZmZzZXRQcm9wIDogJ3RvcCcsIGAke2J1bGxldHNPZmZzZXR9cHhgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocGFyYW1zLnR5cGUgPT09ICdmcmFjdGlvbicpIHtcbiAgICAgICRlbC5maW5kKGNsYXNzZXNUb1NlbGVjdG9yKHBhcmFtcy5jdXJyZW50Q2xhc3MpKS50ZXh0KHBhcmFtcy5mb3JtYXRGcmFjdGlvbkN1cnJlbnQoY3VycmVudCArIDEpKTtcbiAgICAgICRlbC5maW5kKGNsYXNzZXNUb1NlbGVjdG9yKHBhcmFtcy50b3RhbENsYXNzKSkudGV4dChwYXJhbXMuZm9ybWF0RnJhY3Rpb25Ub3RhbCh0b3RhbCkpO1xuICAgIH1cblxuICAgIGlmIChwYXJhbXMudHlwZSA9PT0gJ3Byb2dyZXNzYmFyJykge1xuICAgICAgbGV0IHByb2dyZXNzYmFyRGlyZWN0aW9uO1xuXG4gICAgICBpZiAocGFyYW1zLnByb2dyZXNzYmFyT3Bwb3NpdGUpIHtcbiAgICAgICAgcHJvZ3Jlc3NiYXJEaXJlY3Rpb24gPSBzd2lwZXIuaXNIb3Jpem9udGFsKCkgPyAndmVydGljYWwnIDogJ2hvcml6b250YWwnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJvZ3Jlc3NiYXJEaXJlY3Rpb24gPSBzd2lwZXIuaXNIb3Jpem9udGFsKCkgPyAnaG9yaXpvbnRhbCcgOiAndmVydGljYWwnO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzY2FsZSA9IChjdXJyZW50ICsgMSkgLyB0b3RhbDtcbiAgICAgIGxldCBzY2FsZVggPSAxO1xuICAgICAgbGV0IHNjYWxlWSA9IDE7XG5cbiAgICAgIGlmIChwcm9ncmVzc2JhckRpcmVjdGlvbiA9PT0gJ2hvcml6b250YWwnKSB7XG4gICAgICAgIHNjYWxlWCA9IHNjYWxlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2NhbGVZID0gc2NhbGU7XG4gICAgICB9XG5cbiAgICAgICRlbC5maW5kKGNsYXNzZXNUb1NlbGVjdG9yKHBhcmFtcy5wcm9ncmVzc2JhckZpbGxDbGFzcykpLnRyYW5zZm9ybShgdHJhbnNsYXRlM2QoMCwwLDApIHNjYWxlWCgke3NjYWxlWH0pIHNjYWxlWSgke3NjYWxlWX0pYCkudHJhbnNpdGlvbihzd2lwZXIucGFyYW1zLnNwZWVkKTtcbiAgICB9XG5cbiAgICBpZiAocGFyYW1zLnR5cGUgPT09ICdjdXN0b20nICYmIHBhcmFtcy5yZW5kZXJDdXN0b20pIHtcbiAgICAgICRlbC5odG1sKHBhcmFtcy5yZW5kZXJDdXN0b20oc3dpcGVyLCBjdXJyZW50ICsgMSwgdG90YWwpKTtcbiAgICAgIGVtaXQoJ3BhZ2luYXRpb25SZW5kZXInLCAkZWxbMF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbWl0KCdwYWdpbmF0aW9uVXBkYXRlJywgJGVsWzBdKTtcbiAgICB9XG5cbiAgICBpZiAoc3dpcGVyLnBhcmFtcy53YXRjaE92ZXJmbG93ICYmIHN3aXBlci5lbmFibGVkKSB7XG4gICAgICAkZWxbc3dpcGVyLmlzTG9ja2VkID8gJ2FkZENsYXNzJyA6ICdyZW1vdmVDbGFzcyddKHBhcmFtcy5sb2NrQ2xhc3MpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAvLyBSZW5kZXIgQ29udGFpbmVyXG4gICAgY29uc3QgcGFyYW1zID0gc3dpcGVyLnBhcmFtcy5wYWdpbmF0aW9uO1xuICAgIGlmIChpc1BhZ2luYXRpb25EaXNhYmxlZCgpKSByZXR1cm47XG4gICAgY29uc3Qgc2xpZGVzTGVuZ3RoID0gc3dpcGVyLnZpcnR1YWwgJiYgc3dpcGVyLnBhcmFtcy52aXJ0dWFsLmVuYWJsZWQgPyBzd2lwZXIudmlydHVhbC5zbGlkZXMubGVuZ3RoIDogc3dpcGVyLnNsaWRlcy5sZW5ndGg7XG4gICAgY29uc3QgJGVsID0gc3dpcGVyLnBhZ2luYXRpb24uJGVsO1xuICAgIGxldCBwYWdpbmF0aW9uSFRNTCA9ICcnO1xuXG4gICAgaWYgKHBhcmFtcy50eXBlID09PSAnYnVsbGV0cycpIHtcbiAgICAgIGxldCBudW1iZXJPZkJ1bGxldHMgPSBzd2lwZXIucGFyYW1zLmxvb3AgPyBNYXRoLmNlaWwoKHNsaWRlc0xlbmd0aCAtIHN3aXBlci5sb29wZWRTbGlkZXMgKiAyKSAvIHN3aXBlci5wYXJhbXMuc2xpZGVzUGVyR3JvdXApIDogc3dpcGVyLnNuYXBHcmlkLmxlbmd0aDtcblxuICAgICAgaWYgKHN3aXBlci5wYXJhbXMuZnJlZU1vZGUgJiYgc3dpcGVyLnBhcmFtcy5mcmVlTW9kZS5lbmFibGVkICYmICFzd2lwZXIucGFyYW1zLmxvb3AgJiYgbnVtYmVyT2ZCdWxsZXRzID4gc2xpZGVzTGVuZ3RoKSB7XG4gICAgICAgIG51bWJlck9mQnVsbGV0cyA9IHNsaWRlc0xlbmd0aDtcbiAgICAgIH1cblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1iZXJPZkJ1bGxldHM7IGkgKz
150gMSkge1xuICAgICAgICBpZiAocGFyYW1zLnJlbmRlckJ1bGxldCkge1xuICAgICAgICAgIHBhZ2luYXRpb25IVE1MICs9IHBhcmFtcy5yZW5kZXJCdWxsZXQuY2FsbChzd2lwZXIsIGksIHBhcmFtcy5idWxsZXRDbGFzcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGFnaW5hdGlvbkhUTUwgKz0gYDwke3BhcmFtcy5idWxsZXRFbGVtZW50fSBjbGFzcz1cIiR7cGFyYW1zLmJ1bGxldENsYXNzfVwiPjwvJHtwYXJhbXMuYnVsbGV0RWxlbWVudH0+YDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAkZWwuaHRtbChwYWdpbmF0aW9uSFRNTCk7XG4gICAgICBzd2lwZXIucGFnaW5hdGlvbi5idWxsZXRzID0gJGVsLmZpbmQoY2xhc3Nlc1RvU2VsZWN0b3IocGFyYW1zLmJ1bGxldENsYXNzKSk7XG4gICAgfVxuXG4gICAgaWYgKHBhcmFtcy50eXBlID09PSAnZnJhY3Rpb24nKSB7XG4gICAgICBpZiAocGFyYW1zLnJlbmRlckZyYWN0aW9uKSB7XG4gICAgICAgIHBhZ2luYXRpb25IVE1MID0gcGFyYW1zLnJlbmRlckZyYWN0aW9uLmNhbGwoc3dpcGVyLCBwYXJhbXMuY3VycmVudENsYXNzLCBwYXJhbXMudG90YWxDbGFzcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYWdpbmF0aW9uSFRNTCA9IGA8c3BhbiBjbGFzcz1cIiR7cGFyYW1zLmN1cnJlbnRDbGFzc31cIj48L3NwYW4+YCArICcgLyAnICsgYDxzcGFuIGNsYXNzPVwiJHtwYXJhbXMudG90YWxDbGFzc31cIj48L3NwYW4+YDtcbiAgICAgIH1cblxuICAgICAgJGVsLmh0bWwocGFnaW5hdGlvbkhUTUwpO1xuICAgIH1cblxuICAgIGlmIChwYXJhbXMudHlwZSA9PT0gJ3Byb2dyZXNzYmFyJykge1xuICAgICAgaWYgKHBhcmFtcy5yZW5kZXJQcm9ncmVzc2Jhcikge1xuICAgICAgICBwYWdpbmF0aW9uSFRNTCA9IHBhcmFtcy5yZW5kZXJQcm9ncmVzc2Jhci5jYWxsKHN3aXBlciwgcGFyYW1zLnByb2dyZXNzYmFyRmlsbENsYXNzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhZ2luYXRpb25IVE1MID0gYDxzcGFuIGNsYXNzPVwiJHtwYXJhbXMucHJvZ3Jlc3NiYXJGaWxsQ2xhc3N9XCI+PC9zcGFuPmA7XG4gICAgICB9XG5cbiAgICAgICRlbC5odG1sKHBhZ2luYXRpb25IVE1MKTtcbiAgICB9XG5cbiAgICBpZiAocGFyYW1zLnR5cGUgIT09ICdjdXN0b20nKSB7XG4gICAgICBlbWl0KCdwYWdpbmF0aW9uUmVuZGVyJywgc3dpcGVyLnBhZ2luYXRpb24uJGVsWzBdKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpbml0KCkge1xuICAgIHN3aXBlci5wYXJhbXMucGFnaW5hdGlvbiA9IGNyZWF0ZUVsZW1lbnRJZk5vdERlZmluZWQoc3dpcGVyLCBzd2lwZXIub3JpZ2luYWxQYXJhbXMucGFnaW5hdGlvbiwgc3dpcGVyLnBhcmFtcy5wYWdpbmF0aW9uLCB7XG4gICAgICBlbDogJ3N3aXBlci1wYWdpbmF0aW9uJ1xuICAgIH0pO1xuICAgIGNvbnN0IHBhcmFtcyA9IHN3aXBlci5wYXJhbXMucGFnaW5hdGlvbjtcbiAgICBpZiAoIXBhcmFtcy5lbCkgcmV0dXJuO1xuICAgIGxldCAkZWwgPSAkKHBhcmFtcy5lbCk7XG4gICAgaWYgKCRlbC5sZW5ndGggPT09IDApIHJldHVybjtcblxuICAgIGlmIChzd2lwZXIucGFyYW1zLnVuaXF1ZU5hdkVsZW1lbnRzICYmIHR5cGVvZiBwYXJhbXMuZWwgPT09ICdzdHJpbmcnICYmICRlbC5sZW5ndGggPiAxKSB7XG4gICAgICAkZWwgPSBzd2lwZXIuJGVsLmZpbmQocGFyYW1zLmVsKTsgLy8gY2hlY2sgaWYgaXQgYmVsb25ncyB0byBhbm90aGVyIG5lc3RlZCBTd2lwZXJcblxuICAgICAgaWYgKCRlbC5sZW5ndGggPiAxKSB7XG4gICAgICAgICRlbCA9ICRlbC5maWx0ZXIoZWwgPT4ge1xuICAgICAgICAgIGlmICgkKGVsKS5wYXJlbnRzKCcuc3dpcGVyJylbMF0gIT09IHN3aXBlci5lbCkgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocGFyYW1zLnR5cGUgPT09ICdidWxsZXRzJyAmJiBwYXJhbXMuY2xpY2thYmxlKSB7XG4gICAgICAkZWwuYWRkQ2xhc3MocGFyYW1zLmNsaWNrYWJsZUNsYXNzKTtcbiAgICB9XG5cbiAgICAkZWwuYWRkQ2xhc3MocGFyYW1zLm1vZGlmaWVyQ2xhc3MgKyBwYXJhbXMudHlwZSk7XG4gICAgJGVsLmFkZENsYXNzKHN3aXBlci5pc0hvcml6b250YWwoKSA/IHBhcmFtcy5ob3Jpem9udGFsQ2xhc3MgOiBwYXJhbXMudmVydGljYWxDbGFzcyk7XG5cbiAgICBpZiAocGFyYW1zLnR5cGUgPT09ICdidWxsZXRzJyAmJiBwYXJhbXMuZHluYW1pY0J1bGxldHMpIHtcbiAgICAgICRlbC5hZGRDbGFzcyhgJHtwYXJhbXMubW9kaWZpZXJDbGFzc30ke3BhcmFtcy50eXBlfS1keW5hbWljYCk7XG4gICAgICBkeW5hbWljQnVsbGV0SW5kZXggPSAwO1xuXG4gICAgICBpZiAocGFyYW1zLmR5bmFtaWNNYWluQnVsbGV0cyA8IDEpIHtcbiAgICAgICAgcGFyYW1zLmR5bmFtaWNNYWluQnVsbGV0cyA9IDE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHBhcmFtcy50eXBlID09PSAncHJvZ3Jlc3NiYXInICYmIHBhcmFtcy5wcm9ncmVzc2Jhck9wcG9zaXRlKSB7XG4gICAgICAkZWwuYWRkQ2xhc3MocGFyYW1zLnByb2dyZXNzYmFyT3Bwb3NpdGVDbGFzcyk7XG4gICAgfVxuXG4gICAgaWYgKHBhcmFtcy5jbGlja2FibGUpIHtcbiAgICAgICRlbC5vbignY2xpY2snLCBjbGFzc2VzVG9TZWxlY3RvcihwYXJhbXMuYnVsbGV0Q2xhc3MpLCBmdW5jdGlvbiBvbkNsaWNrKGUpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBsZXQgaW5kZXggPSAkKHRoaXMpLmluZGV4KCkgKiBzd2lwZXIucGFyYW1zLnNsaWRlc1Blckdyb3VwO1xuICAgICAgICBpZiAoc3dpcGVyLnBhcmFtcy5sb29wKSBpbmRleCArPSBzd2lwZXIubG9vcGVkU2xpZGVzO1xuICAgICAgICBzd2lwZXIuc2xpZGVUbyhpbmRleCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBPYmplY3QuYXNzaWduKHN3aXBlci5wYWdpbmF0aW9uLCB7XG4gICAgICAkZWwsXG4gICAgICBlbDogJGVsWzBdXG4gICAgfSk7XG5cbiAgICBpZiAoIXN3aXBlci5lbmFibGVkKSB7XG4gICAgICAkZWwuYWRkQ2xhc3MocGFyYW1zLmxvY2tDbGFzcyk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICBjb25zdCBwYXJhbXMgPSBzd2lwZXIucGFyYW1zLnBhZ2luYXRpb247XG4gICAgaWYgKGlzUGFnaW5hdGlvbkRpc2FibGVkKCkpIHJldHVybjtcbiAgICBjb25zdCAkZWwgPSBzd2lwZXIucGFnaW5hdGlvbi4kZWw7XG4gICAgJGVsLnJlbW92ZUNsYXNzKHBhcmFtcy5oaWRkZW5DbGFzcyk7XG4gICAgJGVsLnJlbW92ZUNsYXNzKHBhcmFtcy5tb2RpZmllckNsYXNzICsgcGFyYW1zLnR5cGUpO1xuICAgICRlbC5yZW1vdmVDbGFzcyhzd2lwZXIuaXNIb3Jpem9udGFsKCkgPyBwYXJhbXMuaG9yaXpvbn
15RhbENsYXNzIDogcGFyYW1zLnZlcnRpY2FsQ2xhc3MpO1xuICAgIGlmIChzd2lwZXIucGFnaW5hdGlvbi5idWxsZXRzICYmIHN3aXBlci5wYWdpbmF0aW9uLmJ1bGxldHMucmVtb3ZlQ2xhc3MpIHN3aXBlci5wYWdpbmF0aW9uLmJ1bGxldHMucmVtb3ZlQ2xhc3MocGFyYW1zLmJ1bGxldEFjdGl2ZUNsYXNzKTtcblxuICAgIGlmIChwYXJhbXMuY2xpY2thYmxlKSB7XG4gICAgICAkZWwub2ZmKCdjbGljaycsIGNsYXNzZXNUb1NlbGVjdG9yKHBhcmFtcy5idWxsZXRDbGFzcykpO1xuICAgIH1cbiAgfVxuXG4gIG9uKCdpbml0JywgKCkgPT4ge1xuICAgIGlmIChzd2lwZXIucGFyYW1zLnBhZ2luYXRpb24uZW5hYmxlZCA9PT0gZmFsc2UpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgICAgZGlzYWJsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbml0KCk7XG4gICAgICByZW5kZXIoKTtcbiAgICAgIHVwZGF0ZSgpO1xuICAgIH1cbiAgfSk7XG4gIG9uKCdhY3RpdmVJbmRleENoYW5nZScsICgpID0+IHtcbiAgICBpZiAoc3dpcGVyLnBhcmFtcy5sb29wKSB7XG4gICAgICB1cGRhdGUoKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBzd2lwZXIuc25hcEluZGV4ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgdXBkYXRlKCk7XG4gICAgfVxuICB9KTtcbiAgb24oJ3NuYXBJbmRleENoYW5nZScsICgpID0+IHtcbiAgICBpZiAoIXN3aXBlci5wYXJhbXMubG9vcCkge1xuICAgICAgdXBkYXRlKCk7XG4gICAgfVxuICB9KTtcbiAgb24oJ3NsaWRlc0xlbmd0aENoYW5nZScsICgpID0+IHtcbiAgICBpZiAoc3dpcGVyLnBhcmFtcy5sb29wKSB7XG4gICAgICByZW5kZXIoKTtcbiAgICAgIHVwZGF0ZSgpO1xuICAgIH1cbiAgfSk7XG4gIG9uKCdzbmFwR3JpZExlbmd0aENoYW5nZScsICgpID0+IHtcbiAgICBpZiAoIXN3aXBlci5wYXJhbXMubG9vcCkge1xuICAgICAgcmVuZGVyKCk7XG4gICAgICB1cGRhdGUoKTtcbiAgICB9XG4gIH0pO1xuICBvbignZGVzdHJveScsICgpID0+IHtcbiAgICBkZXN0cm95KCk7XG4gIH0pO1xuICBvbignZW5hYmxlIGRpc2FibGUnLCAoKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgJGVsXG4gICAgfSA9IHN3aXBlci5wYWdpbmF0aW9uO1xuXG4gICAgaWYgKCRlbCkge1xuICAgICAgJGVsW3N3aXBlci5lbmFibGVkID8gJ3JlbW92ZUNsYXNzJyA6ICdhZGRDbGFzcyddKHN3aXBlci5wYXJhbXMucGFnaW5hdGlvbi5sb2NrQ2xhc3MpO1xuICAgIH1cbiAgfSk7XG4gIG9uKCdsb2NrIHVubG9jaycsICgpID0+IHtcbiAgICB1cGRhdGUoKTtcbiAgfSk7XG4gIG9uKCdjbGljaycsIChfcywgZSkgPT4ge1xuICAgIGNvbnN0IHRhcmdldEVsID0gZS50YXJnZXQ7XG4gICAgY29uc3Qge1xuICAgICAgJGVsXG4gICAgfSA9IHN3aXBlci5wYWdpbmF0aW9uO1xuXG4gICAgaWYgKHN3aXBlci5wYXJhbXMucGFnaW5hdGlvbi5lbCAmJiBzd2lwZXIucGFyYW1zLnBhZ2luYXRpb24uaGlkZU9uQ2xpY2sgJiYgJGVsICYmICRlbC5sZW5ndGggPiAwICYmICEkKHRhcmdldEVsKS5oYXNDbGFzcyhzd2lwZXIucGFyYW1zLnBhZ2luYXRpb24uYnVsbGV0Q2xhc3MpKSB7XG4gICAgICBpZiAoc3dpcGVyLm5hdmlnYXRpb24gJiYgKHN3aXBlci5uYXZpZ2F0aW9uLm5leHRFbCAmJiB0YXJnZXRFbCA9PT0gc3dpcGVyLm5hdmlnYXRpb24ubmV4dEVsIHx8IHN3aXBlci5uYXZpZ2F0aW9uLnByZXZFbCAmJiB0YXJnZXRFbCA9PT0gc3dpcGVyLm5hdmlnYXRpb24ucHJldkVsKSkgcmV0dXJuO1xuICAgICAgY29uc3QgaXNIaWRkZW4gPSAkZWwuaGFzQ2xhc3Moc3dpcGVyLnBhcmFtcy5wYWdpbmF0aW9uLmhpZGRlbkNsYXNzKTtcblxuICAgICAgaWYgKGlzSGlkZGVuID09PSB0cnVlKSB7XG4gICAgICAgIGVtaXQoJ3BhZ2luYXRpb25TaG93Jyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbWl0KCdwYWdpbmF0aW9uSGlkZScpO1xuICAgICAgfVxuXG4gICAgICAkZWwudG9nZ2xlQ2xhc3Moc3dpcGVyLnBhcmFtcy5wYWdpbmF0aW9uLmhpZGRlbkNsYXNzKTtcbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0IGVuYWJsZSA9ICgpID0+IHtcbiAgICBzd2lwZXIuJGVsLnJlbW92ZUNsYXNzKHN3aXBlci5wYXJhbXMucGFnaW5hdGlvbi5wYWdpbmF0aW9uRGlzYWJsZWRDbGFzcyk7XG5cbiAgICBpZiAoc3dpcGVyLnBhZ2luYXRpb24uJGVsKSB7XG4gICAgICBzd2lwZXIucGFnaW5hdGlvbi4kZWwucmVtb3ZlQ2xhc3Moc3dpcGVyLnBhcmFtcy5wYWdpbmF0aW9uLnBhZ2luYXRpb25EaXNhYmxlZENsYXNzKTtcbiAgICB9XG5cbiAgICBpbml0KCk7XG4gICAgcmVuZGVyKCk7XG4gICAgdXBkYXRlKCk7XG4gIH07XG5cbiAgY29uc3QgZGlzYWJsZSA9ICgpID0+IHtcbiAgICBzd2lwZXIuJGVsLmFkZENsYXNzKHN3aXBlci5wYXJhbXMucGFnaW5hdGlvbi5wYWdpbmF0aW9uRGlzYWJsZWRDbGFzcyk7XG5cbiAgICBpZiAoc3dpcGVyLnBhZ2luYXRpb24uJGVsKSB7XG4gICAgICBzd2lwZXIucGFnaW5hdGlvbi4kZWwuYWRkQ2xhc3Moc3dpcGVyLnBhcmFtcy5wYWdpbmF0aW9uLnBhZ2luYXRpb25EaXNhYmxlZENsYXNzKTtcbiAgICB9XG5cbiAgICBkZXN0cm95KCk7XG4gIH07XG5cbiAgT2JqZWN0LmFzc2lnbihzd2lwZXIucGFnaW5hdGlvbiwge1xuICAgIGVuYWJsZSxcbiAgICBkaXNhYmxlLFxuICAgIHJlbmRlcixcbiAgICB1cGRhdGUsXG4gICAgaW5pdCxcbiAgICBkZXN0cm95XG4gIH0pO1xufSIsIi8qIGVzbGludCBuby11bmRlcnNjb3JlLWRhbmdsZTogXCJvZmZcIiAqL1xuXG4vKiBlc2xpbnQgbm8tdXNlLWJlZm9yZS1kZWZpbmU6IFwib2ZmXCIgKi9cbmltcG9ydCB7IGdldERvY3VtZW50IH0gZnJvbSAnc3NyLXdpbmRvdyc7XG5pbXBvcnQgeyBuZXh0VGljayB9IGZyb20gJy4uLy4uL3NoYXJlZC91dGlscy5qcyc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBBdXRvcGxheSh7XG4gIHN3aXBlcixcbiAgZXh0ZW5kUGFyYW1zLFxuICBvbixcbiAgZW1pdFxufSkge1xuICBsZXQgdGltZW91dDtcbiAgc3dpcGVyLmF1dG9wbGF5ID0ge1xuICAgIHJ1bm5pbmc6IGZhbHNlLFxuICAgIHBhdXNlZDogZmFsc2VcbiAgfTtcbiAgZXh0ZW5kUGFyYW1zKHtcbiAgICBhdXRvcGxheToge1xuICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgICBkZWxheTogMzAwMCxcbiAgICAgIHdhaXRGb3JUcmFuc2l0aW9uOiB0cnVlLFxuICAgICAgZGlzYWJsZU9uSW50ZXJhY3Rpb246IHRydWUsXG4gICAgICBzdG9wT25MYXN0U2xpZGU6IGZhbHNlLFxuICAgICAgcmV2ZXJzZURpcmVjdGlvbj
15ogZmFsc2UsXG4gICAgICBwYXVzZU9uTW91c2VFbnRlcjogZmFsc2VcbiAgICB9XG4gIH0pO1xuXG4gIGZ1bmN0aW9uIHJ1bigpIHtcbiAgICBpZiAoIXN3aXBlci5zaXplKSB7XG4gICAgICBzd2lwZXIuYXV0b3BsYXkucnVubmluZyA9IGZhbHNlO1xuICAgICAgc3dpcGVyLmF1dG9wbGF5LnBhdXNlZCA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0ICRhY3RpdmVTbGlkZUVsID0gc3dpcGVyLnNsaWRlcy5lcShzd2lwZXIuYWN0aXZlSW5kZXgpO1xuICAgIGxldCBkZWxheSA9IHN3aXBlci5wYXJhbXMuYXV0b3BsYXkuZGVsYXk7XG5cbiAgICBpZiAoJGFjdGl2ZVNsaWRlRWwuYXR0cignZGF0YS1zd2lwZXItYXV0b3BsYXknKSkge1xuICAgICAgZGVsYXkgPSAkYWN0aXZlU2xpZGVFbC5hdHRyKCdkYXRhLXN3aXBlci1hdXRvcGxheScpIHx8IHN3aXBlci5wYXJhbXMuYXV0b3BsYXkuZGVsYXk7XG4gICAgfVxuXG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgIHRpbWVvdXQgPSBuZXh0VGljaygoKSA9PiB7XG4gICAgICBsZXQgYXV0b3BsYXlSZXN1bHQ7XG5cbiAgICAgIGlmIChzd2lwZXIucGFyYW1zLmF1dG9wbGF5LnJldmVyc2VEaXJlY3Rpb24pIHtcbiAgICAgICAgaWYgKHN3aXBlci5wYXJhbXMubG9vcCkge1xuICAgICAgICAgIHN3aXBlci5sb29wRml4KCk7XG4gICAgICAgICAgYXV0b3BsYXlSZXN1bHQgPSBzd2lwZXIuc2xpZGVQcmV2KHN3aXBlci5wYXJhbXMuc3BlZWQsIHRydWUsIHRydWUpO1xuICAgICAgICAgIGVtaXQoJ2F1dG9wbGF5Jyk7XG4gICAgICAgIH0gZWxzZSBpZiAoIXN3aXBlci5pc0JlZ2lubmluZykge1xuICAgICAgICAgIGF1dG9wbGF5UmVzdWx0ID0gc3dpcGVyLnNsaWRlUHJldihzd2lwZXIucGFyYW1zLnNwZWVkLCB0cnVlLCB0cnVlKTtcbiAgICAgICAgICBlbWl0KCdhdXRvcGxheScpO1xuICAgICAgICB9IGVsc2UgaWYgKCFzd2lwZXIucGFyYW1zLmF1dG9wbGF5LnN0b3BPbkxhc3RTbGlkZSkge1xuICAgICAgICAgIGF1dG9wbGF5UmVzdWx0ID0gc3dpcGVyLnNsaWRlVG8oc3dpcGVyLnNsaWRlcy5sZW5ndGggLSAxLCBzd2lwZXIucGFyYW1zLnNwZWVkLCB0cnVlLCB0cnVlKTtcbiAgICAgICAgICBlbWl0KCdhdXRvcGxheScpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0b3AoKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChzd2lwZXIucGFyYW1zLmxvb3ApIHtcbiAgICAgICAgc3dpcGVyLmxvb3BGaXgoKTtcbiAgICAgICAgYXV0b3BsYXlSZXN1bHQgPSBzd2lwZXIuc2xpZGVOZXh0KHN3aXBlci5wYXJhbXMuc3BlZWQsIHRydWUsIHRydWUpO1xuICAgICAgICBlbWl0KCdhdXRvcGxheScpO1xuICAgICAgfSBlbHNlIGlmICghc3dpcGVyLmlzRW5kKSB7XG4gICAgICAgIGF1dG9wbGF5UmVzdWx0ID0gc3dpcGVyLnNsaWRlTmV4dChzd2lwZXIucGFyYW1zLnNwZWVkLCB0cnVlLCB0cnVlKTtcbiAgICAgICAgZW1pdCgnYXV0b3BsYXknKTtcbiAgICAgIH0gZWxzZSBpZiAoIXN3aXBlci5wYXJhbXMuYXV0b3BsYXkuc3RvcE9uTGFzdFNsaWRlKSB7XG4gICAgICAgIGF1dG9wbGF5UmVzdWx0ID0gc3dpcGVyLnNsaWRlVG8oMCwgc3dpcGVyLnBhcmFtcy5zcGVlZCwgdHJ1ZSwgdHJ1ZSk7XG4gICAgICAgIGVtaXQoJ2F1dG9wbGF5Jyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdG9wKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChzd2lwZXIucGFyYW1zLmNzc01vZGUgJiYgc3dpcGVyLmF1dG9wbGF5LnJ1bm5pbmcpIHJ1bigpO2Vsc2UgaWYgKGF1dG9wbGF5UmVzdWx0ID09PSBmYWxzZSkge1xuICAgICAgICBydW4oKTtcbiAgICAgIH1cbiAgICB9LCBkZWxheSk7XG4gIH1cblxuICBmdW5jdGlvbiBzdGFydCgpIHtcbiAgICBpZiAodHlwZW9mIHRpbWVvdXQgIT09ICd1bmRlZmluZWQnKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKHN3aXBlci5hdXRvcGxheS5ydW5uaW5nKSByZXR1cm4gZmFsc2U7XG4gICAgc3dpcGVyLmF1dG9wbGF5LnJ1bm5pbmcgPSB0cnVlO1xuICAgIGVtaXQoJ2F1dG9wbGF5U3RhcnQnKTtcbiAgICBydW4oKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHN0b3AoKSB7XG4gICAgaWYgKCFzd2lwZXIuYXV0b3BsYXkucnVubmluZykgcmV0dXJuIGZhbHNlO1xuICAgIGlmICh0eXBlb2YgdGltZW91dCA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybiBmYWxzZTtcblxuICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICB0aW1lb3V0ID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHN3aXBlci5hdXRvcGxheS5ydW5uaW5nID0gZmFsc2U7XG4gICAgZW1pdCgnYXV0b3BsYXlTdG9wJyk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBmdW5jdGlvbiBwYXVzZShzcGVlZCkge1xuICAgIGlmICghc3dpcGVyLmF1dG9wbGF5LnJ1bm5pbmcpIHJldHVybjtcbiAgICBpZiAoc3dpcGVyLmF1dG9wbGF5LnBhdXNlZCkgcmV0dXJuO1xuICAgIGlmICh0aW1lb3V0KSBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgc3dpcGVyLmF1dG9wbGF5LnBhdXNlZCA9IHRydWU7XG5cbiAgICBpZiAoc3BlZWQgPT09IDAgfHwgIXN3aXBlci5wYXJhbXMuYXV0b3BsYXkud2FpdEZvclRyYW5zaXRpb24pIHtcbiAgICAgIHN3aXBlci5hdXRvcGxheS5wYXVzZWQgPSBmYWxzZTtcbiAgICAgIHJ1bigpO1xuICAgIH0gZWxzZSB7XG4gICAgICBbJ3RyYW5zaXRpb25lbmQnLCAnd2Via2l0VHJhbnNpdGlvbkVuZCddLmZvckVhY2goZXZlbnQgPT4ge1xuICAgICAgICBzd2lwZXIuJHdyYXBwZXJFbFswXS5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCBvblRyYW5zaXRpb25FbmQpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gb25WaXNpYmlsaXR5Q2hhbmdlKCkge1xuICAgIGNvbnN0IGRvY3VtZW50ID0gZ2V0RG9jdW1lbnQoKTtcblxuICAgIGlmIChkb2N1bWVudC52aXNpYmlsaXR5U3RhdGUgPT09ICdoaWRkZW4nICYmIHN3aXBlci5hdXRvcGxheS5ydW5uaW5nKSB7XG4gICAgICBwYXVzZSgpO1xuICAgIH1cblxuICAgIGlmIChkb2N1bWVudC52aXNpYmlsaXR5U3RhdGUgPT09ICd2aXNpYmxlJyAmJiBzd2lwZXIuYXV0b3BsYXkucGF1c2VkKSB7XG4gICAgICBydW4oKTtcbiAgICAgIHN3aXBlci5hdXRvcGxheS5wYXVzZWQgPSBmYWxzZTtcbiAgICB9XG4gI
15H1cblxuICBmdW5jdGlvbiBvblRyYW5zaXRpb25FbmQoZSkge1xuICAgIGlmICghc3dpcGVyIHx8IHN3aXBlci5kZXN0cm95ZWQgfHwgIXN3aXBlci4kd3JhcHBlckVsKSByZXR1cm47XG4gICAgaWYgKGUudGFyZ2V0ICE9PSBzd2lwZXIuJHdyYXBwZXJFbFswXSkgcmV0dXJuO1xuICAgIFsndHJhbnNpdGlvbmVuZCcsICd3ZWJraXRUcmFuc2l0aW9uRW5kJ10uZm9yRWFjaChldmVudCA9PiB7XG4gICAgICBzd2lwZXIuJHdyYXBwZXJFbFswXS5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50LCBvblRyYW5zaXRpb25FbmQpO1xuICAgIH0pO1xuICAgIHN3aXBlci5hdXRvcGxheS5wYXVzZWQgPSBmYWxzZTtcblxuICAgIGlmICghc3dpcGVyLmF1dG9wbGF5LnJ1bm5pbmcpIHtcbiAgICAgIHN0b3AoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcnVuKCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gb25Nb3VzZUVudGVyKCkge1xuICAgIGlmIChzd2lwZXIucGFyYW1zLmF1dG9wbGF5LmRpc2FibGVPbkludGVyYWN0aW9uKSB7XG4gICAgICBzdG9wKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVtaXQoJ2F1dG9wbGF5UGF1c2UnKTtcbiAgICAgIHBhdXNlKCk7XG4gICAgfVxuXG4gICAgWyd0cmFuc2l0aW9uZW5kJywgJ3dlYmtpdFRyYW5zaXRpb25FbmQnXS5mb3JFYWNoKGV2ZW50ID0+IHtcbiAgICAgIHN3aXBlci4kd3JhcHBlckVsWzBdLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQsIG9uVHJhbnNpdGlvbkVuZCk7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBvbk1vdXNlTGVhdmUoKSB7XG4gICAgaWYgKHN3aXBlci5wYXJhbXMuYXV0b3BsYXkuZGlzYWJsZU9uSW50ZXJhY3Rpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzd2lwZXIuYXV0b3BsYXkucGF1c2VkID0gZmFsc2U7XG4gICAgZW1pdCgnYXV0b3BsYXlSZXN1bWUnKTtcbiAgICBydW4oKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGF0dGFjaE1vdXNlRXZlbnRzKCkge1xuICAgIGlmIChzd2lwZXIucGFyYW1zLmF1dG9wbGF5LnBhdXNlT25Nb3VzZUVudGVyKSB7XG4gICAgICBzd2lwZXIuJGVsLm9uKCdtb3VzZWVudGVyJywgb25Nb3VzZUVudGVyKTtcbiAgICAgIHN3aXBlci4kZWwub24oJ21vdXNlbGVhdmUnLCBvbk1vdXNlTGVhdmUpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGRldGFjaE1vdXNlRXZlbnRzKCkge1xuICAgIHN3aXBlci4kZWwub2ZmKCdtb3VzZWVudGVyJywgb25Nb3VzZUVudGVyKTtcbiAgICBzd2lwZXIuJGVsLm9mZignbW91c2VsZWF2ZScsIG9uTW91c2VMZWF2ZSk7XG4gIH1cblxuICBvbignaW5pdCcsICgpID0+IHtcbiAgICBpZiAoc3dpcGVyLnBhcmFtcy5hdXRvcGxheS5lbmFibGVkKSB7XG4gICAgICBzdGFydCgpO1xuICAgICAgY29uc3QgZG9jdW1lbnQgPSBnZXREb2N1bWVudCgpO1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndmlzaWJpbGl0eWNoYW5nZScsIG9uVmlzaWJpbGl0eUNoYW5nZSk7XG4gICAgICBhdHRhY2hNb3VzZUV2ZW50cygpO1xuICAgIH1cbiAgfSk7XG4gIG9uKCdiZWZvcmVUcmFuc2l0aW9uU3RhcnQnLCAoX3MsIHNwZWVkLCBpbnRlcm5hbCkgPT4ge1xuICAgIGlmIChzd2lwZXIuYXV0b3BsYXkucnVubmluZykge1xuICAgICAgaWYgKGludGVybmFsIHx8ICFzd2lwZXIucGFyYW1zLmF1dG9wbGF5LmRpc2FibGVPbkludGVyYWN0aW9uKSB7XG4gICAgICAgIHN3aXBlci5hdXRvcGxheS5wYXVzZShzcGVlZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdG9wKCk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgb24oJ3NsaWRlckZpcnN0TW92ZScsICgpID0+IHtcbiAgICBpZiAoc3dpcGVyLmF1dG9wbGF5LnJ1bm5pbmcpIHtcbiAgICAgIGlmIChzd2lwZXIucGFyYW1zLmF1dG9wbGF5LmRpc2FibGVPbkludGVyYWN0aW9uKSB7XG4gICAgICAgIHN0b3AoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhdXNlKCk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgb24oJ3RvdWNoRW5kJywgKCkgPT4ge1xuICAgIGlmIChzd2lwZXIucGFyYW1zLmNzc01vZGUgJiYgc3dpcGVyLmF1dG9wbGF5LnBhdXNlZCAmJiAhc3dpcGVyLnBhcmFtcy5hdXRvcGxheS5kaXNhYmxlT25JbnRlcmFjdGlvbikge1xuICAgICAgcnVuKCk7XG4gICAgfVxuICB9KTtcbiAgb24oJ2Rlc3Ryb3knLCAoKSA9PiB7XG4gICAgZGV0YWNoTW91c2VFdmVudHMoKTtcblxuICAgIGlmIChzd2lwZXIuYXV0b3BsYXkucnVubmluZykge1xuICAgICAgc3RvcCgpO1xuICAgIH1cblxuICAgIGNvbnN0IGRvY3VtZW50ID0gZ2V0RG9jdW1lbnQoKTtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd2aXNpYmlsaXR5Y2hhbmdlJywgb25WaXNpYmlsaXR5Q2hhbmdlKTtcbiAgfSk7XG4gIE9iamVjdC5hc3NpZ24oc3dpcGVyLmF1dG9wbGF5LCB7XG4gICAgcGF1c2UsXG4gICAgcnVuLFxuICAgIHN0YXJ0LFxuICAgIHN0b3BcbiAgfSk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYXBwZW5kU2xpZGUoc2xpZGVzKSB7XG4gIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gIGNvbnN0IHtcbiAgICAkd3JhcHBlckVsLFxuICAgIHBhcmFtc1xuICB9ID0gc3dpcGVyO1xuXG4gIGlmIChwYXJhbXMubG9vcCkge1xuICAgIHN3aXBlci5sb29wRGVzdHJveSgpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBzbGlkZXMgPT09ICdvYmplY3QnICYmICdsZW5ndGgnIGluIHNsaWRlcykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2xpZGVzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBpZiAoc2xpZGVzW2ldKSAkd3JhcHBlckVsLmFwcGVuZChzbGlkZXNbaV0pO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAkd3JhcHBlckVsLmFwcGVuZChzbGlkZXMpO1xuICB9XG5cbiAgaWYgKHBhcmFtcy5sb29wKSB7XG4gICAgc3dpcGVyLmxvb3BDcmVhdGUoKTtcbiAgfVxuXG4gIGlmICghcGFyYW1zLm9ic2VydmVyKSB7XG4gICAgc3dpcGVyLnVwZGF0ZSgpO1xuICB9XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcHJlcGVuZFNsaWRlKHNsaWRlcykge1xuICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICBjb25zdCB7XG4gICAgcGFyYW1zLFxuICAgICR3cmFwcGVyRWwsXG4gICAgYWN0aXZlSW5kZXhcbiAgfSA9IHN3aXBlcjtcblxuICBpZiAocGFyYW1zLmxvb3ApIHtcbiAgICBzd2lwZXIubG9vcERlc3Ryb3koKTtcbiAgfVxuXG4gIGxldCBuZXdBY3RpdmVJbmRleCA9IGFjdGl2ZUluZGV4ICsgMTtcblxuICBpZiAodHlwZW9mIHNsaWRlcyA9PT0gJ29iamVjdCcgJiYgJ2xlbmd0aCcgaW4gc2xpZGVzKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzbGlkZXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGlmIChzbGlkZXNbaV0pICR3cmFwcGVyRWwucHJlcGVuZChzbGlkZXNbaV0pO1xuICAgIH1cblxuICAgIG5ld0FjdGl2ZUluZGV4ID0gYWN0aXZlSW5kZXggKyBzbGlkZXMubGVuZ3RoO1xuICB9IGVsc2Uge1xuICAgICR3cmFwcGVyRWwucHJlcGVuZChzbGlkZXMpO1xuICB9XG5cbiAgaWYgKHBhcmFtcy5sb29wKSB7XG4gICAgc3dpcGVyLmxvb3BDcmVhdGUoKTtcbiAgfVxuXG4gIGlmICghcGFyYW1zLm9ic2VydmVyKSB7XG4gICAgc3dpcGVyLnVwZGF0ZSgpO1xuICB9XG5cbiAgc3dpcGVyLnNsaWRlVG8obmV3QWN0aXZlSW5kZXgsIDAsIGZhbHNlKTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhZGRTbGlkZShpbmRleCwgc2xpZGVzKSB7XG4gIGNvbnN0IHN3aXBlciA9IHRoaXM7XG4gIGNvbnN0IHtcbiAgICAkd3JhcHBlckVsLFxuICAgIHBhcmFtcyxcbiAgICBhY3RpdmVJbmRleFxuICB9ID0gc3dpcGVyO1xuICBsZXQgYWN0aXZlSW5kZXhCdWZmZXIgPSBhY3RpdmVJbmRleDtcblxuICBpZiAocGFyYW1zLmxvb3ApIHtcbiAgICBhY3RpdmVJbmRleEJ1ZmZlciAtPSBzd2lwZXIubG9vcGVkU2xpZGVzO1xuICAgIHN3aXBlci5sb29wRGVzdHJveSgpO1xuICAgIHN3aXBlci5zbGlkZXMgPSAkd3JhcHBlckVsLmNoaWxkcmVuKGAuJHtwYXJhbXMuc2xpZGVDbGFzc31gKTtcbiAgfVxuXG4gIGNvbnN0IGJhc2VMZW5ndGggPSBzd2lwZXIuc2xpZGVzLmxlbmd0aDtcblxuICBpZiAoaW5kZXggPD0gMCkge1xuICAgIHN3aXBlci5wcmVwZW5kU2xpZGUoc2xpZGVzKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoaW5kZXggPj0gYmFzZUxlbmd0aCkge1xuICAgIHN3aXBlci5hcHBlbmRTbGlkZShzbGlkZXMpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGxldCBuZXdBY3RpdmVJbmRleCA9IGFjdGl2ZUluZGV4QnVmZmVyID4gaW5kZXggPyBhY3RpdmVJbmRleEJ1ZmZlciArIDEgOiBhY3RpdmVJbmRleEJ1ZmZlcjtcbiAgY29uc3Qgc2xpZGVzQnVmZmVyID0gW107XG5cbiAgZm9yIChsZXQgaSA9IGJhc2VMZW5ndGggLSAxOyBpID49IGluZGV4OyBpIC09IDEpIHtcbiAgICBjb25zdCBjdXJyZW50U2xpZGUgPSBzd2lwZXIuc2xpZGVzLmVxKGkpO1xuICAgIGN1cnJlbnRTbGlkZS5yZW1vdmUoKTtcbiAgICBzbGlkZXNCdWZmZXIudW5zaGlmdChjdXJyZW50U2xpZGUpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBzbGlkZXMgPT09ICdvYmplY3QnICYmICdsZW5ndGgnIGluIHNsaWRlcykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2xpZGVzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBpZiAoc2xpZGVzW2ldKSAkd3JhcHBlckVsLmFwcGVuZChzbGlkZXNbaV0pO1xuICAgIH1cblxuICAgIG5ld0FjdGl2ZUluZGV4ID0gYWN0aXZlSW5kZXhCdWZmZXIgPiBpbmRleCA/IGFjdGl2ZUluZGV4QnVmZmVyICsgc2xpZGVzLmxlbmd0aCA6IGFjdGl2ZUluZGV4QnVmZmVyO1xuICB9IGVsc2Uge1xuICAgICR3cmFwcGVyRWwuYXBwZW5kKHNsaWRlcyk7XG4gIH1cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHNsaWRlc0J1ZmZlci5sZW5ndGg7IGkgKz0gMSkge1xuICAgICR3cmFwcGVyRWwuYXBwZW5kKHNsaWRlc0J1ZmZlcltpXSk7XG4gIH1cblxuICBpZiAocGFyYW1zLmxvb3ApIHtcbiAgICBzd2lwZXIubG9vcENyZWF0ZSgpO1xuICB9XG5cbiAgaWYgKCFwYXJhbXMub2JzZXJ2ZXIpIHtcbiAgICBzd2lwZXIudXBkYXRlKCk7XG4gIH1cblxuICBpZiAocGFyYW1zLmxvb3ApIHtcbiAgICBzd2lwZXIuc2xpZGVUbyhuZXdBY3RpdmVJbmRleCArIHN3aXBlci5sb29wZWRTbGlkZXMsIDAsIGZhbHNlKTtcbiAgfSBlbHNlIHtcbiAgICBzd2lwZXIuc2xpZGVUbyhuZXdBY3RpdmVJbmRleCwgMCwgZmFsc2UpO1xuICB9XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcmVtb3ZlU2xpZGUoc2xpZGVzSW5kZX
15hlcykge1xuICBjb25zdCBzd2lwZXIgPSB0aGlzO1xuICBjb25zdCB7XG4gICAgcGFyYW1zLFxuICAgICR3cmFwcGVyRWwsXG4gICAgYWN0aXZlSW5kZXhcbiAgfSA9IHN3aXBlcjtcbiAgbGV0IGFjdGl2ZUluZGV4QnVmZmVyID0gYWN0aXZlSW5kZXg7XG5cbiAgaWYgKHBhcmFtcy5sb29wKSB7XG4gICAgYWN0aXZlSW5kZXhCdWZmZXIgLT0gc3dpcGVyLmxvb3BlZFNsaWRlcztcbiAgICBzd2lwZXIubG9vcERlc3Ryb3koKTtcbiAgICBzd2lwZXIuc2xpZGVzID0gJHdyYXBwZXJFbC5jaGlsZHJlbihgLiR7cGFyYW1zLnNsaWRlQ2xhc3N9YCk7XG4gIH1cblxuICBsZXQgbmV3QWN0aXZlSW5kZXggPSBhY3RpdmVJbmRleEJ1ZmZlcjtcbiAgbGV0IGluZGV4VG9SZW1vdmU7XG5cbiAgaWYgKHR5cGVvZiBzbGlkZXNJbmRleGVzID09PSAnb2JqZWN0JyAmJiAnbGVuZ3RoJyBpbiBzbGlkZXNJbmRleGVzKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzbGlkZXNJbmRleGVzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBpbmRleFRvUmVtb3ZlID0gc2xpZGVzSW5kZXhlc1tpXTtcbiAgICAgIGlmIChzd2lwZXIuc2xpZGVzW2luZGV4VG9SZW1vdmVdKSBzd2lwZXIuc2xpZGVzLmVxKGluZGV4VG9SZW1vdmUpLnJlbW92ZSgpO1xuICAgICAgaWYgKGluZGV4VG9SZW1vdmUgPCBuZXdBY3RpdmVJbmRleCkgbmV3QWN0aXZlSW5kZXggLT0gMTtcbiAgICB9XG5cbiAgICBuZXdBY3RpdmVJbmRleCA9IE1hdGgubWF4KG5ld0FjdGl2ZUluZGV4LCAwKTtcbiAgfSBlbHNlIHtcbiAgICBpbmRleFRvUmVtb3ZlID0gc2xpZGVzSW5kZXhlcztcbiAgICBpZiAoc3dpcGVyLnNsaWRlc1tpbmRleFRvUmVtb3ZlXSkgc3dpcGVyLnNsaWRlcy5lcShpbmRleFRvUmVtb3ZlKS5yZW1vdmUoKTtcbiAgICBpZiAoaW5kZXhUb1JlbW92ZSA8IG5ld0FjdGl2ZUluZGV4KSBuZXdBY3RpdmVJbmRleCAtPSAxO1xuICAgIG5ld0FjdGl2ZUluZGV4ID0gTWF0aC5tYXgobmV3QWN0aXZlSW5kZXgsIDApO1xuICB9XG5cbiAgaWYgKHBhcmFtcy5sb29wKSB7XG4gICAgc3dpcGVyLmxvb3BDcmVhdGUoKTtcbiAgfVxuXG4gIGlmICghcGFyYW1zLm9ic2VydmVyKSB7XG4gICAgc3dpcGVyLnVwZGF0ZSgpO1xuICB9XG5cbiAgaWYgKHBhcmFtcy5sb29wKSB7XG4gICAgc3dpcGVyLnNsaWRlVG8obmV3QWN0aXZlSW5kZXggKyBzd2lwZXIubG9vcGVkU2xpZGVzLCAwLCBmYWxzZSk7XG4gIH0gZWxzZSB7XG4gICAgc3dpcGVyLnNsaWRlVG8obmV3QWN0aXZlSW5kZXgsIDAsIGZhbHNlKTtcbiAgfVxufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJlbW92ZUFsbFNsaWRlcygpIHtcbiAgY29uc3Qgc3dpcGVyID0gdGhpcztcbiAgY29uc3Qgc2xpZGVzSW5kZXhlcyA9IFtdO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3dpcGVyLnNsaWRlcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgIHNsaWRlc0luZGV4ZXMucHVzaChpKTtcbiAgfVxuXG4gIHN3aXBlci5yZW1vdmVTbGlkZShzbGlkZXNJbmRleGVzKTtcbn0iLCJpbXBvcnQgYXBwZW5kU2xpZGUgZnJvbSAnLi9tZXRob2RzL2FwcGVuZFNsaWRlLmpzJztcbmltcG9ydCBwcmVwZW5kU2xpZGUgZnJvbSAnLi9tZXRob2RzL3ByZXBlbmRTbGlkZS5qcyc7XG5pbXBvcnQgYWRkU2xpZGUgZnJvbSAnLi9tZXRob2RzL2FkZFNsaWRlLmpzJztcbmltcG9ydCByZW1vdmVTbGlkZSBmcm9tICcuL21ldGhvZHMvcmVtb3ZlU2xpZGUuanMnO1xuaW1wb3J0IHJlbW92ZUFsbFNsaWRlcyBmcm9tICcuL21ldGhvZHMvcmVtb3ZlQWxsU2xpZGVzLmpzJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1hbmlwdWxhdGlvbih7XG4gIHN3aXBlclxufSkge1xuICBPYmplY3QuYXNzaWduKHN3aXBlciwge1xuICAgIGFwcGVuZFNsaWRlOiBhcHBlbmRTbGlkZS5iaW5kKHN3aXBlciksXG4gICAgcHJlcGVuZFNsaWRlOiBwcmVwZW5kU2xpZGUuYmluZChzd2lwZXIpLFxuICAgIGFkZFNsaWRlOiBhZGRTbGlkZS5iaW5kKHN3aXBlciksXG4gICAgcmVtb3ZlU2xpZGU6IHJlbW92ZVNsaWRlLmJpbmQoc3dpcGVyKSxcbiAgICByZW1vdmVBbGxTbGlkZXM6IHJlbW92ZUFsbFNsaWRlcy5iaW5kKHN3aXBlcilcbiAgfSk7XG59IiwiZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXt2YXIgbj10W29dO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIG4mJihuLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLmtleSxuKX19ZnVuY3Rpb24gdChlKXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gbyhlKX0oZSl8fGZ1bmN0aW9uKGUpe2lmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoZSkpcmV0dXJuIEFycmF5LmZyb20oZSl9KGUpfHxmdW5jdGlvbihlLHQpe2lmKCFlKXJldHVybjtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gbyhlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKTtpZihcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20oZSk7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiBvKGUsdCl9KGUpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpfWZ1bmN0aW9uIG8oZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG89MCxuPW5ldyBBcnJheSh0KTtvPHQ7bysrKW5bb109ZVtvXTtyZXR1cm4gbn12YXIgbixpLGEscixzLGw9KG49W1wiYVtocmVmXVwiLFwiYXJlYVtocmVmXVwiLCdpbnB1dDpub3QoW2Rpc2FibGVkXSk6bm90KFt0eXBlPVwiaGlkZGVuXCJdKTpub3QoW2FyaWEtaGlkZGVuXSknLFwic2VsZWN0Om5vdChbZGlzYWJsZWRdKTpub3QoW2FyaWEtaGlkZGVuXSlcIixcInRleHRhcmVhOm5vdChbZGlzYWJsZWRdKTpub3QoW2FyaWEtaGlkZGVuXSlcIixcImJ1dHRvbjpub3QoW2Rpc2FibGVkXSk6bm90KFthcmlhLWhpZGRlbl0pXCIsXCJpZnJhbWVcIixcIm9iamVjdFwiLFwiZW1iZWRcIixcIltjb250ZW50ZWRpdGFibGVdXCIsJ1t0YWJpbmRleF06bm90KFt0YWJpbmRleF49XCItXCJdKSddLGk9ZnVuY3Rpb24oKXtmdW5jdGlvbiBvKGUpe3ZhciBuPWUudGFyZ2V0TW9kYWwsaT1lLnRyaWdnZXJzLGE9dm9pZCAwPT09aT9bXTppLHI9ZS5vblNob3cscz12b2lkIDA9PT1yP2Z1bmN0aW9uKCl7fTpyLGw9ZS5vbkNsb3NlLGM9dm9pZCAwPT09bD9mdW5jdGlvbigpe306bCxkPWUub3BlblRyaWdnZXIsdT12b2lkIDA9PT1kP1wiZGF0YS1taWNyb21vZGFsLXRyaWdnZXJcIjpkLGY9ZS5jbG9zZVRyaWdnZXIsaD12b2lkIDA9PT1mP1wiZGF0YS1taWNyb21vZGFsLWNsb3NlXCI6Zix2PWUub3BlbkNsYXNzLGc9dm9pZCAwPT09dj9cImlzLW9wZW5cIjp2LG09ZS5kaXNhYmxlU2Nyb2xsLGI9dm9pZCAwIT09bSYmbSx5PWUuZGlzYWJsZUZvY3VzLHA9dm9pZCAwIT09eSYmeSx3PWUuYXdhaXRDbG9zZUFuaW1hdGlvbixFPXZvaWQgMCE9PXcmJncsaz1lLmF3YWl0T3BlbkFuaW1hdGlvbixNPXZvaWQgMCE9PWsmJmssQT1lLmRlYnVnTW9kZSxDPXZvaWQgMCE9PUEmJkE7IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX0odGhpcyxvKSx0aGlzLm1vZGFsPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG4pLHRoaXMuY29uZmlnPXtkZWJ1Z01vZGU6QyxkaXNhYmxlU2Nyb2xsOmIsb3BlblRyaWdnZXI6dSxjbG9zZVRyaWdnZXI6aCxvcGVuQ2xhc3M6ZyxvblNob3c6cyxvbkNsb3NlOmMsYXdhaXRDbG9zZUFuaW1hdGlvbjpFLGF3YWl0T3BlbkFuaW1hdGlvbjpNLGRpc2FibGVGb2N1czpwfSxhLmxlbmd0aD4wJiZ0aGlzLnJlZ2lzdGVyVHJpZ2dlcnMuYXBwbHkodGhpcyx0KGEpKSx0aGlzLm9uQ2xpY2s9dGhpcy5vbkNsaWNrLmJpbmQodGhpcyksdGhpcy5vbktleWRvd249dGhpcy5vbktleWRvd24uYmluZCh0aGlzKX12YXIgaSxhLHI7cmV0dXJuIGk9bywoYT1be2tleTpcInJlZ2lzdGVyVHJpZ2dlcnNcIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLHQ9YXJndW1lbnRzLmxlbmd0aCxvPW5ldyBBcnJheSh0KSxuPTA7bj
15x0O24rKylvW25dPWFyZ3VtZW50c1tuXTtvLmZpbHRlcihCb29sZWFuKS5mb3JFYWNoKChmdW5jdGlvbih0KXt0LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLChmdW5jdGlvbih0KXtyZXR1cm4gZS5zaG93TW9kYWwodCl9KSl9KSl9fSx7a2V5Olwic2hvd01vZGFsXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOm51bGw7aWYodGhpcy5hY3RpdmVFbGVtZW50PWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQsdGhpcy5tb2RhbC5zZXRBdHRyaWJ1dGUoXCJhcmlhLWhpZGRlblwiLFwiZmFsc2VcIiksdGhpcy5tb2RhbC5jbGFzc0xpc3QuYWRkKHRoaXMuY29uZmlnLm9wZW5DbGFzcyksdGhpcy5zY3JvbGxCZWhhdmlvdXIoXCJkaXNhYmxlXCIpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcnMoKSx0aGlzLmNvbmZpZy5hd2FpdE9wZW5BbmltYXRpb24pe3ZhciBvPWZ1bmN0aW9uIHQoKXtlLm1vZGFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJhbmltYXRpb25lbmRcIix0LCExKSxlLnNldEZvY3VzVG9GaXJzdE5vZGUoKX07dGhpcy5tb2RhbC5hZGRFdmVudExpc3RlbmVyKFwiYW5pbWF0aW9uZW5kXCIsbywhMSl9ZWxzZSB0aGlzLnNldEZvY3VzVG9GaXJzdE5vZGUoKTt0aGlzLmNvbmZpZy5vblNob3codGhpcy5tb2RhbCx0aGlzLmFjdGl2ZUVsZW1lbnQsdCl9fSx7a2V5OlwiY2xvc2VNb2RhbFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOm51bGwsdD10aGlzLm1vZGFsO2lmKHRoaXMubW9kYWwuc2V0QXR0cmlidXRlKFwiYXJpYS1oaWRkZW5cIixcInRydWVcIiksdGhpcy5yZW1vdmVFdmVudExpc3RlbmVycygpLHRoaXMuc2Nyb2xsQmVoYXZpb3VyKFwiZW5hYmxlXCIpLHRoaXMuYWN0aXZlRWxlbWVudCYmdGhpcy5hY3RpdmVFbGVtZW50LmZvY3VzJiZ0aGlzLmFjdGl2ZUVsZW1lbnQuZm9jdXMoKSx0aGlzLmNvbmZpZy5vbkNsb3NlKHRoaXMubW9kYWwsdGhpcy5hY3RpdmVFbGVtZW50LGUpLHRoaXMuY29uZmlnLmF3YWl0Q2xvc2VBbmltYXRpb24pe3ZhciBvPXRoaXMuY29uZmlnLm9wZW5DbGFzczt0aGlzLm1vZGFsLmFkZEV2ZW50TGlzdGVuZXIoXCJhbmltYXRpb25lbmRcIiwoZnVuY3Rpb24gZSgpe3QuY2xhc3NMaXN0LnJlbW92ZShvKSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJhbmltYXRpb25lbmRcIixlLCExKX0pLCExKX1lbHNlIHQuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLmNvbmZpZy5vcGVuQ2xhc3MpfX0se2tleTpcImNsb3NlTW9kYWxCeUlkXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5tb2R
15hbD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChlKSx0aGlzLm1vZGFsJiZ0aGlzLmNsb3NlTW9kYWwoKX19LHtrZXk6XCJzY3JvbGxCZWhhdmlvdXJcIix2YWx1ZTpmdW5jdGlvbihlKXtpZih0aGlzLmNvbmZpZy5kaXNhYmxlU2Nyb2xsKXt2YXIgdD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiYm9keVwiKTtzd2l0Y2goZSl7Y2FzZVwiZW5hYmxlXCI6T2JqZWN0LmFzc2lnbih0LnN0eWxlLHtvdmVyZmxvdzpcIlwifSk7YnJlYWs7Y2FzZVwiZGlzYWJsZVwiOk9iamVjdC5hc3NpZ24odC5zdHlsZSx7b3ZlcmZsb3c6XCJoaWRkZW5cIn0pfX19fSx7a2V5OlwiYWRkRXZlbnRMaXN0ZW5lcnNcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMubW9kYWwuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNoc3RhcnRcIix0aGlzLm9uQ2xpY2spLHRoaXMubW9kYWwuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsdGhpcy5vbkNsaWNrKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLHRoaXMub25LZXlkb3duKX19LHtrZXk6XCJyZW1vdmVFdmVudExpc3RlbmVyc1wiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5tb2RhbC5yZW1vdmVFdmVudExpc3RlbmVyKFwidG91Y2hzdGFydFwiLHRoaXMub25DbGljayksdGhpcy5tb2RhbC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIix0aGlzLm9uQ2xpY2spLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsdGhpcy5vbktleWRvd24pfX0se2tleTpcIm9uQ2xpY2tcIix2YWx1ZTpmdW5jdGlvbihlKXsoZS50YXJnZXQuaGFzQXR0cmlidXRlKHRoaXMuY29uZmlnLmNsb3NlVHJpZ2dlcil8fGUudGFyZ2V0LnBhcmVudE5vZGUuaGFzQXR0cmlidXRlKHRoaXMuY29uZmlnLmNsb3NlVHJpZ2dlcikpJiYoZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5jbG9zZU1vZGFsKGUpKX19LHtrZXk6XCJvbktleWRvd25cIix2YWx1ZTpmdW5jdGlvbihlKXsyNz09PWUua2V5Q29kZSYmdGhpcy5jbG9zZU1vZGFsKGUpLDk9PT1lLmtleUNvZGUmJnRoaXMucmV0YWluRm9jdXMoZSl9fSx7a2V5OlwiZ2V0Rm9jdXNhYmxlTm9kZXNcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMubW9kYWwucXVlcnlTZWxlY3RvckFsbChuKTtyZXR1cm4gQXJyYXkuYXBwbHkodm9pZCAwLHQoZSkpfX0se2tleTpcInNldEZvY3VzVG9GaXJzdE5vZGVcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7aWYoIXRoaXMuY29uZmlnLmRpc2FibGVGb2N1cyl7dmFyIHQ9dGhpcy5nZXRGb2N1c2FibGVOb2RlcygpO2lmKDAhPT10Lmxlbmd0aCl7dmFyIG89dC5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiF0Lmhhc0F0dHJpYnV0ZShlLmNvbmZpZy5jbG9zZVRyaWdnZXIpfSkpO28ubGVuZ3RoPjAmJm9bMF0uZm9jdXMoKSwwPT09by5sZW5ndGgmJnRbMF0uZm9jdXMoKX19fX0se2tleTpcInJldGFpbkZvY3VzXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXRGb2N1c2FibGVOb2RlcygpO2lmKDAhPT10Lmxlbmd0aClpZih0PXQuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9PWUub2Zmc2V0UGFyZW50fSkpLHRoaXMubW9kYWwuY29udGFpbnMoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkpe3ZhciBvPXQuaW5kZXhPZihkb2N1bWVudC5hY3RpdmVFbGVtZW50KTtlLnNoaWZ0S2V5JiYwPT09byYmKHRbdC5sZW5ndGgtMV0uZm9jdXMoKSxlLnByZXZlbnREZWZhdWx0KCkpLCFlLnNoaWZ0S2V5JiZ0Lmxlbmd0aD4wJiZvPT09dC5sZW5ndGgtMSYmKHRbMF0uZm9jdXMoKSxlLnByZXZlbnREZWZhdWx0KCkpfWVsc2UgdFswXS5mb2N1cygpfX1dKSYmZShpLnByb3RvdHlwZSxhKSxyJiZlKGksciksb30oKSxhPW51bGwscj1mdW5jdGlvbihlKXtpZighZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZSkpcmV0dXJuIGNvbnNvbGUud2FybihcIk1pY3JvTW9kYWw6IOKdl1NlZW1zIGxpa2UgeW91IGhhdmUgbWlzc2VkICVjJ1wiLmNvbmNhdChlLFwiJ1wiKSxcImJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7Y29sb3I6ICM1MDU5NmM7Zm9udC13ZWlnaHQ6IGJvbGQ7XCIsXCJJRCBzb21ld2hlcmUgaW4geW91ciBjb2RlLiBSZWZlciBleGFtcGxlIGJlbG93IHRvIHJlc29sdmUgaXQuXCIpLGNvbnNvbGUud2FybihcIiVjRXhhbXBsZTpcIixcImJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7Y29sb3I6ICM1MDU5NmM7Zm9udC13ZWlnaHQ6IGJvbGQ7XCIsJzxkaXYgY2xhc3M9XCJtb2RhbFwiIGlkPVwiJy5jb25jYXQoZSwnXCI+PC9kaXY+JykpLCExfSxzPWZ1bmN0aW9uKGUsdCl7aWYoZnVuY3Rpb24oZSl7ZS5sZW5ndGg8PTAmJihjb25zb2xlLndhcm4oXCJNaWNyb01vZGFsOiDinZdQbGVhc2Ugc3BlY2lmeSBhdCBsZWFzdCBvbmUgJWMnbWljcm9tb2RhbC10cmlnZ2VyJ1wiLFwiYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYTtjb2xvcjogIzUwNTk2Yztmb250LXdlaWdodDogYm9sZDtcIixcImRhdGEgYXR0cmlidXRlLlwiKSxjb25zb2xlLndhcm4oXCIlY0V4YW1wbGU6XCIsXCJiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhO2NvbG9yOiAjNTA1OTZjO2ZvbnQtd2VpZ2h0OiBib2xkO1wiLCc8YSBocmVmPVwiI1wiIGRhdGEtbWljcm9tb2RhbC10cmlnZ2VyPVwibXktbW9kYWxcIj48L2E+JykpfShlKSwhdClyZXR1cm4hMDtmb3IodmFyIG8gaW4gdClyKG8pO3JldHVybiEwfSx7aW5pdDpmdW5jdGlvbihlKXt2YXIgbz1PYmplY3QuYXNzaWduKHt9LHtvcGVuVHJpZ2dlcjpcImRhdGEtbWljcm9tb2RhbC10cmlnZ2VyXCJ9LGUpLG49dChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiW1wiLmNvbmNhdChvLm9wZW5UcmlnZ2VyLFwiXVwiKSkpLHI9ZnVuY3Rpb24oZSx0KXt2YXIgbz1bXTtyZXR1cm4gZS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgbj1lLmF0dHJpYnV0ZXNbdF0udmFsdWU7dm9pZCAwPT09b1tuXSYmKG9bbl09W10pLG9bbl0ucHVzaChlKX0pKSxvfShuLG8ub3BlblRyaWdnZXIpO2lmKCEwIT09by5kZWJ1Z01vZGV8fCExIT09cyhuLHIpKWZvcih2YXIgbCBpbiByKXt2YXIgYz1yW2xdO28udGFyZ2V0TW9kYWw9bCxvLnRyaWdnZXJzPXQoYyksYT1uZXcgaShvKX19LHNob3c6ZnVuY3Rpb24oZSx0KXt2YXIgbz10fHx7fTtvLnRhcmdldE1vZGFsPWUsITA9PT1vLmRlYnVnTW9kZSYmITE9PT1yKGUpfHwoYSYmYS5yZW1vdmVFdmVudExpc3RlbmVycygpLChhPW5ldyBpKG8pKS5zaG93TW9kYWwoKSl9LGNsb3NlOmZ1bmN0aW9uKGUpe2U/YS5jbG9zZU1vZGFsQnlJZChlKTphLmNsb3NlTW9kYWwoKX19KTtc
15InVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93JiYod2luZG93Lk1pY3JvTW9kYWw9bCk7ZXhwb3J0IGRlZmF1bHQgbDtcbiIsImltcG9ydCB7IGdldFdpbmRvdyB9IGZyb20gJ3Nzci13aW5kb3cnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUmVzaXplKHtcbiAgc3dpcGVyLFxuICBvbixcbiAgZW1pdFxufSkge1xuICBjb25zdCB3aW5kb3cgPSBnZXRXaW5kb3coKTtcbiAgbGV0IG9ic2VydmVyID0gbnVsbDtcbiAgbGV0IGFuaW1hdGlvbkZyYW1lID0gbnVsbDtcblxuICBjb25zdCByZXNpemVIYW5kbGVyID0gKCkgPT4ge1xuICAgIGlmICghc3dpcGVyIHx8IHN3aXBlci5kZXN0cm95ZWQgfHwgIXN3aXBlci5pbml0aWFsaXplZCkgcmV0dXJuO1xuICAgIGVtaXQoJ2JlZm9yZVJlc2l6ZScpO1xuICAgIGVtaXQoJ3Jlc2l6ZScpO1xuICB9O1xuXG4gIGNvbnN0IGNyZWF0ZU9ic2VydmVyID0gKCkgPT4ge1xuICAgIGlmICghc3dpcGVyIHx8IHN3aXBlci5kZXN0cm95ZWQgfHwgIXN3aXBlci5pbml0aWFsaXplZCkgcmV0dXJuO1xuICAgIG9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKGVudHJpZXMgPT4ge1xuICAgICAgYW5pbWF0aW9uRnJhbWUgPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgIGhlaWdodFxuICAgICAgICB9ID0gc3dpcGVyO1xuICAgICAgICBsZXQgbmV3V2lkdGggPSB3aWR0aDtcbiAgICAgICAgbGV0IG5ld0hlaWdodCA9IGhlaWdodDtcbiAgICAgICAgZW50cmllcy5mb3JFYWNoKCh7XG4gICAgICAgICAgY29udGVudEJveFNpemUsXG4gICAgICAgICAgY29udGVudFJlY3QsXG4gICAgICAgICAgdGFyZ2V0XG4gICAgICAgIH0pID0+IHtcbiAgICAgICAgICBpZiAodGFyZ2V0ICYmIHRhcmdldCAhPT0gc3dpcGVyLmVsKSByZXR1cm47XG4gICAgICAgICAgbmV3V2lkdGggPSBjb250ZW50UmVjdCA/IGNvbnRlbnRSZWN0LndpZHRoIDogKGNvbnRlbnRCb3hTaXplWzBdIHx8IGNvbnRlbnRCb3hTaXplKS5pbmxpbmVTaXplO1xuICAgICAgICAgIG5ld0hlaWdodCA9IGNvbnRlbnRSZWN0ID8gY29udGVudFJlY3QuaGVpZ2h0IDogKGNvbnRlbnRCb3hTaXplWzBdIHx8IGNvbnRlbnRCb3hTaXplKS5ibG9ja1NpemU7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChuZXdXaWR0aCAhPT0gd2lkdGggfHwgbmV3SGVpZ2h0ICE9PSBoZWlnaHQpIHtcbiAgICAgICAgICByZXNpemVIYW5kbGVyKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIG9ic2VydmVyLm9ic2VydmUoc3dpcGVyLmVsKTtcbiAgfTtcblxuICBjb25zdCByZW1vdmVPYnNlcnZlciA9ICgpID0+IHtcbiAgICBpZiAoYW5pbWF0aW9uRnJhbWUpIHtcbiAgICAgIHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZShhbmltYXRpb25GcmFtZSk7XG4gICAgfVxuXG4gICAgaWYgKG9ic2VydmVyICYmIG9ic2VydmVyLnVub2JzZXJ2ZSAmJiBzd2lwZXIuZWwpIHtcbiAgICAgIG9ic2VydmVyLnVub2JzZXJ2ZShzd2lwZXIuZWwpO1xuICAgICAgb2JzZXJ2ZXIgPSBudWxsO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBvcmllbnRhdGlvbkNoYW5nZUhhbmRsZXIgPSAoKSA9PiB7XG4gICAgaWYgKCFzd2lwZXIgfHwgc3dpcGVyLmRlc3Ryb3llZCB8fCAhc3dpcGVyLmluaXRpYWxpemVkKSByZXR1cm47XG4gICAgZW1pdCgnb3JpZW50YXRpb25jaGFuZ2UnKTtcbiAgfTtcblxuICBvbignaW5pdCcsICgpID0+IHtcbiAgICBpZiAoc3dpcGVyLnBhcmFtcy5yZXNpemVPYnNlcnZlciAmJiB0eXBlb2Ygd2luZG93LlJlc2l6ZU9ic2VydmVyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY3JlYXRlT2JzZXJ2ZXIoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgcmVzaXplSGFuZGxlcik7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ29yaWVudGF0aW9uY2hhbmdlJywgb3JpZW50YXRpb25DaGFuZ2VIYW5kbGVyKTtcbiAgfSk7XG4gIG9uKCdkZXN0cm95JywgKCkgPT4ge1xuICAgIHJlbW92ZU9ic2VydmVyKCk7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHJlc2l6ZUhhbmRsZXIpO1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdvcmllbnRhdGlvbmNoYW5nZScsIG9yaWVudGF0aW9uQ2hhbmdlSGFuZGxlcik7XG4gIH0pO1xufSIsImltcG9ydCB7IGdldFdpbmRvdyB9IGZyb20gJ3Nzci13aW5kb3cnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gT2JzZXJ2ZXIoe1xuICBzd2lwZXIsXG4gIGV4dGVuZFBhcmFtcyxcbiAgb24sXG4gIGVtaXRcbn0pIHtcbiAgY29uc3Qgb2JzZXJ2ZXJzID0gW107XG4gIGNvbnN0IHdpbmRvdyA9IGdldFdpbmRvdygpO1xuXG4gIGNvbnN0IGF0dGFjaCA9ICh0YXJnZXQsIG9wdGlvbnMgPSB7fSkgPT4ge1xuICAgIGNvbnN0IE9ic2VydmVyRnVuYyA9IHdpbmRvdy5NdXRhdGlvbk9ic2VydmVyIHx8IHdpbmRvdy5XZWJraXRNdXRhdGlvbk9ic2VydmVyO1xuICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IE9ic2VydmVyRnVuYyhtdXRhdGlvbnMgPT4ge1xuICAgICAgLy8gVGhlIG9ic2VydmVyVXBkYXRlIGV2ZW50IHNob3VsZCBvbmx5IGJlIHRyaWdnZXJlZFxuICAgICAgLy8gb25jZSBkZXNwaXRlIHRoZSBudW1iZXIgb2YgbXV0YXRpb25zLiAgQWRkaXRpb25hbFxuICAgICAgLy8gdHJpZ2dlcnMgYXJlIHJlZHVuZGFudCBhbmQgYXJlIHZlcnkgY29zdGx5XG4gICAgICBpZiAobXV0YXRpb25zLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICBlbWl0KCdvYnNlcnZlclVwZGF0ZScsIG11dGF0aW9uc1swXSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgb2JzZXJ2ZXJVcGRhdGUgPSBmdW5jdGlvbiBvYnNlcnZlclVwZGF0ZSgpIHtcbiAgICAgICAgZW1pdCgnb2JzZXJ2ZXJVcGRhdGUnLCBtdXRhdGlvbnNbMF0pO1xuICAgICAgfTtcblxuICAgICAgaWYgKHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUpIHtcbiAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShvYnNlcnZlclVwZGF0ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3aW5kb3cuc2V0VGltZW91dChvYnNlcnZlclVwZGF0ZSwgMCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgb2JzZXJ2ZXIub2JzZXJ2ZSh0YXJnZXQsIHtcbiAgICAgIGF0dHJpYnV0ZXM6IHR5cGVvZiBvcHRpb25zLmF0dHJpYnV0ZXMgPT09ICd1bmRlZmluZWQnID8gdHJ1ZSA6IG9wdGlvbnMuYXR0cmlidXRlcyxcbiAgICAgIGNoaWxkTGlzdDogdHlwZW9mIG9wdGlvbnMuY2hpbGRMaXN0ID09PSAndW5kZWZpbmVkJyA/IHRydWUgOiBvcHRpb25zLmNoaWxkTGlzdCxcbiAgICAgIGNoYXJhY3RlckRhdGE6IHR5cGVvZiBvcHRpb25zLmNoYXJhY3RlckRhdGEgPT09ICd1bmRlZmluZWQnID8gdHJ1ZSA6IG9wdGlvbnMuY2hhcmFjdGVyRGF0YVxuICAgIH0pO1xuICAgIG9ic2VydmVycy5wdXNoKG9ic2VydmVyKTtcbiAgfTtcblxuICBjb25zdCBpbml0ID0gKCkgPT4ge1xuICAgIGlmICghc3dpcGVyLnBhcmFtcy5vYnNlcnZlcikgcmV0dXJuO1xuXG4gICAgaWYgKHN3aXBlci5wYXJhbXMub2JzZXJ2ZVBhcmVudHMpIHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lclBhcmVud
15HMgPSBzd2lwZXIuJGVsLnBhcmVudHMoKTtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb250YWluZXJQYXJlbnRzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIGF0dGFjaChjb250YWluZXJQYXJlbnRzW2ldKTtcbiAgICAgIH1cbiAgICB9IC8vIE9ic2VydmUgY29udGFpbmVyXG5cblxuICAgIGF0dGFjaChzd2lwZXIuJGVsWzBdLCB7XG4gICAgICBjaGlsZExpc3Q6IHN3aXBlci5wYXJhbXMub2JzZXJ2ZVNsaWRlQ2hpbGRyZW5cbiAgICB9KTsgLy8gT2JzZXJ2ZSB3cmFwcGVyXG5cbiAgICBhdHRhY2goc3dpcGVyLiR3cmFwcGVyRWxbMF0sIHtcbiAgICAgIGF0dHJpYnV0ZXM6IGZhbHNlXG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgZGVzdHJveSA9ICgpID0+IHtcbiAgICBvYnNlcnZlcnMuZm9yRWFjaChvYnNlcnZlciA9PiB7XG4gICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgfSk7XG4gICAgb2JzZXJ2ZXJzLnNwbGljZSgwLCBvYnNlcnZlcnMubGVuZ3RoKTtcbiAgfTtcblxuICBleHRlbmRQYXJhbXMoe1xuICAgIG9ic2VydmVyOiBmYWxzZSxcbiAgICBvYnNlcnZlUGFyZW50czogZmFsc2UsXG4gICAgb2JzZXJ2ZVNsaWRlQ2hpbGRyZW46IGZhbHNlXG4gIH0pO1xuICBvbignaW5pdCcsIGluaXQpO1xuICBvbignZGVzdHJveScsIGRlc3Ryb3kpO1xufSIsImNvbnN0IGJhY2tTdXJmYWNlRml4ZWQgPSAoZmxhZyA9IHRydWUpID0+IHtcclxuICBjb25zdCByb290ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaHRtbCcpO1xyXG4gIGNvbnN0IHNjcm9sbFBvcyA9IGZsYWcgPyB3aW5kb3cucGFnZVlPZmZzZXQgOiBwYXJzZUludChyb290LnN0eWxlLnRvcCk7XHJcblxyXG4gIGNvbnN0IHN0eWxlcyA9IHtcclxuICAgIHBvc2l0aW9uOiAnZml4ZWQnLFxyXG4gICAgbGVmdDogJzBweCcsXHJcbiAgICB0b3A6IHNjcm9sbFBvcyAqIC0xICsgJ3B4JyxcclxuICAgIG92ZXJmbG93WTogJ3Njcm9sbCcsXHJcbiAgfTtcclxuXHJcbiAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLXN0JywgYCR7c2Nyb2xsUG9zfXB4YCk7XHJcblxyXG4gIHJvb3Quc3R5bGUud2lkdGggPSAnMTAwJSc7XHJcbiAgZm9yIChjb25zdCBwcm9wIGluIHN0eWxlcykge1xyXG4gICAgcm9vdC5zdHlsZVtwcm9wXSA9IGZsYWcgJiYgZmxhZyAhPT0gJ3Jlc2V0JyA/IHN0eWxlc1twcm9wXSA6ICcnO1xyXG4gIH1cclxuXHJcbiAgaWYgKCFmbGFnKSB7XHJcbiAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgc2Nyb2xsUG9zICogLTEpO1xyXG4gICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLXN0JywgJycpO1xyXG4gIH0gZWxzZSBpZiAoZmxhZyA9PT0gJ3Jlc2V0Jykge1xyXG4gICAgd2luZG93LnNjcm9sbFRvKDAsIDApO1xyXG4gIH1cclxufTtcclxuXHJcbmV4cG9ydCB7IGJhY2tTdXJmYWNlRml4ZWQgfTtcclxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgYmluZCA9IHJlcXVpcmUoJy4vaGVscGVycy9iaW5kJyk7XG5cbi8vIHV0aWxzIGlzIGEgbGlicmFyeSBvZiBnZW5lcmljIGhlbHBlciBmdW5jdGlvbnMgbm9uLXNwZWNpZmljIHRvIGF4aW9zXG5cbnZhciB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG52YXIga2luZE9mID0gKGZ1bmN0aW9uKGNhY2hlKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG4gIHJldHVybiBmdW5jdGlvbih0aGluZykge1xuICAgIHZhciBzdHIgPSB0b1N0cmluZy5jYWxsKHRoaW5nKTtcbiAgICByZXR1cm4gY2FjaGVbc3RyXSB8fCAoY2FjaGVbc3RyXSA9IHN0ci5zbGljZSg4LCAtMSkudG9Mb3dlckNhc2UoKSk7XG4gIH07XG59KShPYmplY3QuY3JlYXRlKG51bGwpKTtcblxuZnVuY3Rpb24ga2luZE9mVGVzdCh0eXBlKSB7XG4gIHR5cGUgPSB0eXBlLnRvTG93ZXJDYXNlKCk7XG4gIHJldHVybiBmdW5jdGlvbiBpc0tpbmRPZih0aGluZykge1xuICAgIHJldHVybiBraW5kT2YodGhpbmcpID09PSB0eXBlO1xuICB9O1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGFuIEFycmF5XG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYW4gQXJyYXksIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0FycmF5KHZhbCkge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWwpO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIHVuZGVmaW5lZFxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHRoZSB2YWx1ZSBpcyB1bmRlZmluZWQsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1VuZGVmaW5lZCh2YWwpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICd1bmRlZmluZWQnO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgQnVmZmVyXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBCdWZmZXIsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0J1ZmZlcih2YWwpIHtcbiAgcmV0dXJuIHZhbCAhPT0gbnVsbCAmJiAhaXNVbmRlZmluZWQodmFsKSAmJiB2YWwuY29uc3RydWN0b3IgIT09IG51bGwgJiYgIWlzVW5kZWZpbmVkKHZhbC5jb25zdHJ1Y3RvcilcbiAgICAmJiB0eXBlb2YgdmFsLmNvbnN0cnVjdG9yLmlzQnVmZmVyID09PSAnZnVuY3Rpb24nICYmIHZhbC5jb25zdHJ1Y3Rvci5pc0J1ZmZlcih2YWwpO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGFuIEFycmF5QnVmZmVyXG4gKlxuICogQGZ1bmN0aW9uXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhbiBBcnJheUJ1ZmZlciwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbnZhciBpc0FycmF
155QnVmZmVyID0ga2luZE9mVGVzdCgnQXJyYXlCdWZmZXInKTtcblxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgdmlldyBvbiBhbiBBcnJheUJ1ZmZlclxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgdmlldyBvbiBhbiBBcnJheUJ1ZmZlciwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXlCdWZmZXJWaWV3KHZhbCkge1xuICB2YXIgcmVzdWx0O1xuICBpZiAoKHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcpICYmIChBcnJheUJ1ZmZlci5pc1ZpZXcpKSB7XG4gICAgcmVzdWx0ID0gQXJyYXlCdWZmZXIuaXNWaWV3KHZhbCk7XG4gIH0gZWxzZSB7XG4gICAgcmVzdWx0ID0gKHZhbCkgJiYgKHZhbC5idWZmZXIpICYmIChpc0FycmF5QnVmZmVyKHZhbC5idWZmZXIpKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgU3RyaW5nXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBTdHJpbmcsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1N0cmluZyh2YWwpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgTnVtYmVyXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBOdW1iZXIsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc051bWJlcih2YWwpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICdudW1iZXInO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGFuIE9iamVjdFxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGFuIE9iamVjdCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbCkge1xuICByZXR1cm4gdmFsICE9PSBudWxsICYmIHR5cGVvZiB2YWwgPT09ICdvYmplY3QnO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgcGxhaW4gT2JqZWN0XG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIHBsYWluIE9iamVjdCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3QodmFsKSB7XG4gIGlmIChraW5kT2YodmFsKSAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIgcHJvdG90eXBlID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbCk7XG4gIHJldHVybiBwcm90b3R5cGUgPT09IG51bGwgfHwgcHJvdG90eXBlID09PSBPYmplY3QucHJvdG90eXBlO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRGF0ZVxuICpcbiAqIEBmdW5jdGlvblxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBEYXRlLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xudmFyIGlzRGF0ZSA9IGtpbmRPZlRlc3QoJ0RhdGUnKTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIEZpbGVcbiAqXG4gKiBAZnVuY3Rpb25cbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgRmlsZSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbnZhciBpc0ZpbGUgPSBraW5kT2ZUZXN0KCdGaWxlJyk7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBCbG9iXG4gKlxuICogQGZ1bmN0aW9uXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIEJ
15sb2IsIG90aGVyd2lzZSBmYWxzZVxuICovXG52YXIgaXNCbG9iID0ga2luZE9mVGVzdCgnQmxvYicpO1xuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRmlsZUxpc3RcbiAqXG4gKiBAZnVuY3Rpb25cbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgRmlsZSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbnZhciBpc0ZpbGVMaXN0ID0ga2luZE9mVGVzdCgnRmlsZUxpc3QnKTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIEZ1bmN0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBGdW5jdGlvbiwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsKSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbCkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBTdHJlYW1cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIFN0cmVhbSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzU3RyZWFtKHZhbCkge1xuICByZXR1cm4gaXNPYmplY3QodmFsKSAmJiBpc0Z1bmN0aW9uKHZhbC5waXBlKTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIEZvcm1EYXRhXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHRoaW5nIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhbiBGb3JtRGF0YSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRm9ybURhdGEodGhpbmcpIHtcbiAgdmFyIHBhdHRlcm4gPSAnW29iamVjdCBGb3JtRGF0YV0nO1xuICByZXR1cm4gdGhpbmcgJiYgKFxuICAgICh0eXBlb2YgRm9ybURhdGEgPT09ICdmdW5jdGlvbicgJiYgdGhpbmcgaW5zdGFuY2VvZiBGb3JtRGF0YSkgfHxcbiAgICB0b1N0cmluZy5jYWxsKHRoaW5nKSA9PT0gcGF0dGVybiB8fFxuICAgIChpc0Z1bmN0aW9uKHRoaW5nLnRvU3RyaW5nKSAmJiB0aGluZy50b1N0cmluZygpID09PSBwYXR0ZXJuKVxuICApO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgVVJMU2VhcmNoUGFyYW1zIG9iamVjdFxuICogQGZ1bmN0aW9uXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIFVSTFNlYXJjaFBhcmFtcyBvYmplY3QsIG90aGVyd2lzZSBmYWxzZVxuICovXG52YXIgaXNVUkxTZWFyY2hQYXJhbXMgPSBraW5kT2ZUZXN0KCdVUkxTZWFyY2hQYXJhbXMnKTtcblxuLyoqXG4gKiBUcmltIGV4Y2VzcyB3aGl0ZXNwYWNlIG9mZiB0aGUgYmVnaW5uaW5nIGFuZCBlbmQgb2YgYSBzdHJpbmdcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyIFRoZSBTdHJpbmcgdG8gdHJpbVxuICogQHJldHVybnMge1N0cmluZ30gVGhlIFN0cmluZyBmcmVlZCBvZiBleGNlc3Mgd2hpdGVzcGFjZVxuICovXG5mdW5jdGlvbiB0cmltKHN0cikge1xuICByZXR1cm4gc3RyLnRyaW0gPyBzdHIudHJpbSgpIDogc3RyLnJlcGxhY2UoL15cXHMrfFxccyskL2csICcnKTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgd2UncmUgcnVubmluZyBpbiBhIHN0YW5kYXJkIGJyb3dzZXIgZW52aXJvbm1lbnRcbiAqXG4gKiBUaGlzIGFsbG93cyBheGlvcyB0byBydW4gaW4gYSB3ZWIgd29ya2VyLCBhbmQgcmVhY3QtbmF0aXZlLlxuICogQm90aCBlbnZpcm9ubWVudHMgc3VwcG9ydCBYTUxIdHRwUmVxdWVzdCwgYnV0IG5vdCBmdWxseSBzdGFuZGFyZCBnbG9iYWxzLlxuICpcbiAqIHdlYiB3b3JrZXJzOlxuICogIHR5cGVvZiB3aW5kb3cgLT4gdW5kZWZpbmVkXG4gKiAgdHlwZW9mIGRvY3VtZW50IC0+IHVuZGVmaW5lZFxuICpcbiAqIHJlYWN0LW5hdGl2ZTpcbiAqICBuYXZpZ2F0b3IucHJvZHVjdCAtPiAnUmVhY3ROYXRpdmUnXG4gKiBuYXRpdmVzY3JpcHRcbiAqICBuYXZpZ2F0b3IucHJvZHVjdCAtPiAnTmF0aXZlU2NyaXB0JyBvciAnTlMnXG4gKi9cbmZ1bmN0aW9uIGlzU3RhbmRhcmRCcm93c2VyRW52KCkge1xuICBpZiAodHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgKG5hdmlnYXRvci5wcm9kdWN0ID09PSAnUmVhY3ROYXRpdmUnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdG9yLnByb2R1Y3QgPT09ICdOYXRpdmVTY3JpcHQnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdG9yLnByb2R1Y3QgPT09ICdOUycpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnXG4gICk7XG59XG5cbi8qKlxuICogSXRlcmF0ZSBvdmVyIGFuIEFycmF5IG9yIGFuIE9iamVjdCBpbnZva2luZyBhIGZ1bmN0aW9uIGZvciBlYWNoIGl0ZW0uXG4gKlxuICogSWYgYG9iamAgaXMgYW4gQXJyYXkgY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQgcGFzc2luZ1xuICogdGhlIHZhbHVlLCBpbmRleCwgYW5kIGNvbXBsZXRlIGFycmF5IGZvciBlYWNoIGl0ZW0uXG4gKlxuICogSWYgJ29iaicgaXMgYW4gT2JqZWN0IGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIHBhc3NpbmdcbiAqIHRoZSB2YWx1ZSwga2V5LCBhbmQgY29tcGxldGUgb2JqZWN0IGZvciBlYWNoIHByb3BlcnR5LlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fEFycmF5fSBvYmogVGhlIG9iamVjdCB0byBpdGVyYXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBUaGUgY2FsbGJhY2sgdG8gaW52b2tlIGZvciBlYWNoIGl0ZW1cbiAqL1xuZnVuY3Rpb24gZm9yRWFjaChvYmosIGZuKSB7XG4gIC8vIERvbid0IGJvdGhlciBpZiBubyB2YWx1ZSBwcm92aWRlZFxuICBpZiAob2JqID09PSBudWxsIHx8IHR5cGVvZiBvYmogPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gRm9yY2UgYW4gYXJyYXkgaWYgbm90IGFscmVhZHkgc29tZXRoaW5nIGl0ZXJhYmxlXG4gIGlmICh0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xuICAgIC8qZXNsaW50IG5vLXBhcmFtLXJlYXNzaWduOjAqL1xuICAgIG9iaiA9IFtvYmpdO1xuICB9XG5cbiAgaWYgKGlzQXJyYXkob2JqKSkge1xuICAgIC8vIEl0ZXJhdGUgb3ZlciBhcnJheSB2YWx1ZXNcbiAgICBmb3IgKHZhciBpID0gMCwgbCA9IG9iai5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGZuLmNhbGwobnVsbCwgb2JqW2ldLCBpLCBvYmopO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBJdGVyYXRlIG92ZXIgb2JqZWN0IGtleXNcbiAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkge1xuICAgICAgICBmbi5jYWxsKG51bGwsIG9ialtrZXldLCBrZXksIG9iaik7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQWNjZXB0cyB2YXJhcmdzIGV4cGVjdGluZyBlYWNoIGFyZ3VtZW50IHRvIGJlIGFuIG9iamVjdCwgdGhlblxuICogaW1tdXRhYmx5IG1lcmdlcyB0aGUgcHJv
15cGVydGllcyBvZiBlYWNoIG9iamVjdCBhbmQgcmV0dXJucyByZXN1bHQuXG4gKlxuICogV2hlbiBtdWx0aXBsZSBvYmplY3RzIGNvbnRhaW4gdGhlIHNhbWUga2V5IHRoZSBsYXRlciBvYmplY3QgaW5cbiAqIHRoZSBhcmd1bWVudHMgbGlzdCB3aWxsIHRha2UgcHJlY2VkZW5jZS5cbiAqXG4gKiBFeGFtcGxlOlxuICpcbiAqIGBgYGpzXG4gKiB2YXIgcmVzdWx0ID0gbWVyZ2Uoe2ZvbzogMTIzfSwge2ZvbzogNDU2fSk7XG4gKiBjb25zb2xlLmxvZyhyZXN1bHQuZm9vKTsgLy8gb3V0cHV0cyA0NTZcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmoxIE9iamVjdCB0byBtZXJnZVxuICogQHJldHVybnMge09iamVjdH0gUmVzdWx0IG9mIGFsbCBtZXJnZSBwcm9wZXJ0aWVzXG4gKi9cbmZ1bmN0aW9uIG1lcmdlKC8qIG9iajEsIG9iajIsIG9iajMsIC4uLiAqLykge1xuICB2YXIgcmVzdWx0ID0ge307XG4gIGZ1bmN0aW9uIGFzc2lnblZhbHVlKHZhbCwga2V5KSB7XG4gICAgaWYgKGlzUGxhaW5PYmplY3QocmVzdWx0W2tleV0pICYmIGlzUGxhaW5PYmplY3QodmFsKSkge1xuICAgICAgcmVzdWx0W2tleV0gPSBtZXJnZShyZXN1bHRba2V5XSwgdmFsKTtcbiAgICB9IGVsc2UgaWYgKGlzUGxhaW5PYmplY3QodmFsKSkge1xuICAgICAgcmVzdWx0W2tleV0gPSBtZXJnZSh7fSwgdmFsKTtcbiAgICB9IGVsc2UgaWYgKGlzQXJyYXkodmFsKSkge1xuICAgICAgcmVzdWx0W2tleV0gPSB2YWwuc2xpY2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0W2tleV0gPSB2YWw7XG4gICAgfVxuICB9XG5cbiAgZm9yICh2YXIgaSA9IDAsIGwgPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgZm9yRWFjaChhcmd1bWVudHNbaV0sIGFzc2lnblZhbHVlKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIEV4dGVuZHMgb2JqZWN0IGEgYnkgbXV0YWJseSBhZGRpbmcgdG8gaXQgdGhlIHByb3BlcnRpZXMgb2Ygb2JqZWN0IGIuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGEgVGhlIG9iamVjdCB0byBiZSBleHRlbmRlZFxuICogQHBhcmFtIHtPYmplY3R9IGIgVGhlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgZnJvbVxuICogQHBhcmFtIHtPYmplY3R9IHRoaXNBcmcgVGhlIG9iamVjdCB0byBiaW5kIGZ1bmN0aW9uIHRvXG4gKiBAcmV0dXJuIHtPYmplY3R9IFRoZSByZXN1bHRpbmcgdmFsdWUgb2Ygb2JqZWN0IGFcbiAqL1xuZnVuY3Rpb24gZXh0ZW5kKGEsIGIsIHRoaXNBcmcpIHtcbiAgZm9yRWFjaChiLCBmdW5jdGlvbiBhc3NpZ25WYWx1ZSh2YWwsIGtleSkge1xuICAgIGlmICh0aGlzQXJnICYmIHR5cGVvZiB2YWwgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGFba2V5XSA9IGJpbmQodmFsLCB0aGlzQXJnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYVtrZXldID0gdmFsO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBhO1xufVxuXG4vKipcbiAqIFJlbW92ZSBieXRlIG9yZGVyIG1hcmtlci4gVGhpcyBjYXRjaGVzIEVGIEJCIEJGICh0aGUgVVRGLTggQk9NKVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZW50IHdpdGggQk9NXG4gKiBAcmV0dXJuIHtzdHJpbmd9IGNvbnRlbnQgdmFsdWUgd2l0aG91dCBCT01cbiAqL1xuZnVuY3Rpb24gc3RyaXBCT00oY29udGVudCkge1xuICBpZiAoY29udGVudC5jaGFyQ29kZUF0KDApID09PSAweEZFRkYpIHtcbiAgICBjb250ZW50ID0gY29udGVudC5zbGljZSgxKTtcbiAgfVxuICByZXR1cm4gY29udGVudDtcbn1cblxuLyoqXG4gKiBJbmhlcml0IHRoZSBwcm90b3R5cGUgbWV0aG9kcyBmcm9tIG9uZSBjb25zdHJ1Y3RvciBpbnRvIGFub3RoZXJcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBzdXBlckNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge29iamVjdH0gW3Byb3BzXVxuICogQHBhcmFtIHtvYmplY3R9IFtkZXNjcmlwdG9yc11cbiAqL1xuXG5mdW5jdGlvbiBpbmhlcml0cyhjb25zdHJ1Y3Rvciwgc3VwZXJDb25zdHJ1Y3RvciwgcHJvcHMsIGRlc2NyaXB0b3JzKSB7XG4gIGNvbnN0cnVjdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIGRlc2NyaXB0b3JzKTtcbiAgY29uc3RydWN0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gY29uc3RydWN0b3I7XG4gIHByb3BzICYmIE9iamVjdC5hc3NpZ24oY29uc3RydWN0b3IucHJvdG90eXBlLCBwcm9wcyk7XG59XG5cbi8qKlxuICogUmVzb2x2ZSBvYmplY3Qgd2l0aCBkZWVwIHByb3RvdHlwZSBjaGFpbiB0byBhIGZsYXQgb2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlT2JqIHNvdXJjZSBvYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBbZGVzdE9ial1cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtmaWx0ZXJdXG4gKiBAcmV0dXJucyB7T2JqZWN0fVxuICovXG5cbmZ1bmN0aW9uIHRvRmxhdE9iamVjdChzb3VyY2VPYmosIGRlc3RPYmosIGZpbHRlcikge1xuICB2YXIgcHJvcHM7XG4gIHZhciBpO1xuICB2YXIgcHJvcDtcbiAgdmFyIG1lcmdlZCA9IHt9O1xuXG4gIGRlc3RPYmogPSBkZXN0T2JqIHx8IHt9O1xuXG4gIGRvIHtcbiAgICBwcm9wcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHNvdXJjZU9iaik7XG4gICAgaSA9IHByb3BzLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tID4gMCkge1xuICAgICAgcHJvcCA9IHByb3BzW2ldO1xuICAgICAgaWYgKCFtZXJnZWRbcHJvcF0pIHtcbiAgICAgICAgZGVzdE9ialtwcm9wXSA9IHNvdXJjZU9i
15altwcm9wXTtcbiAgICAgICAgbWVyZ2VkW3Byb3BdID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgc291cmNlT2JqID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHNvdXJjZU9iaik7XG4gIH0gd2hpbGUgKHNvdXJjZU9iaiAmJiAoIWZpbHRlciB8fCBmaWx0ZXIoc291cmNlT2JqLCBkZXN0T2JqKSkgJiYgc291cmNlT2JqICE9PSBPYmplY3QucHJvdG90eXBlKTtcblxuICByZXR1cm4gZGVzdE9iajtcbn1cblxuLypcbiAqIGRldGVybWluZXMgd2hldGhlciBhIHN0cmluZyBlbmRzIHdpdGggdGhlIGNoYXJhY3RlcnMgb2YgYSBzcGVjaWZpZWQgc3RyaW5nXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gKiBAcGFyYW0ge1N0cmluZ30gc2VhcmNoU3RyaW5nXG4gKiBAcGFyYW0ge051bWJlcn0gW3Bvc2l0aW9uPSAwXVxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGVuZHNXaXRoKHN0ciwgc2VhcmNoU3RyaW5nLCBwb3NpdGlvbikge1xuICBzdHIgPSBTdHJpbmcoc3RyKTtcbiAgaWYgKHBvc2l0aW9uID09PSB1bmRlZmluZWQgfHwgcG9zaXRpb24gPiBzdHIubGVuZ3RoKSB7XG4gICAgcG9zaXRpb24gPSBzdHIubGVuZ3RoO1xuICB9XG4gIHBvc2l0aW9uIC09IHNlYXJjaFN0cmluZy5sZW5ndGg7XG4gIHZhciBsYXN0SW5kZXggPSBzdHIuaW5kZXhPZihzZWFyY2hTdHJpbmcsIHBvc2l0aW9uKTtcbiAgcmV0dXJuIGxhc3RJbmRleCAhPT0gLTEgJiYgbGFzdEluZGV4ID09PSBwb3NpdGlvbjtcbn1cblxuXG4vKipcbiAqIFJldHVybnMgbmV3IGFycmF5IGZyb20gYXJyYXkgbGlrZSBvYmplY3RcbiAqIEBwYXJhbSB7Kn0gW3RoaW5nXVxuICogQHJldHVybnMge0FycmF5fVxuICovXG5mdW5jdGlvbiB0b0FycmF5KHRoaW5nKSB7XG4gIGlmICghdGhpbmcpIHJldHVybiBudWxsO1xuICB2YXIgaSA9IHRoaW5nLmxlbmd0aDtcbiAgaWYgKGlzVW5kZWZpbmVkKGkpKSByZXR1cm4gbnVsbDtcbiAgdmFyIGFyciA9IG5ldyBBcnJheShpKTtcbiAgd2hpbGUgKGktLSA+IDApIHtcbiAgICBhcnJbaV0gPSB0aGluZ1tpXTtcbiAgfVxuICByZXR1cm4gYXJyO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xudmFyIGlzVHlwZWRBcnJheSA9IChmdW5jdGlvbihUeXBlZEFycmF5KSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG4gIHJldHVybiBmdW5jdGlvbih0aGluZykge1xuICAgIHJldHVybiBUeXBlZEFycmF5ICYmIHRoaW5nIGluc3RhbmNlb2YgVHlwZWRBcnJheTtcbiAgfTtcbn0pKHR5cGVvZiBVaW50OEFycmF5ICE9PSAndW5kZWZpbmVkJyAmJiBPYmplY3QuZ2V0UHJvdG90eXBlT2YoVWludDhBcnJheSkpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgaXNBcnJheTogaXNBcnJheSxcbiAgaXNBcnJheUJ1ZmZlcjogaXNBcnJheUJ1ZmZlcixcbiAgaXNCdWZmZXI6IGlzQnVmZmVyLFxuICBpc0Zvcm1EYXRhOiBpc0Zvcm1EYXRhLFxuICBpc0FycmF5QnVmZmVyVmlldzogaXNBcnJheUJ1ZmZlclZpZXcsXG4gIGlzU3RyaW5nOiBpc1N0cmluZyxcbiAgaXNOdW1iZXI6IGlzTnVtYmVyLFxuICBpc09iamVjdDogaXNPYmplY3QsXG4gIGlzUGxhaW5PYmplY3Q6IGlzUGxhaW5PYmplY3QsXG4gIGlzVW5kZWZpbmVkOiBpc1VuZGVmaW5lZCxcbiAgaXNEYXRlOiBpc0RhdGUsXG4gIGlzRmlsZTogaXNGaWxlLFxuICBpc0Jsb2I6IGlzQmxvYixcbiAgaXNGdW5jdGlvbjogaXNGdW5jdGlvbixcbiAgaXNTdHJlYW06IGlzU3RyZWFtLFxuICBpc1VSTFNlYXJjaFBhcmFtczogaXNVUkxTZWFyY2hQYXJhbXMsXG4gIGlzU3RhbmRhcmRCcm93c2VyRW52OiBpc1N0YW5kYXJkQnJvd3NlckVudixcbiAgZm9yRWFjaDogZm9yRWFjaCxcbiAgbWVyZ2U6IG1lcmdlLFxuICBleHRlbmQ6IGV4dGVuZCxcbiAgdHJpbTogdHJpbSxcbiAgc3RyaXBCT006IHN0cmlwQk9NLFxuICBpbmhlcml0czogaW5oZXJpdHMsXG4gIHRvRmxhdE9iamVjdDogdG9GbGF0T2JqZWN0LFxuICBraW5kT2Y6IGtpbmRPZixcbiAga2luZE9mVGVzdDoga2luZE9mVGVzdCxcbiAgZW5kc1dpdGg6IGVuZHNXaXRoLFxuICB0b0FycmF5OiB0b0FycmF5LFxuICBpc1R5cGVkQXJyYXk6IGlzVHlwZWRBcnJheSxcbiAgaXNGaWxlTGlzdDogaXNGaWxlTGlzdFxufTtcbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBiaW5kKGZuLCB0aGlzQXJnKSB7XG4gIHJldHVybiBmdW5jdGlvbiB3cmFwKCkge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKykge1xuICAgICAgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICB9XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoaXNBcmcsIGFyZ3MpO1xuICB9O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xuXG5mdW5jdGlvbiBlbmNvZGUodmFsKSB7XG4gIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQodmFsKS5cbiAgICByZXBsYWNlKC8lM0EvZ2ksICc6JykuXG4gICAgcmVwbGFjZSgvJTI0L2csICckJykuXG4gICAgcmVwbGFjZSgvJTJDL2dpLCAnLCcpLlxuICAgIHJlcGxhY2UoLyUyMC9nLCAnKycpLlxuICAgIHJlcGxhY2UoLyU1Qi9naSwgJ1snKS5cbiAgICByZXBsYWNlKC8lNUQvZ2ksICddJyk7XG59XG5cbi8qKlxuICogQnVpbGQgYSBVUkwgYnkgYXBwZW5kaW5nIHBhcmFtcyB0byB0aGUgZW5kXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHVybCBUaGUgYmFzZSBvZiB0aGUgdXJsIChlLmcuLCBodHRwOi8vd3d3Lmdvb2dsZS5jb20pXG4gKiBAcGFyYW0ge29iamVjdH0gW3BhcmFtc10gVGhlIHBhcmFtcyB0byBiZSBhcHBlbmRlZFxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGZvcm1hdHRlZCB1cmxcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBidWlsZFVSTCh1cmwsIHBhcmFtcywgcGFyYW1zU2VyaWFsaXplcikge1xuICAvKmVzbGludCBuby1wYXJhbS1yZWFzc2lnbjowKi9cbiAgaWYgKCFwYXJhbXMpIHtcbiAgICByZXR1cm4gdXJsO1xuICB9XG5cbiAgdmFyIHNlcmlhbGl6ZWRQYXJhbXM7XG4gIGlmIChwYXJhbXNTZXJpYWxpemVyKSB7XG4gICAgc2VyaWFsaXplZFBhcmFtcyA9IHBhcmFtc1NlcmlhbGl6ZXIocGFyYW1zKTtcbiAgfSBlbHNlIGlmICh1dGlscy5pc1VSTFNlYXJjaFBhcmFtcyhwYXJhbXMpKSB7XG4gICAgc2VyaWFsaXplZFBhcmFtcyA9IHBhcmFtcy50b1N0cmluZygpO1xuICB9IGVsc2Uge1xuICAgIHZhciBwYXJ0cyA9IFtdO1xuXG4gICAgdXRpbHMuZm9yRWFjaChwYXJhbXMsIGZ1bmN0aW9uIHNlcmlhbGl6ZSh2YWwsIGtleSkge1xuICAgICAgaWYgKHZhbCA9PT0gbnVsbCB8fCB0eXBlb2YgdmFsID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh1dGlscy5pc0FycmF
155KHZhbCkpIHtcbiAgICAgICAga2V5ID0ga2V5ICsgJ1tdJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhbCA9IFt2YWxdO1xuICAgICAgfVxuXG4gICAgICB1dGlscy5mb3JFYWNoKHZhbCwgZnVuY3Rpb24gcGFyc2VWYWx1ZSh2KSB7XG4gICAgICAgIGlmICh1dGlscy5pc0RhdGUodikpIHtcbiAgICAgICAgICB2ID0gdi50b0lTT1N0cmluZygpO1xuICAgICAgICB9IGVsc2UgaWYgKHV0aWxzLmlzT2JqZWN0KHYpKSB7XG4gICAgICAgICAgdiA9IEpTT04uc3RyaW5naWZ5KHYpO1xuICAgICAgICB9XG4gICAgICAgIHBhcnRzLnB1c2goZW5jb2RlKGtleSkgKyAnPScgKyBlbmNvZGUodikpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBzZXJpYWxpemVkUGFyYW1zID0gcGFydHMuam9pbignJicpO1xuICB9XG5cbiAgaWYgKHNlcmlhbGl6ZWRQYXJhbXMpIHtcbiAgICB2YXIgaGFzaG1hcmtJbmRleCA9IHVybC5pbmRleE9mKCcjJyk7XG4gICAgaWYgKGhhc2htYXJrSW5kZXggIT09IC0xKSB7XG4gICAgICB1cmwgPSB1cmwuc2xpY2UoMCwgaGFzaG1hcmtJbmRleCk7XG4gICAgfVxuXG4gICAgdXJsICs9ICh1cmwuaW5kZXhPZignPycpID09PSAtMSA/ICc/JyA6ICcmJykgKyBzZXJpYWxpemVkUGFyYW1zO1xuICB9XG5cbiAgcmV0dXJuIHVybDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcblxuZnVuY3Rpb24gSW50ZXJjZXB0b3JNYW5hZ2VyKCkge1xuICB0aGlzLmhhbmRsZXJzID0gW107XG59XG5cbi8qKlxuICogQWRkIGEgbmV3IGludGVyY2VwdG9yIHRvIHRoZSBzdGFja1xuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bGZpbGxlZCBUaGUgZnVuY3Rpb24gdG8gaGFuZGxlIGB0aGVuYCBmb3IgYSBgUHJvbWlzZWBcbiAqIEBwYXJhbSB7RnVuY3Rpb259IHJlamVjdGVkIFRoZSBmdW5jdGlvbiB0byBoYW5kbGUgYHJlamVjdGAgZm9yIGEgYFByb21pc2VgXG4gKlxuICogQHJldHVybiB7TnVtYmVyfSBBbiBJRCB1c2VkIHRvIHJlbW92ZSBpbnRlcmNlcHRvciBsYXRlclxuICovXG5JbnRlcmNlcHRvck1hbmFnZXIucHJvdG90eXBlLnVzZSA9IGZ1bmN0aW9uIHVzZShmdWxmaWxsZWQsIHJlamVjdGVkLCBvcHRpb25zKSB7XG4gIHRoaXMuaGFuZGxlcnMucHVzaCh7XG4gICAgZnVsZmlsbGVkOiBmdWxmaWxsZWQsXG4gICAgcmVqZWN0ZWQ6IHJlamVjdGVkLFxuICAgIHN5bmNocm9ub3VzOiBvcHRpb25zID8gb3B0aW9ucy5zeW5jaHJvbm91cyA6IGZhbHNlLFxuICAgIHJ1bldoZW46IG9wdGlvbnMgPyBvcHRpb25zLnJ1bldoZW4gOiBudWxsXG4gIH0pO1xuICByZXR1cm4gdGhpcy5oYW5kbGVycy5sZW5ndGggLSAxO1xufTtcblxuLyoqXG4gKiBSZW1vdmUgYW4gaW50ZXJjZXB0b3IgZnJvbSB0aGUgc3RhY2tcbiAqXG4gKiBAcGFyYW0ge051bWJlcn0gaWQgVGhlIElEIHRoYXQgd2FzIHJldHVybmVkIGJ5IGB1c2VgXG4gKi9cbkludGVyY2VwdG9yTWFuYWdlci5wcm90b3R5cGUuZWplY3QgPSBmdW5jdGlvbiBlamVjdChpZCkge1xuICBpZiAodGhpcy5oYW5kbGVyc1tpZF0pIHtcbiAgICB0aGlzLmhhbmRsZXJzW2lkXSA9IG51bGw7XG4gIH1cbn07XG5cbi8qKlxuICogSXRlcmF0ZSBvdmVyIGFsbCB0aGUgcmVnaXN0ZXJlZCBpbnRlcmNlcHRvcnNcbiAqXG4gKiBUaGlzIG1ldGhvZCBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIGZvciBza2lwcGluZyBvdmVyIGFueVxuICogaW50ZXJjZXB0b3JzIHRoYXQgbWF5IGhhdmUgYmVjb21lIGBudWxsYCBjYWxsaW5nIGBlamVjdGAuXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gVGhlIGZ1bmN0aW9uIHRvIGNhbGwgZm9yIGVhY2ggaW50ZXJjZXB0b3JcbiAqL1xuSW50ZXJjZXB0b3JNYW5hZ2VyLnByb3RvdHlwZS5mb3JFYWNoID0gZnVuY3Rpb24gZm9yRWFjaChmbikge1xuICB1dGlscy5mb3JFYWNoKHRoaXMuaGFuZGxlcnMsIGZ1bmN0aW9uIGZvckVhY2hIYW5kbGVyKGgpIHtcbiAgICBpZiAoaCAhPT0gbnVsbCkge1xuICAgICAgZm4oaCk7XG4gICAgfVxuICB9KTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gSW50ZXJjZXB0b3JNYW5hZ2VyO1xuIiwiZXhwb3J0IGRlZmF1bHQgKHR5cGVvZiBnbG9iYWwgIT09IFwidW5kZWZpbmVkXCIgPyBnbG9iYWwgOlxuICB0eXBlb2Ygc2VsZiAhPT0gXCJ1bmRlZmluZWRcIiA/IHNlbGYgOlxuICB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93IDoge30pOyIsIi8vIHNoaW0gZm9yIHVzaW5nIHByb2Nlc3MgaW4gYnJvd3NlclxuLy8gYmFzZWQgb2ZmIGh0dHBzOi8vZ2l0aHViLmNvbS9kZWZ1bmN0em9tYmllL25vZGUtcHJvY2Vzcy9ibG9iL21hc3Rlci9icm93c2VyLmpzXG5cbmZ1bmN0aW9uIGRlZmF1bHRTZXRUaW1vdXQoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG5mdW5jdGlvbiBkZWZhdWx0Q2xlYXJUaW1lb3V0ICgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCcpO1xufVxudmFyIGNhY2hlZFNldFRpbWVvdXQgPSBkZWZhdWx0U2V0VGltb3V0O1xudmFyIGNhY2hlZENsZWFyVGltZW91dCA9IGRlZmF1bHRDbGVhclRpbWVvdXQ7XG5pZiAodHlwZW9mIGdsb2JhbC5zZXRUaW1lb3V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2FjaGVkU2V0VGltZW91dCA9IHNldFRpbWVvdXQ7XG59XG5pZiAodHlwZW9mIGdsb2JhbC5jbGVhclRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7XG59XG5cbmZ1bmN0aW9uIHJ1blRpbWVvdXQoZnVuKSB7XG4gICAgaWYgKGNhY2hlZFNldFRpbWVvdXQgPT09IHNldFRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIC8vIGlmIHNldFRpbWVvdXQgd2Fzbid0IGF2YWlsYWJsZSBidXQgd2FzIGxhdHRlciBkZWZpbmVkXG4gICAgaWYgKChjYWNoZWRTZXRUaW1lb3V0ID09PSBkZWZh
15dWx0U2V0VGltb3V0IHx8ICFjYWNoZWRTZXRUaW1lb3V0KSAmJiBzZXRUaW1lb3V0KSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuICAgICAgICByZXR1cm4gc2V0VGltZW91dChmdW4sIDApO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICAvLyB3aGVuIHdoZW4gc29tZWJvZHkgaGFzIHNjcmV3ZWQgd2l0aCBzZXRUaW1lb3V0IGJ1dCBubyBJLkUuIG1hZGRuZXNzXG4gICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfSBjYXRjaChlKXtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIFdoZW4gd2UgYXJlIGluIEkuRS4gYnV0IHRoZSBzY3JpcHQgaGFzIGJlZW4gZXZhbGVkIHNvIEkuRS4gZG9lc24ndCB0cnVzdCB0aGUgZ2xvYmFsIG9iamVjdCB3aGVuIGNhbGxlZCBub3JtYWxseVxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbChudWxsLCBmdW4sIDApO1xuICAgICAgICB9IGNhdGNoKGUpe1xuICAgICAgICAgICAgLy8gc2FtZSBhcyBhYm92ZSBidXQgd2hlbiBpdCdzIGEgdmVyc2lvbiBvZiBJLkUuIHRoYXQgbXVzdCBoYXZlIHRoZSBnbG9iYWwgb2JqZWN0IGZvciAndGhpcycsIGhvcGZ1bGx5IG91ciBjb250ZXh0IGNvcnJlY3Qgb3RoZXJ3aXNlIGl0IHdpbGwgdGhyb3cgYSBnbG9iYWwgZXJyb3JcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0LmNhbGwodGhpcywgZnVuLCAwKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG59XG5mdW5jdGlvbiBydW5DbGVhclRpbWVvdXQobWFya2VyKSB7XG4gICAgaWYgKGNhY2hlZENsZWFyVGltZW91dCA9PT0gY2xlYXJUaW1lb3V0KSB7XG4gICAgICAgIC8vbm9ybWFsIGVudmlyb21lbnRzIGluIHNhbmUgc2l0dWF0aW9uc1xuICAgICAgICByZXR1cm4gY2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfVxuICAgIC8vIGlmIGNsZWFyVGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBpZiAoKGNhY2hlZENsZWFyVGltZW91dCA9PT0gZGVmYXVsdENsZWFyVGltZW91dCB8fCAhY2FjaGVkQ2xlYXJUaW1lb3V0KSAmJiBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gY2xlYXJUaW1lb3V0O1xuICAgICAgICByZXR1cm4gY2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH0gY2F0Y2ggKGUpe1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0ICB0cnVzdCB0aGUgZ2xvYmFsIG9iamVjdCB3aGVuIGNhbGxlZCBub3JtYWxseVxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dC5jYWxsKG51bGwsIG1hcmtlcik7XG4gICAgICAgIH0gY2F0Y2ggKGUpe1xuICAgICAgICAgICAgLy8gc2FtZSBhcyBhYm92ZSBidXQgd2hlbiBpdCdzIGEgdmVyc2lvbiBvZiBJLkUuIHRoYXQgbXVzdCBoYXZlIHRoZSBnbG9iYWwgb2JqZWN0IGZvciAndGhpcycsIGhvcGZ1bGx5IG91ciBjb250ZXh0IGNvcnJlY3Qgb3RoZXJ3aXNlIGl0IHdpbGwgdGhyb3cgYSBnbG9iYWwgZXJyb3IuXG4gICAgICAgICAgICAvLyBTb21lIHZlcnNpb25zIG9mIEkuRS4gaGF2ZSBkaWZmZXJlbnQgcnVsZXMgZm9yIGNsZWFyVGltZW91dCB2cyBzZXRUaW1lb3V0XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwodGhpcywgbWFya2VyKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG5cbn1cbnZhciBxdWV1ZSA9IFtdO1xudmFyIGRyYWluaW5nID0gZmFsc2U7XG52YXIgY3VycmVudFF1ZXVlO1xudmFyIHF1ZXVlSW5kZXggPSAtMTtcblxuZnVuY3Rpb24gY2xlYW5VcE5leHRUaWNrKCkge1xuICAgIGlmICghZHJhaW5pbmcgfHwgIWN1cnJlbnRRdWV1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgaWYgKGN1cnJlbnRRdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgcXVldWUgPSBjdXJyZW50UXVldWUuY29uY2F0KHF1ZXVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBxdWV1ZUluZGV4ID0gLTE7XG4gICAgfVxuICAgIGlmIChxdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgZHJhaW5RdWV1ZSgpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZHJhaW5RdWV1ZSgpIHtcbiAgICBpZiAoZHJhaW5pbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgdGltZW91dCA9IHJ1blRpbWVvdXQoY2xlYW5VcE5leHRUaWNrKTtcbiAgICBkcmFpbmluZyA9IHRydWU7XG5cbiAgICB2YXIgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIHdoaWxlKGxlbikge1xuICAgICAgICBjdXJyZW50UXVldWUgPSBxdWV1ZTtcbiAgICAgICAgcXVldWUgPSBbXTtcbiAgICAgICAgd2hpbGUgKCsrcXVldWVJbmRleCA8IGxlbikge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRRdWV1ZSkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRRdWV1ZVtxdWV1ZUluZGV4XS5ydW4oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBxdWV1ZUluZGV4ID0gLTE7XG4gICAgICAgIGxlbiA9IHF1ZXVlLmxlbmd0aDtcbiAgICB9XG4gICAgY3VycmVudFF1ZXVlID0gbnVsbDtcbiAgICBkcmFpbmluZyA9IGZhbHNlO1xuICAgIHJ1bkNsZWFyVGltZW91dCh0aW1lb3V0KTtcbn1cbmZ1bmN0aW9uIG5leHRUaWNrKGZ1bikge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAxKTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGFyZ3NbaSAtIDFdID0gYXJndW1lbnRzW2ldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHF1ZXVlLnB1c2gobmV3IEl0ZW0oZnVuLCBhcmdzKSk7XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCA9PT0gMSAmJiAhZHJhaW5pbmcpIHtcbiAgICAgICAgcnVuVGltZW91dChkcmFpblF1ZXVlKTtcbiAgICB9XG59XG4vLyB2OCBsaWtlcyBwcmVkaWN0aWJsZSBvYmplY3RzXG5mdW5jdGlvbiBJdGVtKGZ1biwgYXJ
15yYXkpIHtcbiAgICB0aGlzLmZ1biA9IGZ1bjtcbiAgICB0aGlzLmFycmF5ID0gYXJyYXk7XG59XG5JdGVtLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5mdW4uYXBwbHkobnVsbCwgdGhpcy5hcnJheSk7XG59O1xudmFyIHRpdGxlID0gJ2Jyb3dzZXInO1xudmFyIHBsYXRmb3JtID0gJ2Jyb3dzZXInO1xudmFyIGJyb3dzZXIgPSB0cnVlO1xudmFyIGVudiA9IHt9O1xudmFyIGFyZ3YgPSBbXTtcbnZhciB2ZXJzaW9uID0gJyc7IC8vIGVtcHR5IHN0cmluZyB0byBhdm9pZCByZWdleHAgaXNzdWVzXG52YXIgdmVyc2lvbnMgPSB7fTtcbnZhciByZWxlYXNlID0ge307XG52YXIgY29uZmlnID0ge307XG5cbmZ1bmN0aW9uIG5vb3AoKSB7fVxuXG52YXIgb24gPSBub29wO1xudmFyIGFkZExpc3RlbmVyID0gbm9vcDtcbnZhciBvbmNlID0gbm9vcDtcbnZhciBvZmYgPSBub29wO1xudmFyIHJlbW92ZUxpc3RlbmVyID0gbm9vcDtcbnZhciByZW1vdmVBbGxMaXN0ZW5lcnMgPSBub29wO1xudmFyIGVtaXQgPSBub29wO1xuXG5mdW5jdGlvbiBiaW5kaW5nKG5hbWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuYmluZGluZyBpcyBub3Qgc3VwcG9ydGVkJyk7XG59XG5cbmZ1bmN0aW9uIGN3ZCAoKSB7IHJldHVybiAnLycgfVxuZnVuY3Rpb24gY2hkaXIgKGRpcikge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkJyk7XG59ZnVuY3Rpb24gdW1hc2soKSB7IHJldHVybiAwOyB9XG5cbi8vIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2t1bWF2aXMvYnJvd3Nlci1wcm9jZXNzLWhydGltZS9ibG9iL21hc3Rlci9pbmRleC5qc1xudmFyIHBlcmZvcm1hbmNlID0gZ2xvYmFsLnBlcmZvcm1hbmNlIHx8IHt9O1xudmFyIHBlcmZvcm1hbmNlTm93ID1cbiAgcGVyZm9ybWFuY2Uubm93ICAgICAgICB8fFxuICBwZXJmb3JtYW5jZS5tb3pOb3cgICAgIHx8XG4gIHBlcmZvcm1hbmNlLm1zTm93ICAgICAgfHxcbiAgcGVyZm9ybWFuY2Uub05vdyAgICAgICB8fFxuICBwZXJmb3JtYW5jZS53ZWJraXROb3cgIHx8XG4gIGZ1bmN0aW9uKCl7IHJldHVybiAobmV3IERhdGUoKSkuZ2V0VGltZSgpIH07XG5cbi8vIGdlbmVyYXRlIHRpbWVzdGFtcCBvciBkZWx0YVxuLy8gc2VlIGh0dHA6Ly9ub2RlanMub3JnL2FwaS9wcm9jZXNzLmh0bWwjcHJvY2Vzc19wcm9jZXNzX2hydGltZVxuZnVuY3Rpb24gaHJ0aW1lKHByZXZpb3VzVGltZXN0YW1wKXtcbiAgdmFyIGNsb2NrdGltZSA9IHBlcmZvcm1hbmNlTm93LmNhbGwocGVyZm9ybWFuY2UpKjFlLTM7XG4gIHZhciBzZWNvbmRzID0gTWF0aC5mbG9vcihjbG9ja3RpbWUpO1xuICB2YXIgbmFub3NlY29uZHMgPSBNYXRoLmZsb29yKChjbG9ja3RpbWUlMSkqMWU5KTtcbiAgaWYgKHByZXZpb3VzVGltZXN0YW1wKSB7XG4gICAgc2Vjb25kcyA9IHNlY29uZHMgLSBwcmV2aW91c1RpbWVzdGFtcFswXTtcbiAgICBuYW5vc2Vjb25kcyA9IG5hbm9zZWNvbmRzIC0gcHJldmlvdXNUaW1lc3RhbXBbMV07XG4gICAgaWYgKG5hbm9zZWNvbmRzPDApIHtcbiAgICAgIHNlY29uZHMtLTtcbiAgICAgIG5hbm9zZWNvbmRzICs9IDFlOTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFtzZWNvbmRzLG5hbm9zZWNvbmRzXVxufVxuXG52YXIgc3RhcnRUaW1lID0gbmV3IERhdGUoKTtcbmZ1bmN0aW9uIHVwdGltZSgpIHtcbiAgdmFyIGN1cnJlbnRUaW1lID0gbmV3IERhdGUoKTtcbiAgdmFyIGRpZiA9IGN1cnJlbnRUaW1lIC0gc3RhcnRUaW1lO1xuICByZXR1cm4gZGlmIC8gMTAwMDtcbn1cblxudmFyIGJyb3dzZXIkMSA9IHtcbiAgbmV4dFRpY2s6IG5leHRUaWNrLFxuICB0aXRsZTogdGl0bGUsXG4gIGJyb3dzZXI6IGJyb3dzZXIsXG4gIGVudjogZW52LFxuICBhcmd2OiBhcmd2LFxuICB2ZXJzaW9uOiB2ZXJzaW9uLFxuICB2ZXJzaW9uczogdmVyc2lvbnMsXG4gIG9uOiBvbixcbiAgYWRkTGlzdGVuZXI6IGFkZExpc3RlbmVyLFxuICBvbmNlOiBvbmNlLFxuICBvZmY6IG9mZixcbiAgcmVtb3ZlTGlzdGVuZXI6IHJlbW92ZUxpc3RlbmVyLFxuICByZW1vdmVBbGxMaXN0ZW5lcnM6IHJlbW92ZUFsbExpc3RlbmVycyxcbiAgZW1pdDogZW1pdCxcbiAgYmluZGluZzogYmluZGluZyxcbiAgY3dkOiBjd2QsXG4gIGNoZGlyOiBjaGRpcixcbiAgdW1hc2s6IHVtYXNrLFxuICBocnRpbWU6IGhydGltZSxcbiAgcGxhdGZvcm06IHBsYXRmb3JtLFxuICByZWxlYXNlOiByZWxlYXNlLFxuICBjb25maWc6IGNvbmZpZyxcbiAgdXB0aW1lOiB1cHRpbWVcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGJyb3dzZXIkMTtcbmV4cG9ydCB7IGFkZExpc3RlbmVyLCBhcmd2LCBiaW5kaW5nLCBicm93c2VyLCBjaGRpciwgY29uZmlnLCBjd2QsIGVtaXQsIGVudiwgaHJ0aW1lLCBuZXh0VGljaywgb2ZmLCBvbiwgb25jZSwgcGxhdGZvcm0sIHJlbGVhc2UsIHJlbW92ZUFsbExpc3RlbmVycywgcmVtb3ZlTGlzdGVuZXIsIHRpdGxlLCB1bWFzaywgdXB0aW1lLCB2ZXJzaW9uLCB2ZXJzaW9ucyB9O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIG5vcm1hbGl6ZUhlYWRlck5hbWUoaGVhZGVycywgbm9ybWFsaXplZE5hbWUpIHtcbiAgdXRpbHMuZm9yRWFjaChoZWFkZXJzLCBmdW5jdGlvbiBwcm9jZXNzSGVhZGVyKHZhbHVlLCBuYW1lKSB7XG4gICAgaWYgKG5hbWUgIT09IG5vcm1hbGl6ZWROYW1lICYmIG5hbWUudG9VcHBlckNhc2UoKSA9PT0gbm9ybWFsaXplZE5hbWUudG9VcHBlckNhc2UoKSkge1xuICAgICAgaGVhZGVyc1tub3JtYWxpemVkTmFtZV0gPSB2YWx1ZTtcbiAgICAgIGRlbGV0ZSBoZWFkZXJzW25hbWVdO1xuICAgIH1cbiAgfSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xuXG4vKipcbiAqIENyZWF0ZSBhbiBFcnJvciB3aXRoIHRoZSBzcGVjaWZpZWQgbWVzc2FnZSwgY29uZmlnLCBlcnJvciBjb2RlLCByZXF1ZXN0IGFuZCByZXNwb25zZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbY29kZV0gVGhlIGVycm9yIGNvZGUgKGZvciBleGFtcGxlLCAnRUNPTk5BQk9SVEVEJykuXG4gKiBAcGFyYW0ge09
15iamVjdH0gW2NvbmZpZ10gVGhlIGNvbmZpZy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbcmVxdWVzdF0gVGhlIHJlcXVlc3QuXG4gKiBAcGFyYW0ge09iamVjdH0gW3Jlc3BvbnNlXSBUaGUgcmVzcG9uc2UuXG4gKiBAcmV0dXJucyB7RXJyb3J9IFRoZSBjcmVhdGVkIGVycm9yLlxuICovXG5mdW5jdGlvbiBBeGlvc0Vycm9yKG1lc3NhZ2UsIGNvZGUsIGNvbmZpZywgcmVxdWVzdCwgcmVzcG9uc2UpIHtcbiAgRXJyb3IuY2FsbCh0aGlzKTtcbiAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTtcbiAgdGhpcy5uYW1lID0gJ0F4aW9zRXJyb3InO1xuICBjb2RlICYmICh0aGlzLmNvZGUgPSBjb2RlKTtcbiAgY29uZmlnICYmICh0aGlzLmNvbmZpZyA9IGNvbmZpZyk7XG4gIHJlcXVlc3QgJiYgKHRoaXMucmVxdWVzdCA9IHJlcXVlc3QpO1xuICByZXNwb25zZSAmJiAodGhpcy5yZXNwb25zZSA9IHJlc3BvbnNlKTtcbn1cblxudXRpbHMuaW5oZXJpdHMoQXhpb3NFcnJvciwgRXJyb3IsIHtcbiAgdG9KU09OOiBmdW5jdGlvbiB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC8vIFN0YW5kYXJkXG4gICAgICBtZXNzYWdlOiB0aGlzLm1lc3NhZ2UsXG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICAvLyBNaWNyb3NvZnRcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uLFxuICAgICAgbnVtYmVyOiB0aGlzLm51bWJlcixcbiAgICAgIC8vIE1vemlsbGFcbiAgICAgIGZpbGVOYW1lOiB0aGlzLmZpbGVOYW1lLFxuICAgICAgbGluZU51bWJlcjogdGhpcy5saW5lTnVtYmVyLFxuICAgICAgY29sdW1uTnVtYmVyOiB0aGlzLmNvbHVtbk51bWJlcixcbiAgICAgIHN0YWNrOiB0aGlzLnN0YWNrLFxuICAgICAgLy8gQXhpb3NcbiAgICAgIGNvbmZpZzogdGhpcy5jb25maWcsXG4gICAgICBjb2RlOiB0aGlzLmNvZGUsXG4gICAgICBzdGF0dXM6IHRoaXMucmVzcG9uc2UgJiYgdGhpcy5yZXNwb25zZS5zdGF0dXMgPyB0aGlzLnJlc3BvbnNlLnN0YXR1cyA6IG51bGxcbiAgICB9O1xuICB9XG59KTtcblxudmFyIHByb3RvdHlwZSA9IEF4aW9zRXJyb3IucHJvdG90eXBlO1xudmFyIGRlc2NyaXB0b3JzID0ge307XG5cbltcbiAgJ0VSUl9CQURfT1BUSU9OX1ZBTFVFJyxcbiAgJ0VSUl9CQURfT1BUSU9OJyxcbiAgJ0VDT05OQUJPUlRFRCcsXG4gICdFVElNRURPVVQnLFxuICAnRVJSX05FVFdPUksnLFxuICAnRVJSX0ZSX1RPT19NQU5ZX1JFRElSRUNUUycsXG4gICdFUlJfREVQUkVDQVRFRCcsXG4gICdFUlJfQkFEX1JFU1BPTlNFJyxcbiAgJ0VSUl9CQURfUkVRVUVTVCcsXG4gICdFUlJfQ0FOQ0VMRUQnXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuXS5mb3JFYWNoKGZ1bmN0aW9uKGNvZGUpIHtcbiAgZGVzY3JpcHRvcnNbY29kZV0gPSB7dmFsdWU6IGNvZGV9O1xufSk7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEF4aW9zRXJyb3IsIGRlc2NyaXB0b3JzKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm90b3R5cGUsICdpc0F4aW9zRXJyb3InLCB7dmFsdWU6IHRydWV9KTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbkF4aW9zRXJyb3IuZnJvbSA9IGZ1bmN0aW9uKGVycm9yLCBjb2RlLCBjb25maWcsIHJlcXVlc3QsIHJlc3BvbnNlLCBjdXN0b21Qcm9wcykge1xuICB2YXIgYXhpb3NFcnJvciA9IE9iamVjdC5jcmVhdGUocHJvdG90eXBlKTtcblxuICB1dGlscy50b0ZsYXRPYmplY3QoZXJyb3IsIGF4aW9zRXJyb3IsIGZ1bmN0aW9uIGZpbHRlcihvYmopIHtcbiAgICByZXR1cm4gb2JqICE9PSBFcnJvci5wcm90b3R5cGU7XG4gIH0pO1xuXG4gIEF4aW9zRXJyb3IuY2FsbChheGlvc0Vycm9yLCBlcnJvci5tZXNzYWdlLCBjb2RlLCBjb25maWcsIHJlcXVlc3QsIHJlc3BvbnNlKTtcblxuICBheGlvc0Vycm9yLm5hbWUgPSBlcnJvci5uYW1lO1xuXG4gIGN1c3RvbVByb3BzICYmIE9iamVjdC5hc3NpZ24oYXhpb3NFcnJvciwgY3VzdG9tUHJvcHMpO1xuXG4gIHJldHVybiBheGlvc0Vycm9yO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBBeGlvc0Vycm9yO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgc2lsZW50SlNPTlBhcnNpbmc6IHRydWUsXG4gIGZvcmNlZEpTT05QYXJzaW5nOiB0cnVlLFxuICBjbGFyaWZ5VGltZW91dEVycm9yOiBmYWxzZVxufTtcbiIsInZhciBsb29rdXAgPSBbXTtcbnZhciByZXZMb29rdXAgPSBbXTtcbnZhciBBcnIgPSB0eXBlb2YgVWludDhBcnJheSAhPT0gJ3VuZGVmaW5lZCcgPyBVaW50OEFycmF5IDogQXJyYXk7XG52YXIgaW5pdGVkID0gZmFsc2U7XG5mdW5jdGlvbiBpbml0ICgpIHtcbiAgaW5pdGVkID0gdHJ1ZTtcbiAgdmFyIGNvZGUgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyc7XG4gIGZvciAodmFyIGkgPSAwLCBsZW4gPSBjb2RlLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XG4gICAgbG9va3VwW2ldID0gY29kZVtpXTtcbiAgICByZXZMb29rdXBbY29kZS5jaGFyQ29kZUF0KGkpXSA9IGk7XG4gIH1cblxuICByZXZMb29rdXBbJy0nLmNoYXJDb2RlQXQoMCldID0gNjI7XG4gIHJldkxvb2t1cFsnXycuY2hhckNvZGVBdCgwKV0gPSA2Mztcbn1cblxuZnVuY3Rpb24gdG9CeXRlQXJyYXkgKGI2NCkge1xuICBpZiAoIWluaXRlZCkge1xuICAgIGluaXQoKTtcbiAgfVxuICB2YXIgaSwgaiwgbCwgdG1wLCBwbGFjZUhvbGRlcnMsIGFycjtcbiAgdmFyIGxlbiA9IGI2NC5sZW5ndGg7XG5cbiAgaWYgKGxlbiAlIDQgPiAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHN0cmluZy4gTGVuZ3RoIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA0JylcbiAgfVxuXG4gIC8vIHRoZSBudW1iZXIgb2YgZXF1YWwgc2lnbnMgKHBsYWNlIGhvbGRlcnMpXG4gIC8vIGlmIHRoZXJlIGFyZSB0d28gcGxhY2Vob2xkZXJzLCB0aGFuIHRoZSB0d28gY2hhcmFjdGVycyBiZWZvcmUgaXRcbiAgLy8gcmVwcmVzZW50IG9uZSBieXRlXG4gIC8vIGlmIHRoZXJlIGlzIG9ubHkgb25lLCB0aGVuIHRoZSB0aHJlZSBjaGFyYWN0ZXJzIGJlZm9yZSBpdCByZXByZXNlbnQgMiBieXRlc1xuICAvLyB0aGlzIGlzIGp1c3QgYSBjaGVhcCBoYWNrIHRvIG5vdCBkbyBpbmRleE9mIHR3aWNlXG4gIHBsYWNlSG9sZGVycyA9IGI2NFtsZW4gLSAyXSA9PT0gJz0nID8gMiA6IGI2NFtsZW4gLSAxXSA9PT0gJz0nID8gMSA6IDA7XG5cbiAgLy8gYmFzZTY0IGlzIDQvMyArIHVwIHRvIHR3byBjaGFyYWN0ZXJzIG9mIHRoZSBvcmlnaW5hbCBkYXRhXG4gIGFyciA9IG5ldyBBcnIobGVuICogMyAvIDQgLSBwbGFjZUhvbGRlcnMpO1xuXG4gIC8vIGlmIHRoZXJlIGFyZSBwbGFjZWhvbGRlcnMsIG9ubHkgZ2V0IHVwIHRvIHRoZSBsYXN0IGNvbXBsZXRlIDQgY2hhcnNcbiAgbCA9IHBsYWNlSG9sZGVycyA+IDAgPyBsZW4gLSA0IDogbGVuO1xuXG4gIHZhciBMID0gMDtcblxuICBmb3IgKGkgPSAwLCBqID0gMDsgaSA8IGw7IGkgKz
150gNCwgaiArPSAzKSB7XG4gICAgdG1wID0gKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpKV0gPDwgMTgpIHwgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMSldIDw8IDEyKSB8IChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDIpXSA8PCA2KSB8IHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMyldO1xuICAgIGFycltMKytdID0gKHRtcCA+PiAxNikgJiAweEZGO1xuICAgIGFycltMKytdID0gKHRtcCA+PiA4KSAmIDB4RkY7XG4gICAgYXJyW0wrK10gPSB0bXAgJiAweEZGO1xuICB9XG5cbiAgaWYgKHBsYWNlSG9sZGVycyA9PT0gMikge1xuICAgIHRtcCA9IChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSldIDw8IDIpIHwgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMSldID4+IDQpO1xuICAgIGFycltMKytdID0gdG1wICYgMHhGRjtcbiAgfSBlbHNlIGlmIChwbGFjZUhvbGRlcnMgPT09IDEpIHtcbiAgICB0bXAgPSAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkpXSA8PCAxMCkgfCAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAxKV0gPDwgNCkgfCAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAyKV0gPj4gMik7XG4gICAgYXJyW0wrK10gPSAodG1wID4+IDgpICYgMHhGRjtcbiAgICBhcnJbTCsrXSA9IHRtcCAmIDB4RkY7XG4gIH1cblxuICByZXR1cm4gYXJyXG59XG5cbmZ1bmN0aW9uIHRyaXBsZXRUb0Jhc2U2NCAobnVtKSB7XG4gIHJldHVybiBsb29rdXBbbnVtID4+IDE4ICYgMHgzRl0gKyBsb29rdXBbbnVtID4+IDEyICYgMHgzRl0gKyBsb29rdXBbbnVtID4+IDYgJiAweDNGXSArIGxvb2t1cFtudW0gJiAweDNGXVxufVxuXG5mdW5jdGlvbiBlbmNvZGVDaHVuayAodWludDgsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIHRtcDtcbiAgdmFyIG91dHB1dCA9IFtdO1xuICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkgKz0gMykge1xuICAgIHRtcCA9ICh1aW50OFtpXSA8PCAxNikgKyAodWludDhbaSArIDFdIDw8IDgpICsgKHVpbnQ4W2kgKyAyXSk7XG4gICAgb3V0cHV0LnB1c2godHJpcGxldFRvQmFzZTY0KHRtcCkpO1xuICB9XG4gIHJldHVybiBvdXRwdXQuam9pbignJylcbn1cblxuZnVuY3Rpb24gZnJvbUJ5dGVBcnJheSAodWludDgpIHtcbiAgaWYgKCFpbml0ZWQpIHtcbiAgICBpbml0KCk7XG4gIH1cbiAgdmFyIHRtcDtcbiAgdmFyIGxlbiA9IHVpbnQ4Lmxlbmd0aDtcbiAgdmFyIGV4dHJhQnl0ZXMgPSBsZW4gJSAzOyAvLyBpZiB3ZSBoYXZlIDEgYnl0ZSBsZWZ0LCBwYWQgMiBieXRlc1xuICB2YXIgb3V0cHV0ID0gJyc7XG4gIHZhciBwYXJ0cyA9IFtdO1xuICB2YXIgbWF4Q2h1bmtMZW5ndGggPSAxNjM4MzsgLy8gbXVzdCBiZSBtdWx0aXBsZSBvZiAzXG5cbiAgLy8gZ28gdGhyb3VnaCB0aGUgYXJyYXkgZXZlcnkgdGhyZWUgYnl0ZXMsIHdlJ2xsIGRlYWwgd2l0aCB0cmFpbGluZyBzdHVmZiBsYXRlclxuICBmb3IgKHZhciBpID0gMCwgbGVuMiA9IGxlbiAtIGV4dHJhQnl0ZXM7IGkgPCBsZW4yOyBpICs9IG1heENodW5rTGVuZ3RoKSB7XG4gICAgcGFydHMucHVzaChlbmNvZGVDaHVuayh1aW50OCwgaSwgKGkgKyBtYXhDaHVua0xlbmd0aCkgPiBsZW4yID8gbGVuMiA6IChpICsgbWF4Q2h1bmtMZW5ndGgpKSk7XG4gIH1cblxuICAvLyBwYWQgdGhlIGVuZCB3aXRoIHplcm9zLCBidXQgbWFrZSBzdXJlIHRvIG5vdCBmb3JnZXQgdGhlIGV4dHJhIGJ5dGVzXG4gIGlmIChleHRyYUJ5dGVzID09PSAxKSB7XG4gICAgdG1wID0gdWludDhbbGVuIC0gMV07XG4gICAgb3V0cHV0ICs9IGxvb2t1cFt0bXAgPj4gMl07XG4gICAgb3V0cHV0ICs9IGxvb2t1cFsodG1wIDw8IDQpICYgMHgzRl07XG4gICAgb3V0cHV0ICs9ICc9PSc7XG4gIH0gZWxzZSBpZiAoZXh0cmFCeXRlcyA9PT0gMikge1xuICAgIHRtcCA9ICh1aW50OFtsZW4gLSAyXSA8PCA4KSArICh1aW50OFtsZW4gLSAxXSk7XG4gICAgb3V0cHV0ICs9IGxvb2t1cFt0bXAgPj4gMTBdO1xuICAgIG91dHB1dCArPSBsb29rdXBbKHRtcCA+PiA0KSAmIDB4M0ZdO1xuICAgIG91dHB1dCArPSBsb29rdXBbKHRtcCA8PCAyKSAmIDB4M0ZdO1xuICAgIG91dHB1dCArPSAnPSc7XG4gIH1cblxuICBwYXJ0cy5wdXNoKG91dHB1dCk7XG5cbiAgcmV0dXJuIHBhcnRzLmpvaW4oJycpXG59XG5cbmZ1bmN0aW9uIHJlYWQgKGJ1ZmZlciwgb2Zmc2V0LCBpc0xFLCBtTGVuLCBuQnl0ZXMpIHtcbiAgdmFyIGUsIG07XG4gIHZhciBlTGVuID0gbkJ5dGVzICogOCAtIG1MZW4gLSAxO1xuICB2YXIgZU1heCA9ICgxIDw8IGVMZW4pIC0gMTtcbiAgdmFyIGVCaWFzID0gZU1heCA+PiAxO1xuICB2YXIgbkJpdHMgPSAtNztcbiAgdmFyIGkgPSBpc0xFID8gKG5CeXRlcyAtIDEpIDogMDtcbiAgdmFyIGQgPSBpc0xFID8gLTEgOiAxO1xuICB2YXIgcyA9IGJ1ZmZlcltvZmZzZXQgKyBpXTtcblxuICBpICs9IGQ7XG5cbiAgZSA9IHMgJiAoKDEgPDwgKC1uQml0cykpIC0gMSk7XG4gIHMgPj49ICgtbkJpdHMpO1xuICBuQml0cyArPSBlTGVuO1xuICBmb3IgKDsgbkJpdHMgPiAwOyBlID0gZSAqIDI1NiArIGJ1ZmZlcltvZmZzZXQgKyBpXSwgaSArPSBkLCBuQml0cyAtPSA4KSB7fVxuXG4gIG0gPSBlICYgKCgxIDw8ICgtbkJpdHMpKSAtIDEpO1xuICBlID4+PSAoLW5CaXRzKTtcbiAgbkJpdHMgKz0gbUxlbjtcbiAgZm9yICg7IG5CaXRzID4gMDsgbSA9IG0gKiAyNTYgKyBidWZmZXJbb2Zmc2V0ICsgaV0sIGkgKz0gZCwgbkJpdHMgLT0gOCkge31cblxuICBpZiAoZSA9PT0gMCkge1xuICAgIGUgPSAxIC0gZUJpYXM7XG4gIH0gZWxzZSBpZiAoZSA9PT0gZU1heCkge1xuICAgIHJldHVybiBtID8gTmFOIDogKChzID8gLTEgOiAxKSAqIEluZmluaXR5KVxuICB9IGVsc2Uge1xuICAgIG0gPSBtICsgTWF0aC5wb3coMiwgbUxlbik7XG4gICAgZSA9IGUgLSBlQmlhcztcbiAgfVxuICByZXR1cm4gKHMgPyAtMSA6IDEpICogbSAqIE1hdGgucG93KDIsIGUgLSBtTGVuKVxufVxuXG5mdW5jdGlvbiB3cml0ZSAoYnVmZmVyLCB2YWx1ZSwgb2Zmc2V0LCBpc0xFLCBtTGVuLCBuQnl0ZXMpIHtcbiAgdmFyIGUsIG0sIGM7XG4gIHZhciBlTGVuID0gbkJ5dGVzICogOCAtIG1MZW4gLSAxO1xuICB2YXIgZU1heCA9ICgxIDw8IGVMZW4pIC0gMTtcbiAgdmFyIGVCaWFzID0gZU1heCA+PiAxO1xuICB2YXIgcnQgPSAobUxlbiA9PT0gMjMgPyBNYXRoLnBvdygyLCAtMjQpIC0gTWF0aC5wb3coMiwgLTc3KSA6IDApO1xuICB2YXIgaSA9IGlzTEUgPyAwIDogKG5CeXRlcyAtIDEpO1xuICB2YXIgZCA9IGlzTEUgPyAxIDogLTE7XG4gIHZhciBzID0gdmFsdWUgPCAwIHx8ICh2YWx1ZSA9PT0gMCAmJiAxIC8gdmFsdWUgPCAwKSA/IDEgOiAwO1xuXG4gIHZhbHVlID0gTWF0aC5hYnModmFsdWUpO1xuXG4gIGlmIChpc05hTih2YWx1ZSkgfHwgdmFsdWUgPT09IEluZmluaXR5KSB7XG4gICAgbSA9IGlzTmFOKHZhbHVlKSA/IDEgOiAwO1xuICAgIGUgPSBlTWF4O1xuICB9IGVsc2Uge1xuICAgIGUgPSBNYXRoLmZsb29yKE1hdGgubG9nKHZhbHVlKSAvIE1hdGguTE4yKTtcbiAgICBpZiAodmFsdWUgKiAoYyA9IE1hdGgucG93KDIsIC1lKSkgPCAxKSB7XG4gICAgICBlLS07XG4gICAgICBjICo9IDI7XG4gICAgfVxuICAgIGlmIChlICsgZUJpYXMgPj0gMSkge1xuICAgICAgdmFsdWUgKz0gcnQgLyBjO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSArPSBydCAqIE1hdGgucG93KDIsIDEgLSBlQmlhcyk7XG4gICAgfVxuICAgIGlmICh2YWx1ZSAqIGMgPj0gMikge1xuICAgICAgZSsrO1xuICAgICAgYyAvPSAyO1xuICAgIH1cblxuICAgIGlmIChlICsgZUJpYXMgPj0gZU1heCkge1xuICAgICAgbSA9IDA7XG4gICAgICBlID0gZU1heDtcbiAgICB9IGVsc2UgaWYgKGUgKyBlQmlhcyA+PSAxKSB7XG4gICAgICBtID0gKHZhbHVlICogYyAtIDEpICogTWF0aC5wb3coMiwgbUxlbik7XG4gICAgICBlID0gZSArIGVCaWFzO1xuICAgIH0gZWxzZSB7XG4gICAgICBtID0gdmFsdWUgKiBNYXRoLnBvdygyLCBlQmlhcyAtIDEpICogTWF0aC5wb3coMiwgbUxlbik7XG4gICAgICBlID0gMDtcbiAgICB9XG4gI
15H1cblxuICBmb3IgKDsgbUxlbiA+PSA4OyBidWZmZXJbb2Zmc2V0ICsgaV0gPSBtICYgMHhmZiwgaSArPSBkLCBtIC89IDI1NiwgbUxlbiAtPSA4KSB7fVxuXG4gIGUgPSAoZSA8PCBtTGVuKSB8IG07XG4gIGVMZW4gKz0gbUxlbjtcbiAgZm9yICg7IGVMZW4gPiAwOyBidWZmZXJbb2Zmc2V0ICsgaV0gPSBlICYgMHhmZiwgaSArPSBkLCBlIC89IDI1NiwgZUxlbiAtPSA4KSB7fVxuXG4gIGJ1ZmZlcltvZmZzZXQgKyBpIC0gZF0gfD0gcyAqIDEyODtcbn1cblxudmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbnZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiAoYXJyKSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKGFycikgPT0gJ1tvYmplY3QgQXJyYXldJztcbn07XG5cbi8qIVxuICogVGhlIGJ1ZmZlciBtb2R1bGUgZnJvbSBub2RlLmpzLCBmb3IgdGhlIGJyb3dzZXIuXG4gKlxuICogQGF1dGhvciAgIEZlcm9zcyBBYm91a2hhZGlqZWggPGZlcm9zc0BmZXJvc3Mub3JnPiA8aHR0cDovL2Zlcm9zcy5vcmc+XG4gKiBAbGljZW5zZSAgTUlUXG4gKi9cblxudmFyIElOU1BFQ1RfTUFYX0JZVEVTID0gNTA7XG5cbi8qKlxuICogSWYgYEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUYDpcbiAqICAgPT09IHRydWUgICAgVXNlIFVpbnQ4QXJyYXkgaW1wbGVtZW50YXRpb24gKGZhc3Rlc3QpXG4gKiAgID09PSBmYWxzZSAgIFVzZSBPYmplY3QgaW1wbGVtZW50YXRpb24gKG1vc3QgY29tcGF0aWJsZSwgZXZlbiBJRTYpXG4gKlxuICogQnJvd3NlcnMgdGhhdCBzdXBwb3J0IHR5cGVkIGFycmF5cyBhcmUgSUUgMTArLCBGaXJlZm94IDQrLCBDaHJvbWUgNyssIFNhZmFyaSA1LjErLFxuICogT3BlcmEgMTEuNissIGlPUyA0LjIrLlxuICpcbiAqIER1ZSB0byB2YXJpb3VzIGJyb3dzZXIgYnVncywgc29tZXRpbWVzIHRoZSBPYmplY3QgaW1wbGVtZW50YXRpb24gd2lsbCBiZSB1c2VkIGV2ZW5cbiAqIHdoZW4gdGhlIGJyb3dzZXIgc3VwcG9ydHMgdHlwZWQgYXJyYXlzLlxuICpcbiAqIE5vdGU6XG4gKlxuICogICAtIEZpcmVmb3ggNC0yOSBsYWNrcyBzdXBwb3J0IGZvciBhZGRpbmcgbmV3IHByb3BlcnRpZXMgdG8gYFVpbnQ4QXJyYXlgIGluc3RhbmNlcyxcbiAqICAgICBTZWU6IGh0dHBzOi8vYnVnemlsbGEubW96
15aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTY5NTQzOC5cbiAqXG4gKiAgIC0gQ2hyb21lIDktMTAgaXMgbWlzc2luZyB0aGUgYFR5cGVkQXJyYXkucHJvdG90eXBlLnN1YmFycmF5YCBmdW5jdGlvbi5cbiAqXG4gKiAgIC0gSUUxMCBoYXMgYSBicm9rZW4gYFR5cGVkQXJyYXkucHJvdG90eXBlLnN1YmFycmF5YCBmdW5jdGlvbiB3aGljaCByZXR1cm5zIGFycmF5cyBvZlxuICogICAgIGluY29ycmVjdCBsZW5ndGggaW4gc29tZSBzaXR1YXRpb25zLlxuXG4gKiBXZSBkZXRlY3QgdGhlc2UgYnVnZ3kgYnJvd3NlcnMgYW5kIHNldCBgQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlRgIHRvIGBmYWxzZWAgc28gdGhleVxuICogZ2V0IHRoZSBPYmplY3QgaW1wbGVtZW50YXRpb24sIHdoaWNoIGlzIHNsb3dlciBidXQgYmVoYXZlcyBjb3JyZWN0bHkuXG4gKi9cbkJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUID0gZ2xvYmFsLlRZUEVEX0FSUkFZX1NVUFBPUlQgIT09IHVuZGVmaW5lZFxuICA/IGdsb2JhbC5UWVBFRF9BUlJBWV9TVVBQT1JUXG4gIDogdHJ1ZTtcblxuLypcbiAqIEV4cG9ydCBrTWF4TGVuZ3RoIGFmdGVyIHR5cGVkIGFycmF5IHN1cHBvcnQgaXMgZGV0ZXJtaW5lZC5cbiAqL1xudmFyIF9rTWF4TGVuZ3RoID0ga01heExlbmd0aCgpO1xuXG5mdW5jdGlvbiBrTWF4TGVuZ3RoICgpIHtcbiAgcmV0dXJuIEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUXG4gICAgPyAweDdmZmZmZmZmXG4gICAgOiAweDNmZmZmZmZmXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUJ1ZmZlciAodGhhdCwgbGVuZ3RoKSB7XG4gIGlmIChrTWF4TGVuZ3RoKCkgPCBsZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW52YWxpZCB0eXBlZCBhcnJheSBsZW5ndGgnKVxuICB9XG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIC8vIFJldHVybiBhbiBhdWdtZW50ZWQgYFVpbnQ4QXJyYXlgIGluc3RhbmNlLCBmb3IgYmVzdCBwZXJmb3JtYW5jZVxuICAgIHRoYXQgPSBuZXcgVWludDhBcnJheShsZW5ndGgpO1xuICAgIHRoYXQuX19wcm90b19fID0gQnVmZmVyLnByb3RvdHlwZTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGYWxsYmFjazogUmV0dXJuIGFuIG9iamVjdCBpbnN0YW5jZSBvZiB0aGUgQnVmZmVyIGNsYXNzXG4gICAgaWYgKHRoYXQgPT09IG51bGwpIHtcbiAgICAgIHRoYXQgPSBuZXcgQnVmZmVyKGxlbmd0aCk7XG4gICAgfVxuICAgIHRoYXQubGVuZ3RoID0gbGVuZ3RoO1xuICB9XG5cbiAgcmV0dXJuIHRoYXRcbn1cblxuLyoqXG4gKiBUaGUgQnVmZmVyIGNvbnN0cnVjdG9yIHJldHVybnMgaW5zdGFuY2VzIG9mIGBVaW50OEFycmF5YCB0aGF0IGhhdmUgdGhlaXJcbiAqIHByb3RvdHlwZSBjaGFuZ2VkIHRvIGBCdWZmZXIucHJvdG90eXBlYC4gRnVydGhlcm1vcmUsIGBCdWZmZXJgIGlzIGEgc3ViY2xhc3Mgb2ZcbiAqIGBVaW50OEFycmF5YCwgc28gdGhlIHJldHVybmVkIGluc3RhbmNlcyB3aWxsIGhhdmUgYWxsIHRoZSBub2RlIGBCdWZmZXJgIG1ldGhvZHNcbiAqIGFuZCB0aGUgYFVpbnQ4QXJyYXlgIG1ldGhvZHMuIFNxdWFyZSBicmFja2V0IG5vdGF0aW9uIHdvcmtzIGFzIGV4cGVjdGVkIC0tIGl0XG4gKiByZXR1cm5zIGEgc2luZ2xlIG9jdGV0LlxuICpcbiAqIFRoZSBgVWludDhBcnJheWAgcHJvdG90eXBlIHJlbWFpbnMgdW5tb2RpZmllZC5cbiAqL1xuXG5mdW5jdGlvbiBCdWZmZXIgKGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7XG4gIGlmICghQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQgJiYgISh0aGlzIGluc3RhbmNlb2YgQnVmZmVyKSkge1xuICAgIHJldHVybiBuZXcgQnVmZmVyKGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxuICB9XG5cbiAgLy8gQ29tbW9uIGNhc2UuXG4gIGlmICh0eXBlb2YgYXJnID09PSAnbnVtYmVyJykge1xuICAgIGlmICh0eXBlb2YgZW5jb2RpbmdPck9mZnNldCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ0lmIGVuY29kaW5nIGlzIHNwZWNpZmllZCB0aGVuIHRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nJ1xuICAgICAgKVxuICAgIH1cbiAgICByZXR1cm4gYWxsb2NVbnNhZmUodGhpcywgYXJnKVxuICB9XG4gIHJldHVybiBmcm9tKHRoaXMsIGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxufVxuXG5CdWZmZXIucG9vbFNpemUgPSA4MTkyOyAvLyBub3QgdXNlZCBieSB0aGlzIGltcGxlbWVudGF0aW9uXG5cbi8vIFRPRE86IExlZ2FjeSwgbm90IG5lZWRlZCBhbnltb3JlLiBSZW1vdmUgaW4gbmV4dCBtYWpvciB2ZXJzaW9uLlxuQnVmZmVyLl9hdWdtZW50ID0gZnVuY3Rpb24gKGFycikge1xuICBhcnIuX19wcm90b19fID0gQnVmZmVyLnByb3RvdHlwZTtcbiAgcmV0dXJuIGFyclxufTtcblxuZnVuY3Rpb24gZnJvbSAodGhhdCwgdmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1widmFsdWVcIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlcicpXG4gIH1cblxuICBpZiAodHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJyAmJiB2YWx1ZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGZyb21BcnJheUJ1ZmZlcih0aGF0LCB2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZnJvbVN0cmluZyh0aGF0LCB2YWx1ZSwgZW5jb2RpbmdPck9mZnNldClcbiAgfVxuXG4gIHJldHVybiBmcm9tT2JqZWN0KHRoYXQsIHZhbHVlKVxufVxuXG4vKipcbiAqIEZ1bmN0aW9uYWxseSBlcXVpdmFsZW50IHRvIEJ1ZmZlcihhcmcsIGVuY29kaW5nKSBidXQgdGhyb3dzIGEgVHlwZUVycm9yXG4gKiBpZiB2YWx1ZSBpcyBhIG51bWJlci5cbiAqIEJ1ZmZlci5mcm9tKHN0clssIGVuY29kaW5nXSlcbiAqIEJ1ZmZlci5mcm9tKGFycmF5KVxuICogQnVmZmVyLmZyb20oYnVmZmVyKVxuICogQnVmZmVyLmZyb20oYXJyYXlCdWZmZXJbLCBieXRlT2Zmc2V0WywgbGVuZ3RoXV0pXG4gKiovXG5CdWZmZXIuZnJvbSA9IGZ1bmN0aW9uICh2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybi
15Bmcm9tKG51bGwsIHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG59O1xuXG5pZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgQnVmZmVyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBVaW50OEFycmF5LnByb3RvdHlwZTtcbiAgQnVmZmVyLl9fcHJvdG9fXyA9IFVpbnQ4QXJyYXk7XG59XG5cbmZ1bmN0aW9uIGFzc2VydFNpemUgKHNpemUpIHtcbiAgaWYgKHR5cGVvZiBzaXplICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wic2l6ZVwiIGFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXInKVxuICB9IGVsc2UgaWYgKHNpemUgPCAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1wic2l6ZVwiIGFyZ3VtZW50IG11c3Qgbm90IGJlIG5lZ2F0aXZlJylcbiAgfVxufVxuXG5mdW5jdGlvbiBhbGxvYyAodGhhdCwgc2l6ZSwgZmlsbCwgZW5jb2RpbmcpIHtcbiAgYXNzZXJ0U2l6ZShzaXplKTtcbiAgaWYgKHNpemUgPD0gMCkge1xuICAgIHJldHVybiBjcmVhdGVCdWZmZXIodGhhdCwgc2l6ZSlcbiAgfVxuICBpZiAoZmlsbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gT25seSBwYXkgYXR0ZW50aW9uIHRvIGVuY29kaW5nIGlmIGl0J3MgYSBzdHJpbmcuIFRoaXNcbiAgICAvLyBwcmV2ZW50cyBhY2NpZGVudGFsbHkgc2VuZGluZyBpbiBhIG51bWJlciB0aGF0IHdvdWxkXG4gICAgLy8gYmUgaW50ZXJwcmV0dGVkIGFzIGEgc3RhcnQgb2Zmc2V0LlxuICAgIHJldHVybiB0eXBlb2YgZW5jb2RpbmcgPT09ICdzdHJpbmcnXG4gICAgICA/IGNyZWF0ZUJ1ZmZlcih0aGF0LCBzaXplKS5maWxsKGZpbGwsIGVuY29kaW5nKVxuICAgICAgOiBjcmVhdGVCdWZmZXIodGhhdCwgc2l6ZSkuZmlsbChmaWxsKVxuICB9XG4gIHJldHVybiBjcmVhdGVCdWZmZXIodGhhdCwgc2l6ZSlcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IGZpbGxlZCBCdWZmZXIgaW5zdGFuY2UuXG4gKiBhbGxvYyhzaXplWywgZmlsbFssIGVuY29kaW5nXV0pXG4gKiovXG5CdWZmZXIuYWxsb2MgPSBmdW5jdGlvbiAoc2l6ZSwgZmlsbCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIGFsbG9jKG51bGwsIHNpemUsIGZpbGwsIGVuY29kaW5nKVxufTtcblxuZnVuY3Rpb24gYWxsb2NVbnNhZmUgKHRoYXQsIHNpemUpIHtcbiAgYXNzZXJ0U2l6ZShzaXplKTtcbiAgdGhhdCA9IGNyZWF0ZUJ1ZmZlcih0aGF0LCBzaXplIDwgMCA/IDAgOiBjaGVja2VkKHNpemUpIHwgMCk7XG4gIGlmICghQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7ICsraSkge1xuICAgICAgdGhhdFtpXSA9IDA7XG4gICAgfVxuICB9XG4gIHJldHVybiB0aGF0XG59XG5cbi8qKlxuICogRXF1aXZhbGVudCB0byBCdWZmZXIobnVtKSwgYnkgZGVmYXVsdCBjcmVhdGVzIGEgbm9uLXplcm8tZmlsbGVkIEJ1ZmZlciBpbnN0YW5jZS5cbiAqICovXG5CdWZmZXIuYWxsb2NVbnNhZmUgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICByZXR1cm4gYWxsb2NVbnNhZmUobnVsbCwgc2l6ZSlcbn07XG4vKipcbiAqIEVxdWl2YWxlbnQgdG8gU2xvd0J1ZmZlcihudW0pLCBieSBkZWZhdWx0IGNyZWF0ZXMgYSBub24temVyby1maWxsZWQgQnVmZmVyIGluc3RhbmNlLlxuICovXG5CdWZmZXIuYWxsb2NVbnNhZmVTbG93ID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgcmV0dXJuIGFsbG9jVW5zYWZlKG51bGwsIHNpemUpXG59O1xuXG5mdW5jdGlvbiBmcm9tU3RyaW5nICh0aGF0LCBzdHJpbmcsIGVuY29kaW5nKSB7XG4gIGlmICh0eXBlb2YgZW5jb2RpbmcgIT09ICdzdHJpbmcnIHx8IGVuY29kaW5nID09PSAnJykge1xuICAgIGVuY29kaW5nID0gJ3V0ZjgnO1xuICB9XG5cbiAgaWYgKCFCdWZmZXIuaXNFbmNvZGluZyhlbmNvZGluZykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImVuY29kaW5nXCIgbXVzdCBiZSBhIHZhbGlkIHN0cmluZyBlbmNvZGluZycpXG4gIH1cblxuICB2YXIgbGVuZ3RoID0gYnl0ZUxlbmd0aChzdHJpbmcsIGVuY29kaW5nKSB8IDA7XG4gIHRoYXQgPSBjcmVhdGVCdWZmZXIodGhhdCwgbGVuZ3RoKTtcblxuICB2YXIgYWN0dWFsID0gdGhhdC53cml0ZShzdHJpbmcsIGVuY29kaW5nKTtcblxuICBpZiAoYWN0dWFsICE9PSBsZW5ndGgpIHtcbiAgICAvLyBXcml0aW5nIGEgaGV4IHN0cmluZywgZm9yIGV4YW1wbGUsIHRoYXQgY29udGFpbnMgaW52YWxpZCBjaGFyYWN0ZXJzIHdpbGxcbiAgICAvLyBjYXVzZSBldmVyeXRoaW5nIGFmdGVyIHRoZSBmaXJzdCBpbnZhbGlkIGNoYXJhY3RlciB0byBiZSBpZ25vcmVkLiAoZS5nLlxuICAgIC8vICdhYnh4Y2QnIHdpbGwgYmUgdHJlYXRlZCBhcyAnYWInKVxuICAgIHRoYXQgPSB0aGF0LnNsaWNlKDAsIGFjdHVhbCk7XG4gIH1cblxuICByZXR1cm4gdGhhdFxufVxuXG5mdW5jdGlvbiBmcm9tQXJyYXlMaWtlICh0aGF0LCBhcnJheSkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoIDwgMCA/IDAgOiBjaGVja2VkKGFycmF5Lmxlbmd0aCkgfCAwO1xuICB0aGF0ID0gY3JlYXRlQnVmZmVyKHRoYXQsIGxlbmd0aCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpICs9IDEpIHtcbiAgICB0aGF0W2ldID0gYXJyYXlbaV0gJiAyNTU7XG4gIH1cbiAgcmV0dXJuIHRoYXRcbn1cblxuZnVuY3Rpb24gZnJvbUFycmF5QnVmZmVyICh0aGF0LCBhcnJheSwgYnl0ZU9mZnNldCwgbGVuZ3RoKSB7XG4gIGFycmF5LmJ5dGVMZW5ndGg7IC8vIHRoaXMgdGhyb3dzIGlmIGBhcnJheWAgaXMgbm90IGEgdmFsaWQgQXJyYXlCdWZmZXJcblxuICBpZiAoYnl0ZU9mZnNldCA8IDAgfHwgYXJyYXkuYnl0ZUxlbmd0aCA8IGJ5dGVPZmZzZXQpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignXFwnb2Zmc2V0XFwnIGlzIG91dCBvZiBib3VuZHMnKVxuICB9XG5cbiAgaWYgKGFycmF5LmJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0ICsgKGxlbmd0aCB8fCAwKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdcXCdsZW5ndGhcXCcgaXMgb3V0IG9mIGJvdW5kcycpXG4gIH1cblxuICBpZiAoYnl0ZU9mZnNldCA9PT0gdW5kZWZpbmVkICYmIGxlbmd0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgYXJyYXkgPSBuZXcgVWludDhBcnJheShhcnJheSk7XG4gIH0gZWxzZSBpZiAobGVuZ3RoID09PSB1bmRlZmluZWQpIHtcbiAgICBhcnJheSA9IG5ldyBVaW50OEFycmF5KGFycmF5LCBieXRlT2Zmc2V0KTtcbiAgfSBlbHNlIHtcbiAgICBhcnJheSA9IG5ldyBVaW50OEFycmF5KGFycmF5LCBieXRlT2Zmc2V0LCBsZW5ndGgpO1xuICB9XG5cbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgLy8gUmV0dXJuIGFuIGF1Z21lbn
15RlZCBgVWludDhBcnJheWAgaW5zdGFuY2UsIGZvciBiZXN0IHBlcmZvcm1hbmNlXG4gICAgdGhhdCA9IGFycmF5O1xuICAgIHRoYXQuX19wcm90b19fID0gQnVmZmVyLnByb3RvdHlwZTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGYWxsYmFjazogUmV0dXJuIGFuIG9iamVjdCBpbnN0YW5jZSBvZiB0aGUgQnVmZmVyIGNsYXNzXG4gICAgdGhhdCA9IGZyb21BcnJheUxpa2UodGhhdCwgYXJyYXkpO1xuICB9XG4gIHJldHVybiB0aGF0XG59XG5cbmZ1bmN0aW9uIGZyb21PYmplY3QgKHRoYXQsIG9iaikge1xuICBpZiAoaW50ZXJuYWxJc0J1ZmZlcihvYmopKSB7XG4gICAgdmFyIGxlbiA9IGNoZWNrZWQob2JqLmxlbmd0aCkgfCAwO1xuICAgIHRoYXQgPSBjcmVhdGVCdWZmZXIodGhhdCwgbGVuKTtcblxuICAgIGlmICh0aGF0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRoYXRcbiAgICB9XG5cbiAgICBvYmouY29weSh0aGF0LCAwLCAwLCBsZW4pO1xuICAgIHJldHVybiB0aGF0XG4gIH1cblxuICBpZiAob2JqKSB7XG4gICAgaWYgKCh0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICAgIG9iai5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikgfHwgJ2xlbmd0aCcgaW4gb2JqKSB7XG4gICAgICBpZiAodHlwZW9mIG9iai5sZW5ndGggIT09ICdudW1iZXInIHx8IGlzbmFuKG9iai5sZW5ndGgpKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVCdWZmZXIodGhhdCwgMClcbiAgICAgIH1cbiAgICAgIHJldHVybiBmcm9tQXJyYXlMaWtlKHRoYXQsIG9iailcbiAgICB9XG5cbiAgICBpZiAob2JqLnR5cGUgPT09ICdCdWZmZXInICYmIGlzQXJyYXkob2JqLmRhdGEpKSB7XG4gICAgICByZXR1cm4gZnJvbUFycmF5TGlrZSh0aGF0LCBvYmouZGF0YSlcbiAgICB9XG4gIH1cblxuICB0aHJvdyBuZXcgVHlwZUVycm9yKCdGaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgb3IgYXJyYXktbGlrZSBvYmplY3QuJylcbn1cblxuZnVuY3Rpb24gY2hlY2tlZCAobGVuZ3RoKSB7XG4gIC8vIE5vdGU6IGNhbm5vdCB1c2UgYGxlbmd0aCA8IGtNYXhMZW5ndGgoKWAgaGVyZSBiZWNhdXNlIHRoYXQgZmFpbHMgd2hlblxuICAvLyBsZW5ndGggaXMgTmFOICh3aGljaCBpcyBvdGhlcndpc2UgY29lcmNlZCB0byB6ZXJvLilcbiAgaWYgKGxlbmd0aCA+PSBrTWF4TGVuZ3RoKCkpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQXR0ZW1wdCB0byBhbGxvY2F0ZSBCdWZmZXIgbGFyZ2VyIHRoYW4gbWF4aW11bSAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAnc2l6ZTogMHgnICsga01heExlbmd0aCgpLnRvU3RyaW5nKDE2KSArICcgYnl0ZXMnKVxuICB9XG4gIHJldHVybiBsZW5ndGggfCAwXG59XG5cbmZ1bmN0aW9uIFNsb3dCdWZmZXIgKGxlbmd0aCkge1xuICBpZiAoK2xlbmd0aCAhPSBsZW5ndGgpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBlcWVxZXFcbiAgICBsZW5ndGggPSAwO1xuICB9XG4gIHJldHVybiBCdWZmZXIuYWxsb2MoK2xlbmd0aClcbn1cbkJ1ZmZlci5pc0J1ZmZlciA9IGlzQnVmZmVyO1xuZnVuY3Rpb24gaW50ZXJuYWxJc0J1ZmZlciAoYikge1xuICByZXR1cm4gISEoYiAhPSBudWxsICYmIGIuX2lzQnVmZmVyKVxufVxuXG5CdWZmZXIuY29tcGFyZSA9IGZ1bmN0aW9uIGNvbXBhcmUgKGEsIGIpIHtcbiAgaWYgKCFpbnRlcm5hbElzQnVmZmVyKGEpIHx8ICFpbnRlcm5hbElzQnVmZmVyKGIpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnRzIG11c3QgYmUgQnVmZmVycycpXG4gIH1cblxuICBpZiAoYSA9PT0gYikgcmV0dXJuIDBcblxuICB2YXIgeCA9IGEubGVuZ3RoO1xuICB2YXIgeSA9IGIubGVuZ3RoO1xuXG4gIGZvciAodmFyIGkgPSAwLCBsZW4gPSBNYXRoLm1pbih4LCB5KTsgaSA8IGxlbjsgKytpKSB7XG4gICAgaWYgKGFbaV0gIT09IGJbaV0pIHtcbiAgICAgIHggPSBhW2ldO1xuICAgICAgeSA9IGJbaV07XG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIGlmICh4IDwgeSkgcmV0dXJuIC0xXG4gIGlmICh5IDwgeCkgcmV0dXJuIDFcbiAgcmV0dXJuIDBcbn07XG5cbkJ1ZmZlci5pc0VuY29kaW5nID0gZnVuY3Rpb24gaXNFbmNvZGluZyAoZW5jb2RpbmcpIHtcbiAgc3dpdGNoIChTdHJpbmcoZW5jb2RpbmcpLnRvTG93ZXJDYXNlKCkpIHtcbiAgICBjYXNlICdoZXgnOlxuICAgIGNhc2UgJ3V0ZjgnOlxuICAgIGNhc2UgJ3V0Zi04JzpcbiAgICBjYXNlICdhc2NpaSc6XG4gICAgY2FzZSAnbGF0aW4xJzpcbiAgICBjYXNlICdiaW5hcnknOlxuICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgY2FzZSAndWNzMic6XG4gICAgY2FzZSAndWNzLTInOlxuICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgIHJldHVybiB0cnVlXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBmYWxzZVxuICB9XG59O1xuXG5CdWZmZXIuY29uY2F0ID0gZnVuY3Rpb24gY29uY2F0IChsaXN0LCBsZW5ndGgpIHtcbiAgaWYgKCFpc0FycmF5KGxpc3QpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJsaXN0XCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJylcbiAgfVxuXG4gIGlmIChsaXN0Lmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBCdWZmZXIuYWxsb2MoMClcbiAgfVxuXG4gIHZhciBpO1xuICBpZiAobGVuZ3RoID09PSB1bmRlZmluZWQpIHtcbiAgICBsZW5ndGggPSAwO1xuICAgIGZvciAoaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKSB7XG4gICAgICBsZW5ndGggKz0gbGlzdFtpXS5sZW5ndGg7XG4gICAgfVxuICB9XG5cbiAgdmFyIGJ1ZmZlciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShsZW5ndGgpO1xuICB2YXIgcG9zID0gMDtcbiAgZm9yIChpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyArK2kpIHtcbiAgICB2YXIgYnVmID0gbGlzdFtpXTtcbiAgICBpZiAoIWludGVybmFsSXNCdWZmZXIoYnVmKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJsaXN0XCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJylcbiAgICB9XG4gICAgYnVmLmNvcHkoYnVmZmVyLCBwb3MpO1xuICAgIHBvcyArPSBidWYubGVuZ3RoO1xuICB9XG4gI
15HJldHVybiBidWZmZXJcbn07XG5cbmZ1bmN0aW9uIGJ5dGVMZW5ndGggKHN0cmluZywgZW5jb2RpbmcpIHtcbiAgaWYgKGludGVybmFsSXNCdWZmZXIoc3RyaW5nKSkge1xuICAgIHJldHVybiBzdHJpbmcubGVuZ3RoXG4gIH1cbiAgaWYgKHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIEFycmF5QnVmZmVyLmlzVmlldyA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgKEFycmF5QnVmZmVyLmlzVmlldyhzdHJpbmcpIHx8IHN0cmluZyBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSkge1xuICAgIHJldHVybiBzdHJpbmcuYnl0ZUxlbmd0aFxuICB9XG4gIGlmICh0eXBlb2Ygc3RyaW5nICE9PSAnc3RyaW5nJykge1xuICAgIHN0cmluZyA9ICcnICsgc3RyaW5nO1xuICB9XG5cbiAgdmFyIGxlbiA9IHN0cmluZy5sZW5ndGg7XG4gIGlmIChsZW4gPT09IDApIHJldHVybiAwXG5cbiAgLy8gVXNlIGEgZm9yIGxvb3AgdG8gYXZvaWQgcmVjdXJzaW9uXG4gIHZhciBsb3dlcmVkQ2FzZSA9IGZhbHNlO1xuICBmb3IgKDs7KSB7XG4gICAgc3dpdGNoIChlbmNvZGluZykge1xuICAgICAgY2FzZSAnYXNjaWknOlxuICAgICAgY2FzZSAnbGF0aW4xJzpcbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAgIHJldHVybiBsZW5cbiAgICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgY2FzZSAndXRmLTgnOlxuICAgICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgICAgIHJldHVybiB1dGY4VG9CeXRlcyhzdHJpbmcpLmxlbmd0aFxuICAgICAgY2FzZSAndWNzMic6XG4gICAgICBjYXNlICd1Y3MtMic6XG4gICAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgICAgcmV0dXJuIGxlbiAqIDJcbiAgICAgIGNhc2UgJ2hleCc6XG4gICAgICAgIHJldHVybiBsZW4gPj4+IDFcbiAgICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICAgIHJldHVybiBiYXNlNjRUb0J5dGVzKHN0cmluZykubGVuZ3RoXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAobG93ZXJlZENhc2UpIHJldHVybiB1dGY4VG9CeXRlcyhzdHJpbmcpLmxlbmd0aCAvLyBhc3N1bWUgdXRmOFxuICAgICAgICBlbmNvZGluZyA9ICgnJyArIGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBsb3dlcmVkQ2FzZSA9IHRydWU7XG4gICAgfVxuICB9XG59XG5CdWZmZXIuYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGg7XG5cbmZ1bmN0aW9uIHNsb3dUb1N0cmluZyAoZW5jb2RpbmcsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGxvd2VyZWRDYXNlID0gZmFsc2U7XG5cbiAgLy8gTm8gbmVlZCB0byB2ZXJpZnkgdGhhdCBcInRoaXMubGVuZ3RoIDw9IE1BWF9VSU5UMzJcIiBzaW5jZSBpdCdzIGEgcmVhZC1vbmx5XG4gIC8vIHByb3BlcnR5IG9mIGEgdHlwZWQgYXJyYXkuXG5cbiAgLy8gVGhpcyBiZWhhdmVzIG5laXRoZXIgbGlrZSBTdHJpbmcgbm9yIFVpbnQ4QXJyYXkgaW4gdGhhdCB3ZSBzZXQgc3RhcnQvZW5kXG4gIC8vIHRvIHRoZWlyIHVwcGVyL2xvd2VyIGJvdW5kcyBpZiB0aGUgdmFsdWUgcGFzc2VkIGlzIG91dCBvZiByYW5nZS5cbiAgLy8gdW5kZWZpbmVkIGlzIGhhbmRsZWQgc3BlY2lhbGx5IGFzIHBlciBFQ01BLTI2MiA2dGggRWRpdGlvbixcbiAgLy8gU2VjdGlvbiAxMy4zLjMuNyBSdW50aW1lIFNlbWFudGljczogS2V5ZWRCaW5kaW5nSW5pdGlhbGl6YXRpb24uXG4gIGlmIChzdGFydCA9PT0gdW5kZWZpbmVkIHx8IHN0YXJ0IDwgMCkge1xuICAgIHN0YXJ0ID0gMDtcbiAgfVxuICAvLyBSZXR1cm4gZWFybHkgaWYgc3RhcnQgPiB0aGlzLmxlbmd0aC4gRG9uZSBoZXJlIHRvIHByZXZlbnQgcG9
150ZW50aWFsIHVpbnQzMlxuICAvLyBjb2VyY2lvbiBmYWlsIGJlbG93LlxuICBpZiAoc3RhcnQgPiB0aGlzLmxlbmd0aCkge1xuICAgIHJldHVybiAnJ1xuICB9XG5cbiAgaWYgKGVuZCA9PT0gdW5kZWZpbmVkIHx8IGVuZCA+IHRoaXMubGVuZ3RoKSB7XG4gICAgZW5kID0gdGhpcy5sZW5ndGg7XG4gIH1cblxuICBpZiAoZW5kIDw9IDApIHtcbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIC8vIEZvcmNlIGNvZXJzaW9uIHRvIHVpbnQzMi4gVGhpcyB3aWxsIGFsc28gY29lcmNlIGZhbHNleS9OYU4gdmFsdWVzIHRvIDAuXG4gIGVuZCA+Pj49IDA7XG4gIHN0YXJ0ID4+Pj0gMDtcblxuICBpZiAoZW5kIDw9IHN0YXJ0KSB7XG4gICAgcmV0dXJuICcnXG4gIH1cblxuICBpZiAoIWVuY29kaW5nKSBlbmNvZGluZyA9ICd1dGY4JztcblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIHN3aXRjaCAoZW5jb2RpbmcpIHtcbiAgICAgIGNhc2UgJ2hleCc6XG4gICAgICAgIHJldHVybiBoZXhTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICd1dGY4JzpcbiAgICAgIGNhc2UgJ3V0Zi04JzpcbiAgICAgICAgcmV0dXJuIHV0ZjhTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICdhc2NpaSc6XG4gICAgICAgIHJldHVybiBhc2NpaVNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ2xhdGluMSc6XG4gICAgICBjYXNlICdiaW5hcnknOlxuICAgICAgICByZXR1cm4gbGF0aW4xU2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAnYmFzZTY0JzpcbiAgICAgICAgcmV0dXJuIGJhc2U2NFNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ3VjczInOlxuICAgICAgY2FzZSAndWNzLTInOlxuICAgICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICAgIHJldHVybiB1dGYxNmxlU2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGxvd2VyZWRDYXNlKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpXG4gICAgICAgIGVuY29kaW5nID0gKGVuY29kaW5nICsgJycpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGxvd2VyZWRDYXNlID0gdHJ1ZTtcbiAgICB9XG4gIH1cbn1cblxuLy8gVGhlIHByb3BlcnR5IGlzIHVzZWQgYnkgYEJ1ZmZlci5pc0J1ZmZlcmAgYW5kIGBpcy1idWZmZXJgIChpbiBTYWZhcmkgNS03KSB0byBkZXRlY3Rcbi8vIEJ1ZmZlciBpbnN0YW5jZXMuXG5CdWZmZXIucHJvdG90eXBlLl9pc0J1ZmZlciA9IHRydWU7XG5cbmZ1bmN0aW9uIHN3YXAgKGIsIG4sIG0pIHtcbiAgdmFyIGkgPSBiW25dO1xuICBiW25dID0gYlttXTtcbiAgYlttXSA9IGk7XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuc3dhcDE2ID0gZnVuY3Rpb24gc3dhcDE2ICgpIHtcbiAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoO1xuICBpZiAobGVuICUgMiAhPT0gMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMTYtYml0cycpXG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkgKz0gMikge1xuICAgIHN3YXAodGhpcywgaSwgaSArIDEpO1xuICB9XG4gIHJldHVybiB0aGlzXG59O1xuXG5CdWZmZXIucHJvdG90eXBlLnN3YXAzMiA9IGZ1bmN0aW9uIHN3YXAzMiAoKSB7XG4gIHZhciBsZW4gPSB0aGlzLmxlbmd0aDtcbiAgaWYgKGxlbiAlIDQgIT09IDApIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDMyLWJpdHMnKVxuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpICs9IDQpIHtcbiAgICBzd2FwKHRoaXMsIGksIGkgKyAzKTtcbiAgICBzd2FwKHRoaXMsIGkgKyAxLCBpICsgMik7XG4gIH1cbiAgcmV0dXJuIHRoaXNcbn07XG5cbkJ1ZmZlci5wcm90b3R5cGUuc3dhcDY0ID0gZnVuY3Rpb24gc3dhcDY0ICgpIHtcbiAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoO1xuICBpZiAobGVuICUgOCAhPT0gMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNjQtYml0cycpXG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkgKz0gOCkge1xuICAgIHN3YXAodGhpcywgaSwgaSArIDcpO1xuICAgIHN3YXAodGhpcywgaSArIDEsIGkgKyA2KTtcbiAgICBzd2FwKHRoaXMsIGkgKyAyLCBpICsgNSk7XG4gICAgc3dhcCh0aGlzLCBpICsgMywgaSArIDQpO1xuICB9XG4gIHJldHVybiB0aGlzXG59O1xuXG5CdWZmZXIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcgKCkge1xuICB2YXIgbGVuZ3RoID0gdGhpcy5sZW5ndGggfCAwO1xuICBpZiAobGVuZ3RoID09PSAwKSByZXR1cm4gJydcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHJldHVybiB1dGY4U2xpY2UodGhpcywgMCwgbGVuZ3RoKVxuICByZXR1cm4gc2xvd1RvU3RyaW5nLmFwcGx5KHRoaXMsIGFyZ3VtZW50cylcbn07XG5cbkJ1ZmZlci5wcm90b3R5cGUuZXF1YWxzID0gZnVuY3Rpb24gZXF1YWxzIChiKSB7XG4gIGlmICghaW50ZXJuYWxJc0J1ZmZlcihiKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlcicpXG4gIGlmICh0aGlzID09PSBiKSByZXR1cm4gdHJ1ZVxuICByZXR1cm4gQnVmZmVyLmNvbXBhcmUodGhpcywgYikgPT09IDBcbn07XG5cbkJ1ZmZlci5wcm90b3R5cGUuaW5zcGVjdCA9IGZ1bmN0aW9uIGluc3BlY3QgKCkge1xuICB2YXIgc3RyID0gJyc7XG4gIHZhciBtYXggPSBJTlNQRUNUX01BWF9CWVRFUztcbiAgaWYgKHRoaXMubGVuZ3RoID4gMCkge1xuICAgIHN0ciA9IHRoaXMudG9TdHJpbmcoJ2hleCcsIDAsIG1heCkubWF0Y2goLy57Mn0vZykuam9pbignICcpO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG1heCkgc3RyICs9ICcgLi4uICc7XG4gIH1cbiAgcmV0dXJuICc8QnVmZmVyICcgKyBzdHIgKyAnPidcbn07XG5cbkJ1ZmZlci5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uIGNvbXBhcmUgKHRhcmdldCwgc3RhcnQsIGVuZCwgdGhpc1N0YXJ0LCB0aGlzRW5kKSB7XG4gIGlmICghaW50ZXJuYWxJc0J1ZmZlcih0YXJnZXQpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlcicpXG4gIH1cblxuICBpZiAoc3RhcnQgPT09IHVuZGVmaW5lZCkge1xuICAgIHN0YXJ0ID0gMDtcbiAgfVxuICBpZiAoZW5kID09PSB1bmRlZmluZWQpIHtcbiAgICBlbmQgPSB0YXJnZXQgPyB0YXJnZXQubGVuZ3RoIDogMDtcbiAgfVxuICBpZiAodGhpc1N0YXJ0ID09PSB1bmRlZmluZWQpIHtcbiAgICB0aGlzU3RhcnQgPSAwO1xuICB9XG4gIGlmICh0aGlzRW5kID09PSB1bmRlZmluZWQpIHtcbiAgICB0aGlzRW5kID0gdGhpcy5sZW5ndGg7XG4gIH1cblxuICBpZiAoc3RhcnQgPCAwIHx8IGVuZCA+IHRhcmdldC5sZW5ndGggfHwgdGhpc1N0YXJ0IDwgMCB8fCB0aGlzRW5kID4gdGhpcy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignb3V0IG9mIHJhbmdlIGluZGV4JylcbiAgfVxuXG4gIGlmICh0aGlzU3RhcnQgPj0gdGh
15pc0VuZCAmJiBzdGFydCA+PSBlbmQpIHtcbiAgICByZXR1cm4gMFxuICB9XG4gIGlmICh0aGlzU3RhcnQgPj0gdGhpc0VuZCkge1xuICAgIHJldHVybiAtMVxuICB9XG4gIGlmIChzdGFydCA+PSBlbmQpIHtcbiAgICByZXR1cm4gMVxuICB9XG5cbiAgc3RhcnQgPj4+PSAwO1xuICBlbmQgPj4+PSAwO1xuICB0aGlzU3RhcnQgPj4+PSAwO1xuICB0aGlzRW5kID4+Pj0gMDtcblxuICBpZiAodGhpcyA9PT0gdGFyZ2V0KSByZXR1cm4gMFxuXG4gIHZhciB4ID0gdGhpc0VuZCAtIHRoaXNTdGFydDtcbiAgdmFyIHkgPSBlbmQgLSBzdGFydDtcbiAgdmFyIGxlbiA9IE1hdGgubWluKHgsIHkpO1xuXG4gIHZhciB0aGlzQ29weSA9IHRoaXMuc2xpY2UodGhpc1N0YXJ0LCB0aGlzRW5kKTtcbiAgdmFyIHRhcmdldENvcHkgPSB0YXJnZXQuc2xpY2Uoc3RhcnQsIGVuZCk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSkge1xuICAgIGlmICh0aGlzQ29weVtpXSAhPT0gdGFyZ2V0Q29weVtpXSkge1xuICAgICAgeCA9IHRoaXNDb3B5W2ldO1xuICAgICAgeSA9IHRhcmdldENvcHlbaV07XG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIGlmICh4IDwgeSkgcmV0dXJuIC0xXG4gIGlmICh5IDwgeCkgcmV0dXJuIDFcbiAgcmV0dXJuIDBcbn07XG5cbi8vIEZpbmRzIGVpdGhlciB0aGUgZmlyc3QgaW5kZXggb2YgYHZhbGAgaW4gYGJ1ZmZlcmAgYXQgb2Zmc2V0ID49IGBieXRlT2Zmc2V0YCxcbi8vIE9SIHRoZSBsYXN0IGluZGV4IG9mIGB2YWxgIGluIGBidWZmZXJgIGF0IG9mZnNldCA8PSBgYnl0ZU9mZnNldGAuXG4vL1xuLy8gQXJndW1lbnRzOlxuLy8gLSBidWZmZXIgLSBhIEJ1ZmZlciB0byBzZWFyY2hcbi8vIC0gdmFsIC0gYSBzdHJpbmcsIEJ1ZmZlciwgb3IgbnVtYmVyXG4vLyAtIGJ5dGVPZmZzZXQgLSBhbiBpbmRleCBpbnRvIGBidWZmZXJgOyB3aWxsIGJlIGNsYW1wZWQgdG8gYW4gaW50MzJcbi8vIC0gZW5jb2RpbmcgLSBhbiBvcHRpb25hbCBlbmNvZGluZywgcmVsZXZhbnQgaXMgdmFsIGlzIGEgc3RyaW5nXG4vLyAtIGRpciAtIHRydWUgZm9yIGluZGV4T2YsIGZhbHNlIGZvciBsYXN0SW5kZXhPZlxuZnVuY3Rpb24gYmlkaXJlY3Rpb25hbEluZGV4T2YgKGJ1ZmZlciwgdmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgZGlyKSB7XG4gIC8vIEVtcHR5IGJ1ZmZlciBtZWFucyBubyBtYXRjaFxuICBpZiAoYnVmZmVyLmxlbmd0aCA9PT0gMCkgcmV0dXJuIC0xXG5cbiAgLy8gTm9ybWFsaXplIGJ5dGVPZmZzZXRcbiAgaWYgKHR5cGVvZiBieXRlT2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgIGVuY29kaW5nID0gYnl0ZU9mZnNldDtcbiAgICBieXRlT2Zmc2V0ID0gMDtcbiAgfSBlbHNlIGlmIChieXRlT2Zmc2V0ID4gMHg3ZmZmZmZmZikge1xuICAgIGJ5dGVPZmZzZXQgPSAweDdmZmZmZmZmO1xuICB9IGVsc2UgaWYgKGJ5dGVPZmZzZXQgPCAtMHg4MDAwMDAwMCkge1xuICAgIGJ5dGVPZmZzZXQgPSAtMHg4MDAwMDAwMDtcbiAgfVxuICBieXRlT2Zmc2V0ID0gK2J5dGVPZmZzZXQ7ICAvLyBDb2VyY2UgdG8gTnVtYmVyLlxuICBpZiAoaXNOYU4oYnl0ZU9mZnNldCkpIHtcbiAgICAvLyBieXRlT2Zmc2V0OiBpdCBpdCdzIHVuZGVmaW5lZCwgbnVsbCwgTmFOLCBcImZvb1wiLCBldGMsIHNlYXJjaCB3aG9sZSBidWZmZXJcbiAgICBieXRlT2Zmc2V0ID0gZGlyID8gMCA6IChidWZmZXIubGVuZ3RoIC0gMSk7XG4gIH1cblxuICAvLyBOb3JtYWxpemUgYnl0ZU9mZnNldDogbmVnYXRpdmUgb2Zmc2V0cyBzdGFydCBmcm9tIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlclxuICBpZiAoYnl0ZU9mZnNldCA8IDApIGJ5dGVPZmZzZXQgPSBidWZmZXIubGVuZ3RoICsgYnl0ZU9mZnNldDtcbiAgaWYgKGJ5dGVPZmZzZXQgPj0gYnVmZmVyLmxlbmd0aCkge1xuICAgIGlmIChkaXIpIHJldHVybiAtMVxuICAgIGVsc2UgYnl0ZU9mZnNldCA9IGJ1ZmZlci5sZW5ndGggLSAxO1xuICB9IGVsc2UgaWYgKGJ5dGVPZmZzZXQgPCAwKSB7XG4gICAgaWYgKGRpcikgYnl0ZU9mZnNldCA9IDA7XG4gICAgZWxzZSByZXR1cm4gLTFcbiAgfVxuXG4gIC8vIE5vcm1hbGl6ZSB2YWxcbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgdmFsID0gQnVmZmVyLmZyb20odmFsLCBlbmNvZGluZyk7XG4gIH1cblxuICAvLyBGaW5hbGx5LCBzZWFyY2ggZWl0aGVyIGluZGV4T2YgKGlmIGRpciBpcyB0cnVlKSBvciBsYXN0SW5kZXhPZlxuICBpZiAoaW50ZXJuYWxJc0J1ZmZlcih2YWwpKSB7XG4gICAgLy8gU3BlY2lhbCBjYXNlOiBsb29raW5nIGZvciBlbXB0eSBzdHJpbmcvYnVmZmVyIGFsd2F5cyBmYWlsc1xuICAgIGlmICh2YWwubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gLTFcbiAgICB9XG4gICAgcmV0dXJuIGFycmF5SW5kZXhPZihidWZmZXIsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGRpcilcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgIHZhbCA9IHZhbCAmIDB4RkY7IC8vIFNlYXJjaCBmb3IgYSBieXRlIHZhbHVlIFswLTI1NV1cbiAgICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQgJiZcbiAgICAgICAgdHlwZW9mIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2YgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGlmIChkaXIpIHtcbiAgICAgICAgcmV0dXJuIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChidWZmZXIsIHZhbCwgYnl0ZU9mZnNldClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBVaW50OEFycmF5LnByb3RvdHlwZS5sYXN0SW5kZXhPZi5jYWxsKGJ1ZmZlciwgdmFsLCBieXRlT2Zmc2V0KVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYXJyYXlJbmRleE9mKGJ1ZmZlciwgWyB2YWwgXSwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGRpcilcbiAgfVxuXG4gIHRocm93IG5ldyBUeXBlRXJyb3IoJ3ZhbCBtdXN0IGJlIHN0cmluZywgbnVtYmVyIG9yIEJ1ZmZlcicpXG59XG5cbmZ1bmN0aW9uIGFycmF5SW5kZXhPZiAoYXJyLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpIHtcbiAgdmFyIGluZGV4U2l6ZSA9IDE7XG4gIHZhciBhcnJMZW5ndGggPSBhcnIubGVuZ3RoO1xuICB2YXIgdmFsTGVuZ3RoID0gdmFsLmxlbmd0aDtcblxuICBpZiAoZW5jb2RpbmcgIT09IHVuZGVmaW5lZCkge1xuICAgIGVuY29kaW5nID0gU3RyaW5nKGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpO1xuICAgIGlmIChlbmNvZGluZyA9PT0gJ3VjczInIHx8IGVuY29kaW5nID09PSAndWNzLTInIHx8XG4gICAgICAgIGVuY29kaW5nID09PSAndXRmMTZsZScgfHwgZW5jb2RpbmcgPT09ICd1dGYtMTZsZScpIHtcbiAgICAgIGlmIChhcnIubGVuZ3RoIDwgMiB8fCB2YWwubGVuZ3RoIDwgMikge1xuICAgICAgICByZXR1cm4gLTFcbiAgICAgIH1cbiAgICAgIGluZGV4U2l6ZSA9IDI7XG4gICAgICBhcnJMZW5ndGggLz0gMjtcbiAgICAgIHZhbExlbmd0aCAvPSAyO1xuICAgICAgYnl0ZU9mZnNldCAvPSAyO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHJlYWQgKGJ1ZiwgaSkge1xuICAgIGlmIChpbmRleFNpemUgPT09IDEpIHtcbiAgICAgIHJldHVybi
15BidWZbaV1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGJ1Zi5yZWFkVUludDE2QkUoaSAqIGluZGV4U2l6ZSlcbiAgICB9XG4gIH1cblxuICB2YXIgaTtcbiAgaWYgKGRpcikge1xuICAgIHZhciBmb3VuZEluZGV4ID0gLTE7XG4gICAgZm9yIChpID0gYnl0ZU9mZnNldDsgaSA8IGFyckxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAocmVhZChhcnIsIGkpID09PSByZWFkKHZhbCwgZm91bmRJbmRleCA9PT0gLTEgPyAwIDogaSAtIGZvdW5kSW5kZXgpKSB7XG4gICAgICAgIGlmIChmb3VuZEluZGV4ID09PSAtMSkgZm91bmRJbmRleCA9IGk7XG4gICAgICAgIGlmIChpIC0gZm91bmRJbmRleCArIDEgPT09IHZhbExlbmd0aCkgcmV0dXJuIGZvdW5kSW5kZXggKiBpbmRleFNpemVcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChmb3VuZEluZGV4ICE9PSAtMSkgaSAtPSBpIC0gZm91bmRJbmRleDtcbiAgICAgICAgZm91bmRJbmRleCA9IC0xO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoYnl0ZU9mZnNldCArIHZhbExlbmd0aCA+IGFyckxlbmd0aCkgYnl0ZU9mZnNldCA9IGFyckxlbmd0aCAtIHZhbExlbmd0aDtcbiAgICBmb3IgKGkgPSBieXRlT2Zmc2V0OyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIGZvdW5kID0gdHJ1ZTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdmFsTGVuZ3RoOyBqKyspIHtcbiAgICAgICAgaWYgKHJlYWQoYXJyLCBpICsgaikgIT09IHJlYWQodmFsLCBqKSkge1xuICAgICAgICAgIGZvdW5kID0gZmFsc2U7XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGZvdW5kKSByZXR1cm4gaVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAtMVxufVxuXG5CdWZmZXIucHJvdG90eXBlLmluY2x1ZGVzID0gZnVuY3Rpb24gaW5jbHVkZXMgKHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIHRoaXMuaW5kZXhPZih2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nKSAhPT0gLTFcbn07XG5cbkJ1ZmZlci5wcm90b3R5cGUuaW5kZXhPZiA9IGZ1bmN0aW9uIGluZGV4T2YgKHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIGJpZGlyZWN0aW9uYWxJbmRleE9mKHRoaXMsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIHRydWUpXG59O1xuXG5CdWZmZXIucHJvdG90eXBlLmxhc3RJbmRleE9mID0gZnVuY3Rpb24gbGFzdEluZGV4T2YgKHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIGJpZGlyZWN0aW9uYWxJbmRleE9mKHRoaXMsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGZhbHNlKVxufTtcblxuZnVuY3Rpb24gaGV4V3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICBvZmZzZXQgPSBOdW1iZXIob2Zmc2V0KSB8fCAwO1xuICB2YXIgcmVtYWluaW5nID0gYnVmLmxlbmd0aCAtIG9mZnNldDtcbiAgaWYgKCFsZW5ndGgpIHtcbiAgICBsZW5ndGggPSByZW1haW5pbmc7XG4gIH0gZWxzZSB7XG4gICAgbGVuZ3RoID0gTnVtYmVyKGxlbmd0aCk7XG4gICAgaWYgKGxlbmd0aCA+IHJlbWFpbmluZykge1xuICAgICAgbGVuZ3RoID0gcmVtYWluaW5nO1xuICAgIH1cbiAgfVxuXG4gIC8vIG11c3QgYmUgYW4gZXZlbiBudW1iZXIgb2YgZGlnaXRzXG4gIHZhciBzdHJMZW4gPSBzdHJpbmcubGVuZ3RoO1xuICBpZiAoc3RyTGVuICUgMiAhPT0gMCkgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBoZXggc3RyaW5nJylcblxuICBpZiAobGVuZ3RoID4gc3RyTGVuIC8gMikge1xuICAgIGxlbmd0aCA9IHN0ckxlbiAvIDI7XG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgIHZhciBwYXJzZWQgPSBwYXJzZUludChzdHJpbmcuc3Vic3RyKGkgKiAyLCAyKSwgMTYpO1xuICAgIGlmIChpc05hTihwYXJzZWQpKSByZXR1cm4gaVxuICAgIGJ1ZltvZmZzZXQgKyBpXSA9IHBhcnNlZDtcbiAgfVxuICByZXR1cm4gaVxufVxuXG5mdW5jdGlvbiB1dGY4V3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYmxpdEJ1ZmZlcih1dGY4VG9CeXRlcyhzdHJpbmcsIGJ1Zi5sZW5ndGggLSBvZmZzZXQpLCBidWYsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiBhc2NpaVdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIoYXNjaWlUb0J5dGVzKHN0cmluZyksIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbmZ1bmN0aW9uIGxhdGluMVdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGFzY2lpV3JpdGUoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiBiYXNlNjRXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBibGl0QnVmZmVyKGJhc2U2NFRvQnl0ZXMoc3RyaW5nKSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuZnVuY3Rpb24gdWNzMldyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIodXRmMTZsZVRvQnl0ZXMoc3RyaW5nLCBidWYubGVuZ3RoIC0gb2Zmc2V0KSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIHdyaXRlIChzdHJpbmcsIG9mZnNldCwgbGVuZ3RoLCBlbmNvZGluZykge1xuICAvLyBCdWZmZXIjd3JpdGUoc3RyaW5nKVxuICBpZiAob2Zmc2V0ID09PSB1bmRlZmluZWQpIHtcbiAgICBlbmNvZGluZyA9ICd1dGY4JztcbiAgICBsZW5ndGggPSB0aGlzLmxlbmd0aDtcbiAgICBvZmZzZXQgPSAwO1xuICAvLyBCdWZmZXIjd3JpdGUoc3RyaW5nLCBlbmNvZGluZylcbiAgfSBlbHNlIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygb2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgIGVuY29kaW5nID0gb2Zmc2V0O1xuICAgIGxlbmd0aCA9IHRoaXMubGVuZ3RoO1xuICAgIG9mZnNldCA9IDA7XG4gIC8vIEJ1ZmZlciN3cml0ZShzdHJpbmcsIG9mZnNldFssIGxlbmd0aF1bLCBlbmNvZGluZ10pXG4gIH0gZWxzZSBpZiAoaXNGaW5pdGUob2Zmc2V0KSkge1xuICAgIG9mZnNldCA9IG9mZnNldCB8IDA7XG4gICAgaWYgKGlzRmluaXRlKGxlbmd0aCkpIHtcbiAgICAgIGxlbmd0aCA9IGxlbmd0aCB8IDA7XG4gICAgICBpZiAoZW5jb2RpbmcgPT09IHVuZGVmaW5lZCkgZW5jb2RpbmcgPSAndXRmOCc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVuY29kaW5nID0gbGVuZ3RoO1xuICAgICAgbGVuZ3RoID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgLy8gbGVnYWN5IHdyaXRlKHN0cmluZywgZW5jb2RpbmcsIG9mZnNldCwgbGVuZ3RoKSAtIHJlbW92ZSBpbiB2MC4xM1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdCdWZmZXIud3JpdGUoc3RyaW5nLCBlbmNvZGluZywgb2Zmc2V0WywgbGVuZ3RoXSkgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCdcbiAgICApXG4gIH1cblxuICB2Y
15XIgcmVtYWluaW5nID0gdGhpcy5sZW5ndGggLSBvZmZzZXQ7XG4gIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCB8fCBsZW5ndGggPiByZW1haW5pbmcpIGxlbmd0aCA9IHJlbWFpbmluZztcblxuICBpZiAoKHN0cmluZy5sZW5ndGggPiAwICYmIChsZW5ndGggPCAwIHx8IG9mZnNldCA8IDApKSB8fCBvZmZzZXQgPiB0aGlzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdBdHRlbXB0IHRvIHdyaXRlIG91dHNpZGUgYnVmZmVyIGJvdW5kcycpXG4gIH1cblxuICBpZiAoIWVuY29kaW5nKSBlbmNvZGluZyA9ICd1dGY4JztcblxuICB2YXIgbG93ZXJlZENhc2UgPSBmYWxzZTtcbiAgZm9yICg7Oykge1xuICAgIHN3aXRjaCAoZW5jb2RpbmcpIHtcbiAgICAgIGNhc2UgJ2hleCc6XG4gICAgICAgIHJldHVybiBoZXhXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICd1dGY4JzpcbiAgICAgIGNhc2UgJ3V0Zi04JzpcbiAgICAgICAgcmV0dXJuIHV0ZjhXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICdhc2NpaSc6XG4gICAgICAgIHJldHVybiBhc2NpaVdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ2xhdGluMSc6XG4gICAgICBjYXNlICdiaW5hcnknOlxuICAgICAgICByZXR1cm4gbGF0aW4xV3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAnYmFzZTY0JzpcbiAgICAgICAgLy8gV2FybmluZzogbWF4TGVuZ3RoIG5vdCB0YWtlbiBpbnRvIGFjY291bnQgaW4gYmFzZTY0V3JpdGVcbiAgICAgICAgcmV0dXJuIGJhc2U2NFdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ3VjczInOlxuICAgICAgY2FzZSAndWNzLTInOlxuICAgICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICAgIHJldHVybiB1Y3MyV3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGxvd2VyZWRDYXNlKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpXG4gICAgICAgIGVuY29kaW5nID0gKCcnICsgZW5jb2RpbmcpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGxvd2VyZWRDYXNlID0gdHJ1ZTtcbiAgICB9XG4gIH1cbn07XG5cbkJ1ZmZlci5wcm90b3R5cGUudG9KU09OID0gZnVuY3Rpb24gdG9KU09OICgpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnQnVmZmVyJyxcbiAgICBkYXRhOiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLl9hcnIgfHwgdGhpcywgMClcbiAgfVxufTtcblxuZnVuY3Rpb24gYmFzZTY0U2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICBpZiAoc3RhcnQgPT09IDAgJiYgZW5kID09PSBidWYubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZyb21CeXRlQXJyYXkoYnVmKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBmcm9tQnl0ZUFycmF5KGJ1Zi5zbGljZShzdGFydCwgZW5kKSlcbiAgfVxufVxuXG5mdW5jdGlvbiB1dGY4U2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICBlbmQgPSBNYXRoLm1pbihidWYubGVuZ3RoLCBlbmQpO1xuICB2YXIgcmVzID0gW107XG5cbiAgdmFyIGkgPSBzdGFydDtcbiAgd2hpbGUgKGkgPCBlbmQpIHtcbiAgICB2YXIgZmlyc3RCeXRlID0gYnVmW2ldO1xuICAgIHZhciBjb2RlUG9pbnQgPSBudWxsO1xuICAgIHZhciBieXRlc1BlclNlcXVlbmNlID0gKGZpcnN0Qnl0ZSA+IDB4RUYpID8gNFxuICAgICAgOiAoZmlyc3RCeXRlID4gMHhERikgPyAzXG4gICAgICA6IChmaXJzdEJ5dGUgPiAweEJGKSA/IDJcbiAgICAgIDogMTtcblxuICAgIGlmIChpICsgYnl0ZXNQZXJTZXF1ZW5jZSA8PSBlbmQpIHtcbiAgICAgIHZhciBzZWNvbmRCeXRlLCB0aGlyZEJ5dGUsIGZvdXJ0aEJ5dGUsIHRlbXBDb2RlUG9pbnQ7XG5cbiAgICAgIHN3aXRjaCAoYnl0ZXNQZXJTZXF1ZW5jZSkge1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgaWYgKGZpcnN0Qnl0ZSA8IDB4ODApIHtcbiAgICAgICAgICAgIGNvZGVQb2ludCA9IGZpcnN0Qnl0ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIHNlY29uZEJ5dGUgPSBidWZbaSArIDFdO1xuICAgICAgICAgIGlmICgoc2Vjb25kQnl0ZSAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgICB0ZW1wQ29kZVBvaW50ID0gKGZpcnN0Qnl0ZSAmIDB4MUYpIDw8IDB4NiB8IChzZWNvbmRCeXRlICYgMHgzRik7XG4gICAgICAgICAgICBpZiAodGVtcENvZGVQb2ludCA+IDB4N0YpIHtcbiAgICAgICAgICAgICAgY29kZVBvaW50ID0gdGVtcENvZGVQb2ludDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgIHNlY29uZEJ5dGUgPSBidWZbaSArIDFdO1xuICAgICAgICAgIHRoaXJkQnl0ZSA9IGJ1ZltpICsgMl07XG4gICAgICAgICAgaWYgKChzZWNvbmRCeXRlICYgMHhDMCkgPT09IDB4ODAgJiYgKHRoaXJkQnl0ZSAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgICB0ZW1wQ29kZVBvaW50ID0gKGZpcnN0Qnl0ZSAmIDB4RikgPDwgMHhDIHwgKHNlY29uZEJ5dGUgJiAweDNGKSA8PCAweDYgfCAodGhpcmRCeXRlICYgMHgzRik7XG4gICAgICAgICAgICBpZiAodGVtcENvZGVQb2ludCA+IDB4N0ZGICYmICh0ZW1wQ29kZVBvaW50IDwgMHhEODAwIHx8IHRlbXBDb2RlUG9pbnQgPiAweERGRkYpKSB7XG4gICAgICAgICAgICAgIGNvZGVQb2ludCA9IHRlbXBDb2RlUG9pbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXTtcbiAgICAgICAgICB0aGlyZEJ5dGUgPSBidWZbaSArIDJdO1xuICAgICAgICAgIGZvdXJ0aEJ5dGUgPSBidWZbaSArIDNdO1xuICAgICAgICAgIGlmICgoc2Vjb25kQnl0ZSAmIDB4QzApID09PSAweDgwICYmICh0aGlyZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCAmJiAoZm91cnRoQnl0ZSAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgICB0ZW1wQ29kZVBvaW50ID0gKGZpcnN0Qnl0ZSAmIDB4RikgPDwgMHgxMiB8IChzZWNvbmRCeXRlICYgMHgzRikgPDwgMHhDIHwgKHRoaXJkQnl0ZSAmIDB4M0YpIDw8IDB4NiB8IChmb3VydGhCeXRlICYgMHgzRik7XG4gICAgICAgICAgICBpZiAodGVtcENvZGVQb2ludCA+IDB4RkZGRiAmJiB0ZW1wQ29kZVBvaW50IDwgMHgxMTAwMDApIHtcbiAgICAgICAgICAgICAgY29
15kZVBvaW50ID0gdGVtcENvZGVQb2ludDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNvZGVQb2ludCA9PT0gbnVsbCkge1xuICAgICAgLy8gd2UgZGlkIG5vdCBnZW5lcmF0ZSBhIHZhbGlkIGNvZGVQb2ludCBzbyBpbnNlcnQgYVxuICAgICAgLy8gcmVwbGFjZW1lbnQgY2hhciAoVStGRkZEKSBhbmQgYWR2YW5jZSBvbmx5IDEgYnl0ZVxuICAgICAgY29kZVBvaW50ID0gMHhGRkZEO1xuICAgICAgYnl0ZXNQZXJTZXF1ZW5jZSA9IDE7XG4gICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPiAweEZGRkYpIHtcbiAgICAgIC8vIGVuY29kZSB0byB1dGYxNiAoc3Vycm9nYXRlIHBhaXIgZGFuY2UpXG4gICAgICBjb2RlUG9pbnQgLT0gMHgxMDAwMDtcbiAgICAgIHJlcy5wdXNoKGNvZGVQb2ludCA+Pj4gMTAgJiAweDNGRiB8IDB4RDgwMCk7XG4gICAgICBjb2RlUG9pbnQgPSAweERDMDAgfCBjb2RlUG9pbnQgJiAweDNGRjtcbiAgICB9XG5cbiAgICByZXMucHVzaChjb2RlUG9pbnQpO1xuICAgIGkgKz0gYnl0ZXNQZXJTZXF1ZW5jZTtcbiAgfVxuXG4gIHJldHVybiBkZWNvZGVDb2RlUG9pbnRzQXJyYXkocmVzKVxufVxuXG4vLyBCYXNlZCBvbiBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yMjc0NzI3Mi82ODA3NDIsIHRoZSBicm93c2VyIHdpdGhcbi8vIHRoZSBsb3dlc3QgbGltaXQgaXMgQ2hyb21lLCB3aXRoIDB4MTAwMDAgYXJncy5cbi8vIFdlIGdvIDEgbWFnbml0dWRlIGxlc3MsIGZvciBzYWZldHlcbnZhciBNQVhfQVJHVU1FTlRTX0xFTkdUSCA9IDB4MTAwMDtcblxuZnVuY3Rpb24gZGVjb2RlQ29kZVBvaW50c0FycmF5IChjb2RlUG9pbnRzKSB7XG4gIHZhciBsZW4gPSBjb2RlUG9pbnRzLmxlbmd0aDtcbiAgaWYgKGxlbiA8PSBNQVhfQVJHVU1FTlRTX0xFTkdUSCkge1xuICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZywgY29kZVBvaW50cykgLy8gYXZvaWQgZXh0cmEgc2xpY2UoKVxuICB9XG5cbiAgLy8gRGVjb2RlIGluIGNodW5rcyB0byBhdm9pZCBcImNhbGwgc3RhY2sgc2l6ZSBleGNlZWRlZFwiLlxuICB2YXIgcmVzID0gJyc7XG4gIHZhciBpID0gMDtcbiAgd2hpbGUgKGkgPCBsZW4pIHtcbiAgICByZXMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShcbiAgICAgIFN0cmluZyxcbiAgICAgIGNvZGVQb2ludHMuc2xpY2UoaSwgaSArPSBNQVhfQVJHVU1FTlRTX0xFTkdUSClcbiAgICApO1xuICB9XG4gIHJldHVybiByZXNcbn1cblxuZnVuY3Rpb24gYXNjaWlTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIHZhciByZXQgPSAnJztcbiAgZW5kID0gTWF0aC5taW4oYnVmLmxlbmd0aCwgZW5kKTtcblxuICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7ICsraSkge1xuICAgIHJldCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ1ZltpXSAmIDB4N0YpO1xuICB9XG4gIHJldHVybiByZXRcbn1cblxuZnVuY3Rpb24gbGF0aW4xU2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICB2YXIgcmV0ID0gJyc7XG4gIGVuZCA9IE1hdGgubWluKGJ1Zi5sZW5ndGgsIGVuZCk7XG5cbiAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHtcbiAgICByZXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShidWZbaV0pO1xuICB9XG4gIHJldHVybiByZXRcbn1cblxuZnVuY3Rpb24gaGV4U2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICB2YXIgbGVuID0gYnVmLmxlbmd0aDtcblxuICBpZiAoIXN0YXJ0IHx8IHN0YXJ0IDwgMCkgc3RhcnQgPSAwO1xuICBpZiAoIWVuZCB8fCBlbmQgPCAwIHx8IGVuZCA+IGxlbikgZW5kID0gbGVuO1xuXG4gIHZhciBvdXQgPSAnJztcbiAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHtcbiAgICBvdXQgKz0gdG9IZXgoYnVmW2ldKTtcbiAgfVxuICByZXR1cm4gb3V0XG59XG5cbmZ1bmN0aW9uIHV0ZjE2bGVTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIHZhciBieXRlcyA9IGJ1Zi5zbGljZShzdGFydCwgZW5kKTtcbiAgdmFyIHJlcyA9ICcnO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgcmVzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZXNbaV0gKyBieXRlc1tpICsgMV0gKiAyNTYpO1xuICB9XG4gIHJldHVybiByZXNcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5zbGljZSA9IGZ1bmN0aW9uIHNsaWNlIChzdGFydCwgZW5kKSB7XG4gIHZhciBsZW4gPSB0aGlzLmxlbmd0aDtcbiAgc3RhcnQgPSB+fnN0YXJ0O1xuICBlbmQgPSBlbmQgPT09IHVuZGVmaW5lZCA/IGxlbiA6IH5+ZW5kO1xuXG4gIGlmIChzdGFydCA8IDApIHtcbiAgICBzdGFydCArPSBsZW47XG4gICAgaWYgKHN0YXJ0IDwgMCkgc3RhcnQgPSAwO1xuICB9IGVsc2UgaWYgKHN0YXJ0ID4gbGVuKSB7XG4gICAgc3RhcnQgPSBsZW47XG4gIH1cblxuICBpZiAoZW5kIDwgMCkge1xuICAgIGVuZCArPSBsZW47XG4gICAgaWYgKGVuZCA8IDApIGVuZCA9IDA7XG4gIH0gZWxzZSBpZiAoZW5kID4gbGVuKSB7XG4gICAgZW5kID0gbGVuO1xuICB9XG5cbiAgaWYgKGVuZCA8IHN0YXJ0KSBlbmQgPSBzdGFydDtcblxuICB2YXIgbmV3QnVmO1xuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICBuZXdCdWYgPSB0aGlzLnN1YmFycmF5KHN0YXJ0LCBlbmQpO1xuICAgIG5ld0J1Zi5fX3Byb3RvX18gPSBCdWZmZXIucHJvdG90eXBlO1xuICB9IGVsc2Uge1xuICAgIHZhciBzbGljZUxlbiA9IGVuZCAtIHN0YXJ0O1xuICAgIG5ld0J1ZiA9IG5ldyBCdWZmZXIoc2xpY2VMZW4sIHVuZGVmaW5lZCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzbGljZUxlbjsgKytpKSB7XG4gICAgICBuZXdCdWZbaV0gPSB0aGlzW2kgKyBzdGFydF07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5ld0J1ZlxufTtcblxuLypcbiAqIE5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgYnVmZmVyIGlzbid0IHRyeWluZyB0byB3cml0ZSBvdXQgb2YgYm91bmRzLlxuICovXG5mdW5jdGlvbiBjaGVja09mZnNldCAob2Zmc2V0LCBleHQsIGxlbmd0aCkge1xuICBpZiAoKG9mZnNldCAlIDEpICE9PSAwIHx8IG9mZnNldCA8IDApIHR
15ocm93IG5ldyBSYW5nZUVycm9yKCdvZmZzZXQgaXMgbm90IHVpbnQnKVxuICBpZiAob2Zmc2V0ICsgZXh0ID4gbGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignVHJ5aW5nIHRvIGFjY2VzcyBiZXlvbmQgYnVmZmVyIGxlbmd0aCcpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnRMRSA9IGZ1bmN0aW9uIHJlYWRVSW50TEUgKG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMDtcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwO1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIGJ5dGVMZW5ndGgsIHRoaXMubGVuZ3RoKTtcblxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXRdO1xuICB2YXIgbXVsID0gMTtcbiAgdmFyIGkgPSAwO1xuICB3aGlsZSAoKytpIDwgYnl0ZUxlbmd0aCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIGldICogbXVsO1xuICB9XG5cbiAgcmV0dXJuIHZhbFxufTtcblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludEJFID0gZnVuY3Rpb24gcmVhZFVJbnRCRSAob2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgfCAwO1xuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCB8IDA7XG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICBjaGVja09mZnNldChvZmZzZXQsIGJ5dGVMZW5ndGgsIHRoaXMubGVuZ3RoKTtcbiAgfVxuXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldCArIC0tYnl0ZUxlbmd0aF07XG4gIHZhciBtdWwgPSAxO1xuICB3aGlsZSAoYnl0ZUxlbmd0aCA+IDAgJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyAtLWJ5dGVMZW5ndGhdICogbXVsO1xuICB9XG5cbiAgcmV0dXJuIHZhbFxufTtcblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDggPSBmdW5jdGlvbiByZWFkVUludDggKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAxLCB0aGlzLmxlbmd0aCk7XG4gIHJldHVybiB0aGlzW29mZnNldF1cbn07XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQxNkxFID0gZnVuY3Rpb24gcmVhZFVJbnQxNkxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMiwgdGhpcy5sZW5ndGgpO1xuICByZXR1cm4gdGhpc1tvZmZzZXRdIHwgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOClcbn07XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQxNkJFID0gZnVuY3Rpb24gcmVhZFVJbnQxNkJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMiwgdGhpcy5sZW5ndGgpO1xuICByZXR1cm4gKHRoaXNbb2Zmc2V0XSA8PCA4KSB8IHRoaXNbb2Zmc2V0ICsgMV1cbn07XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQzMkxFID0gZnVuY3Rpb24gcmVhZFVJbnQzMkxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpO1xuXG4gIHJldHVybiAoKHRoaXNbb2Zmc2V0XSkgfFxuICAgICAgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOCkgfFxuICAgICAgKHRoaXNbb2Zmc2V0ICsgMl0gPDwgMTYpKSArXG4gICAgICAodGhpc1tvZmZzZXQgKyAzXSAqIDB4MTAwMDAwMClcbn07XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQzMkJFID0gZnVuY3Rpb24gcmVhZFVJbnQzMkJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpO1xuXG4gIHJldHVybiAodGhpc1tvZmZzZXRdICogMHgxMDAwMDAwKSArXG4gICAgKCh0aGlzW29mZnNldCArIDFdIDw8IDE2KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMl0gPDwgOCkgfFxuICAgIHRoaXNbb2Zmc2V0ICsgM10pXG59O1xuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnRMRSA9IGZ1bmN0aW9uIHJlYWRJbnRMRSAob2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgfCAwO1xuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCB8IDA7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpO1xuXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldF07XG4gIHZhciBtdWwgPSAxO1xuICB2YXIgaSA9IDA7XG4gIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdmFsICs9IHRoaXNbb2Zmc2V0ICsgaV0gKiBtdWw7XG4gIH1cbiAgbXVsICo9IDB4ODA7XG5cbiAgaWYgKHZhbCA+PSBtdWwpIHZhbCAtPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aCk7XG5cbiAgcmV0dXJuIHZhbFxufTtcblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50QkUgPSBmdW5jdGlvbiByZWFkSW50QkUgKG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMDtcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwO1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIGJ5dGVMZW5ndGgsIHRoaXMubGVuZ3RoKTtcblxuICB2YXIgaSA9IGJ5dGVMZW5ndGg7XG4gIHZhciBtdWwgPSAxO1xuICB2YXIgdmFsID0gdGhpc1tvZmZzZXQgKyAtLWldO1xuICB3aGlsZSAoaSA+IDAgJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyAtLWldICogbXVsO1xuICB9XG4gIG11bCAqPSAweDgwO1xuXG4gIGlmICh2YWwgPj0gbXVsKSB2YWwgLT0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGgpO1xuXG4gIHJldHVybiB2YWxcbn07XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDggPSBmdW5jdGlvbiByZWFkSW50OCAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDEsIHRoaXMubGVuZ3RoKTtcbiAgaWYgKCEodGhpc1tvZmZzZXRdICYgMHg4MCkpIHJldHVybiAodGhpc1tvZmZzZXRdKVxuICByZXR1cm4gKCgweGZmIC0gdGhpc1tvZmZzZXRdICsgMSkgKiAtMSlcbn07XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDE2TEUgPSBmdW5jdGlvbiByZWFkSW50MTZMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDIsIHRoaXMubGVuZ3RoKTtcbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0XSB8ICh0aGlzW29mZnNldCArIDFdIDw8IDgpO1xuICByZXR1cm4gKHZhbCAmIDB4ODAwMCkgPyB2YWwgfCAweEZGRkYwMDAwIDogdmFsXG59O1xuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQxNkJFID0gZnVuY3Rpb24gcmVhZEludDE2QkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aCk7XG4gIHZhciB2YWwgPSB0aGlzW29mZnNldCArIDFdIHwgKHRoaXNbb2Zmc2V0XSA8PCA4KTtcbiAgcmV0dXJuICh2YWwgJiAweDgwMDApID8gdmFsIHwgMHhGRkZGMDAwMCA6IHZhbFxufTtcblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MzJMRSA9IGZ1bmN0aW9uIHJlYWRJbnQzMkxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpO1xuXG4gIHJldHVybiAodGhpc1tvZmZzZXRdKSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOCkgfFxuICAgICh0aGlzW29mZnNldCArIDJdIDw8IDE2KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgM10gPDwgMjQpXG59O1xuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQzMkJFID0gZnVuY3Rpb24gcmVhZEludDMyQkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aCk7XG5cbiAgcmV0dXJuICh0aGlzW29mZnNldF0gPDwgMjQpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAxXSA8PCAxNikgfFxuICAgICh0aGlzW29mZnNldCArIDJdIDw8IDgpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAzXSlcbn07XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEZsb2F0TEUgPSBmdW5jdGlvbiByZWFkRmxvYXRMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKTtcbiAgcmV0dXJuIHJlYWQodGhpcywgb2Zmc2V0LCB0cnVlLCAyMywgNClcbn07XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEZsb2F0
15QkUgPSBmdW5jdGlvbiByZWFkRmxvYXRCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKTtcbiAgcmV0dXJuIHJlYWQodGhpcywgb2Zmc2V0LCBmYWxzZSwgMjMsIDQpXG59O1xuXG5CdWZmZXIucHJvdG90eXBlLnJlYWREb3VibGVMRSA9IGZ1bmN0aW9uIHJlYWREb3VibGVMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDgsIHRoaXMubGVuZ3RoKTtcbiAgcmV0dXJuIHJlYWQodGhpcywgb2Zmc2V0LCB0cnVlLCA1MiwgOClcbn07XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZERvdWJsZUJFID0gZnVuY3Rpb24gcmVhZERvdWJsZUJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgOCwgdGhpcy5sZW5ndGgpO1xuICByZXR1cm4gcmVhZCh0aGlzLCBvZmZzZXQsIGZhbHNlLCA1MiwgOClcbn07XG5cbmZ1bmN0aW9uIGNoZWNrSW50IChidWYsIHZhbHVlLCBvZmZzZXQsIGV4dCwgbWF4LCBtaW4pIHtcbiAgaWYgKCFpbnRlcm5hbElzQnVmZmVyKGJ1ZikpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiYnVmZmVyXCIgYXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciBpbnN0YW5jZScpXG4gIGlmICh2YWx1ZSA+IG1heCB8fCB2YWx1ZSA8IG1pbikgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1widmFsdWVcIiBhcmd1bWVudCBpcyBvdXQgb2YgYm91bmRzJylcbiAgaWYgKG9mZnNldCArIGV4dCA+IGJ1Zi5sZW5ndGgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbmRleCBvdXQgb2YgcmFuZ2UnKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludExFID0gZnVuY3Rpb24gd3JpdGVVSW50TEUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlO1xuICBvZmZzZXQgPSBvZmZzZXQgfCAwO1xuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCB8IDA7XG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICB2YXIgbWF4Qnl0ZXMgPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aCkgLSAxO1xuICAgIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG1heEJ5dGVzLCAwKTtcbiAgfVxuXG4gIHZhciBtdWwgPSAxO1xuICB2YXIgaSA9IDA7XG4gIHRoaXNbb2Zmc2V0XSA9IHZhbHVlICYgMHhGRjtcbiAgd2hpbGUgKCsraSA8IGJ5dGVMZW5ndGggJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB0aGlzW29mZnNldCArIGldID0gKHZhbHVlIC8gbXVsKSAmIDB4RkY7XG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufTtcblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnRCRSA9IGZ1bmN0aW9uIHdyaXRlVUludEJFICh2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZTtcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMDtcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwO1xuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgdmFyIG1heEJ5dGVzID0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGgpIC0gMTtcbiAgICBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBtYXhCeXRlcywgMCk7XG4gIH1cblxuICB2YXIgaSA9IGJ5dGVMZW5ndGggLSAxO1xuICB2YXIgbXVsID0gMTtcbiAgdGhpc1tvZmZzZXQgKyBpXSA9IHZhbHVlICYgMHhGRjtcbiAgd2hpbGUgKC0taSA+PSAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICh2YWx1ZSAvIG11bCkgJiAweEZGO1xuICB9XG5cbiAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGhcbn07XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50OCA9IGZ1bmN0aW9uIHdyaXRlVUludDggKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlO1xuICBvZmZzZXQgPSBvZmZzZXQgfCAwO1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAxLCAweGZmLCAwKTtcbiAgaWYgKCFCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkgdmFsdWUgPSBNYXRoLmZsb29yKHZhbHVlKTtcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZik7XG4gIHJldHVybiBvZmZzZXQgKyAxXG59O1xuXG5mdW5jdGlvbiBvYmplY3RXcml0ZVVJbnQxNiAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4pIHtcbiAgaWYgKHZhbHVlIDwgMCkgdmFsdWUgPSAweGZmZmYgKyB2YWx1ZSArIDE7XG4gIGZvciAodmFyIGkgPSAwLCBqID0gTWF0aC5taW4oYnVmLmxlbmd0aCAtIG9mZnNldCwgMik7IGkgPCBqOyArK2kpIHtcbiAgICBidWZbb2Zmc2V0ICsgaV0gPSAodmFsdWUgJiAoMHhmZiA8PCAoOCAqIChsaXR0bGVFbmRpYW4gPyBpIDogMSAtIGkpKSkpID4+PlxuICAgICAgKGxpdHRsZUVuZGlhbiA/IGkgOiAxIC0gaSkgKiA4O1xuICB9XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MTZMRSA9IGZ1bmN0aW9uIHdyaXRlVUludDE2TEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlO1xuICBvZmZzZXQgPSBvZmZzZXQgfCAwO1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAyLCAweGZmZmYsIDApO1xuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKTtcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiA4KTtcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQxNih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlKTtcbiAgfVxuICByZXR1cm4gb2Zmc2V0ICsgMlxufTtcblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQxNkJFID0gZnVuY3Rpb24gd3JpdGVVSW50MTZCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWU7XG4gIG9mZnNldCA9IG9mZnNldCB8IDA7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDIsIDB4ZmZmZiwgMCk7XG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSA+Pj4gOCk7XG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSAmIDB4ZmYpO1xuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDE2KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlKTtcbiAgfVxuICByZXR1cm4gb2Zmc2V0ICsgMlxufTtcblxuZnVuY3Rpb24gb2JqZWN0V3JpdGVVSW50MzIgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuKSB7XG4gIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZmZmZmZmZiArIHZhbHVlICsgMTtcbiAgZm9yICh2YXIgaSA9IDAsIGogPSBNYXRoLm1pbihidWYubGVuZ3RoIC0gb2Zmc2V0LCA0KTsgaSA8IGo7ICsraSkge1xuICAgIGJ1ZltvZmZzZXQgKyBpXSA9ICh2YWx1ZSA+Pj4gKGxpdHRsZUVuZGlhbiA/IGkgOiAzIC0gaSkgKiA4KSAmIDB4ZmY7XG4gIH1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQzMkxFID0gZnVuY3Rpb24gd3JpdGVVSW50MzJMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWU7XG4gIG9mZnNldCA9IG9mZnNldCB8IDA7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDQsIDB4ZmZmZmZmZmYsIDApO1xuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldCArIDNdID0gKHZhbHVlID4+PiAyNCk7XG4gICAgdGhpc1tvZmZzZXQgKyAyXSA9ICh2YWx1ZSA+Pj4gMTYpO1xuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDgpO1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpO1xuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDMyKHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUpO1xuICB9XG4gI
15HJldHVybiBvZmZzZXQgKyA0XG59O1xuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDMyQkUgPSBmdW5jdGlvbiB3cml0ZVVJbnQzMkJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZTtcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMDtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHhmZmZmZmZmZiwgMCk7XG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSA+Pj4gMjQpO1xuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDE2KTtcbiAgICB0aGlzW29mZnNldCArIDJdID0gKHZhbHVlID4+PiA4KTtcbiAgICB0aGlzW29mZnNldCArIDNdID0gKHZhbHVlICYgMHhmZik7XG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MzIodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UpO1xuICB9XG4gIHJldHVybiBvZmZzZXQgKyA0XG59O1xuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50TEUgPSBmdW5jdGlvbiB3cml0ZUludExFICh2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZTtcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMDtcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIHZhciBsaW1pdCA9IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoIC0gMSk7XG5cbiAgICBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBsaW1pdCAtIDEsIC1saW1pdCk7XG4gIH1cblxuICB2YXIgaSA9IDA7XG4gIHZhciBtdWwgPSAxO1xuICB2YXIgc3ViID0gMDtcbiAgdGhpc1tvZmZzZXRdID0gdmFsdWUgJiAweEZGO1xuICB3aGlsZSAoKytpIDwgYnl0ZUxlbmd0aCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIGlmICh2YWx1ZSA8IDAgJiYgc3ViID09PSAwICYmIHRoaXNbb2Zmc2V0ICsgaSAtIDFdICE9PSAwKSB7XG4gICAgICBzdWIgPSAxO1xuICAgIH1cbiAgICB0aGlzW29mZnNldCArIGldID0gKCh2YWx1ZSAvIG11bCkgPj4gMCkgLSBzdWIgJiAweEZGO1xuICB9XG5cbiAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGhcbn07XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnRCRSA9IGZ1bmN0aW9uIHdyaXRlSW50QkUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlO1xuICBvZmZzZXQgPSBvZmZzZXQgfCAwO1xuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgdmFyIGxpbWl0ID0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGggLSAxKTtcblxuICAgIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIGxpbWl0IC0gMSwgLWxpbWl0KTtcbiAgfVxuXG4gIHZhciBpID0gYnl0ZUxlbmd0aCAtIDE7XG4gIHZhciBtdWwgPSAxO1xuICB2YXIgc3ViID0gMDtcbiAgdGhpc1tvZmZzZXQgKyBpXSA9IHZhbHVlICYgMHhGRjtcbiAgd2hpbGUgKC0taSA+PSAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgaWYgKHZhbHVlIDwgMCAmJiBzdWIgPT09IDAgJiYgdGhpc1tvZmZzZXQgKyBpICsgMV0gIT09IDApIHtcbiAgICAgIHN1YiA9IDE7XG4gICAgfVxuICAgIHRoaXNbb2Zmc2V0ICsgaV0gPSAoKHZhbHVlIC8gbXVsKSA+PiAwKSAtIHN1YiAmIDB4RkY7XG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufTtcblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDggPSBmdW5jdGlvbiB3cml0ZUludDggKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlO1xuICBvZmZzZXQgPSBvZmZzZXQgfCAwO1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAxLCAweDdmLCAtMHg4MCk7XG4gIGlmICghQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHZhbHVlID0gTWF0aC5mbG9vcih2YWx1ZSk7XG4gIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZiArIHZhbHVlICsgMTtcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZik7XG4gIHJldHVybiBvZmZzZXQgKyAxXG59O1xuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50MTZMRSA9IGZ1bmN0aW9uIHdyaXRlSW50MTZMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWU7XG4gIG9mZnNldCA9IG9mZnNldCB8IDA7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDIsIDB4N2ZmZiwgLTB4ODAwMCk7XG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpO1xuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDgpO1xuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDE2KHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUpO1xuICB9XG4gIHJldHVybiBvZmZzZXQgKyAyXG59O1xuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50MTZCRSA9IGZ1bmN0aW9uIHdyaXRlSW50MTZCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWU7XG4gIG9mZnNldCA9IG9mZnNldCB8IDA7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDIsIDB4N2ZmZiwgLTB4ODAwMCk7XG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSA+Pj4gOCk7XG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSAmIDB4ZmYpO1xuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDE2KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlKTtcbiAgfVxuICByZXR1cm4gb2Zmc2V0ICsgMlxufTtcblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDMyTEUgPSBmdW5jdGlvbiB3cml0ZUludDMyTEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlO1xuICBvZmZzZXQgPSBvZmZzZXQgfCAwO1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCA0LCAweDdmZmZmZmZmLCAtMHg4MDAwMDAwMCk7XG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpO1xuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDgpO1xuICAgIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDE2KTtcbiAgICB0aGlzW29mZnNldCArIDNdID0gKHZhbHVlID4+PiAyNCk7XG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MzIodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSk7XG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDRcbn07XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQzMkJFID0gZnVuY3Rpb24gd3JpdGVJbnQzMkJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZTtcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMDtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHg3ZmZmZmZmZiwgLTB4ODAwMDAwMDApO1xuICBpZiAodmFsdWUgPCAwKSB2YWx1ZSA9IDB4ZmZmZmZmZmYgKyB2YWx1ZSArIDE7XG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSA+Pj4gMjQpO1xuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDE2KTtcbiAgICB0aGlzW29mZnNldCArIDJdID0gKHZhbHVlID4+PiA4KTtcbiAgICB0aGlzW29mZnNldCArIDNdID0gKHZhbHVlICYgMHhmZik7XG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MzIodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UpO1xuICB9XG4gI
15HJldHVybiBvZmZzZXQgKyA0XG59O1xuXG5mdW5jdGlvbiBjaGVja0lFRUU3NTQgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgZXh0LCBtYXgsIG1pbikge1xuICBpZiAob2Zmc2V0ICsgZXh0ID4gYnVmLmxlbmd0aCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0luZGV4IG91dCBvZiByYW5nZScpXG4gIGlmIChvZmZzZXQgPCAwKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW5kZXggb3V0IG9mIHJhbmdlJylcbn1cblxuZnVuY3Rpb24gd3JpdGVGbG9hdCAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICBjaGVja0lFRUU3NTQoYnVmLCB2YWx1ZSwgb2Zmc2V0LCA0KTtcbiAgfVxuICB3cml0ZShidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgMjMsIDQpO1xuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlRmxvYXRMRSA9IGZ1bmN0aW9uIHdyaXRlRmxvYXRMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRmxvYXQodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSwgbm9Bc3NlcnQpXG59O1xuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlRmxvYXRCRSA9IGZ1bmN0aW9uIHdyaXRlRmxvYXRCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRmxvYXQodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UsIG5vQXNzZXJ0KVxufTtcblxuZnVuY3Rpb24gd3JpdGVEb3VibGUgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuLCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgY2hlY2tJRUVFNzU0KGJ1ZiwgdmFsdWUsIG9mZnNldCwgOCk7XG4gIH1cbiAgd3JpdGUoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIDUyLCA4KTtcbiAgcmV0dXJuIG9mZnNldCArIDhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZURvdWJsZUxFID0gZnVuY3Rpb24gd3JpdGVEb3VibGVMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRG91YmxlKHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUsIG5vQXNzZXJ0KVxufTtcblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZURvdWJsZUJFID0gZnVuY3Rpb24gd3JpdGVEb3VibGVCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRG91YmxlKHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlLCBub0Fzc2VydClcbn07XG5cbi8vIGNvcHkodGFyZ2V0QnVmZmVyLCB0YXJnZXRTdGFydD0wLCBzb3VyY2VTdGFydD0wLCBzb3VyY2VFbmQ9YnVmZmVyLmxlbmd0aClcbkJ1ZmZlci5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uIGNvcHkgKHRhcmdldCwgdGFyZ2V0U3RhcnQsIHN0YXJ0LCBlbmQpIHtcbiAgaWYgKCFzdGFydCkgc3RhcnQgPSAwO1xuICBpZiAoIWVuZCAmJiBlbmQgIT09IDApIGVuZCA9IHRoaXMubGVuZ3RoO1xuICBpZiAodGFyZ2V0U3RhcnQgPj0gdGFyZ2V0Lmxlbmd0aCkgdGFyZ2V0U3RhcnQgPSB0YXJnZXQubGVuZ3RoO1xuICBpZiAoIXRhcmdldFN0YXJ0KSB0YXJnZXRTdGFydCA9IDA7XG4gIGlmIChlbmQgPiAwICYmIGVuZCA8IHN0YXJ0KSBlbmQgPSBzdGFydDtcblxuICAvLyBDb3B5IDAgYnl0ZXM7IHdlJ3JlIGRvbmVcbiAgaWYgKGVuZCA9PT0gc3RhcnQpIHJldHVybiAwXG4gIGlmICh0YXJnZXQubGVuZ3RoID09PSAwIHx8IHRoaXMubGVuZ3RoID09PSAwKSByZXR1cm4gMFxuXG4gIC8vIEZhdGFsIGVycm9yIGNvbmRpdGlvbnNcbiAgaWYgKHRhcmdldFN0YXJ0IDwgMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCd0YXJnZXRTdGFydCBvdXQgb2YgYm91bmRzJylcbiAgfVxuICBpZiAoc3RhcnQgPCAwIHx8IHN0YXJ0ID49IHRoaXMubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignc291cmNlU3RhcnQgb3V0IG9mIGJvdW5kcycpXG4gIGlmIChlbmQgPCAwKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignc291cmNlRW5kIG91dCBvZiBib3VuZHMnKVxuXG4gIC8vIEFyZSB3ZSBvb2I/XG4gIGlmIChlbmQgPiB0aGlzLmxlbmd0aCkgZW5kID0gdGhpcy5sZW5ndGg7XG4gIGlmICh0YXJnZXQubGVuZ3RoIC0gdGFyZ2V0U3RhcnQgPCBlbmQgLSBzdGFydCkge1xuICAgIGVuZCA9IHRhcmdldC5sZW5ndGggLSB0YXJnZXRTdGFydCArIHN0YXJ0O1xuICB9XG5cbiAgdmFyIGxlbiA9IGVuZCAtIHN0YXJ0O1xuICB2YXIgaTtcblxuICBpZiAodGhpcyA9PT0gdGFyZ2V0ICYmIHN0YXJ0IDwgdGFyZ2V0U3RhcnQgJiYgdGFyZ2V0U3RhcnQgPCBlbmQpIHtcbiAgICAvLyBkZXNjZW5kaW5nIGNvcHkgZnJvbSBlbmRcbiAgICBmb3IgKGkgPSBsZW4gLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgdGFyZ2V0W2kgKyB0YXJnZXRTdGFydF0gPSB0aGlzW2kgKyBzdGFydF07XG4gICAgfVxuICB9IGVsc2UgaWYgKGxlbiA8IDEwMDAgfHwgIUJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgLy8gYXNjZW5kaW5nIGNvcHkgZnJvbSBzdGFydFxuICAgIGZvciAoaSA9IDA7IGkgPCBsZW47ICsraSkge1xuICAgICAgdGFyZ2V0W2kgKyB0YXJnZXRTdGFydF0gPSB0aGlzW2kgKyBzdGFydF07XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIFVpbnQ4QXJyYXkucHJvdG90eXBlLnNldC5jYWxsKFxuICAgICAgdGFyZ2V0LFxuICAgICAgdGhpcy5zdWJhcnJheShzdGFydCwgc3RhcnQgKyBsZW4pLFxuICAgICAgdGFyZ2V0U3RhcnRcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIGxlblxufTtcblxuLy8gVXNhZ2U6XG4vLyAgICBidWZmZXIuZmlsbChudW1iZXJbLCBvZmZzZXRbLCBlbmRdXSlcbi8vICAgIGJ1ZmZlci5maWxsKGJ1ZmZlclssIG9mZnNldFssIGVuZF1dKVxuLy8gICAgYnVmZmVyLmZpbGwoc3RyaW5nWywgb2Zmc2V0WywgZW5kXV1bLCBlbmNvZGluZ10pXG5CdWZmZXIucHJvdG90eXBlLmZpbGwgPSBmdW5jdGlvbiBmaWxsICh2YWwsIHN0YXJ0LCBlbmQsIGVuY29kaW5nKSB7XG4gIC8vIEhhbmRsZSBzdHJpbmcgY2FzZXM6XG4gIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xuICAgIGlmICh0eXBlb2Ygc3RhcnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICBlbmNvZGluZyA9IHN0YXJ0O1xuICAgICAgc3RhcnQgPSAwO1xuICAgICAgZW5kID0gdGhpcy5sZW5ndGg7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgZW5kID09PSAnc3RyaW5nJykge1xuICAgICAgZW5jb2RpbmcgPSBlbmQ7XG4gICAgICBlbmQgPSB0aGlzLmxlbmd0aDtcbiAgICB9XG4gICAgaWYgKHZhbC5sZW5ndGggPT09IDEpIHtcbiAgICAgIHZhciBjb2RlID0gdmFsLmNoYXJDb2RlQXQoMCk7XG4gICAgICBpZiAoY29kZSA8IDI1Nikge1xuICAgICAgICB2YWwgPSBjb2RlO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZW5jb2RpbmcgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgZW5jb2RpbmcgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdlbmNvZGluZyBtdXN0IGJlIGEgc3RyaW5nJylcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ3N0cmluZycgJiYgIUJ1ZmZlci5pc0VuY29kaW5nKGVuY29kaW5nKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKVxuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgIHZhbCA9IHZhbCAmID
15I1NTtcbiAgfVxuXG4gIC8vIEludmFsaWQgcmFuZ2VzIGFyZSBub3Qgc2V0IHRvIGEgZGVmYXVsdCwgc28gY2FuIHJhbmdlIGNoZWNrIGVhcmx5LlxuICBpZiAoc3RhcnQgPCAwIHx8IHRoaXMubGVuZ3RoIDwgc3RhcnQgfHwgdGhpcy5sZW5ndGggPCBlbmQpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignT3V0IG9mIHJhbmdlIGluZGV4JylcbiAgfVxuXG4gIGlmIChlbmQgPD0gc3RhcnQpIHtcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgc3RhcnQgPSBzdGFydCA+Pj4gMDtcbiAgZW5kID0gZW5kID09PSB1bmRlZmluZWQgPyB0aGlzLmxlbmd0aCA6IGVuZCA+Pj4gMDtcblxuICBpZiAoIXZhbCkgdmFsID0gMDtcblxuICB2YXIgaTtcbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgZm9yIChpID0gc3RhcnQ7IGkgPCBlbmQ7ICsraSkge1xuICAgICAgdGhpc1tpXSA9IHZhbDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIGJ5dGVzID0gaW50ZXJuYWxJc0J1ZmZlcih2YWwpXG4gICAgICA/IHZhbFxuICAgICAgOiB1dGY4VG9CeXRlcyhuZXcgQnVmZmVyKHZhbCwgZW5jb2RpbmcpLnRvU3RyaW5nKCkpO1xuICAgIHZhciBsZW4gPSBieXRlcy5sZW5ndGg7XG4gICAgZm9yIChpID0gMDsgaSA8IGVuZCAtIHN0YXJ0OyArK2kpIHtcbiAgICAgIHRoaXNbaSArIHN0YXJ0XSA9IGJ5dGVzW2kgJSBsZW5dO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzXG59O1xuXG4vLyBIRUxQRVIgRlVOQ1RJT05TXG4vLyA9PT09PT09PT09PT09PT09XG5cbnZhciBJTlZBTElEX0JBU0U2NF9SRSA9IC9bXitcXC8wLTlBLVphLXotX10vZztcblxuZnVuY3Rpb24gYmFzZTY0Y2xlYW4gKHN0cikge1xuICAvLyBOb2RlIHN0cmlwcyBvdXQgaW52YWxpZCBjaGFyYWN0ZXJzIGxpa2UgXFxuIGFuZCBcXHQgZnJvbSB0aGUgc3RyaW5nLCBiYXNlNjQtanMgZG9lcyBub3RcbiAgc3RyID0gc3RyaW5ndHJpbShzdHIpLnJlcGxhY2UoSU5WQUxJRF9CQVNFNjRfUkUsICcnKTtcbiAgLy8gTm9kZSBjb252ZXJ0cyBzdHJpbmdzIHdpdGggbGVuZ3RoIDwgMiB0byAnJ1xuICBpZiAoc3RyLmxlbmd0aCA8IDIpIHJldHVybiAnJ1xuICAvLyBOb2RlIGFsbG93cyBmb3Igbm9uLXBhZGRlZCBiYXNlNjQgc3RyaW5ncyAobWlzc2luZyB0cmFpbGluZyA9PT0pLCBiYXNlNjQtanMgZG9lcyBub3RcbiAgd2hpbGUgKHN0ci5sZW5ndGggJSA0ICE9PSAwKSB7XG4gICAgc3RyID0gc3RyICsgJz0nO1xuICB9XG4gIHJldHVybiBzdHJcbn1cblxuZnVuY3Rpb24gc3RyaW5ndHJpbSAoc3RyKSB7XG4gIGlmIChzdHIudHJpbSkgcmV0dXJuIHN0ci50cmltKClcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9eXFxzK3xcXHMrJC9nLCAnJylcbn1cblxuZnVuY3Rpb24gdG9IZXggKG4pIHtcbiAgaWYgKG4gPCAxNikgcmV0dXJuICcwJyArIG4udG9TdHJpbmcoMTYpXG4gIHJldHVybiBuLnRvU3RyaW5nKDE2KVxufVxuXG5mdW5jdGlvbiB1dGY4VG9CeXRlcyAoc3RyaW5nLCB1bml0cykge1xuICB1bml0cyA9IHVuaXRzIHx8IEluZmluaXR5O1xuICB2YXIgY29kZVBvaW50O1xuICB2YXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDtcbiAgdmFyIGxlYWRTdXJyb2dhdGUgPSBudWxsO1xuICB2YXIgYnl0ZXMgPSBbXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7XG4gICAgY29kZVBvaW50ID0gc3RyaW5nLmNoYXJDb2RlQXQoaSk7XG5cbiAgICAvLyBpcyBzdXJyb2dhdGUgY29tcG9uZW50XG4gICAgaWYgKGNvZGVQb2ludCA+IDB4RDdGRiAmJiBjb2RlUG9pbnQgPCAweEUwMDApIHtcbiAgICAgIC8vIGxhc3QgY2hhciB3YXMgYSBsZWFkXG4gICAgICBpZiAoIWxlYWRTdXJyb2dhdGUpIHtcbiAgICAgICAgLy8gbm8gbGVhZCB5ZXRcbiAgICAgICAgaWYgKGNvZGVQb2ludCA+IDB4REJGRikge1xuICAgICAgICAgIC8vIHVuZXhwZWN0ZWQgdHJhaWxcbiAgICAgICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRCk7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfSBlbHNlIGlmIChpICsgMSA9PT0gbGVuZ3RoKSB7XG4gICAgICAgICAgLy8gdW5wYWlyZWQgbGVhZFxuICAgICAgICAgIGlmICgodW5pdHMgLT0gMykgPiAtMSkgYnl0ZXMucHVzaCgweEVGLCAweEJGLCAweEJEKTtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gdmFsaWQgbGVhZFxuICAgICAgICBsZWFkU3Vycm9nYXRlID0gY29kZVBvaW50O1xuXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIC8vIDIgbGVhZHMgaW4gYSByb3dcbiAgICAgIGlmIChjb2RlUG9pbnQgPCAweERDMDApIHtcbiAgICAgICAgaWYgKCh1bml0cyAtPSAzKSA+IC0xKSBieXRlcy5wdXNoKDB4RUYsIDB4QkYsIDB4QkQpO1xuICAgICAgICBsZWFkU3Vycm9nYXRlID0gY29kZVBvaW50O1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICAvLyB2YWxpZCBzdXJyb2dhdGUgcGFpclxuICAgICAgY29kZVBvaW50ID0gKGxlYWRTdXJyb2dhdGUgLSAweEQ4MDAgPDwgMTAgfCBjb2RlUG9pbnQgLSAweERDMDApICsgMHgxMDAwMDtcbiAgICB9IGVsc2UgaWYgKGxlYWRTdXJyb2dhdGUpIHtcbiAgICAgIC8vIHZhbGlkIGJtcCBjaGFyLCBidXQgbGFzdCBjaGFyIHdhcyBhIGxlYWRcbiAgICAgIGlmICgodW5pdHMgLT0gMykgPiAtMSkgYnl0ZXMucHVzaCgweEVGLCAweEJGLCAweEJEKTtcbiAgICB9XG5cbiAgICBsZWFkU3Vycm9nYXRlID0gbnVsbDtcblxuICAgIC8vIGVuY29kZSB1dGY4XG4gICAgaWYgKGNvZGVQb2ludCA8IDB4ODApIHtcbiAgICAgIGlmICgodW5pdHMgLT0gMSkgPCAwKSBicmVha1xuICAgICAgYnl0ZXMucHVzaChjb2RlUG9pbnQpO1xuICAgIH0gZWxzZSBpZiAoY29kZVBvaW50IDwgMHg4MDApIHtcbiAgICAgIGlmICgodW5pdHMgLT0gMikgPCAwKSBicmVha1xuICAgICAgYnl0ZXMucHVzaChcbiAgICAgICAgY29kZVBvaW50ID4+IDB4NiB8IDB4QzAsXG4gICAgICAgIGNvZGVQb2ludCAmIDB4M0YgfCAweDgwXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoY29kZVBvaW50IDwgMHgxMDAwMCkge1xuICAgICAgaWYgKCh1bml0cyAtPSAzKSA8IDApIGJyZWFrXG4gICAgICBieXRlcy5wdXNoKFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHhDIHwgMHhFMCxcbiAgICAgICAgY29
15kZVBvaW50ID4+IDB4NiAmIDB4M0YgfCAweDgwLFxuICAgICAgICBjb2RlUG9pbnQgJiAweDNGIHwgMHg4MFxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA8IDB4MTEwMDAwKSB7XG4gICAgICBpZiAoKHVuaXRzIC09IDQpIDwgMCkgYnJlYWtcbiAgICAgIGJ5dGVzLnB1c2goXG4gICAgICAgIGNvZGVQb2ludCA+PiAweDEyIHwgMHhGMCxcbiAgICAgICAgY29kZVBvaW50ID4+IDB4QyAmIDB4M0YgfCAweDgwLFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHg2ICYgMHgzRiB8IDB4ODAsXG4gICAgICAgIGNvZGVQb2ludCAmIDB4M0YgfCAweDgwXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY29kZSBwb2ludCcpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGJ5dGVzXG59XG5cbmZ1bmN0aW9uIGFzY2lpVG9CeXRlcyAoc3RyKSB7XG4gIHZhciBieXRlQXJyYXkgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyArK2kpIHtcbiAgICAvLyBOb2RlJ3MgY29kZSBzZWVtcyB0byBiZSBkb2luZyB0aGlzIGFuZCBub3QgJiAweDdGLi5cbiAgICBieXRlQXJyYXkucHVzaChzdHIuY2hhckNvZGVBdChpKSAmIDB4RkYpO1xuICB9XG4gIHJldHVybiBieXRlQXJyYXlcbn1cblxuZnVuY3Rpb24gdXRmMTZsZVRvQnl0ZXMgKHN0ciwgdW5pdHMpIHtcbiAgdmFyIGMsIGhpLCBsbztcbiAgdmFyIGJ5dGVBcnJheSA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7ICsraSkge1xuICAgIGlmICgodW5pdHMgLT0gMikgPCAwKSBicmVha1xuXG4gICAgYyA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuICAgIGhpID0gYyA+PiA4O1xuICAgIGxvID0gYyAlIDI1NjtcbiAgICBieXRlQXJyYXkucHVzaChsbyk7XG4gICAgYnl0ZUFycmF5LnB1c2goaGkpO1xuICB9XG5cbiAgcmV0dXJuIGJ5dGVBcnJheVxufVxuXG5cbmZ1bmN0aW9uIGJhc2U2NFRvQnl0ZXMgKHN0cikge1xuICByZXR1cm4gdG9CeXRlQXJyYXkoYmFzZTY0Y2xlYW4oc3RyKSlcbn1cblxuZnVuY3Rpb24gYmxpdEJ1ZmZlciAoc3JjLCBkc3QsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICBpZiAoKGkgKyBvZmZzZXQgPj0gZHN0Lmxlbmd0aCkgfHwgKGkgPj0gc3JjLmxlbmd0aCkpIGJyZWFrXG4gICAgZHN0W2kgKyBvZmZzZXRdID0gc3JjW2ldO1xuICB9XG4gIHJldHVybiBpXG59XG5cbmZ1bmN0aW9uIGlzbmFuICh2YWwpIHtcbiAgcmV0dXJuIHZhbCAhPT0gdmFsIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tc2VsZi1jb21wYXJlXG59XG5cblxuLy8gdGhlIGZvbGxvd2luZyBpcyBmcm9tIGlzLWJ1ZmZlciwgYWxzbyBieSBGZXJvc3MgQWJvdWtoYWRpamVoIGFuZCB3aXRoIHNhbWUgbGlzZW5jZVxuLy8gVGhlIF9pc0J1ZmZlciBjaGVjayBpcyBmb3IgU2FmYXJpIDUtNyBzdXBwb3J0LCBiZWNhdXNlIGl0J3MgbWlzc2luZ1xuLy8gT2JqZWN0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvci4gUmVtb3ZlIHRoaXMgZXZlbnR1YWxseVxuZnVuY3Rpb24gaXNCdWZmZXIob2JqKSB7XG4gIHJldHVybiBvYmogIT0gbnVsbCAmJiAoISFvYmouX2lzQnVmZmVyIHx8IGlzRmFzdEJ1ZmZlcihvYmopIHx8IGlzU2xvd0J1ZmZlcihvYmopKVxufVxuXG5mdW5jdGlvbiBpc0Zhc3RCdWZmZXIgKG9iaikge1xuICByZXR1cm4gISFvYmouY29uc3RydWN0b3IgJiYgdHlwZW9mIG9iai5jb25zdHJ1Y3Rvci5pc0J1ZmZlciA9PT0gJ2Z1bmN0aW9uJyAmJiBvYmouY29uc3RydWN0b3IuaXNCdWZmZXIob2JqKVxufVxuXG4vLyBGb3IgTm9kZSB2MC4xMCBzdXBwb3J0LiBSZW1vdmUgdGhpcyBldmVudHVhbGx5LlxuZnVuY3Rpb24gaXNTbG93QnVmZmVyIChvYmopIHtcbiAgcmV0dXJuIHR5cGVvZiBvYmoucmVhZEZsb2F0TEUgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIG9iai5zbGljZSA9PT0gJ2Z1bmN0aW9uJyAmJiBpc0Zhc3RCdWZmZXIob2JqLnNsaWNlKDAsIDApKVxufVxuXG5leHBvcnQgeyBCdWZmZXIsIElOU1BFQ1RfTUFYX0JZVEVTLCBTbG93QnVmZmVyLCBpc0J1ZmZlciwgX2tNYXhMZW5ndGggYXMga01heExlbmd0aCB9O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xuXG4vKipcbiAqIENvbnZlcnQgYSBkYXRhIG9iamVjdCB0byBGb3JtRGF0YVxuICogQHBhcmFtIHtPYmplY3R9IG9ialxuICogQHBhcmFtIHs/T2JqZWN0fSBbZm9ybURhdGFdXG4gKiBAcmV0dXJucyB7T2JqZWN0fVxuICoqL1xuXG5mdW5jdGlvbiB0b0Zvcm1EYXRhKG9iaiwgZm9ybURhdGEpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gIGZvcm1EYXRhID0gZm9ybURhdGEgfHwgbmV3IEZvcm1EYXRhKCk7XG5cbiAgdmFyIHN0YWNrID0gW107XG5cbiAgZnVuY3Rpb24gY29udmVydFZhbHVlKHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsKSByZXR1cm4gJyc7XG5cbiAgICBpZiAodXRpbHMuaXNEYXRlKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHZhbHVlLnRvSVNPU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgaWYgKHV0aWxzLmlzQXJyYXlCdWZmZXIodmFsdWUpIHx8IHV0aWxzLmlzVHlwZWRBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgQmxvYiA9PT0gJ2Z1bmN0aW9uJyA/IG5ldyBCbG9iKFt2YWx1ZV0pIDogQnVmZmVyLmZyb20odmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGJ1aWxkKGRhdGEsIHBhcmVudEtleSkge1xuICAgIGlmICh1dGlscy5pc1BsYWluT2JqZWN0KGRhdGEpIHx8IHV0aWxzLmlzQXJyYXkoZGF0YSkpIHtcbiAgICAgIGlmIChzdGFjay5pbmRleE9mKGRhdGEpICE9PSAtMSkge1xuICAgICAgICB0aHJvdyBFcnJvcignQ2lyY3VsYXIgcmVmZXJlbmNlIGRldGVjdGVkIGluICcgKyBwYXJlbnRLZXkpO1xuICAgICAgfVxuXG4gICAgICBzdGFjay5wdXNoKGRhdGEpO1xuXG4gICAgICB1dGlscy5mb3JFYWNoKGRhdGEsIGZ1bmN0aW9uIGVhY2godmFsdWUsIGtleSkge1xuICAgICAgICBpZiAodXRpbHMuaXNVbmRlZmluZWQodmFsdWUpKSByZXR1cm47XG4gICAgICAgI
15HZhciBmdWxsS2V5ID0gcGFyZW50S2V5ID8gcGFyZW50S2V5ICsgJy4nICsga2V5IDoga2V5O1xuICAgICAgICB2YXIgYXJyO1xuXG4gICAgICAgIGlmICh2YWx1ZSAmJiAhcGFyZW50S2V5ICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBpZiAodXRpbHMuZW5kc1dpdGgoa2V5LCAne30nKSkge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgICAgICB2YWx1ZSA9IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHV0aWxzLmVuZHNXaXRoKGtleSwgJ1tdJykgJiYgKGFyciA9IHV0aWxzLnRvQXJyYXkodmFsdWUpKSkge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgICAgICAgICAgIGFyci5mb3JFYWNoKGZ1bmN0aW9uKGVsKSB7XG4gICAgICAgICAgICAgICF1dGlscy5pc1VuZGVmaW5lZChlbCkgJiYgZm9ybURhdGEuYXBwZW5kKGZ1bGxLZXksIGNvbnZlcnRWYWx1ZShlbCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgYnVpbGQodmFsdWUsIGZ1bGxLZXkpO1xuICAgICAgfSk7XG5cbiAgICAgIHN0YWNrLnBvcCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb3JtRGF0YS5hcHBlbmQocGFyZW50S2V5LCBjb252ZXJ0VmFsdWUoZGF0YSkpO1xuICAgIH1cbiAgfVxuXG4gIGJ1aWxkKG9iaik7XG5cbiAgcmV0dXJuIGZvcm1EYXRhO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvRm9ybURhdGE7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBBeGlvc0Vycm9yID0gcmVxdWlyZSgnLi9BeGlvc0Vycm9yJyk7XG5cbi8qKlxuICogUmVzb2x2ZSBvciByZWplY3QgYSBQcm9taXNlIGJhc2VkIG9uIHJlc3BvbnNlIHN0YXR1cy5cbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSByZXNvbHZlIEEgZnVuY3Rpb24gdGhhdCByZXNvbHZlcyB0aGUgcHJvbWlzZS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHJlamVjdCBBIGZ1bmN0aW9uIHRoYXQgcmVqZWN0cyB0aGUgcHJvbWlzZS5cbiAqIEBwYXJhbSB7b2JqZWN0fSByZXNwb25zZSBUaGUgcmVzcG9uc2UuXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgcmVzcG9uc2UpIHtcbiAgdmFyIHZhbGlkYXRlU3RhdHVzID0gcmVzcG9uc2UuY29uZmlnLnZhbGlkYXRlU3RhdHVzO1xuICBpZiAoIXJlc3BvbnNlLnN0YXR1cyB8fCAhdmFsaWRhdGVTdGF0dXMgfHwgdmFsaWRhdGVTdGF0dXMocmVzcG9uc2Uuc3RhdHVzKSkge1xuICAgIHJlc29sdmUocmVzcG9uc2UpO1xuICB9IGVsc2Uge1xuICAgIHJlamVjdChuZXcgQXhpb3NFcnJvcihcbiAgICAgICdSZXF1ZXN0IGZhaWxlZCB3aXRoIHN0YXR1cyBjb2RlICcgKyByZXNwb25zZS5zdGF0dXMsXG4gICAgICBbQXhpb3NFcnJvci5FUlJfQkFEX1JFUVVFU1QsIEF4aW9zRXJyb3IuRVJSX0JBRF9SRVNQT05TRV1bTWF0aC5mbG9vcihyZXNwb25zZS5zdGF0dXMgLyAxMDApIC0gNF0sXG4gICAgICByZXNwb25zZS5jb25maWcsXG4gICAgICByZXNwb25zZS5yZXF1ZXN0LFxuICAgICAgcmVzcG9uc2VcbiAgICApKTtcbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IChcbiAgdXRpbHMuaXNTdGFuZGFyZEJyb3dzZXJFbnYoKSA/XG5cbiAgLy8gU3RhbmRhcmQgYnJvd3NlciBlbnZzIHN1cHBvcnQgZG9jdW1lbnQuY29va2llXG4gICAgKGZ1bmN0aW9uIHN0YW5kYXJkQnJvd3NlckVudigpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbiB3cml0ZShuYW1lLCB2YWx1ZSwgZXhwaXJlcywgcGF0aCwgZG9tYWluLCBzZWN1cmUpIHtcbiAgICAgICAgICB2Y
15XIgY29va2llID0gW107XG4gICAgICAgICAgY29va2llLnB1c2gobmFtZSArICc9JyArIGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSkpO1xuXG4gICAgICAgICAgaWYgKHV0aWxzLmlzTnVtYmVyKGV4cGlyZXMpKSB7XG4gICAgICAgICAgICBjb29raWUucHVzaCgnZXhwaXJlcz0nICsgbmV3IERhdGUoZXhwaXJlcykudG9HTVRTdHJpbmcoKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHV0aWxzLmlzU3RyaW5nKHBhdGgpKSB7XG4gICAgICAgICAgICBjb29raWUucHVzaCgncGF0aD0nICsgcGF0aCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHV0aWxzLmlzU3RyaW5nKGRvbWFpbikpIHtcbiAgICAgICAgICAgIGNvb2tpZS5wdXNoKCdkb21haW49JyArIGRvbWFpbik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHNlY3VyZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgY29va2llLnB1c2goJ3NlY3VyZScpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IGNvb2tpZS5qb2luKCc7ICcpO1xuICAgICAgICB9LFxuXG4gICAgICAgIHJlYWQ6IGZ1bmN0aW9uIHJlYWQobmFtZSkge1xuICAgICAgICAgIHZhciBtYXRjaCA9IGRvY3VtZW50LmNvb2tpZS5tYXRjaChuZXcgUmVnRXhwKCcoXnw7XFxcXHMqKSgnICsgbmFtZSArICcpPShbXjtdKiknKSk7XG4gICAgICAgICAgcmV0dXJuIChtYXRjaCA/IGRlY29kZVVSSUNvbXBvbmVudChtYXRjaFszXSkgOiBudWxsKTtcbiAgICAgICAgfSxcblxuICAgICAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZShuYW1lKSB7XG4gICAgICAgICAgdGhpcy53cml0ZShuYW1lLCAnJywgRGF0ZS5ub3coKSAtIDg2NDAwMDAwKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9KSgpIDpcblxuICAvLyBOb24gc3RhbmRhcmQgYnJvd3NlciBlbnYgKHdlYiB3b3JrZXJzLCByZWFjdC1uYXRpdmUpIGxhY2sgbmVlZGVkIHN1cHBvcnQuXG4gICAgKGZ1bmN0aW9uIG5vblN0YW5kYXJkQnJvd3NlckVudigpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbiB3cml0ZSgpIHt9LFxuICAgICAgICByZWFkOiBmdW5jdGlvbiByZWFkKCkgeyByZXR1cm4gbnVsbDsgfSxcbiAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUoKSB7fVxuICAgICAgfTtcbiAgICB9KSgpXG4pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaXNBYnNvbHV0ZVVSTCA9IHJlcXVpcmUoJy4uL2hlbHBlcnMvaXNBYnNvbHV0ZVVSTCcpO1xudmFyIGNvbWJpbmVVUkxzID0gcmVxdWlyZSgnLi4vaGVscGVycy9jb21iaW5lVVJMcycpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgVVJMIGJ5IGNvbWJpbmluZyB0aGUgYmFzZVVSTCB3aXRoIHRoZSByZXF1ZXN0ZWRVUkwsXG4gKiBvbmx5IHdoZW4gdGhlIHJlcXVlc3RlZFVSTCBpcyBub3QgYWxyZWFkeSBhbiBhYnNvbHV0ZSBVUkwuXG4gKiBJZiB0aGUgcmVxdWVzdFVSTCBpcyBhYnNvbHV0ZSwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSByZXF1ZXN0ZWRVUkwgdW50b3VjaGVkLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlVVJMIFRoZSBiYXNlIFVSTFxuICogQHBhcmFtIHtzdHJpbmd9IHJlcXVlc3RlZFVSTCBBYnNvbHV0ZSBvciByZWxhdGl2ZSBVUkwgdG8gY29tYmluZVxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNvbWJpbmVkIGZ1bGwgcGF0aFxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGJ1aWxkRnVsbFBhdGgoYmFzZVVSTCwgcmVxdWVzdGVkVVJMKSB7XG4gIGlmIChiYXNlVVJMICYmICFpc0Fic29sdXRlVVJMKHJlcXVlc3RlZFVSTCkpIHtcbiAgICByZXR1cm4gY29tYmluZVVSTHMoYmFzZVVSTCwgcmVxdWVzdGVkVVJMKTtcbiAgfVxuICByZXR1cm4gcmVxdWVzdGVkVVJMO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBVUkwgaXMgYWJzb2x1dGVcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdXJsIFRoZSBVUkwgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIHNwZWNpZmllZCBVUkwgaXMgYWJzb2x1dGUsIG90aGVyd2lzZSBmYWxzZVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzQWJzb2x1dGVVUkwodXJsKSB7XG4gIC8vIEEgVVJMIGlzIGNvbnNpZGVyZWQgYWJzb2x1dGUgaWYgaXQgYmVnaW5zIHdpdGggXCI8c2NoZW1lPjovL1wiIG9yIFwiLy9cIiAocHJvdG9jb2wtcmVsYXRpdmUgVVJMKS5cbiAgLy8gUkZDIDM5ODYgZGVmaW5lcyBzY2hlbWUgbmFtZSBhcyBhIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgYmVnaW5uaW5nIHdpdGggYSBsZXR0ZXIgYW5kIGZvbGxvd2VkXG4gIC8vIGJ5IGFueSBjb21iaW5hdGlvbiBvZiBsZXR0ZXJzLCBkaWdpdHMsIHBsdXMsIHBlcmlvZCwgb3IgaHlwaGVuLlxuICByZXR1cm4gL14oW2Etel1bYS16XFxkK1xcLS5dKjopP1xcL1xcLy9pLnRlc3QodXJsKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBVUkwgYnkgY29tYmluaW5nIHRoZSBzcGVjaWZpZWQgVVJMc1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlVVJMIFRoZSBiYXNlIFVSTFxuICogQHBhcmFtIHtzdHJpbmd9IHJlbGF0aXZlVVJMIFRoZSByZWxhdGl2ZSBVUkxcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBjb21iaW5lZCBVUkxcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjb21iaW5lVVJMcyhiYXNlVVJMLCByZWxhdGl2ZVVSTCkge1xuICByZXR1cm4gcmVsYXRpdmVVUkxcbiAgICA/IGJhc2VVUkwucmVwbGFjZSgvXFwvKyQvLCAnJykgKyAnLycgKyByZWxhdGl2ZVVSTC5yZXBsYWNlKC9eXFwvKy8sICcnKVxuICAgIDogYmFzZVVSTDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcblxuLy8gSGVhZGVycyB3aG9zZSBkdXBsaWNhdGVzIGFyZSBpZ25vcmVkIGJ5IG5vZGVcbi8vIGMuZi4gaHR0cHM6Ly9ub2RlanMub3JnL2FwaS9odHRwLmh0bWwjaHR0cF9tZXNzYWdlX2hlYWRlcnNcbnZhciBpZ25vcmVEdXBsaWNhdGVPZiA9IFtcbiAgJ2FnZScsICdhdXRob3JpemF0aW9uJywgJ2NvbnRlbnQtbGVuZ3RoJywgJ2NvbnRlbnQtdHlwZScsICdldGFnJyxcbiAgJ2V4cGlyZXMnLCAnZnJvbScsICdob3N0JywgJ2lmLW1vZGlmaWVkLXNpbmNlJywgJ2lmLXVubW9kaWZpZWQtc2luY2UnLFxuICAnbGFzdC1tb2RpZmllZCcsICdsb2NhdGlvbicsICdtYXgtZm9yd2FyZHMnLCAncHJveHktYXV0aG9yaXphdGlvbicsXG4gICdyZWZlcmVyJywgJ3JldHJ5LWFmdGVyJywgJ3VzZXItYWdlbnQnXG5dO1xuXG4vKipcbiAqIFBhcnNlIGhlYWRlcnMgaW50byBhbiBvYmplY3RcbiAqXG4gKiBgYGBcbiAqIERhdGU6IFdlZCwgMjcgQXVnIDIwMTQgMDg6NTg6NDkgR01UXG4gKiBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb25cbiAqIENvbm5lY3Rpb246IGtlZXAtYWxpdmVcbiAqIFRyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gaGVhZGVycyBIZWFkZXJzIG5lZWRpbmcgdG8gYmUgcGFyc2VkXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBIZWFkZXJzIHBhcnNlZCBpbnRvIGFuIG9iamVjdFxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHBhcnNlSGVhZGVycyhoZWFkZXJzKSB7XG4gIHZhciBwYXJzZWQgPSB7fTtcbiAgdmFyIGtleTtcbiAgdmFyIHZhbDtcbiAgdmFyIGk7XG5cbiAgaWYgKCFoZWFkZXJzKSB7IHJldHVybi
15BwYXJzZWQ7IH1cblxuICB1dGlscy5mb3JFYWNoKGhlYWRlcnMuc3BsaXQoJ1xcbicpLCBmdW5jdGlvbiBwYXJzZXIobGluZSkge1xuICAgIGkgPSBsaW5lLmluZGV4T2YoJzonKTtcbiAgICBrZXkgPSB1dGlscy50cmltKGxpbmUuc3Vic3RyKDAsIGkpKS50b0xvd2VyQ2FzZSgpO1xuICAgIHZhbCA9IHV0aWxzLnRyaW0obGluZS5zdWJzdHIoaSArIDEpKTtcblxuICAgIGlmIChrZXkpIHtcbiAgICAgIGlmIChwYXJzZWRba2V5XSAmJiBpZ25vcmVEdXBsaWNhdGVPZi5pbmRleE9mKGtleSkgPj0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoa2V5ID09PSAnc2V0LWNvb2tpZScpIHtcbiAgICAgICAgcGFyc2VkW2tleV0gPSAocGFyc2VkW2tleV0gPyBwYXJzZWRba2V5XSA6IFtdKS5jb25jYXQoW3ZhbF0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFyc2VkW2tleV0gPSBwYXJzZWRba2V5XSA/IHBhcnNlZFtrZXldICsgJywgJyArIHZhbCA6IHZhbDtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBwYXJzZWQ7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gKFxuICB1dGlscy5pc1N0YW5kYXJkQnJvd3NlckVudigpID9cblxuICAvLyBTdGFuZGFyZCBicm93c2VyIGVudnMgaGF2ZSBmdWxsIHN1cHBvcnQgb2YgdGhlIEFQSXMgbmVlZGVkIHRvIHRlc3RcbiAgLy8gd2hldGhlciB0aGUgcmVxdWVzdCBVUkwgaXMgb2YgdGhlIHNhbWUgb3JpZ2luIGFzIGN1cnJlbnQgbG9jYXRpb24uXG4gICAgKGZ1bmN0aW9uIHN0YW5kYXJkQnJvd3NlckVudigpIHtcbiAgICAgIHZhciBtc2llID0gLyhtc2llfHRyaWRlbnQpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcbiAgICAgIHZhciB1cmxQYXJzaW5nTm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgIHZhciBvcmlnaW5VUkw7XG5cbiAgICAgIC8qKlxuICAgICogUGFyc2UgYSBVUkwgdG8gZGlzY292ZXIgaXQncyBjb21wb25lbnRzXG4gICAgKlxuICAgICogQHBhcmFtIHtTdHJpbmd9IHVybCBUaGUgVVJMIHRvIGJlIHBhcnNlZFxuICAgICogQHJldHVybnMge09iamVjdH1cbiAgICAqL1xuICAgICAgZnVuY3Rpb24gcmVzb2x2ZVVSTCh1cmwpIHtcbiAgICAgICAgdmFyIGhyZWYgPSB1cmw7XG5cbiAgICAgICAgaWYgKG1zaWUpIHtcbiAgICAgICAgLy8gSUUgbmVlZHMgYXR0cmlidXRlIHNldCB0d2ljZSB0byBub3JtYWxpemUgcHJvcGVydGllc1xuICAgICAgICAgIHVybFBhcnNpbmdOb2RlLnNldEF0dHJpYnV0ZSgnaHJlZicsIGhyZWYpO1xuICAgICAgICAgIGhyZWYgPSB1cmxQYXJzaW5nTm9kZS5ocmVmO1xuICAgICAgICB9XG5cbiAgICAgICAgdXJsUGFyc2luZ05vZGUuc2V0QXR0cmlidXRlKCdocmVmJywgaHJlZik7XG5cbiAgICAgICAgLy8gdXJsUGFyc2luZ05vZGUgcHJvdmlkZXMgdGhlIFVybFV0aWxzIGludGVyZmFjZSAtIGh0dHA6Ly91cmwuc3BlYy53aGF0d2cub3JnLyN1cmx1dGlsc1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGhyZWY6IHVybFBhcnNpbmdOb2RlLmhyZWYsXG4gICAgICAgICAgcHJvdG9jb2w6IHVybFBhcnNpbmdOb2RlLnByb3RvY29sID8gdXJsUGFyc2luZ05vZGUucHJvdG9jb2wucmVwbGFjZSgvOiQvLCAnJykgOiAnJyxcbiAgICAgICAgICBob3N0OiB1cmxQYXJzaW5nTm9kZS5ob3N0LFxuICAgICAgICAgIHNlYXJjaDogdXJsUGFyc2luZ05vZGUuc2VhcmNoID8gdXJsUGFyc2luZ05vZGUuc2VhcmNoLnJlcGxhY2UoL15cXD8vLCAnJykgOiAnJyxcbiAgICAgICAgICBoYXNoOiB1cmxQYXJzaW5nTm9kZS5oYXNoID8gdXJsUGFyc2luZ05vZGUuaGFzaC5yZXBsYWNlKC9eIy8sICcnKSA6ICcnLFxuICAgICAgICAgIGhvc3RuYW1lOiB1cmxQYXJzaW5nTm9kZS5ob3N0bmFtZSxcbiAgICAgICAgICBwb3J0OiB1cmxQYXJzaW5nTm9kZS5wb3J0LFxuICAgICAgICAgIHBhdGhuYW1lOiAodXJsUGFyc2luZ05vZGUucGF0aG5hbWUuY2hhckF0KDApID09PSAnLycpID9cbiAgICAgICAgICAgIHVybFBhcnNpbmdOb2RlLnBhdGhuYW1lIDpcbiAgICAgICAgICAgICcvJyArIHVybFBhcnNpbmdOb2RlLnBhdGhuYW1lXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIG9yaWdpblVSTCA9IHJlc29sdmVVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpO1xuXG4gICAgICAvKipcbiAgICAqIERldGVybWluZSBpZiBhIFVSTCBzaGFyZXMgdGhlIHNhbWUgb3JpZ2luIGFzIHRoZSBjdXJyZW50IGxvY2F0aW9uXG4gICAgKlxuICAgICogQHBhcmFtIHtTdHJpbmd9IHJlcXVlc3RVUkwgVGhlIFVSTCB0byB0ZXN0XG4gICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiBVUkwgc2hhcmVzIHRoZSBzYW1lIG9yaWdpbiwgb3RoZXJ3aXNlIGZhbHNlXG4gICAgKi9cbiAgICAgIHJldHVybiBmdW5jdGlvbiBpc1VSTFNhbWVPcmlnaW4ocmVxdWVzdFVSTCkge1xuICAgICAgICB2Y
15XIgcGFyc2VkID0gKHV0aWxzLmlzU3RyaW5nKHJlcXVlc3RVUkwpKSA/IHJlc29sdmVVUkwocmVxdWVzdFVSTCkgOiByZXF1ZXN0VVJMO1xuICAgICAgICByZXR1cm4gKHBhcnNlZC5wcm90b2NvbCA9PT0gb3JpZ2luVVJMLnByb3RvY29sICYmXG4gICAgICAgICAgICBwYXJzZWQuaG9zdCA9PT0gb3JpZ2luVVJMLmhvc3QpO1xuICAgICAgfTtcbiAgICB9KSgpIDpcblxuICAvLyBOb24gc3RhbmRhcmQgYnJvd3NlciBlbnZzICh3ZWIgd29ya2VycywgcmVhY3QtbmF0aXZlKSBsYWNrIG5lZWRlZCBzdXBwb3J0LlxuICAgIChmdW5jdGlvbiBub25TdGFuZGFyZEJyb3dzZXJFbnYoKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gaXNVUkxTYW1lT3JpZ2luKCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH07XG4gICAgfSkoKVxuKTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIEF4aW9zRXJyb3IgPSByZXF1aXJlKCcuLi9jb3JlL0F4aW9zRXJyb3InKTtcbnZhciB1dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7XG5cbi8qKlxuICogQSBgQ2FuY2VsZWRFcnJvcmAgaXMgYW4gb2JqZWN0IHRoYXQgaXMgdGhyb3duIHdoZW4gYW4gb3BlcmF0aW9uIGlzIGNhbmNlbGVkLlxuICpcbiAqIEBjbGFzc1xuICogQHBhcmFtIHtzdHJpbmc9fSBtZXNzYWdlIFRoZSBtZXNzYWdlLlxuICovXG5mdW5jdGlvbiBDYW5jZWxlZEVycm9yKG1lc3NhZ2UpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVxLW51bGwsZXFlcWVxXG4gIEF4aW9zRXJyb3IuY2FsbCh0aGlzLCBtZXNzYWdlID09IG51bGwgPyAnY2FuY2VsZWQnIDogbWVzc2FnZSwgQXhpb3NFcnJvci5FUlJfQ0FOQ0VMRUQpO1xuICB0aGlzLm5hbWUgPSAnQ2FuY2VsZWRFcnJvcic7XG59XG5cbnV0aWxzLmluaGVyaXRzKENhbmNlbGVkRXJyb3IsIEF4aW9zRXJyb3IsIHtcbiAgX19DQU5DRUxfXzogdHJ1ZVxufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gQ2FuY2VsZWRFcnJvcjtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xudmFyIHNldHRsZSA9IHJlcXVpcmUoJy4vLi4vY29yZS9zZXR0bGUnKTtcbnZhciBjb29raWVzID0gcmVxdWlyZSgnLi8uLi9oZWxwZXJzL2Nvb2tpZXMnKTtcbnZhciBidWlsZFVSTCA9IHJlcXVpcmUoJy4vLi4vaGVscGVycy9idWlsZFVSTCcpO1xudmFyIGJ1aWxkRnVsbFBhdGggPSByZXF1aXJlKCcuLi9jb3JlL2J1aWxkRnVsbFBhdGgnKTtcbnZhciBwYXJzZUhlYWRlcnMgPSByZXF1aXJlKCcuLy4uL2hlbHBlcnMvcGFyc2VIZWFkZXJzJyk7XG52YXIgaXNVUkxTYW1lT3JpZ2luID0gcmVxdWlyZSgnLi8uLi9oZWxwZXJzL2lzVVJMU2FtZU9yaWdpbicpO1xudmFyIHRyYW5zaXRpb25hbERlZmF1bHRzID0gcmVxdWlyZSgnLi4vZGVmYXVsdHMvdHJhbnNpdGlvbmFsJyk7XG52YXIgQXhpb3NFcnJvciA9IHJlcXVpcmUoJy4uL2NvcmUvQXhpb3NFcnJvcicpO1xudmFyIENhbmNlbGVkRXJyb3IgPSByZXF1aXJlKCcuLi9jYW5jZWwvQ2FuY2VsZWRFcnJvcicpO1xudmFyIHBhcnNlUHJvdG9jb2wgPSByZXF1aXJlKCcuLi9oZWxwZXJzL3BhcnNlUHJvdG9jb2wnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiB4aHJBZGFwdGVyKGNvbmZpZykge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gZGlzcGF0Y2hYaHJSZXF1ZXN0KHJlc29sdmUsIHJlamVjdCkge1xuICAgIHZhciByZXF1ZXN0RGF0YSA9IGNvbmZpZy5kYXRhO1xuICAgIHZhciByZXF1ZXN0SGVhZGVycyA9IGNvbmZpZy5oZWFkZXJzO1xuICAgIHZhciByZXNwb25zZVR5cGUgPSBjb25maWcucmVzcG9uc2VUeXBlO1xuICAgIHZhciBvbkNhbmNlbGVkO1xuICAgIGZ1bmN0aW9uIGRvbmUoKSB7XG4gICAgICBpZiAoY29uZmlnLmNhbmNlbFRva2VuKSB7XG4gICAgICAgIGNvbmZpZy5jYW5jZWxUb2tlbi51bnN1YnNjcmliZShvbkNhbmNlbGVkKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbmZpZy5zaWduYWwpIHtcbiAgICAgICAgY29uZmlnLnNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIG9uQ2FuY2VsZWQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh1dGlscy5pc0Zvcm1EYXRhKHJlcXVlc3REYXRhKSAmJiB1dGlscy5pc1N0YW5kYXJkQnJvd3NlckVudigpKSB7XG4gICAgICBkZWxldGUgcmVxdWVzdEhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddOyAvLyBMZXQgdGhlIGJyb3dzZXIgc2V0IGl0XG4gICAgfVxuXG4gICAgdmFyIHJlcXVlc3QgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcblxuICAgIC8vIEhUVFAgYmFzaWMgYXV0aGVudGljYXRpb25cbiAgICBpZiAoY29uZmlnLmF1dGgpIHtcbiAgICAgIHZhciB1c2VybmFtZSA9IGNvbmZpZy5hdXRoLnVzZXJuYW1lIHx8ICcnO1xuICAgICAgdmFyIHBhc3N3b3JkID0gY29uZmlnLmF1dGgucGFzc3dvcmQgPyB1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoY29uZmlnLmF1dGgucGFzc3dvcmQpKSA6ICcnO1xuICAgICAgcmVxdWVzdEhlYWRlcnMuQXV0aG9yaXphdGlvbiA9ICdCYXNpYyAnICsgYnRvYSh1c2VybmFtZSArICc6JyArIHBhc3N3b3JkKTtcbiAgICB9XG5cbiAgICB2YXIgZnVsbFBhdGggPSBidWlsZEZ1bGxQYXRoKGNvbmZpZy5iYXNlVVJMLCBjb25maWcudXJsKTtcblxuICAgIHJlcXVlc3Qub3Blbihjb25maWcubWV0aG9kLnRvVXBwZXJDYXNlKCksIGJ1aWxkVVJMKGZ1bGxQYXRoLCBjb25maWcucGFyYW1zLCBjb25maWcucGFyYW1zU2VyaWFsaXplciksIHRydWUpO1xuXG4gICAgLy8gU2V0IHRoZSByZXF1ZXN0IHRpbWVvdXQgaW4gTVNcbiAgICByZXF1ZXN0LnRpbWVvdXQgPSBjb25maWcudGltZW91dDtcblxuICAgIGZ1bmN0aW9uIG9ubG9hZGVuZCgpIHtcbiAgICAgIGlmICghcmVxdWVzdCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICAvLyBQcmVwYXJlIHRoZSByZXNwb25zZVxuICAgICAgdmFyIHJlc3BvbnNlSGVhZGVycyA9ICdnZXRBbGxSZXNwb25zZUhlYWRlcnMnIGluIHJlcXVlc3QgPyBwYXJzZUhlYWRlcnMocmVxdWVzdC5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSkgOiBudWxsO1xuICAgICAgdmFyIHJlc3BvbnNlRGF0YSA9ICFyZXNwb25zZVR5cGUgfHwgcmVzcG9uc2VUeXBlID09PSAndGV4dCcgfHwgIHJlc3BvbnNlVHlwZSA9PT0gJ2pzb24nID9cbiAgICAgICAgcmVxdW
15VzdC5yZXNwb25zZVRleHQgOiByZXF1ZXN0LnJlc3BvbnNlO1xuICAgICAgdmFyIHJlc3BvbnNlID0ge1xuICAgICAgICBkYXRhOiByZXNwb25zZURhdGEsXG4gICAgICAgIHN0YXR1czogcmVxdWVzdC5zdGF0dXMsXG4gICAgICAgIHN0YXR1c1RleHQ6IHJlcXVlc3Quc3RhdHVzVGV4dCxcbiAgICAgICAgaGVhZGVyczogcmVzcG9uc2VIZWFkZXJzLFxuICAgICAgICBjb25maWc6IGNvbmZpZyxcbiAgICAgICAgcmVxdWVzdDogcmVxdWVzdFxuICAgICAgfTtcblxuICAgICAgc2V0dGxlKGZ1bmN0aW9uIF9yZXNvbHZlKHZhbHVlKSB7XG4gICAgICAgIHJlc29sdmUodmFsdWUpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9LCBmdW5jdGlvbiBfcmVqZWN0KGVycikge1xuICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSwgcmVzcG9uc2UpO1xuXG4gICAgICAvLyBDbGVhbiB1cCByZXF1ZXN0XG4gICAgICByZXF1ZXN0ID0gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoJ29ubG9hZGVuZCcgaW4gcmVxdWVzdCkge1xuICAgICAgLy8gVXNlIG9ubG9hZGVuZCBpZiBhdmFpbGFibGVcbiAgICAgIHJlcXVlc3Qub25sb2FkZW5kID0gb25sb2FkZW5kO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBMaXN0ZW4gZm9yIHJlYWR5IHN0YXRlIHRvIGVtdWxhdGUgb25sb2FkZW5kXG4gICAgICByZXF1ZXN0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uIGhhbmRsZUxvYWQoKSB7XG4gICAgICAgIGlmICghcmVxdWVzdCB8fCByZXF1ZXN0LnJlYWR5U3RhdGUgIT09IDQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUaGUgcmVxdWVzdCBlcnJvcmVkIG91dCBhbmQgd2UgZGlkbid0IGdldCBhIHJlc3BvbnNlLCB0aGlzIHdpbGwgYmVcbiAgICAgICAgLy8gaGFuZGxlZCBieSBvbmVycm9yIGluc3RlYWRcbiAgICAgICAgLy8gV2l0aCBvbmUgZXhjZXB0aW9uOiByZXF1ZXN0IHRoYXQgdXNpbmcgZmlsZTogcHJvdG9jb2wsIG1vc3QgYnJvd3NlcnNcbiAgICAgICAgLy8gd2lsbCByZXR1cm4gc3RhdHVzIGFzIDAgZXZlbiB0aG91Z2ggaXQncyBhIHN1Y2Nlc3NmdWwgcmVxdWVzdFxuICAgICAgICBpZiAocmVxdWVzdC5zdGF0dXMgPT09IDAgJiYgIShyZXF1ZXN0LnJlc3BvbnNlVVJMICYmIHJlcXVlc3QucmVzcG9uc2VVUkwuaW5kZXhPZignZmlsZTonKSA9PT0gMCkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gcmVhZHlzdGF0ZSBoYW5kbGVyIGlzIGNhbGxpbmcgYmVmb3JlIG9uZXJyb3Igb3Igb250aW1lb3V0IGhhbmRsZXJzLFxuICAgICAgICAvLyBzbyB3ZSBzaG91bGQgY2FsbCBvbmxvYWRlbmQgb24gdGhlIG5leHQgJ3RpY2snXG4gICAgICAgIHNldFRpbWVvdXQob25sb2FkZW5kKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIGJyb3dzZXIgcmVxdWVzdCBjYW5jZWxsYXRpb24gKGFzIG9wcG9zZWQgdG8gYSBtYW51YWwgY2FuY2VsbGF0aW9uKVxuICAgIHJlcXVlc3Qub25hYm9ydCA9IGZ1bmN0aW9uIGhhbmRsZUFib3J0KCkge1xuICAgICAgaWYgKCFyZXF1ZXN0KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgcmVqZWN0KG5ldyBBeGlvc0Vycm9yKCdSZXF1ZXN0IGFib3J0ZWQnLCBBeGlvc0Vycm9yLkVDT05OQUJPUlRFRCwgY29uZmlnLCByZXF1ZXN0KSk7XG5cbiAgICAgIC8vIENsZWFuIHVwIHJlcXVlc3RcbiAgICAgIHJlcXVlc3QgPSBudWxsO1xuICAgIH07XG5cbiAgICAvLyBIYW5kbGUgbG93IGxldmVsIG5ldHdvcmsgZXJyb3JzXG4gICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24gaGFuZGxlRXJyb3IoKSB7XG4gICAgICAvLyBSZWFsIGVycm9ycyBhcmUgaGlkZGVuIGZyb20gdXMgYnkgdGhlIGJyb3dzZXJcbiAgICAgIC8vIG9uZXJyb3Igc2hvdWxkIG9ubHkgZmlyZSBpZiBpdCdzIGEgbmV0d29yayBlcnJvclxuICAgICAgcmVqZWN0KG5ldyBBeGlvc0Vycm9yKCdOZXR3b3JrIEVycm9yJywgQXhpb3NFcnJvci5FUlJfTkVUV09SSywgY29uZmlnLCByZXF1ZXN0LCByZXF1ZXN0KSk7XG5cbiAgICAgIC8vIENsZWFuIHVwIHJlcXVlc3RcbiAgICAgIHJlcXVlc3QgPSBudWxsO1xuICAgIH07XG5cbiAgICAvLyBIYW5kbGUgdGltZW91dFxuICAgIHJlcXVlc3Qub250aW1lb3V0ID0gZnVuY3Rpb24gaGFuZGxlVGltZW91dCgpIHtcbiAgICAgIHZhciB0aW1lb3V0RXJyb3JNZXNzYWdlID0gY29uZmlnLnRpbWVvdXQgPyAndGltZW91dCBvZiAnICsgY29uZmlnLnRpbWVvdXQgKyAnbXMgZXhjZWVkZWQnIDogJ3RpbWVvdXQgZXhjZWVkZWQnO1xuICAgICAgdmFyIHRyYW5zaXRpb25hbCA9IGNvbmZpZy50cmFuc2l0aW9uYWwgfHwgdHJhbnNpdGlvbmFsRGVmYXVsdHM7XG4gICAgICBpZiAoY29uZmlnLnRpbWVvdXRFcnJvck1lc3NhZ2UpIHtcbiAgICAgICAgdGltZW91dEVycm9yTWVzc2FnZSA9IGNvbmZpZy50aW1lb3V0RXJyb3JNZXNzYWdlO1xuICAgICAgfVxuICAgICAgcmVqZWN0KG5ldyBBeGlvc0Vycm9yKFxuICAgICAgICB0aW1lb3V0RXJyb3JNZXNzYWdlLFxuICAgICAgICB0cmFuc2l0aW9uYWwuY2xhcmlmeVRpbWVvdXRFcnJvciA/IEF4aW9zRXJyb3IuRVRJTUVET1VUIDogQXhpb3NFcnJvci5FQ09OTkFCT1JURUQsXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgcmVxdWVzdCkpO1xuXG4gICAgICAvLyBDbGVhbiB1cCByZXF1ZXN0XG4gICAgICByZXF1ZXN0ID0gbnVsbDtcbiAgICB9O1xuXG4gICAgLy8gQWRkIHhzcmYgaGVhZGVyXG4gICAgLy8gVGhpcyBpcyBvbmx5IGRvbmUgaWYgcnVubmluZyBpbiBhIHN0YW5kYXJkIGJyb3dzZXIgZW52aXJvbm1lbnQuXG4gICAgLy8gU3BlY2lmaWNhbGx5IG5vdCBpZiB3ZSdyZSBpbiBhIHdlYiB3b3JrZXIsIG9yIHJlYWN0LW5hdGl2ZS5cbiAgICBpZiAodXRpbHMuaXNTdGFuZGFyZEJyb3dzZXJFbnYoKSkge1xuICAgICAgLy8gQWRkIHhzcmYgaGVhZGVyXG4gICAgICB2Y
15XIgeHNyZlZhbHVlID0gKGNvbmZpZy53aXRoQ3JlZGVudGlhbHMgfHwgaXNVUkxTYW1lT3JpZ2luKGZ1bGxQYXRoKSkgJiYgY29uZmlnLnhzcmZDb29raWVOYW1lID9cbiAgICAgICAgY29va2llcy5yZWFkKGNvbmZpZy54c3JmQ29va2llTmFtZSkgOlxuICAgICAgICB1bmRlZmluZWQ7XG5cbiAgICAgIGlmICh4c3JmVmFsdWUpIHtcbiAgICAgICAgcmVxdWVzdEhlYWRlcnNbY29uZmlnLnhzcmZIZWFkZXJOYW1lXSA9IHhzcmZWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBZGQgaGVhZGVycyB0byB0aGUgcmVxdWVzdFxuICAgIGlmICgnc2V0UmVxdWVzdEhlYWRlcicgaW4gcmVxdWVzdCkge1xuICAgICAgdXRpbHMuZm9yRWFjaChyZXF1ZXN0SGVhZGVycywgZnVuY3Rpb24gc2V0UmVxdWVzdEhlYWRlcih2YWwsIGtleSkge1xuICAgICAgICBpZiAodHlwZW9mIHJlcXVlc3REYXRhID09PSAndW5kZWZpbmVkJyAmJiBrZXkudG9Mb3dlckNhc2UoKSA9PT0gJ2NvbnRlbnQtdHlwZScpIHtcbiAgICAgICAgICAvLyBSZW1vdmUgQ29udGVudC1UeXBlIGlmIGRhdGEgaXMgdW5kZWZpbmVkXG4gICAgICAgICAgZGVsZXRlIHJlcXVlc3RIZWFkZXJzW2tleV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gT3RoZXJ3aXNlIGFkZCBoZWFkZXIgdG8gdGhlIHJlcXVlc3RcbiAgICAgICAgICByZXF1ZXN0LnNldFJlcXVlc3RIZWFkZXIoa2V5LCB2YWwpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBBZGQgd2l0aENyZWRlbnRpYWxzIHRvIHJlcXVlc3QgaWYgbmVlZGVkXG4gICAgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChjb25maWcud2l0aENyZWRlbnRpYWxzKSkge1xuICAgICAgcmVxdWVzdC53aXRoQ3JlZGVudGlhbHMgPSAhIWNvbmZpZy53aXRoQ3JlZGVudGlhbHM7XG4gICAgfVxuXG4gICAgLy8gQWRkIHJlc3BvbnNlVHlwZSB0byByZXF1ZXN0IGlmIG5lZWRlZFxuICAgIGlmIChyZXNwb25zZVR5cGUgJiYgcmVzcG9uc2VUeXBlICE9PSAnanNvbicpIHtcbiAgICAgIHJlcXVlc3QucmVzcG9uc2VUeXBlID0gY29uZmlnLnJlc3BvbnNlVHlwZTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgcHJvZ3Jlc3MgaWYgbmVlZGVkXG4gICAgaWYgKHR5cGVvZiBjb25maWcub25Eb3dubG9hZFByb2dyZXNzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXF1ZXN0LmFkZEV2ZW50TGlzdGVuZXIoJ3Byb2dyZXNzJywgY29uZmlnLm9uRG93bmxvYWRQcm9ncmVzcyk7XG4gICAgfVxuXG4gICAgLy8gTm90IGFsbCBicm93c2VycyBzdXBwb3J0IHVwbG9hZCBldmVudHNcbiAgICBpZiAodHlwZW9mIGNvbmZpZy5vblVwbG9hZFByb2dyZXNzID09PSAnZnVuY3Rpb24nICYmIHJlcXVlc3QudXBsb2FkKSB7XG4gICAgICByZXF1ZXN0LnVwbG9hZC5hZGRFdmVudExpc3RlbmVyKCdwcm9ncmVzcycsIGNvbmZpZy5vblVwbG9hZFByb2dyZXNzKTtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlnLmNhbmNlbFRva2VuIHx8IGNvbmZpZy5zaWduYWwpIHtcbiAgICAgIC8vIEhhbmRsZSBjYW5jZWxsYXRpb25cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG4gICAgICBvbkNhbmNlbGVkID0gZnVuY3Rpb24oY2FuY2VsKSB7XG4gICAgICAgIGlmICghcmVxdWVzdCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICByZWplY3QoIWNhbmNlbCB8fCAoY2FuY2VsICYmIGNhbmNlbC50eXBlKSA/IG5ldyBDYW5jZWxlZEVycm9yKCkgOiBjYW5jZWwpO1xuICAgICAgICByZXF1ZXN0LmFib3J0KCk7XG4gICAgICAgIHJlcXVlc3QgPSBudWxsO1xuICAgICAgfTtcblxuICAgICAgY29uZmlnLmNhbmNlbFRva2VuICYmIGNvbmZpZy5jYW5jZWxUb2tlbi5zdWJzY3JpYmUob25DYW5jZWxlZCk7XG4gICAgICBpZiAoY29uZmlnLnNpZ25hbCkge1xuICAgICAgICBjb25maWcuc2lnbmFsLmFib3J0ZWQgPyBvbkNhbmNlbGVkKCkgOiBjb25maWcuc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25DYW5jZWxlZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFyZXF1ZXN0RGF0YSkge1xuICAgICAgcmVxdWVzdERhdGEgPSBudWxsO1xuICAgIH1cblxuICAgIHZhciBwcm90b2NvbCA9IHBhcnNlUHJvdG9jb2woZnVsbFBhdGgpO1xuXG4gICAgaWYgKHByb3RvY29sICYmIFsgJ2h0dHAnLCAnaHR0cHMnLCAnZmlsZScgXS5pbmRleE9mKHByb3RvY29sKSA9PT0gLTEpIHtcbiAgICAgIHJlamVjdChuZXcgQXhpb3NFcnJvcignVW5zdXBwb3J0ZWQgcHJvdG9jb2wgJyArIHByb3RvY29sICsgJzonLCBBeGlvc0Vycm9yLkVSUl9CQURfUkVRVUVTVCwgY29uZmlnKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG5cbiAgICAvLyBTZW5kIHRoZSByZXF1ZXN0XG4gICAgcmVxdWVzdC5zZW5kKHJlcXVlc3REYXRhKTtcbiAgfSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHBhcnNlUHJvdG9jb2wodXJsKSB7XG4gIHZhciBtYXRjaCA9IC9eKFstK1xcd117MSwyNX0pKDo/XFwvXFwvfDopLy5leGVjKHVybCk7XG4gIHJldHVybiBtYXRjaCAmJiBtYXRjaFsxXSB8fCAnJztcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7XG52YXIgbm9ybWFsaXplSGVhZGVyTmFtZSA9IHJlcXVpcmUoJy4uL2hlbHBlcnMvbm9ybWFsaXplSGVhZGVyTmFtZScpO1xudmFyIEF4aW9zRXJyb3IgPSByZXF1aXJlKCcuLi9jb3JlL0F4aW9zRXJyb3InKTtcbnZhciB0cmFuc2l0aW9uYWxEZWZhdWx0cyA9IHJlcXVpcmUoJy4vdHJhbnNpdGlvbmFsJyk7XG52YXIgdG9Gb3JtRGF0YSA9IHJlcXVpcmUoJy4uL2hlbHBlcnMvdG9Gb3JtRGF0YScpO1xuXG52YXIgREVGQVVMVF9DT05URU5UX1RZUEUgPSB7XG4gICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJ1xufTtcblxuZnVuY3Rpb24gc2V0Q29udGVudFR5cGVJZlVuc2V0KGhlYWRlcnMsIHZhbHVlKSB7XG4gIGlmICghdXRpbHMuaXNVbmRlZmluZWQoaGVhZGVycykgJiYgdXRpbHMuaXNVbmRlZmluZWQoaGVhZGVyc1snQ29udGVudC1UeXBlJ10pKSB7XG4gICAgaGVhZGVyc1snQ29udGVudC1UeXBlJ10gPSB2YWx1ZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXREZWZhdWx0QWRhcHRlcigpIHtcbiAgdmFyIGFkYXB0ZXI7XG4gIGlmICh0eXBlb2YgWE1MSHR0cFJlcXVlc3QgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgLy8gRm9yIGJyb3dzZXJzIHVzZSBYSFIgYWRhcHRlclxuICAgIGFkYXB0ZXIgPSByZXF1aXJlKCcuLi9hZGFwdGVycy94aHInKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHByb2Nlc3MpID09PSAnW29iamVjdCBwcm9jZXNzXScpIHtcbiAgICAvLyBGb3Igbm9kZSB1c2UgSFRUUCBhZGFwdGVyXG4gICAgYWRhcHRlciA9IHJlcXVpcmUoJy4uL2FkYXB0ZXJzL2h0dHAnKTtcbiAgfVxuICByZXR1cm4gYWRhcHRlcjtcbn1cblxuZnVuY3Rpb24gc3RyaW5naWZ5U2FmZWx5KHJhd1ZhbHVlLCBwYXJzZXIsIGVuY29kZXIpIHtcbiAgaWYgKHV0aWxzLmlzU3RyaW5nKHJhd1ZhbHVlKSkge1xuICAgIHRyeSB7XG4gICAgICAocGFyc2VyIHx8IEpTT04ucGFyc2UpKHJhd1ZhbHVlKTtcbiAgICAgIHJldHVybi
15B1dGlscy50cmltKHJhd1ZhbHVlKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoZS5uYW1lICE9PSAnU3ludGF4RXJyb3InKSB7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIChlbmNvZGVyIHx8IEpTT04uc3RyaW5naWZ5KShyYXdWYWx1ZSk7XG59XG5cbnZhciBkZWZhdWx0cyA9IHtcblxuICB0cmFuc2l0aW9uYWw6IHRyYW5zaXRpb25hbERlZmF1bHRzLFxuXG4gIGFkYXB0ZXI6IGdldERlZmF1bHRBZGFwdGVyKCksXG5cbiAgdHJhbnNmb3JtUmVxdWVzdDogW2Z1bmN0aW9uIHRyYW5zZm9ybVJlcXVlc3QoZGF0YSwgaGVhZGVycykge1xuICAgIG5vcm1hbGl6ZUhlYWRlck5hbWUoaGVhZGVycywgJ0FjY2VwdCcpO1xuICAgIG5vcm1hbGl6ZUhlYWRlck5hbWUoaGVhZGVycywgJ0NvbnRlbnQtVHlwZScpO1xuXG4gICAgaWYgKHV0aWxzLmlzRm9ybURhdGEoZGF0YSkgfHxcbiAgICAgIHV0aWxzLmlzQXJyYXlCdWZmZXIoZGF0YSkgfHxcbiAgICAgIHV0aWxzLmlzQnVmZmVyKGRhdGEpIHx8XG4gICAgICB1dGlscy5pc1N0cmVhbShkYXRhKSB8fFxuICAgICAgdXRpbHMuaXNGaWxlKGRhdGEpIHx8XG4gICAgICB1dGlscy5pc0Jsb2IoZGF0YSlcbiAgICApIHtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgICBpZiAodXRpbHMuaXNBcnJheUJ1ZmZlclZpZXcoZGF0YSkpIHtcbiAgICAgIHJldHVybiBkYXRhLmJ1ZmZlcjtcbiAgICB9XG4gICAgaWYgKHV0aWxzLmlzVVJMU2VhcmNoUGFyYW1zKGRhdGEpKSB7XG4gICAgICBzZXRDb250ZW50VHlwZUlmVW5zZXQoaGVhZGVycywgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04Jyk7XG4gICAgICByZXR1cm4gZGF0YS50b1N0cmluZygpO1xuICAgIH1cblxuICAgIHZhciBpc09iamVjdFBheWxvYWQgPSB1dGlscy5pc09iamVjdChkYXRhKTtcbiAgICB2YXIgY29udGVudFR5cGUgPSBoZWFkZXJzICYmIGhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddO1xuXG4gICAgdmFyIGlzRmlsZUxpc3Q7XG5cbiAgICBpZiAoKGlzRmlsZUxpc3QgPSB1dGlscy5pc0ZpbGVMaXN0KGRhdGEpKSB8fCAoaXNPYmplY3RQYXlsb2FkICYmIGNvbnRlbnRUeXBlID09PSAnbXVsdGlwYXJ0L2Zvcm0tZGF0YScpKSB7XG4gICAgICB2Y
15XIgX0Zvcm1EYXRhID0gdGhpcy5lbnYgJiYgdGhpcy5lbnYuRm9ybURhdGE7XG4gICAgICByZXR1cm4gdG9Gb3JtRGF0YShpc0ZpbGVMaXN0ID8geydmaWxlc1tdJzogZGF0YX0gOiBkYXRhLCBfRm9ybURhdGEgJiYgbmV3IF9Gb3JtRGF0YSgpKTtcbiAgICB9IGVsc2UgaWYgKGlzT2JqZWN0UGF5bG9hZCB8fCBjb250ZW50VHlwZSA9PT0gJ2FwcGxpY2F0aW9uL2pzb24nKSB7XG4gICAgICBzZXRDb250ZW50VHlwZUlmVW5zZXQoaGVhZGVycywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcbiAgICAgIHJldHVybiBzdHJpbmdpZnlTYWZlbHkoZGF0YSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH1dLFxuXG4gIHRyYW5zZm9ybVJlc3BvbnNlOiBbZnVuY3Rpb24gdHJhbnNmb3JtUmVzcG9uc2UoZGF0YSkge1xuICAgIHZhciB0cmFuc2l0aW9uYWwgPSB0aGlzLnRyYW5zaXRpb25hbCB8fCBkZWZhdWx0cy50cmFuc2l0aW9uYWw7XG4gICAgdmFyIHNpbGVudEpTT05QYXJzaW5nID0gdHJhbnNpdGlvbmFsICYmIHRyYW5zaXRpb25hbC5zaWxlbnRKU09OUGFyc2luZztcbiAgICB2YXIgZm9yY2VkSlNPTlBhcnNpbmcgPSB0cmFuc2l0aW9uYWwgJiYgdHJhbnNpdGlvbmFsLmZvcmNlZEpTT05QYXJzaW5nO1xuICAgIHZhciBzdHJpY3RKU09OUGFyc2luZyA9ICFzaWxlbnRKU09OUGFyc2luZyAmJiB0aGlzLnJlc3BvbnNlVHlwZSA9PT0gJ2pzb24nO1xuXG4gICAgaWYgKHN0cmljdEpTT05QYXJzaW5nIHx8IChmb3JjZWRKU09OUGFyc2luZyAmJiB1dGlscy5pc1N0cmluZyhkYXRhKSAmJiBkYXRhLmxlbmd0aCkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoc3RyaWN0SlNPTlBhcnNpbmcpIHtcbiAgICAgICAgICBpZiAoZS5uYW1lID09PSAnU3ludGF4RXJyb3InKSB7XG4gICAgICAgICAgICB0aHJvdyBBeGlvc0Vycm9yLmZyb20oZSwgQXhpb3NFcnJvci5FUlJfQkFEX1JFU1BPTlNFLCB0aGlzLCBudWxsLCB0aGlzLnJlc3BvbnNlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkYXRhO1xuICB9XSxcblxuICAvKipcbiAgICogQSB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyB0byBhYm9ydCBhIHJlcXVlc3QuIElmIHNldCB0byAwIChkZWZhdWx0KSBhXG4gICAqIHRpbWVvdXQgaXMgbm90IGNyZWF0ZWQuXG4gICAqL1xuICB0aW1lb3V0OiAwLFxuXG4gIHhzcmZDb29raWVOYW1lOiAnWFNSRi1UT0tFTicsXG4gIHhzcmZIZWFkZXJOYW1lOiAnWC1YU1JGLVRPS0VOJyxcblxuICBtYXhDb250ZW50TGVuZ3RoOiAtMSxcbiAgbWF4Qm9keUxlbmd0aDogLTEsXG5cbiAgZW52OiB7XG4gICAgRm9ybURhdGE6IHJlcXVpcmUoJy4vZW52L0Zvcm1EYXRhJylcbiAgfSxcblxuICB2YWxpZGF0ZVN0YXR1czogZnVuY3Rpb24gdmFsaWRhdGVTdGF0dXMoc3RhdHVzKSB7XG4gICAgcmV0dXJuIHN0YXR1cyA+PSAyMDAgJiYgc3RhdHVzIDwgMzAwO1xuICB9LFxuXG4gIGhlYWRlcnM6IHtcbiAgICBjb21tb246IHtcbiAgICAgICdBY2NlcHQnOiAnYXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8qJ1xuICAgIH1cbiAgfVxufTtcblxudXRpbHMuZm9yRWFjaChbJ2RlbGV0ZScsICdnZXQnLCAnaGVhZCddLCBmdW5jdGlvbiBmb3JFYWNoTWV0aG9kTm9EYXRhKG1ldGhvZCkge1xuICBkZWZhdWx0cy5oZWFkZXJzW21ldGhvZF0gPSB7fTtcbn0pO1xuXG51dGlscy5mb3JFYWNoKFsncG9zdCcsICdwdXQnLCAncGF0Y2gnXSwgZnVuY3Rpb24gZm9yRWFjaE1ldGhvZFdpdGhEYXRhKG1ldGhvZCkge1xuICBkZWZhdWx0cy5oZWFkZXJzW21ldGhvZF0gPSB1dGlscy5tZXJnZShERUZBVUxUX0NPTlRFTlRfVFlQRSk7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBkZWZhdWx0cztcbiIsIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzdHJpY3Rcbm1vZHVsZS5leHBvcnRzID0gbnVsbDtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xudmFyIGRlZmF1bHRzID0gcmVxdWlyZSgnLi4vZGVmYXVsdHMnKTtcblxuLyoqXG4gKiBUcmFuc2Zvcm0gdGhlIGRhdGEgZm9yIGEgcmVxdWVzdCBvciBhIHJlc3BvbnNlXG4gKlxuICogQHBhcmFtIHtPYmplY3R8U3RyaW5nfSBkYXRhIFRoZSBkYXRhIHRvIGJlIHRyYW5zZm9ybWVkXG4gKiBAcGFyYW0ge0FycmF5fSBoZWFkZXJzIFRoZSBoZWFkZXJzIGZvciB0aGUgcmVxdWVzdCBvciByZXNwb25zZVxuICogQHBhcmFtIHtBcnJheXxGdW5jdGlvbn0gZm5zIEEgc2luZ2xlIGZ1bmN0aW9uIG9yIEFycmF5IG9mIGZ1bmN0aW9uc1xuICogQHJldHVybnMgeyp9IFRoZSByZXN1bHRpbmcgdHJhbnNmb3JtZWQgZGF0YVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHRyYW5zZm9ybURhdGEoZGF0YSwgaGVhZGVycywgZm5zKSB7XG4gIHZhciBjb250ZXh0ID0gdGhpcyB8fCBkZWZhdWx0cztcbiAgLyplc2xpbnQgbm8tcGFyYW0tcmVhc3NpZ246MCovXG4gIHV0aWxzLmZvckVhY2goZm5zLCBmdW5jdGlvbiB0cmFuc2Zvcm0oZm4pIHtcbiAgICBkYXRhID0gZm4uY2FsbChjb250ZXh0LCBkYXRhLCBoZWFkZXJzKTtcbiAgfSk7XG5cbiAgcmV0dXJuIGRhdGE7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzQ2FuY2VsKHZhbHVlKSB7XG4gIHJldHVybiAhISh2YWx1ZSAmJiB2YWx1ZS5fX0NBTkNFTF9fKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcbnZhciB0cmFuc2Zvcm1EYXRhID0gcmVxdWlyZSgnLi90cmFuc2Zvcm1EYXRhJyk7XG52YXIgaXNDYW5jZWwgPSByZXF1aXJlKCcuLi9jYW5jZWwvaXNDYW5jZWwnKTtcbnZhciBkZWZhdWx0cyA9IHJlcXVpcmUoJy4uL2RlZmF1bHRzJyk7XG52YXIgQ2FuY2VsZWRFcnJvciA9IHJlcXVpcmUoJy4uL2NhbmNlbC9DYW5jZWxlZEVycm9yJyk7XG5cbi8qKlxuICogVGhyb3dzIGEgYENhbmNlbGVkRXJyb3JgIGlmIGNhbmNlbGxhdGlvbiB
15oYXMgYmVlbiByZXF1ZXN0ZWQuXG4gKi9cbmZ1bmN0aW9uIHRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoY29uZmlnKSB7XG4gIGlmIChjb25maWcuY2FuY2VsVG9rZW4pIHtcbiAgICBjb25maWcuY2FuY2VsVG9rZW4udGhyb3dJZlJlcXVlc3RlZCgpO1xuICB9XG5cbiAgaWYgKGNvbmZpZy5zaWduYWwgJiYgY29uZmlnLnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgdGhyb3cgbmV3IENhbmNlbGVkRXJyb3IoKTtcbiAgfVxufVxuXG4vKipcbiAqIERpc3BhdGNoIGEgcmVxdWVzdCB0byB0aGUgc2VydmVyIHVzaW5nIHRoZSBjb25maWd1cmVkIGFkYXB0ZXIuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGNvbmZpZyBUaGUgY29uZmlnIHRoYXQgaXMgdG8gYmUgdXNlZCBmb3IgdGhlIHJlcXVlc3RcbiAqIEByZXR1cm5zIHtQcm9taXNlfSBUaGUgUHJvbWlzZSB0byBiZSBmdWxmaWxsZWRcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBkaXNwYXRjaFJlcXVlc3QoY29uZmlnKSB7XG4gIHRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoY29uZmlnKTtcblxuICAvLyBFbnN1cmUgaGVhZGVycyBleGlzdFxuICBjb25maWcuaGVhZGVycyA9IGNvbmZpZy5oZWFkZXJzIHx8IHt9O1xuXG4gIC8vIFRyYW5zZm9ybSByZXF1ZXN0IGRhdGFcbiAgY29uZmlnLmRhdGEgPSB0cmFuc2Zvcm1EYXRhLmNhbGwoXG4gICAgY29uZmlnLFxuICAgIGNvbmZpZy5kYXRhLFxuICAgIGNvbmZpZy5oZWFkZXJzLFxuICAgIGNvbmZpZy50cmFuc2Zvcm1SZXF1ZXN0XG4gICk7XG5cbiAgLy8gRmxhdHRlbiBoZWFkZXJzXG4gIGNvbmZpZy5oZWFkZXJzID0gdXRpbHMubWVyZ2UoXG4gICAgY29uZmlnLmhlYWRlcnMuY29tbW9uIHx8IHt9LFxuICAgIGNvbmZpZy5oZWFkZXJzW2NvbmZpZy5tZXRob2RdIHx8IHt9LFxuICAgIGNvbmZpZy5oZWFkZXJzXG4gICk7XG5cbiAgdXRpbHMuZm9yRWFjaChcbiAgICBbJ2RlbGV0ZScsICdnZXQnLCAnaGVhZCcsICdwb3N0JywgJ3B1dCcsICdwYXRjaCcsICdjb21tb24nXSxcbiAgICBmdW5jdGlvbiBjbGVhbkhlYWRlckNvbmZpZyhtZXRob2QpIHtcbiAgICAgIGRlbGV0ZSBjb25maWcuaGVhZGVyc1ttZXRob2RdO1xuICAgIH1cbiAgKTtcblxuICB2YXIgYWRhcHRlciA9IGNvbmZpZy5hZGFwdGVyIHx8IGRlZmF1bHRzLmFkYXB0ZXI7XG5cbiAgcmV0dXJuIGFkYXB0ZXIoY29uZmlnKS50aGVuKGZ1bmN0aW9uIG9uQWRhcHRlclJlc29sdXRpb24ocmVzcG9uc2UpIHtcbiAgICB0aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKGNvbmZpZyk7XG5cbiAgICAvLyBUcmFuc2Zvcm0gcmVzcG9uc2UgZGF0YVxuICAgIHJlc3BvbnNlLmRhdGEgPSB0cmFuc2Zvcm1EYXRhLmNhbGwoXG4gICAgICBjb25maWcsXG4gICAgICByZXNwb25zZS5kYXRhLFxuICAgICAgcmVzcG9uc2UuaGVhZGVycyxcbiAgICAgIGNvbmZpZy50cmFuc2Zvcm1SZXNwb25zZVxuICAgICk7XG5cbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH0sIGZ1bmN0aW9uIG9uQWRhcHRlclJlamVjdGlvbihyZWFzb24pIHtcbiAgICBpZiAoIWlzQ2FuY2VsKHJlYXNvbikpIHtcbiAgICAgIHRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoY29uZmlnKTtcblxuICAgICAgLy8gVHJhbnNmb3JtIHJlc3BvbnNlIGRhdGFcbiAgICAgIGlmIChyZWFzb24gJiYgcmVhc29uLnJlc3BvbnNlKSB7XG4gICAgICAgIHJlYXNvbi5yZXNwb25zZS5kYXRhID0gdHJhbnNmb3JtRGF0YS5jYWxsKFxuICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICByZWFzb24ucmVzcG9uc2UuZGF0YSxcbiAgICAgICAgICByZWFzb24ucmVzcG9uc2UuaGVhZGVycyxcbiAgICAgICAgICBjb25maWcudHJhbnNmb3JtUmVzcG9uc2VcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QocmVhc29uKTtcbiAgfSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xuXG4vKipcbiAqIENvbmZpZy1zcGVjaWZpYyBtZXJnZS1mdW5jdGlvbiB3aGljaCBjcmVhdGVzIGEgbmV3IGNvbmZpZy1vYmplY3RcbiAqIGJ5IG1lcmdpbmcgdHdvIGNvbmZpZ3VyYXRpb24gb2JqZWN0cyB0b2dldGhlci5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnMVxuICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZzJcbiAqIEByZXR1cm5zIHtPYmplY3R9IE5ldyBvYmplY3QgcmVzdWx0aW5nIGZyb20gbWVyZ2luZyBjb25maWcyIHRvIGNvbmZpZzFcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBtZXJnZUNvbmZpZyhjb25maWcxLCBjb25maWcyKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICBjb25maWcyID0gY29uZmlnMiB8fCB7fTtcbiAgdmFyIGNvbmZpZyA9IHt9O1xuXG4gIGZ1bmN0aW9uIGdldE1lcmdlZFZhbHVlKHRhcmdldCwgc291cmNlKSB7XG4gICAgaWYgKHV0aWxzLmlzUGxhaW5PYmplY3QodGFyZ2V0KSAmJiB1dGlscy5pc1BsYWluT2JqZWN0KHNvdXJjZSkpIHtcbiAgICAgIHJldHVybiB1dGlscy5tZXJnZSh0YXJnZXQsIHNvdXJjZSk7XG4gICAgfSBlbHNlIGlmICh1dGlscy5pc1BsYWluT2JqZWN0KHNvdXJjZSkpIHtcbiAgICAgIHJldHVybiB1dGlscy5tZXJnZSh7fSwgc291cmNlKTtcbiAgICB9IGVsc2UgaWYgKHV0aWxzLmlzQXJyYXkoc291cmNlKSkge1xuICAgICAgcmV0dXJuIHNvdXJjZS5zbGljZSgpO1xuICAgIH1cbiAgICByZXR1cm4gc291cmNlO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbnNpc3RlbnQtcmV0dXJuXG4gIGZ1bmN0aW9uIG1lcmdlRGVlcFByb3BlcnRpZXMocHJvcCkge1xuICAgIGlmICghdXRpbHMuaXNVbmRlZmluZWQoY29uZmlnMltwcm9wXSkpIHtcbiAgICAgIHJldHVybiBnZXRNZXJnZWRWYWx1ZShjb25maWcxW3Byb3BdLCBjb25maWcyW3Byb3BdKTtcbiAgICB9IGVsc2UgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChjb25maWcxW3Byb3BdKSkge1xuICAgICAgcmV0dXJuIGdldE1lcmdlZFZhbHVlKHVuZGVmaW5lZCwgY29uZmlnMVtwcm9wXSk7XG4gICAgfVxuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbnNpc3RlbnQtcmV0dXJuXG4gIGZ1bmN0aW9uIHZhbHVlRnJvbUNvbmZpZzIocHJvcCkge1xuICAgIGlmICghdXRpbHMuaXNVbmRlZmluZWQoY29uZmlnMltwcm9wXSkpIHtcbiAgICAgIHJldHVybi
15BnZXRNZXJnZWRWYWx1ZSh1bmRlZmluZWQsIGNvbmZpZzJbcHJvcF0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb25zaXN0ZW50LXJldHVyblxuICBmdW5jdGlvbiBkZWZhdWx0VG9Db25maWcyKHByb3ApIHtcbiAgICBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGNvbmZpZzJbcHJvcF0pKSB7XG4gICAgICByZXR1cm4gZ2V0TWVyZ2VkVmFsdWUodW5kZWZpbmVkLCBjb25maWcyW3Byb3BdKTtcbiAgICB9IGVsc2UgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChjb25maWcxW3Byb3BdKSkge1xuICAgICAgcmV0dXJuIGdldE1lcmdlZFZhbHVlKHVuZGVmaW5lZCwgY29uZmlnMVtwcm9wXSk7XG4gICAgfVxuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbnNpc3RlbnQtcmV0dXJuXG4gIGZ1bmN0aW9uIG1lcmdlRGlyZWN0S2V5cyhwcm9wKSB7XG4gICAgaWYgKHByb3AgaW4gY29uZmlnMikge1xuICAgICAgcmV0dXJuIGdldE1lcmdlZFZhbHVlKGNvbmZpZzFbcHJvcF0sIGNvbmZpZzJbcHJvcF0pO1xuICAgIH0gZWxzZSBpZiAocHJvcCBpbiBjb25maWcxKSB7XG4gICAgICByZXR1cm4gZ2V0TWVyZ2VkVmFsdWUodW5kZWZpbmVkLCBjb25maWcxW3Byb3BdKTtcbiAgICB9XG4gIH1cblxuICB2YXIgbWVyZ2VNYXAgPSB7XG4gICAgJ3VybCc6IHZhbHVlRnJvbUNvbmZpZzIsXG4gICAgJ21ldGhvZCc6IHZhbHVlRnJvbUNvbmZpZzIsXG4gICAgJ2RhdGEnOiB2YWx1ZUZyb21Db25maWcyLFxuICAgICdiYXNlVVJMJzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAndHJhbnNmb3JtUmVxdWVzdCc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ3RyYW5zZm9ybVJlc3BvbnNlJzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAncGFyYW1zU2VyaWFsaXplcic6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ3RpbWVvdXQnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICd0aW1lb3V0TWVzc2FnZSc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ3dpdGhDcmVkZW50aWFscyc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ2FkYXB0ZXInOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICdyZXNwb25zZVR5cGUnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICd4c3JmQ29va2llTmFtZSc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ3hzcmZIZWFkZXJOYW1lJzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAnb25VcGxvYWRQcm9ncmVzcyc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ29uRG93bmxvYWRQcm9ncmVzcyc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ2RlY29tcHJlc3MnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICdtYXhDb250ZW50TGVuZ3RoJzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAnbWF4Qm9keUxlbmd0aCc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ2JlZm9yZVJlZGlyZWN0JzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAndHJhbnNwb3J0JzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAnaHR0cEFnZW50JzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAnaHR0cHNBZ2VudCc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ2NhbmNlbFRva2VuJzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAnc29ja2V0UGF0aCc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ3Jlc3BvbnNlRW5jb2RpbmcnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICd2YWxpZGF0ZVN0YXR1cyc6IG1lcmdlRGlyZWN0S2V5c1xuICB9O1xuXG4gIHV0aWxzLmZvckVhY2goT2JqZWN0LmtleXMoY29uZmlnMSkuY29uY2F0KE9iamVjdC5rZXlzKGNvbmZpZzIpKSwgZnVuY3Rpb24gY29tcHV0ZUNvbmZpZ1ZhbHVlKHByb3ApIHtcbiAgICB2YXIgbWVyZ2UgPSBtZXJnZU1hcFtwcm9wXSB8fCBtZXJnZURlZXBQcm9wZXJ0aWVzO1xuICAgIHZhciBjb25maWdWYWx1ZSA9IG1lcmdlKHByb3ApO1xuICAgICh1dGlscy5pc1VuZGVmaW5lZChjb25maWdWYWx1ZSkgJiYgbWVyZ2UgIT09IG1lcmdlRGlyZWN0S2V5cykgfHwgKGNvbmZpZ1twcm9wXSA9IGNvbmZpZ1ZhbHVlKTtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbmZpZztcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHtcbiAgXCJ2ZXJzaW9uXCI6IFwiMC4yNy4yXCJcbn07IiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgVkVSU0lPTiA9IHJlcXVpcmUoJy4uL2Vudi9kYXRhJykudmVyc2lvbjtcbnZhciBBeGlvc0Vycm9yID0gcmVxdWlyZSgnLi4vY29yZS9BeGlvc0Vycm9yJyk7XG5cbnZhciB2YWxpZGF0b3JzID0ge307XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG5bJ29iamVjdCcsICdib29sZWFuJywgJ251bWJlcicsICdmdW5jdGlvbicsICdzdHJpbmcnLCAnc3ltYm9sJ10uZm9yRWFjaChmdW5jdGlvbih0eXBlLCBpKSB7XG4gIHZhbGlkYXRvcnNbdHlwZV0gPSBmdW5jdGlvbiB2YWxpZGF0b3IodGhpbmcpIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaW5nID09PSB0eXBlIHx8ICdhJyArIChpIDwgMSA/ICduICcgOiAnICcpICsgdHlwZTtcbiAgfTtcbn0pO1xuXG52YXIgZGVwcmVjYXRlZFdhcm5pbmdzID0ge307XG5cbi8qKlxuICogVHJhbnNpdGlvbmFsIG9wdGlvbiB2YWxpZGF0b3JcbiAqIEBwYXJhbSB7ZnVuY3Rpb258Ym9vbGVhbj99IHZhbGlkYXRvciAtIHNldCB0byBmYWxzZSBpZiB0aGUgdHJhbnNpdGlvbmFsIG9wdGlvbiBoYXMgYmVlbiByZW1vdmVkXG4gKiBAcGFyYW0ge3N0cmluZz99IHZlcnNpb24gLSBkZXByZWNhdGVkIHZlcnNpb24gLyByZW1vdmVkIHNpbmNlIHZlcnNpb25cbiAqIEBwYXJhbSB7c3RyaW5nP30gbWVzc2FnZSAtIHNvbWUgbWVzc2FnZSB3aXRoIGFkZGl0aW9uYWwgaW5mb1xuICogQHJldHVybnMge2Z1bmN0aW9ufVxuICovXG52YWxpZGF0b3JzLnRyYW5zaXRpb25hbCA9IGZ1bmN0aW9uIHRyYW5zaXRpb25hbCh2YWxpZGF0b3IsIHZlcnNpb24sIG1lc3NhZ2UpIHtcbiAgZnVuY3Rpb24gZm9ybWF0TWVzc2FnZShvcHQsIGRlc2MpIHtcbiAgICByZXR1cm4gJ1tBeGlvcyB2JyArIFZFUlNJT04gKyAnXSBUcmFuc2l0aW9uYWwgb3B0aW9uIFxcJycgKyBvcHQgKyAnXFwnJyArIGRlc2MgKyAobWVzc2FnZSA/ICcuICcgKyBtZXNzYWdlIDogJycpO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlLCBvcHQsIG9wdHMpIHtcbiAgICBpZiAodmFsaWRhdG9yID09PSBmYWxzZSkge1xuICAgICAgdGhyb3cgbmV3IEF4aW9zRXJyb3IoXG4gICAgICAgIGZvcm1hdE1lc3NhZ2Uob3B0LCAnIGhhcyBiZWVuIHJlbW92ZWQnICsgKHZlcnNpb24gPyAnIGluICcgKyB2ZXJzaW9uIDogJycpKSxcbiAgICAgICAgQXhpb3NFcnJvci5FUlJfREVQUkVDQVRFRFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodmVyc2lvbiAmJiAhZGVwcmVjYXRlZFdhcm5pbmdzW29wdF0pIHtcbiAgICAgIGRlcHJlY2F0ZWRXYXJuaW5nc1tvcHRdID0gdHJ1ZTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGZvcm1hdE1lc3NhZ2UoXG4gICAgICAgICAgb3B0LFxuICAgICAgICAgICcgaGFzIGJlZW4gZGVwcmVjYXRlZCBzaW5jZSB2JyArIHZlcnNpb24gKyAnIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5lYXIgZnV0dXJlJ1xuICAgICAgICApXG4gICAgICApO1xuICAgIH1cblxuICAgI
15HJldHVybiB2YWxpZGF0b3IgPyB2YWxpZGF0b3IodmFsdWUsIG9wdCwgb3B0cykgOiB0cnVlO1xuICB9O1xufTtcblxuLyoqXG4gKiBBc3NlcnQgb2JqZWN0J3MgcHJvcGVydGllcyB0eXBlXG4gKiBAcGFyYW0ge29iamVjdH0gb3B0aW9uc1xuICogQHBhcmFtIHtvYmplY3R9IHNjaGVtYVxuICogQHBhcmFtIHtib29sZWFuP30gYWxsb3dVbmtub3duXG4gKi9cblxuZnVuY3Rpb24gYXNzZXJ0T3B0aW9ucyhvcHRpb25zLCBzY2hlbWEsIGFsbG93VW5rbm93bikge1xuICBpZiAodHlwZW9mIG9wdGlvbnMgIT09ICdvYmplY3QnKSB7XG4gICAgdGhyb3cgbmV3IEF4aW9zRXJyb3IoJ29wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QnLCBBeGlvc0Vycm9yLkVSUl9CQURfT1BUSU9OX1ZBTFVFKTtcbiAgfVxuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9wdGlvbnMpO1xuICB2YXIgaSA9IGtleXMubGVuZ3RoO1xuICB3aGlsZSAoaS0tID4gMCkge1xuICAgIHZhciBvcHQgPSBrZXlzW2ldO1xuICAgIHZhciB2YWxpZGF0b3IgPSBzY2hlbWFbb3B0XTtcbiAgICBpZiAodmFsaWRhdG9yKSB7XG4gICAgICB2YXIgdmFsdWUgPSBvcHRpb25zW29wdF07XG4gICAgICB2YXIgcmVzdWx0ID0gdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWxpZGF0b3IodmFsdWUsIG9wdCwgb3B0aW9ucyk7XG4gICAgICBpZiAocmVzdWx0ICE9PSB0cnVlKSB7XG4gICAgICAgIHRocm93IG5ldyBBeGlvc0Vycm9yKCdvcHRpb24gJyArIG9wdCArICcgbXVzdCBiZSAnICsgcmVzdWx0LCBBeGlvc0Vycm9yLkVSUl9CQURfT1BUSU9OX1ZBTFVFKTtcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoYWxsb3dVbmtub3duICE9PSB0cnVlKSB7XG4gICAgICB0aHJvdyBuZXcgQXhpb3NFcnJvcignVW5rbm93biBvcHRpb24gJyArIG9wdCwgQXhpb3NFcnJvci5FUlJfQkFEX09QVElPTik7XG4gICAgfVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBhc3NlcnRPcHRpb25zOiBhc3NlcnRPcHRpb25zLFxuICB2YWxpZGF0b3JzOiB2YWxpZGF0b3JzXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG52YXIgYnVpbGRVUkwgPSByZXF1aXJlKCcuLi9oZWxwZXJzL2J1aWxkVVJMJyk7XG52YXIgSW50ZXJjZXB0b3JNYW5hZ2VyID0gcmVxdWlyZSgnLi9JbnRlcmNlcHRvck1hbmFnZXInKTtcbnZhciBkaXNwYXRjaFJlcXVlc3QgPSByZXF1aXJlKCcuL2Rpc3BhdGNoUmVxdWVzdCcpO1xudmFyIG1lcmdlQ29uZmlnID0gcmVxdWlyZSgnLi9tZXJnZUNvbmZpZycpO1xudmFyIGJ1aWxkRnVsbFBhdGggPSByZXF1aXJlKCcuL2J1aWxkRnVsbFBhdGgnKTtcbnZhciB2YWxpZGF0b3IgPSByZXF1aXJlKCcuLi9oZWxwZXJzL3ZhbGlkYXRvcicpO1xuXG52YXIgdmFsaWRhdG9ycyA9IHZhbGlkYXRvci52YWxpZGF0b3JzO1xuLyoqXG4gKiBDcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgQXhpb3NcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gaW5zdGFuY2VDb25maWcgVGhlIGRlZmF1bHQgY29uZmlnIGZvciB0aGUgaW5zdGFuY2VcbiAqL1xuZnVuY3Rpb24gQXhpb3MoaW5zdGFuY2VDb25maWcpIHtcbiAgdGhpcy5kZWZhdWx0cyA9IGluc3RhbmNlQ29uZmlnO1xuICB0aGlzLmludGVyY2VwdG9ycyA9IHtcbiAgICByZXF1ZXN0OiBuZXcgSW50ZXJjZXB0b3JNYW5hZ2VyKCksXG4gICAgcmVzcG9uc2U6IG5ldyBJbnRlcmNlcHRvck1hbmFnZXIoKVxuICB9O1xufVxuXG4vKipcbiAqIERpc3BhdGNoIGEgcmVxdWVzdFxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcgVGhlIGNvbmZpZyBzcGVjaWZpYyBmb3IgdGhpcyByZXF1ZXN0IChtZXJnZWQgd2l0aCB0aGlzLmRlZmF1bHRzKVxuICovXG5BeGlvcy5wcm90b3R5cGUucmVxdWVzdCA9IGZ1bmN0aW9uIHJlcXVlc3QoY29uZmlnT3JVcmwsIGNvbmZpZykge1xuICAvKmVzbGludCBuby1wYXJhbS1yZWFzc2lnbjowKi9cbiAgLy8gQWxsb3cgZm9yIGF4aW9zKCdleGFtcGxlL3VybCdbLCBjb25maWddKSBhIGxhIGZldGNoIEFQSVxuICBpZiAodHlwZW9mIGNvbmZpZ09yVXJsID09PSAnc3RyaW5nJykge1xuICAgIGNvbmZpZyA9IGNvbmZpZyB8fCB7fTtcbiAgICBjb25maWcudXJsID0gY29uZmlnT3JVcmw7XG4gIH0gZWxzZSB7XG4gICAgY29uZmlnID0gY29uZmlnT3JVcmwgfHwge307XG4gIH1cblxuICBjb25maWcgPSBtZXJnZUNvbmZpZyh0aGlzLmRlZmF1bHRzLCBjb25maWcpO1xuXG4gIC8vIFNldCBjb25maWcubWV0aG9kXG4gIGlmIChjb25maWcubWV0aG9kKSB7XG4gICAgY29uZmlnLm1ldGhvZCA9IGNvbmZpZy5tZXRob2QudG9Mb3dlckNhc2UoKTtcbiAgfSBlbHNlIGlmICh0aGlzLmRlZmF1bHRzLm1ldGhvZCkge1xuICAgIGNvbmZpZy5tZXRob2QgPSB0aGlzLmRlZmF1bHRzLm1ldGhvZC50b0xvd2VyQ2FzZSgpO1xuICB9IGVsc2Uge1xuICAgIGNvbmZpZy5tZXRob2QgPSAnZ2V0JztcbiAgfVxuXG4gIHZhciB0cmFuc2l0aW9uYWwgPSBjb25maWcudHJhbnNpdGlvbmFsO1xuXG4gIGlmICh0cmFuc2l0aW9uYWwgIT09IHVuZGVmaW5lZCkge1xuICAgIHZhbGlkYXRvci5hc3NlcnRPcHRpb25zKHRyYW5zaXRpb25hbCwge1xuICAgICAgc2lsZW50SlNPTlBhcnNpbmc6IHZhbGlkYXRvcnMudHJhbnNpdGlvbmFsKHZhbGlkYXRvcnMuYm9vbGVhbiksXG4gICAgICBmb3JjZWRKU09OUGFyc2luZzogdmFsaWRhdG9ycy50cmFuc2l0aW9uYWwodmFsaWRhdG9ycy5ib29sZWFuKSxcbiAgICAgIGNsYXJpZnlUaW1lb3V0RXJyb3I6IHZhbGlkYXRvcnMudHJhbnNpdGlvbmFsKHZhbGlkYXRvcnMuYm9vbGVhbilcbiAgICB9LCBmYWxzZSk7XG4gIH1cblxuICAvLyBmaWx0ZXIgb3V0IHNraXBwZWQgaW50ZXJjZXB0b3JzXG4gIHZhciByZXF1ZXN0SW50ZXJjZXB0b3JDaGFpbiA9IFtdO1xuICB2YXIgc3luY2hyb25vdXNSZXF1ZXN0SW50ZXJjZXB0b3JzID0gdHJ1ZTtcbiAgdGhpcy5pbnRlcmNlcHRvcnMucmVxdWVzdC5mb3JFYWNoKGZ1bmN0aW9uIHVuc2hpZnRSZXF1ZXN0SW50ZXJjZXB0b3JzKGludGVyY2VwdG9yKSB7XG4gICAgaWYgKHR5cGVvZiBpbnRlcmNlcHRvci5ydW5XaGVuID09PSAnZnVuY3Rpb24nICYmIGludGVyY2VwdG9yLnJ1bldoZW4oY29uZmlnKSA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzeW5jaHJvbm91c1JlcXVlc3RJbnRlcmNlcHRvcnMgPSBzeW5jaHJvbm91c1JlcXVlc3RJbnRlcmNlcHRvcnMgJiYgaW50ZXJjZXB0b3Iuc3luY2hyb25vdXM7XG5cbiAgICByZXF1ZXN0SW50ZXJjZXB0b3JDaGFpbi51bnNoaWZ0KGludGVyY2VwdG9yLmZ1bGZpbGxlZCwgaW50ZXJjZXB0b3IucmVqZWN0ZWQpO1xuICB9KTtcblxuICB2Y
15XIgcmVzcG9uc2VJbnRlcmNlcHRvckNoYWluID0gW107XG4gIHRoaXMuaW50ZXJjZXB0b3JzLnJlc3BvbnNlLmZvckVhY2goZnVuY3Rpb24gcHVzaFJlc3BvbnNlSW50ZXJjZXB0b3JzKGludGVyY2VwdG9yKSB7XG4gICAgcmVzcG9uc2VJbnRlcmNlcHRvckNoYWluLnB1c2goaW50ZXJjZXB0b3IuZnVsZmlsbGVkLCBpbnRlcmNlcHRvci5yZWplY3RlZCk7XG4gIH0pO1xuXG4gIHZhciBwcm9taXNlO1xuXG4gIGlmICghc3luY2hyb25vdXNSZXF1ZXN0SW50ZXJjZXB0b3JzKSB7XG4gICAgdmFyIGNoYWluID0gW2Rpc3BhdGNoUmVxdWVzdCwgdW5kZWZpbmVkXTtcblxuICAgIEFycmF5LnByb3RvdHlwZS51bnNoaWZ0LmFwcGx5KGNoYWluLCByZXF1ZXN0SW50ZXJjZXB0b3JDaGFpbik7XG4gICAgY2hhaW4gPSBjaGFpbi5jb25jYXQocmVzcG9uc2VJbnRlcmNlcHRvckNoYWluKTtcblxuICAgIHByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoY29uZmlnKTtcbiAgICB3aGlsZSAoY2hhaW4ubGVuZ3RoKSB7XG4gICAgICBwcm9taXNlID0gcHJvbWlzZS50aGVuKGNoYWluLnNoaWZ0KCksIGNoYWluLnNoaWZ0KCkpO1xuICAgIH1cblxuICAgIHJldHVybiBwcm9taXNlO1xuICB9XG5cblxuICB2YXIgbmV3Q29uZmlnID0gY29uZmlnO1xuICB3aGlsZSAocmVxdWVzdEludGVyY2VwdG9yQ2hhaW4ubGVuZ3RoKSB7XG4gICAgdmFyIG9uRnVsZmlsbGVkID0gcmVxdWVzdEludGVyY2VwdG9yQ2hhaW4uc2hpZnQoKTtcbiAgICB2YXIgb25SZWplY3RlZCA9IHJlcXVlc3RJbnRlcmNlcHRvckNoYWluLnNoaWZ0KCk7XG4gICAgdHJ5IHtcbiAgICAgIG5ld0NvbmZpZyA9IG9uRnVsZmlsbGVkKG5ld0NvbmZpZyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIG9uUmVqZWN0ZWQoZXJyb3IpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgdHJ5IHtcbiAgICBwcm9taXNlID0gZGlzcGF0Y2hSZXF1ZXN0KG5ld0NvbmZpZyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcbiAgfVxuXG4gIHdoaWxlIChyZXNwb25zZUludGVyY2VwdG9yQ2hhaW4ubGVuZ3RoKSB7XG4gICAgcHJvbWlzZSA9IHByb21pc2UudGhlbihyZXNwb25zZUludGVyY2VwdG9yQ2hhaW4uc2hpZnQoKSwgcmVzcG9uc2VJbnRlcmNlcHRvckNoYWluLnNoaWZ0KCkpO1xuICB9XG5cbiAgcmV0dXJuIHByb21pc2U7XG59O1xuXG5BeGlvcy5wcm90b3R5cGUuZ2V0VXJpID0gZnVuY3Rpb24gZ2V0VXJpKGNvbmZpZykge1xuICBjb25maWcgPSBtZXJnZUNvbmZpZyh0aGlzLmRlZmF1bHRzLCBjb25maWcpO1xuICB2YXIgZnVsbFBhdGggPSBidWlsZEZ1bGxQYXRoKGNvbmZpZy5iYXNlVVJMLCBjb25maWcudXJsKTtcbiAgcmV0dXJuIGJ1aWxkVVJMKGZ1bGxQYXRoLCBjb25maWcucGFyYW1zLCBjb25maWcucGFyYW1zU2VyaWFsaXplcik7XG59O1xuXG4vLyBQcm92aWRlIGFsaWFzZXMgZm9yIHN1cHBvcnRlZCByZXF1ZXN0IG1ldGhvZHNcbnV0aWxzLmZvckVhY2goWydkZWxldGUnLCAnZ2V0JywgJ2hlYWQnLCAnb3B0aW9ucyddLCBmdW5jdGlvbiBmb3JFYWNoTWV0aG9kTm9EYXRhKG1ldGhvZCkge1xuICAvKmVzbGludCBmdW5jLW5hbWVzOjAqL1xuICBBeGlvcy5wcm90b3R5cGVbbWV0aG9kXSA9IGZ1bmN0aW9uKHVybCwgY29uZmlnKSB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdChtZXJnZUNvbmZpZyhjb25maWcgfHwge30sIHtcbiAgICAgIG1ldGhvZDogbWV0aG9kLFxuICAgICAgdXJsOiB1cmwsXG4gICAgICBkYXRhOiAoY29uZmlnIHx8IHt9KS5kYXRhXG4gICAgfSkpO1xuICB9O1xufSk7XG5cbnV0aWxzLmZvckVhY2goWydwb3N0JywgJ3B1dCcsICdwYXRjaCddLCBmdW5jdGlvbiBmb3JFYWNoTWV0aG9kV2l0aERhdGEobWV0aG9kKSB7XG4gIC8qZXNsaW50IGZ1bmMtbmFtZXM6MCovXG5cbiAgZnVuY3Rpb24gZ2VuZXJhdGVIVFRQTWV0aG9kKGlzRm9ybSkge1xuICAgIHJldHVybiBmdW5jdGlvbiBodHRwTWV0aG9kKHVybCwgZGF0YSwgY29uZmlnKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KG1lcmdlQ29uZmlnKGNvbmZpZyB8fCB7fSwge1xuICAgICAgICBtZXRob2Q6IG1ldGhvZCxcbiAgICAgICAgaGVhZGVyczogaXNGb3JtID8ge1xuICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnbXVsdGlwYXJ0L2Zvcm0tZGF0YSdcbiAgICAgICAgfSA6IHt9LFxuICAgICAgICB1cmw6IHVybCxcbiAgICAgICAgZGF0YTogZGF0YVxuICAgICAgfSkpO1xuICAgIH07XG4gIH1cblxuICBBeGlvcy5wcm90b3R5cGVbbWV0aG9kXSA9IGdlbmVyYXRlSFRUUE1ldGhvZCgpO1xuXG4gIEF4aW9zLnByb3RvdHlwZVttZXRob2QgKyAnRm9ybSddID0gZ2VuZXJhdGVIVFRQTWV0aG9kKHRydWUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gQXhpb3M7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBDYW5jZWxlZEVycm9yID0gcmVxdWlyZSgnLi9DYW5jZWxlZEVycm9yJyk7XG5cbi8qKlxuICogQSBgQ2FuY2VsVG9rZW5gIGlzIGFuIG9iamVjdCB0aGF0IGNhbiBiZSB1c2VkIHRvIHJlcXVlc3QgY2FuY2VsbGF0aW9uIG9mIGFuIG9wZXJhdGlvbi5cbiAqXG4gKiBAY2xhc3NcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGV4ZWN1dG9yIFRoZSBleGVjdXRvciBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gQ2FuY2VsVG9rZW4oZXhlY3V0b3IpIHtcbiAgaWYgKHR5cGVvZiBleGVjdXRvciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2V4ZWN1dG9yIG11c3QgYmUgYSBmdW5jdGlvbi4nKTtcbiAgfVxuXG4gIHZhciByZXNvbHZlUHJvbWlzZTtcblxuICB0aGlzLnByb21pc2UgPSBuZXcgUHJvbWlzZS
15hmdW5jdGlvbiBwcm9taXNlRXhlY3V0b3IocmVzb2x2ZSkge1xuICAgIHJlc29sdmVQcm9taXNlID0gcmVzb2x2ZTtcbiAgfSk7XG5cbiAgdmFyIHRva2VuID0gdGhpcztcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuICB0aGlzLnByb21pc2UudGhlbihmdW5jdGlvbihjYW5jZWwpIHtcbiAgICBpZiAoIXRva2VuLl9saXN0ZW5lcnMpIHJldHVybjtcblxuICAgIHZhciBpO1xuICAgIHZhciBsID0gdG9rZW4uX2xpc3RlbmVycy5sZW5ndGg7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICB0b2tlbi5fbGlzdGVuZXJzW2ldKGNhbmNlbCk7XG4gICAgfVxuICAgIHRva2VuLl9saXN0ZW5lcnMgPSBudWxsO1xuICB9KTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuICB0aGlzLnByb21pc2UudGhlbiA9IGZ1bmN0aW9uKG9uZnVsZmlsbGVkKSB7XG4gICAgdmFyIF9yZXNvbHZlO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG4gICAgdmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlKSB7XG4gICAgICB0b2tlbi5zdWJzY3JpYmUocmVzb2x2ZSk7XG4gICAgICBfcmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgfSkudGhlbihvbmZ1bGZpbGxlZCk7XG5cbiAgICBwcm9taXNlLmNhbmNlbCA9IGZ1bmN0aW9uIHJlamVjdCgpIHtcbiAgICAgIHRva2VuLnVuc3Vic2NyaWJlKF9yZXNvbHZlKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIHByb21pc2U7XG4gIH07XG5cbiAgZXhlY3V0b3IoZnVuY3Rpb24gY2FuY2VsKG1lc3NhZ2UpIHtcbiAgICBpZiAodG9rZW4ucmVhc29uKSB7XG4gICAgICAvLyBDYW5jZWxsYXRpb24gaGFzIGFscmVhZHkgYmVlbiByZXF1ZXN0ZWRcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0b2tlbi5yZWFzb24gPSBuZXcgQ2FuY2VsZWRFcnJvcihtZXNzYWdlKTtcbiAgICByZXNvbHZlUHJvbWlzZSh0b2tlbi5yZWFzb24pO1xuICB9KTtcbn1cblxuLyoqXG4gKiBUaHJvd3MgYSBgQ2FuY2VsZWRFcnJvcmAgaWYgY2FuY2VsbGF0aW9uIGhhcyBiZWVuIHJlcXVlc3RlZC5cbiAqL1xuQ2FuY2VsVG9rZW4ucHJvdG90eXBlLnRocm93SWZSZXF1ZXN0ZWQgPSBmdW5jdGlvbiB0aHJvd0lmUmVxdWVzdGVkKCkge1xuICBpZiAodGhpcy5yZWFzb24pIHtcbiAgICB0aHJvdyB0aGlzLnJlYXNvbjtcbiAgfVxufTtcblxuLyoqXG4gKiBTdWJzY3JpYmUgdG8gdGhlIGNhbmNlbCBzaWduYWxcbiAqL1xuXG5DYW5jZWxUb2tlbi5wcm90b3R5cGUuc3Vic2NyaWJlID0gZnVuY3Rpb24gc3Vic2NyaWJlKGxpc3RlbmVyKSB7XG4gIGlmICh0aGlzLnJlYXNvbikge1xuICAgIGxpc3RlbmVyKH
15RoaXMucmVhc29uKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAodGhpcy5fbGlzdGVuZXJzKSB7XG4gICAgdGhpcy5fbGlzdGVuZXJzLnB1c2gobGlzdGVuZXIpO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuX2xpc3RlbmVycyA9IFtsaXN0ZW5lcl07XG4gIH1cbn07XG5cbi8qKlxuICogVW5zdWJzY3JpYmUgZnJvbSB0aGUgY2FuY2VsIHNpZ25hbFxuICovXG5cbkNhbmNlbFRva2VuLnByb3RvdHlwZS51bnN1YnNjcmliZSA9IGZ1bmN0aW9uIHVuc3Vic2NyaWJlKGxpc3RlbmVyKSB7XG4gIGlmICghdGhpcy5fbGlzdGVuZXJzKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciBpbmRleCA9IHRoaXMuX2xpc3RlbmVycy5pbmRleE9mKGxpc3RlbmVyKTtcbiAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgIHRoaXMuX2xpc3RlbmVycy5zcGxpY2UoaW5kZXgsIDEpO1xuICB9XG59O1xuXG4vKipcbiAqIFJldHVybnMgYW4gb2JqZWN0IHRoYXQgY29udGFpbnMgYSBuZXcgYENhbmNlbFRva2VuYCBhbmQgYSBmdW5jdGlvbiB0aGF0LCB3aGVuIGNhbGxlZCxcbiAqIGNhbmNlbHMgdGhlIGBDYW5jZWxUb2tlbmAuXG4gKi9cbkNhbmNlbFRva2VuLnNvdXJjZSA9IGZ1bmN0aW9uIHNvdXJjZSgpIHtcbiAgdmFyIGNhbmNlbDtcbiAgdmFyIHRva2VuID0gbmV3IENhbmNlbFRva2VuKGZ1bmN0aW9uIGV4ZWN1dG9yKGMpIHtcbiAgICBjYW5jZWwgPSBjO1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICB0b2tlbjogdG9rZW4sXG4gICAgY2FuY2VsOiBjYW5jZWxcbiAgfTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gQ2FuY2VsVG9rZW47XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHBheWxvYWQgaXMgYW4gZXJyb3IgdGhyb3duIGJ5IEF4aW9zXG4gKlxuICogQHBhcmFtIHsqfSBwYXlsb2FkIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgcGF5bG9hZCBpcyBhbiBlcnJvciB0aHJvd24gYnkgQXhpb3MsIG90aGVyd2lzZSBmYWxzZVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzQXhpb3NFcnJvcihwYXlsb2FkKSB7XG4gIHJldHVybiB1dGlscy5pc09iamVjdChwYXlsb2FkKSAmJiAocGF5bG9hZC5pc0F4aW9zRXJyb3IgPT09IHRydWUpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xudmFyIGJpbmQgPSByZXF1aXJlKCcuL2hlbHBlcnMvYmluZCcpO1xudmFyIEF4aW9zID0gcmVxdWlyZSgnLi9jb3JlL0F4aW9zJyk7XG52YXIgbWVyZ2VDb25maWcgPSByZXF1aXJlKCcuL2NvcmUvbWVyZ2VDb25maWcnKTtcbnZhciBkZWZhdWx0cyA9IHJlcXVpcmUoJy4vZGVmYXVsdHMnKTtcblxuLyoqXG4gKiBDcmVhdGUgYW4gaW5zdGFuY2Ugb2YgQXhpb3NcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gZGVmYXVsdENvbmZpZyBUaGUgZGVmYXVsdCBjb25maWcgZm9yIHRoZSBpbnN0YW5jZVxuICogQHJldHVybiB7QXhpb3N9IEEgbmV3IGluc3RhbmNlIG9mIEF4aW9zXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUluc3RhbmNlKGRlZmF1bHRDb25maWcpIHtcbiAgdmFyIGNvbnRleHQgPSBuZXcgQXhpb3MoZGVmYXVsdENvbmZpZyk7XG4gIHZhciBpbnN0YW5jZSA9IGJpbmQoQXhpb3MucHJvdG90eXBlLnJlcXVlc3QsIGNvbnRleHQpO1xuXG4gIC8vIENvcHkgYXhpb3MucHJvdG90eXBlIHRvIGluc3RhbmNlXG4gIHV0aWxzLmV4dGVuZChpbnN0YW5jZSwgQXhpb3MucHJvdG90eXBlLCBjb250ZXh0KTtcblxuICAvLyBDb3B5IGNvbnRleHQgdG8gaW5zdGFuY2VcbiAgdXRpbHMuZXh0ZW5kKGluc3RhbmNlLCBjb250ZXh0KTtcblxuICAvLyBGYWN0b3J5IGZvciBjcmVhdGluZyBuZXcgaW5zdGFuY2VzXG4gIGluc3RhbmNlLmNyZWF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZShpbnN0YW5jZUNvbmZpZykge1xuICAgIHJldHVybiBjcmVhdGVJbnN0YW5jZShtZXJnZUNvbmZpZyhkZWZhdWx0Q29uZmlnLCBpbnN0YW5jZUNvbmZpZykpO1xuICB9O1xuXG4gIHJldHVybiBpbnN0YW5jZTtcbn1cblxuLy8gQ3JlYXRlIHRoZSBkZWZhdWx0IGluc3RhbmNlIHRvIGJlIGV4cG9ydGVkXG52YXIgYXhpb3MgPSBjcmVhdGVJbnN0YW5jZShkZWZh
15dWx0cyk7XG5cbi8vIEV4cG9zZSBBeGlvcyBjbGFzcyB0byBhbGxvdyBjbGFzcyBpbmhlcml0YW5jZVxuYXhpb3MuQXhpb3MgPSBBeGlvcztcblxuLy8gRXhwb3NlIENhbmNlbCAmIENhbmNlbFRva2VuXG5heGlvcy5DYW5jZWxlZEVycm9yID0gcmVxdWlyZSgnLi9jYW5jZWwvQ2FuY2VsZWRFcnJvcicpO1xuYXhpb3MuQ2FuY2VsVG9rZW4gPSByZXF1aXJlKCcuL2NhbmNlbC9DYW5jZWxUb2tlbicpO1xuYXhpb3MuaXNDYW5jZWwgPSByZXF1aXJlKCcuL2NhbmNlbC9pc0NhbmNlbCcpO1xuYXhpb3MuVkVSU0lPTiA9IHJlcXVpcmUoJy4vZW52L2RhdGEnKS52ZXJzaW9uO1xuYXhpb3MudG9Gb3JtRGF0YSA9IHJlcXVpcmUoJy4vaGVscGVycy90b0Zvcm1EYXRhJyk7XG5cbi8vIEV4cG9zZSBBeGlvc0Vycm9yIGNsYXNzXG5heGlvcy5BeGlvc0Vycm9yID0gcmVxdWlyZSgnLi4vbGliL2NvcmUvQXhpb3NFcnJvcicpO1xuXG4vLyBhbGlhcyBmb3IgQ2FuY2VsZWRFcnJvciBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuYXhpb3MuQ2FuY2VsID0gYXhpb3MuQ2FuY2VsZWRFcnJvcjtcblxuLy8gRXhwb3NlIGFsbC9zcHJlYWRcbmF4aW9zLmFsbCA9IGZ1bmN0aW9uIGFsbChwcm9taXNlcykge1xuICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xufTtcbmF4aW9zLnNwcmVhZCA9IHJlcXVpcmUoJy4vaGVscGVycy9zcHJlYWQnKTtcblxuLy8gRXhwb3NlIGlzQXhpb3NFcnJvclxuYXhpb3MuaXNBeGlvc0Vycm9yID0gcmVxdWlyZSgnLi9oZWxwZXJzL2lzQXhpb3NFcnJvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGF4aW9zO1xuXG4vLyBBbGxvdyB1c2Ugb2YgZGVmYXVsdCBpbXBvcnQgc3ludGF4IGluIFR5cGVTY3JpcHRcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBheGlvcztcbiIsIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBTeW50YWN0aWMgc3VnYXIgZm9yIGludm9raW5nIGEgZnVuY3Rpb24gYW5kIGV4cGFuZGluZyBhbiBhcnJheSBmb3IgYXJndW1lbnRzLlxuICpcbiAqIENvbW1vbiB1c2UgY2FzZSB3b3VsZCBiZSB0byB1c2UgYEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseWAuXG4gKlxuICogIGBgYGpzXG4gKiAgZnVuY3Rpb24gZih4LCB5LCB6KSB7fVxuICogIHZhciBhcmdzID0gWzEsIDIsIDNdO1xuICogIGYuYXBwbHkobnVsbCwgYXJncyk7XG4gKiAgYGBgXG4gKlxuICogV2l0aCBgc3ByZWFkYCB0aGlzIGV4YW1wbGUgY2FuIGJlIHJlLXdyaXR0ZW4uXG4gKlxuICogIGBgYGpzXG4gKiAgc3ByZWFkKGZ1bmN0aW9uKHgsIHksIHopIHt9KShbMSwgMiwgM10pO1xuICogIGBgYFxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259XG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gc3ByZWFkKGNhbGxiYWNrKSB7XG4gIHJldHVybiBmdW5jdGlvbiB3cmFwKGFycikge1xuICAgIHJldHVybiBjYWxsYmFjay5hcHBseShudWxsLCBhcnIpO1xuICB9O1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9saWIvYXhpb3MnKTsiLCJpbXBvcnQgQWNjb3JkaW9uIGZyb20gJ2FjY29yZGlvbi1qcyc7XHJcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XHJcbmltcG9ydCB7IHRocm90dGxlIH0gZnJvbSAndGhyb3R0bGUtZGVib3VuY2UnO1xyXG5pbXBvcnQgU3dpcGVyLCB7IE5hdmlnYXRpb24sIE1hbmlwdWxhdGlvbiB9IGZyb20gJ3N3aXBlcic7XHJcbmltcG9ydCBNaWNyb01vZGFsIGZyb20gJ21pY3JvbW9kYWwnO1xyXG5pbXBvcnQgeyBWVlUgfSBmcm9tICcuLi9saWJyYXJ5L1ZhcmlvdXNWYWx1ZXNVdGlsJztcclxuaW1wb3J0IHsgYmFja1N1cmZhY2VGaXhlZCB9IGZyb20gJy4uL2xpYnJhcnkvQmFja1N1cmZhY2VGaXhlZCc7XHJcblxyXG5jb25zdCBidXlTZWFyY2ggPSBmdW5jdGlvbiAoKSB7XHJcbiAgdGhpcy5jb21wYXJpc29uU2xpZGVyID0gbnVsbDtcclxuICB0aGlzLmNhdGFsb2dTbGlkZXIgPSBudWxsO1xyXG4gIHRoaXMuY2F0YWxvZ1NsaWRlclRodW1ibmFpbCA9IG51bGw7XHJcbiAgdGhpcy5jYXRhbG9nU2xpZGVyT3B0ID0gJyc7XHJcbiAgdGhpcy5jYXRhbG9nU2xpZGVyVGh1bWJuYWlsT3B0ID0gJyc7XHJcbiAgdGhpcy5jb21wYXJpc29uU3RvcmFnZSA9IFtdO1xyXG4gIHRoaXMuYXBpVXJsID0gJy9hc3luYy9mcm9udC9tb2RhbF9saXN0JztcclxuICAvLyB0aGlzLmFwaVVybCA9ICcvYXNzZXRzL2FwaS9jYXJfZGF0YS5waHAnO1xyXG59O1xyXG5cclxuYnV5U2VhcmNoLnByb3RvdHlwZSA9IHtcclxuICBpbml0KCkge1xyXG4gICAgdGhpcy50ZXJtc1Jlc2V0KCk7XHJcbiAgICB0aGlzLmFjKCk7XHJcblxyXG4gICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5qcy1jb21wYXJpc29uLXNsaWRlcicpKSB7XHJcbiAgICAgIHRoaXMuc2xpZGVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5qcy1wcmljZS1hdHRlbnRpb24tbW9kYWwnKSkge1xyXG4gICAgICB0aGlzLnByaWNlQXR0ZW50aW9uTW9kYWwoKTtcclxuICAgIH1cclxuXHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcclxuICAgICAgJ2xvYWQnLFxyXG4gICAgICAoKSA9PiB7XHJcbiAgICAgICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5qcy1jb21wYXJpc29uLXNsaWRlcicpKSB7XHJcbiAgICAgICAgICB0aGlzLm1vZGFsKCk7XHJcbiAgICAgICAgICB0aGlzLmNoZWNrQ29tcGFyaXNvbkl0ZW1zKCk7XHJcbiAgICAgICAgICB0aGlzLmFkZENvbXBhcmlzb24oKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIHsgb25jZTogdHJ1ZSB9XHJcbiAgICApO1xyXG4gIH0sXHJcbiAgdGVybXNSZXNldCgpIHtcclxuICAgIGNvbnN0IHRlcm1zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmpzLXRlcm1zJyk7XHJcbiAgICBjb25zdCByZXNldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5qcy1yZXNldCcpO1xyXG5cclxuICAgIGNvbnN0IHRlcm1zUmVzZXQgPSAoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGlucHV0cyA9IHRlcm1zLnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0LCBzZWxlY3QnKTtcclxuICAgICAgZm9yIChjb25zdCBpbnB1dCBvZiBpbnB1dHMpIHtcclxuICAgICAgICBpZiAoaW5wdXQudmFsdWUpIHtcclxuICAgICAgICAgIGlmIChpbnB1dC5nZXRBdHRyaWJ1dGUoJ3R5cGUnKSA9PT0gJ2NoZWNrYm94Jykge1xyXG4gICAgICAgICAgICBpbnB1dC5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpbnB1dC52YWx1ZSA9ICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgI
15H1cclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAocmVzZXQpIHtcclxuICAgICAgcmVzZXQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0ZXJtc1Jlc2V0LCB7IHBhc3N2ZTogdHJ1ZSB9KTtcclxuICAgIH1cclxuICB9LFxyXG4gIGFjKCkge1xyXG4gICAgY29uc3QgYWNUZXJtcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5qcy1hYy10ZXJtcycpO1xyXG4gICAgaWYgKGFjVGVybXMubGVuZ3RoID4gMCkge1xyXG4gICAgICBmb3IgKGNvbnN0IGFjIG9mIGFjVGVybXMpIHtcclxuICAgICAgICBjb25zdCBhY2MgPSBuZXcgQWNjb3JkaW9uKGFjLCB7XHJcbiAgICAgICAgICBlbGVtZW50Q2xhc3M6ICdqcy1hYycsXHJcbiAgICAgICAgICB0cmlnZ2VyQ2xhc3M6ICdqcy1hYy10cmlnZ2VyJyxcclxuICAgICAgICAgIHBhbmVsQ2xhc3M6ICdqcy1hYy1wYW5lbCcsXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGlmIChsb2NhdGlvbi5zZWFyY2gpIHtcclxuICAgICAgICAgIGFjYy5vcGVuQWxsKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSxcclxuICBwcmljZUF0dGVudGlvbk1vZGFsKCkge1xyXG4gICAgTWljcm9Nb2RhbC5pbml0KHtcclxuICAgICAgb3BlbkNsYXNzOiAnaXMtdmlzaWJsZScsXHJcbiAgICAgIG9wZW5UcmlnZ2VyOiAnZGF0YS1tb2RhbC10cmlnZ2VyLXByaWNlJyxcclxuICAgICAgY2xvc2VUcmlnZ2VyOiAnZGF0YS1tb2RhbC1jbG9zZScsXHJcbiAgICAgIG9uU2hvdzogKG1vZGFsKSA9PiB7XHJcbiAgICAgICAgYmFja1N1cmZhY2VGaXhlZCh0cnVlKTtcclxuICAgICAgfSxcclxuICAgICAgb25DbG9zZTogKG1vZGFsKSA9PiB7XHJcbiAgICAgICAgYmFja1N1cmZhY2VGaXhlZChmYWxzZSk7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9LFxyXG4gIG1vZGFsKCkge1xyXG4gICAgY29uc3Qgc2V0SGVpZ2h0ID0gKG1vZGFsKSA9PiB7XHJcbiAgICAgIGlmICghVlZVLm1lZGlhKSB7XHJcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gbW9kYWwucXVlcnlTZWxlY3RvcignW3JvbGU9XCJkaWFsb2dcIl0nKS5vZmZzZXRIZWlnaHQ7XHJcbiAgICAgICAgbW9kYWwucXVlcnlTZWxlY3RvcignW3JvbGU9XCJkaWFsb2dcIl0nKS5zdHlsZS5oZWlnaHQgPSBoZWlnaHQgKyAncHgnO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGNhdGFsb2dUcmlnZ2VyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtbW9kYWw9XCJjYXRhbG9nXCJdJyk7XHJcbiAgICBmb3IgKGNvbnN0IHRyaWdnZXIgb2YgY2F0YWxvZ1RyaWdnZXIpIHtcclxuICAgICAgdHJpZ2dlci5hZGRFdmVudExpc3RlbmVyKFxyXG4gICAgICAgICdjbGljaycsXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jYXRhbG9nTW9kYWwoXHJcbiAgICAgICAgICAgIHRyaWdnZXIuZ2V0QXR0cmlidXRlKCdkYXRhLXR5cGUnKSxcclxuICAgICAgICAgICAgdHJpZ2dlci5nZXRBdHRyaWJ1dGUoJ2RhdGEtaWQnKVxyXG4gICAgICAgICAgKS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgTWljcm9Nb2RhbC5zaG93KCdjYXRhbG9nJywge1xyXG4gICAgICAgICAgICAgIG9wZW5DbGFzczogJ2lzLXZpc2libGUnLFxyXG4gICAgICAgICAgICAgIGNsb3NlVHJpZ2dlcjogJ2RhdGEtbW9kYWwtY2xvc2UnLFxyXG4gICAgICAgICAgICAgIG9uU2hvdzogKG1vZGFsKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBiYWNrU3VyZmFjZUZpeGVkKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgc2V0SGVpZ2h0KG1vZGFsKTtcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIG9uQ2xvc2U6IChtb2RhbCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgYmFja1N1cmZhY2VGaXhlZChmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICBtb2RhbC5xdWVyeVNlbGVjdG9yKCdbcm9sZT1cImRpYWxvZ1wiXScpLnN0eWxlLmhlaWdodCA9ICcnO1xyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICB7IHBhc3NpdmU6IHRydWUgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIE1pY3JvTW9kYWwuaW5pdCh7XHJcbiAgICAgIG9wZW5DbGFzczogJ2lzLXZpc2libGUnLFxyXG4gICAgICBvcGVuVHJpZ2dlcjogJ2RhdGEtbW9kYWwtdHJpZ2dlcicsXHJcbiAgICAgIGNsb3NlVHJpZ2dlcjogJ2RhdGEtbW9kYWwtY2xvc2UnLFxyXG4gICAgICBvblNob3c6IChtb2RhbCkgPT4ge1xyXG4gICAgICAgIGJhY2tTdXJmYWNlRml4ZWQodHJ1ZSk7XHJcbiAgICAgICAgc2V0SGVpZ2h0KG1vZGFsKTtcclxuICAgICAgfSxcclxuICAgICAgb25DbG9zZTogKG1vZGFsKSA9PiB7XHJcbiAgICAgICAgYmFja1N1cmZhY2VGaXhlZChmYWxzZSk7XHJcbiAgICAgICAgbW9kYWwucXVlcnlTZWxlY3RvcignW3JvbGU9XCJkaWFsb2dcIl0nKS5zdHlsZS5oZWlnaHQgPSAnJztcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH0sXHJcbiAgYXN5bmMgY2F0YWxvZ01vZGFsKHR5cGUsIGlkKSB7XHJcbiAgICBpZiAoIXRoaXMuY2F0YWxvZ1NsaWRlcikge1xyXG4gICAgICB0aGlzLmNhdGFsb2dTbGlkZXIgPSBuZXcgU3dpcGVyKFxyXG4gICAgICAgICcuanMtY2F0YWxvZy1zbGlkZXInLFxyXG4gICAgICAgIHRoaXMuY2F0YWxvZ1NsaWRlck9wdFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLmNhdGFsb2dTbGlkZXJUaHVtYm5haWwpIHtcclxuICAgICAgdGhpcy5jYXRhbG9nU2xpZGVyVGh1bWJuYWlsID0gbmV3IFN3aXBlcihcclxuICAgICAgICAnLmpzLWNhdGFsb2ctc2xpZGVyLXRodW1ibmFpbCcsXHJcbiAgICAgICAgdGhpcy5jYXRhbG9nU2xpZGVyVGh1bWJuYWlsT3B0XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmpzLWNhdGFsb2ctZXJyb3InKSkge1xyXG4gICAgICBkb2
15N1bWVudC5xdWVyeVNlbGVjdG9yKCcuanMtY2F0YWxvZy1lcnJvcicpLnJlbW92ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNhdGFsb2dTbGlkZUxhYmVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgICAgJy5qcy1jYXRhbG9nLXNsaWRlci1sYWJlbCdcclxuICAgICk7XHJcbiAgICBpZiAodHlwZSA9PT0gJ2NvbG9yJykge1xyXG4gICAgICBjYXRhbG9nU2xpZGVMYWJlbC50ZXh0Q29udGVudCA9ICfjgqvjg6njg7zjg5Djg6rjgqjjg7zjgrfjg6fjg7MnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY2F0YWxvZ1NsaWRlTGFiZWwudGV4dENvbnRlbnQgPSAn44Gd44Gu5LuW44Gu6LuK5Lih55S75YOPJztcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjYXRhbG9nU2xpZGVUaXRsZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgICcuanMtY2F0YWxvZy1zbGlkZXItdGl0bGUnXHJcbiAgICApO1xyXG4gICAgY29uc3QgY2F0YWxvZ1NsaWRlVXJsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmpzLWNhdGFsb2ctc2xpZGVyLWxpbmsnKTtcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBheGlvcy5wb3N0KFxyXG4gICAgICAgIHRoaXMuYXBpVXJsLFxyXG4gICAgICAgIHsgaWQgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAgICdYLUNTUkYtVE9LRU4nOiBkb2N1bWVudFxyXG4gICAgICAgICAgICAgIC5xdWVyeVNlbGVjdG9yKCdtZXRhW25hbWU9XCJjc3JmLXRva2VuXCJdJylcclxuICAgICAgICAgICAgICAuZ2V0QXR0cmlidXRlKCdjb250ZW50JyksXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgICAgLy8gY29uc29sZS5sb2cocmVzKTtcclxuICAgICAgY29uc3QgZGF0YSA9IHJlcy5kYXRhO1xyXG4gICAgICB0aGlzLmNhdGFsb2dTbGlkZXIucmVtb3ZlQWxsU2xpZGVzKCk7XHJcbiAgICAgIHRoaXMuY2F0YWxvZ1NsaWRlclRodW1ibmFpbC5yZW1vdmVBbGxTbGlkZXMoKTtcclxuXHJcbiAgICAgIGNhdGFsb2dTbGlkZVRpdGxlLnRleHRDb250ZW50ID0gYCR7ZGF0YS5kYXRhLm1ha2VyfSAke2RhdGEuZGF0YS5uYW1lfWA7XHJcbiAgICAgIGNhdGFsb2dTbGlkZVVybC5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBgL2J1eS9kZXRhaWwvJHtpZH0vYCk7XHJcbiAgICAgIE9iamVjdC5rZXlzKGRhdGEuaW1hZ2UpLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGh0bWwgPSBgXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2xpZGUgc3dpcGVyLXNsaWRlXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZVwiPjxpbWcgc3JjPVwiJHtkYXRhLmltYWdlW2tleV19XCIgYWx0PVwiXCI+PC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICBgO1xyXG4gICAgICAgIHRoaXMuY2F0YWxvZ1NsaWRlci5hcHBlbmRTbGlkZShodG1sKTtcclxuICAgICAgICB0aGlzLmNhdGFsb2dTbGlkZXJUaHVtYm5haWwuYXBwZW5kU2xpZGUoaHRtbCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKCFWVlUubWVkaWEpIHtcclxuICAgICAgICB0aGlzLmNhdGFsb2dTbGlkZXIuZGVzdHJveSgpO1xyXG4gICAgICAgIHRoaXMuY2F0YWxvZ1NsaWRlclRodW1ibmFpbC5kZXN0cm95KCk7XHJcbiAgICAgICAgdGhpcy5jYXRhbG9nU2xpZGVyID0gbnVsbDtcclxuICAgICAgICB0aGlzLmNhdGFsb2dTbGlkZXJUaHVtYm5haWwgPSBudWxsO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgLy8gY29uc29sZS5sb2coZXJyKTtcclxuXHJcbiAgICAgIHRoaXMuY2F0YWxvZ1NsaWRlci5kZXN0cm95KCk7XHJcbiAgICAgIHRoaXMuY2F0YWxvZ1NsaWRlclRodW1ibmFpbC5kZXN0cm95KCk7XHJcbiAgICAgIHRoaXMuY2F0YWxvZ1NsaWRlciA9IG51bGw7XHJcbiAgICAgIHRoaXMuY2F0YWxvZ1NsaWRlclRodW1ibmFpbCA9IG51bGw7XHJcbiAgICAgIGNvbnN0IGh0bWwgPVxyXG4gICAgICAgICc8cCBjbGFzcz1cImVycm9yIGpzLWNhdGFsb2ctZXJyb3JcIj7oqq3jgb/ovrzjgb/jgavlpLHmlZfjgZfjgb7jgZfjgZ/jgII8L3A+JztcclxuICAgICAgZG9jdW1lbnRcclxuICAgICAgICAucXVlcnlTZWxlY3RvcignLmpzLWNhdGFsb2ctc2xpZGVyJylcclxuICAgICAgICAuaW5zZXJ0QWRqYWNlbnRIVE1MKCdhZnRlcmJlZ2luJywgaHRtbCk7XHJcbiAgICB9XHJcbiAgfSxcclxuICBzbGlkZXIoKSB7XHJcbiAgICB0aGlzLmNvbXBhcmlzb25TbGlkZXIgPSBuZXcgU3dpcGVyKCcuanMtY29tcGFyaXNvbi1zbGlkZXInLCB7XHJcbiAgICAgIHNsaWRlc1BlclZpZXc6IDEuMSxcclxuICAgICAgbW9kdWxlczogW05hdmlnYXRpb24sIE1hbmlwdWxhdGlvbl0sXHJcbiAgICAgIHNwYWNlQmV0d2VlbjogMjAsXHJcbiAgICAgIG5hdmlnYXRpb246IHtcclxuICAgICAgICBuZXh0RWw6ICcuanMtY29tcGFyaXNvbi1zbGlkZXItbmV4dCcsXHJcbiAgICAgICAgcHJldkVsOiAnLmpzLWNvbXBhcmlzb24tc2xpZGVyLXByZXYnLFxyXG4gICAgICB9LFxyXG4gICAgICBicmVha3BvaW50czoge1xyXG4gICAgICAgIDc2OToge1xyXG4gICAgICAgICAgc2xpZGVzUGVyVmlldzogMyxcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5jYXRhbG9nU2xpZGVyT3B0ID0ge1xyXG4gICAgICBtb2R1bGVzOiBbTmF2aWdhdGlvbiwgTWFuaXB1bGF0aW9uXSxcclxuICAgICAgc2xpZGVzUGVyVmlldzogMSxcclxuICAgICAgb246IHtcclxuICAgICAgICBzbGlkZUNoYW5nZShzd2lwZXIpIHtcclxuICAgICAgICAgIGNvbnN0IHNsaWRlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXHJcbiAgICAgICAgICAgICcuanMtY2F0YWxvZy1zbGlkZXItdGh1bWJuYWlsIC5zd2lwZXItc2xpZGUnXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy5jYXRhbG9nU2xpZGVyVGh1bWJuYWlsLnNsaWRlVG8oc3dpcGVyLnJlYWxJbmRleCk7XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IHNsaWRlIG9mIHNsaWRlcykge1xyXG4gICAgICAgICAgICBpZiAoc2xpZGUuY2xhc3NMaXN0LmNvbnRhaW5zKCdpcy1jdXJyZW50JykpIHtcclxuICAgICAgICAgICAgICBzbGlkZS5jbGFzc0xpc3QucmVtb3ZlKCdpcy1jdXJyZW50Jyk7XHJcbiAgICAgICAgICAgI
15H1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHNsaWRlc1tzd2lwZXIucmVhbEluZGV4XS5jbGFzc0xpc3QuYWRkKCdpcy1jdXJyZW50Jyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgIH07XHJcbiAgICB0aGlzLmNhdGFsb2dTbGlkZXJUaHVtYm5haWxPcHQgPSB7XHJcbiAgICAgIG1vZHVsZXM6IFtOYXZpZ2F0aW9uLCBNYW5pcHVsYXRpb25dLFxyXG4gICAgICBzbGlkZXNQZXJWaWV3OiAzLFxyXG4gICAgICBzcGFjZUJldHdlZW46IDEwLFxyXG4gICAgICBzbGlkZUFjdGl2ZUNsYXNzOiAnaXMtY3VycmVudCcsXHJcbiAgICAgIHNsaWRlVG9DbGlja2VkU2xpZGU6IHRydWUsXHJcbiAgICAgIG5hdmlnYXRpb246IHtcclxuICAgICAgICBuZXh0RWw6ICcuanMtY2F0YWxvZy1zbGlkZXItbmV4dCcsXHJcbiAgICAgICAgcHJldkVsOiAnLmpzLWNhdGFsb2ctc2xpZGVyLXByZXYnLFxyXG4gICAgICB9LFxyXG4gICAgICBvbjoge1xyXG4gICAgICAgIHNsaWRlQ2hhbmdlKHN3aXBlcikge1xyXG4gICAgICAgICAgdGhpcy5jYXRhbG9nU2xpZGVyLnNsaWRlVG8oc3dpcGVyLnJlYWxJbmRleCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjbGljayhzd2lwZXIpIHtcclxuICAgICAgICAgIHRoaXMuY2F0YWxvZ1NsaWRlci5zbGlkZVRvKHN3aXBlci5jbGlja2VkSW5kZXgpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuY2F0YWxvZ1NsaWRlciA9IG5ldyBTd2lwZXIoXHJcbiAgICAgICcuanMtY2F0YWxvZy1zbGlkZXInLFxyXG4gICAgICB0aGlzLmNhdGFsb2dTbGlkZXJPcHRcclxuICAgICk7XHJcbiAgICB0aGlzLmNhdGFsb2dTbGlkZXJUaHVtYm5haWwgPSBuZXcgU3dpcGVyKFxyXG4gICAgICAnLmpzLWNhdGFsb2ctc2xpZGVyLXRodW1ibmFpbCcsXHJcbiAgICAgIHRoaXMuY2F0YWxvZ1NsaWRlclRodW1ibmFpbE9wdFxyXG4gICAgKTtcclxuXHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcclxuICAgICAgJ3Jlc2l6ZScsXHJcbiAgICAgIHRocm90dGxlKFxyXG4gICAgICAgIDUwLFxyXG4gICAgICAgICgpID0+IHtcclxuICAgICAgICAgIGlmIChWVlUubWVkaWEpIHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmNhdGFsb2dTbGlkZXIpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNhdGFsb2dTbGlkZXIgPSBuZXcgU3dpcGVyKFxyXG4gICAgICAgICAgICAgICAgJy5qcy1jYXRhbG9nLXNsaWRlcicsXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhdGFsb2dTbGlkZXJPcHRcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5jYXRhbG9nU2xpZGVyVGh1bWJuYWlsKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jYXRhbG9nU2xpZGVyVGh1bWJuYWlsID0gbmV3IFN3aXBlcihcclxuICAgICAgICAgICAgICAgICcuanMtY2F0YWxvZy1zbGlkZXItdGh1bWJuYWlsJyxcclxuICAgICAgICAgICAgICAgIHRoaXMuY2F0YWxvZ1NsaWRlclRodW1ibmFpbE9wdFxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNhdGFsb2dTbGlkZXIpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNhdGFsb2dTbGlkZXIuZGVzdHJveSgpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2F0YWxvZ1NsaWRlciA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHRoaXMuY2F0YWxvZ1NsaWRlclRodW1ibmFpbCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuY2F0YWxvZ1NsaWRlclRodW1ibmFpbC5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jYXRhbG9nU2xpZGVyVGh1bWJuYWlsID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZmFsc2VcclxuICAgICAgKSxcclxuICAgICAgeyBwYXNzaXZlOiB0cnVlIH1cclxuICAgICk7XHJcbiAgfSxcclxuICBjaGVja0NvbXBhcmlzb25JdGVtcygpIHtcclxuICAgIGNvbnN0IHN0b3JhZ2UgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdjb21wYXJpc29uSXRlbXMnKTtcclxuICAgIGlmIChzdG9yYWdlKSB7XHJcbiAgICAgIHRoaXMuY29tcGFyaXNvblN0b3JhZ2UgPSBKU09OLnBhcnNlKHN0b3JhZ2UpO1xyXG4gICAgICBmb3IgKGNvbnN0IGlkIG9mIHRoaXMuY29tcGFyaXNvblN0b3JhZ2UpIHtcclxuICAgICAgICB0aGlzLmFkZENvbXBhcmlzb25TbGlkZShpZCkuY2F0Y2goKCkgPT4ge30pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSxcclxuICBhc3luYyBhZGRDb21wYXJpc29uU2xpZGUoaWQpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGF4aW9zLnBvc3QoXHJcbiAgICAgICAgdGhpcy5hcGlVcmwsXHJcbiAgICAgICAgeyBpZCB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgICAgJ1gtQ1NSRi1UT0tFTic6IGRvY3VtZW50XHJcbiAgICAgICAgICAgICAgLnF1ZXJ5U2VsZWN0b3IoJ21ldGFbbmFtZT1cImNzcmYtdG9rZW5cIl0nKVxyXG4gICAgICAgICAgICAgIC5nZXRBdHRyaWJ1dGUoJ2NvbnRlbnQnKSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgICAvLyBjb25zb2xlLmxvZyhyZXMpO1xyXG5cclxuICAgICAgY29uc3QgZGF0YSA9IHJlcy5kYXRhO1xyXG4gICAgICBjb25zdCBodG1sID0gYFxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjLWNhdGFsb2cgLXNocmluayBzd2lwZXItc2xpZGVcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjLWNhdGFsb2dfX2hlYWRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImMtY2F0YWxvZ19fcmVtb3ZlIGMtaG92ZXItZmFkZSBqcy1jb21wYXJpc29uLXJlbW92ZVwiIGRhdGEtaWQ9XCIke2lkfVwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYy1jYXRhbG9nX190YWdzXCI+XHJcbiAgICAgICAgICAgICAgJHtcclxuICAgICAgICAgICAgICAgIGRhdGEuZGF0YS5pc19uZXcgPiAwXHJcbiAgICAgICAgICAgICAgICAgID8gJzxkaXYgY2xhc3M9XCJjLWNhdGVnb3J5LW91dGxpbmUgLXByaW1hcnkgdGFnXCI+5paw6LuKPC9kaXY+J1xyXG4gICAgICAgICAgICAgICAgICA6ICcnXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICR7X
15HJcbiAgICAgICAgICAgICAgICBkYXRhLmRhdGEuaXNfaW1wb3J0ID4gMFxyXG4gICAgICAgICAgICAgICAgICA/ICc8ZGl2IGNsYXNzPVwiYy1jYXRlZ29yeS1vdXRsaW5lIC10ZXJ0aWFyeSB0YWdcIj7mlrDou4o8L2Rpdj4nXHJcbiAgICAgICAgICAgICAgICAgIDogJydcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgJHtcclxuICAgICAgICAgICAgICAgIGRhdGEuZGF0YS5pc19zdG9yZV9waWNrdXBzID4gMFxyXG4gICAgICAgICAgICAgICAgICA/ICc8ZGl2IGNsYXNzPVwiYy1jYXRlZ29yeS1vdXRsaW5lIC1zZXB0ZW5hcnkgdGFnXCI+54m56YG46LuKPC9kaXY+J1xyXG4gICAgICAgICAgICAgICAgICA6ICcnXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImMtY2F0YWxvZ19faW1hZ2VcIj5cclxuICAgICAgICAgICAgICA8YSBocmVmPVwiL2J1eS9kZXRhaWwvJHtpZH0vXCIgY2xhc3M9XCJjLWhvdmVyLWZhZGVcIj5cclxuICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiJHtkYXRhLmRhdGEuaW1hZ2V9XCIgYWx0PVwiXCIgbG9hZGluZz1cImxhenlcIj5cclxuICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYy1jYXRhbG9nX19kZXRhaWxcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24gLW1ha2VyXCI+PHNwYW4+JHtkYXRhLmRhdGEubWFrZXJ9PC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbiAtdGl0bGVcIj48c3Bhbj4ke2RhdGEuZGF0YS5uYW1lfTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgPGRsIGNsYXNzPVwiZGF0YSAtZmxleFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgIDxkdCBjbGFzcz1cInRpdGxlXCI+6LuK5Lih5L6h5qC8PC9kdD5cclxuICAgICAgICAgICAgICAgIDxkZCBjbGFzcz1cImRldGFpbFwiPjxzcGFuIGNsYXNzPVwibnVtYmVyXCI+JHtkYXRhLmRhdGEucHJpY2UucmVwbGFjZShcclxuICAgICAgICAgICAgICAgICAgJ+WGhicsXHJcbiAgICAgICAgICAgICAgICAgICcnXHJcbiAgICAgICAgICAgICAgICApfTwvc3Bhbj7kuIflhoY8L2RkPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgLXByaW1hcnlcIj5cclxuICAgICAgICAgICAgICAgIDxkdCBjbGFzcz1cInRpdGxlXCI+5pSv5omV57eP6aGNPC9kdD5cclxuICAgICAgICAgICAgICAgIDxkZCBjbGFzcz1cImRldGFpbFwiPjxzcGFuIGNsYXNzPVwibnVtYmVyXCI+JHtkYXRhLmRhdGEudG90YWwucmVwbGFjZShcclxuICAgICAgICAgICAgICAgICAgJ+WGhicsXHJcbiAgICAgICAgICAgICAgICAgICcnXHJcbiAgICAgICAgICAgICAgICApfTwvc3Bhbj7kuIflhoY8L2RkPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2RsPlxyXG4gICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJzcGVjXCI+XHJcbiAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICA8dGg+5bm05byPPC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRoPui1sOihjOi3nembojwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0aD7mjpLmsJfph488L3RoPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgPHRkPiR7ZGF0YS5kYXRhLnllYXJ9PC90ZD5cclxuICAgICAgICAgICAgICAgICAgPHRkPiR7ZGF0YS5kYXRhLmRpc3RhbmNlfTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZD4ke2RhdGEuZGF0YS5jY308L3RkPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICA8YSBocmVmPVwiL2J1eS9kZXRhaWwvJHtpZH0vXCIgY2xhc3M9XCJjLWJ1dHRvbiAtc21hbGwgLWFycm93IGJ1dHRvblwiPuips+e0sOOCkuimi+OCizwvYT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICBgO1xyXG4gICAgICB0aGlzLmNvbXBhcmlzb25TbGlkZXIuYXBwZW5kU2xpZGUoaHRtbCk7XHJcblxyXG4gICAgICBjb25zdCBhZGRUcmlnZ2VyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgICAgICBgLmpzLWNvbXBhcmlzb24tYWRkW2RhdGEtaWQ9XCIke2lkfVwiXWBcclxuICAgICAgKTtcclxuICAgICAgaWYgKGFkZFRyaWdnZXIpIHtcclxuICAgICAgICBhZGRUcmlnZ2VyLmNsYXNzTGlzdC5hZGQoJ2lzLXNlbGVjdGVkJyk7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbXBhcmlzb25TdG9yYWdlLnNvbWUoKHZhbCkgPT4gdmFsID09PSBpZCkpIHtcclxuICAgICAgICAgIGNvbnN0IHBhcmVudCA9XHJcbiAgICAgICAgICAgIGFkZFRyaWdnZXIucGFyZW50Tm9kZS5xdWVyeVNlbGVjdG9yKCcuanMtY2F0YWxvZy1pbWFnZScpO1xyXG4gICAgICAgICAgdGhpcy5hZGRBbGVydCgn5q+U6LyD44Oq44K544OI44Gr6L+95Yqg44GX44G+44GX44GfJywgcGFyZW50KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAvLyBjb25zb2xlLmxvZyhlcnIpO1xyXG4gICAgICBhbGVydCgn5q+U6LyD44Oq44K544OI44G444Gu6L+95Yqg44Gr5aSx5pWX44GX44G+44GX44Gf44CCJyk7XHJcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xyXG4gICAgfVxyXG4gIH0sXHJcbiAgYWRkQ29tcGFyaXNvbigpIHtcclxuICAgIGNvbnN0IHNsaWRlciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5qcy1jb21wYXJpc29uLXNsaWRlcicpO1xyXG5cclxuICAgIGNvbnN0IHJlbW92ZSA9IChpZCkgPT4ge1xyXG4gICAgICBjb25zdCB0YXJnZXQgPSBzbGlkZXIucXVlcnlTZWxlY3RvcihgW2RhdGEtaWQ9XCIke2lkfVwiXWApO1xyXG4gICAgICBjb25zdCBwYXJlbnQgPSB0YXJnZXQuY2xvc2VzdCgnLnN3aXBlci1zbGlkZScpO1xyXG4gICAgICBsZXQgc2xpZGVzID0gc2xpZGVyLnF1ZXJ5U2VsZWN0b3JBbGwoJy5zd2lwZXItc2xpZGUnKTtcclxuICAgICAgc2xpZGVzID0gQXJyYXkuZnJvbShzbGlkZXMpO1xyXG4gICAgICBjb25zdCBpbmRleCA9IHNsaWRlcy5maW5kSW5kZXgoKHZhbCkgPT4gdmFsI
15D09PSBwYXJlbnQpO1xyXG5cclxuICAgICAgdGhpcy5jb21wYXJpc29uU2xpZGVyLnJlbW92ZVNsaWRlKGluZGV4KTtcclxuICAgICAgZG9jdW1lbnRcclxuICAgICAgICAucXVlcnlTZWxlY3RvcihgLmpzLWNvbXBhcmlzb24tYWRkW2RhdGEtaWQ9XCIke2lkfVwiXWApXHJcbiAgICAgICAgLmNsYXNzTGlzdC5yZW1vdmUoJ2lzLXNlbGVjdGVkJyk7XHJcblxyXG4gICAgICBjb25zdCBpZFBvcyA9IHRoaXMuY29tcGFyaXNvblN0b3JhZ2UuZmluZEluZGV4KCh2YWwpID0+IHZhbCA9PT0gaWQpO1xyXG4gICAgICB0aGlzLmNvbXBhcmlzb25TdG9yYWdlLnNwbGljZShpZFBvcywgMSk7XHJcbiAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oXHJcbiAgICAgICAgJ2NvbXBhcmlzb25JdGVtcycsXHJcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5jb21wYXJpc29uU3RvcmFnZSlcclxuICAgICAgKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmNvbXBhcmlzb25TbGlkZXIuc2xpZGVzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIE1pY3JvTW9kYWwuY2xvc2UoJ2NvbXBhcmlzb24nKTtcclxuICAgICAgICAvLyBNaWNyb01vZGFsLmNsb3NlKCdjYXRhbG9nJyk7IC8vIOOBqeOBo+OBoeOCgmNsb3Nl44GX44Gq44GE44Go44OQ44Kw44KL44CC44CCXHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgdHJpZ2dlcnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuanMtY29tcGFyaXNvbi1hZGQnKTtcclxuICAgIGZvciAoY29uc3QgdHJpZ2dlciBvZiB0cmlnZ2Vycykge1xyXG4gICAgICB0cmlnZ2VyLmFkZEV2ZW50TGlzdGVuZXIoXHJcbiAgICAgICAgJ2NsaWNrJyxcclxuICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBpZCA9IHRyaWdnZXIuZ2V0QXR0cmlidXRlKCdkYXRhLWlkJyk7XHJcbiAgICAgICAgICBpZiAoaWQpIHtcclxuICAgICAgICAgICAgaWYgKHRyaWdnZXIuY2xhc3NMaXN0LmNvbnRhaW5zKCdpcy1zZWxlY3RlZCcpKSB7XHJcbiAgICAgICAgICAgICAgcmVtb3ZlKGlkKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmFkZENvbXBhcmlzb25TbGlkZShpZClcclxuICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21wYXJpc29uU3RvcmFnZS5wdXNoKGlkKTtcclxuICAgICAgICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShcclxuICAgICAgICAgICAgICAgICAgICAnY29tcGFyaXNvbkl0ZW1zJyxcclxuICAgICAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeSh0aGlzLmNvbXBhcmlzb25TdG9yYWdlKVxyXG4gICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIC5jYXRjaCgoKSA9PiB7fSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHsgcGFzc2l2ZTogdHJ1ZSB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBzbGlkZXIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgIGlmIChldmVudC50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCdqcy1jb21wYXJpc29uLXJlbW92ZScpKSB7XHJcbiAgICAgICAgcmVtb3ZlKGV2ZW50LnRhcmdldC5nZXRBdHRyaWJ1dGUoJ2RhdGEtaWQnKSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH0sXHJcbiAgYWRkQWxlcnQodGV4dCwgcGFyZW50KSB7XHJcbiAgICBjb25zdCBwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpO1xyXG4gICAgcC5jbGFzc0xpc3QuYWRkKCdjLWNhdGFsb2dfX2FsZXJ0Jyk7XHJcbiAgICBwLnRleHRDb250ZW50ID0gdGV4dDtcclxuICAgIHBhcmVudC5hcHBlbmRDaGlsZChwKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBwLnJlbW92ZSgpO1xyXG4gICAgfSwgMzAwMCk7XHJcbiAgfSxcclxufTtcclxuXHJcbmNvbnN0IEJ1eVNlYXJjaCA9IG5ldyBidXlTZWFyY2goKTtcclxuXHJcbmV4cG9ydCB7IEJ1eVNlYXJjaCB9O1xyXG4iLCIvKipcbiogQHZ1ZS9zaGFyZWQgdjMuNC4zOFxuKiAoYykgMjAxOC1wcmVzZW50IFl1eGkgKEV2YW4pIFlvdSBhbmQgVnVlIGNvbnRyaWJ1dG9yc1xuKiBAbGljZW5zZSBNSVRcbioqL1xuLyohICNfX05PX1NJREVfRUZGRUNUU19fICovXG4vLyBAX19OT19TSURFX0VGRkVDVFNfX1xuZnVuY3Rpb24gbWFrZU1hcChzdHIsIGV4cGVjdHNMb3dlckNhc2UpIHtcbiAgY29uc3Qgc2V0ID0gbmV3IFNldChzdHIuc3BsaXQoXCIsXCIpKTtcbiAgcmV0dXJuIGV4cGVjdHNMb3dlckNhc2UgPyAodmFsKSA9PiBzZXQuaGFzKHZhbC50b0xvd2VyQ2FzZSgpKSA6ICh2YWwpID0+IHNldC5oYXModmFsKTtcbn1cblxuY29uc3QgRU1QVFlfT0JKID0gISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSA/IE9iamVjdC5mcmVlemUoe30pIDoge307XG5jb25zdCBFTVBUWV9BUlIgPSAhIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpID8gT2JqZWN0LmZyZWV6ZShbXSkgOiBbXTtcbmNvbnN0IE5PT1AgPSAoKSA9PiB7XG59O1xuY29uc3QgTk8gPSAoKSA9PiBmYWxzZTtcbmNvbnN0IGlzT24gPSAoa2V5KSA9PiBrZXkuY2hhckNvZGVBdCgwKSA9PT0gMTExICYmIGtleS5jaGFyQ29kZUF0KDEpID09PSAxMTAgJiYgLy8gdXBwZXJjYXNlIGxldHRlclxuKGtleS5jaGFyQ29kZUF0KDIpID4gMTIyIHx8IGtleS5jaGFyQ29kZUF0KDIpIDwgOTcpO1xuY29uc3QgaXNNb2RlbExpc3RlbmVyID0gKGtleSkgPT4ga2V5LnN0YXJ0c1dpdGgoXCJvblVwZGF0ZTpcIik7XG5jb25zdCBleHRlbmQgPSBPYmplY3QuYXNzaWduO1xuY29uc3QgcmVtb3ZlID0gKGFyciwgZWwpID0+IHtcbiAgY29uc3QgaSA9IGFyci5pbmRleE9mKGVsKTtcbiAgaWYgKGkgPiAtMSkge1xuICAgIGFyci5zcGxpY2UoaSwgMSk7XG4gIH1cbn07XG5jb25zdCBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5jb25zdCBoYXNPd24gPSAodmFsLCBrZXkpID0+IGhhc093blByb3BlcnR5LmNhbGwodmFsLCBrZXkpO1xuY29uc3QgaXNBcnJheSA9IEFycmF5LmlzQXJyYXk7XG5jb25zdCBpc01hcCA9ICh2YWwpID0+IHRvVHlwZVN0cmluZyh2YWwpID09PSBcIltvYmplY3QgTWFwXVwiO1xuY29uc3QgaXNTZXQgPSAodmFsKSA9PiB0b1R5cGVTdHJpbmcodmFsKSA9PT0gXCJbb2JqZWN0IFNldF1cIjtcbmNvbnN0IGlzRGF0ZSA9ICh2YWwpID0+IHRvVHlwZVN0cmluZyh2YWwpID09PSBcIltvYmplY3QgRGF0ZV1cIjtcbmNvbnN0IGlzUmVnRXhwID0gKHZhbCkgPT4gdG9UeXBlU3RyaW5nKHZhbCkgPT09IFwiW29iamVjdCBSZWdFeHBdXCI7XG5jb25zdCBpc0Z1bmN0aW9uID0gKHZhbCkgPT4gdHlwZW9mIHZhbCA9PT0gXCJmdW5jdGlvblwiO1xuY29uc3QgaXNTdHJpbmcgPSAodmFsKSA9PiB0eXBlb2YgdmFsID09PSBcInN0cmluZ1wiO1xuY29uc3QgaXNTeW1ib2wgPSAodmFsKSA9PiB0eXBlb2YgdmFsID09PSBcInN5bWJvbFwiO1xuY29uc3QgaXNPYmplY3QgPSAodmFsKSA9PiB2YWwgIT09IG51bGwgJiYgdHlwZW9mIHZhbCA9PT0gXCJvYmplY3RcIjtcbmNvbnN0IGlzUHJvbWlzZSA9ICh2YWwpID0+IHtcbiAgcmV0dXJuIChpc09iamVjdCh2YWwpIHx8IGlzRnVuY3Rpb24odmFsKSkgJiYgaXNGdW5jdGlvbih2YWwudGhlbikgJiYgaXNGdW5jdGlvbih2YWwuY2F0Y2gpO1xufTtcbmNvbnN0IG9iamVjdFRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcbmNvbnN0IHRvVHlwZVN0cmluZyA9ICh2YWx1ZSkgPT4gb2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG5jb25zdCB0b1Jhd1R5cGUgPSAodmFsdWUpID0+IHtcbiAgcmV0dXJuIHRvVHlwZVN0cmluZyh2YWx1ZSkuc2xpY2UoOCwgLTEpO1xufTtcbmNvbnN0IGlzUGxhaW5PYmplY3QgPSAodmFsKSA9PiB0b1R5cGVTdHJpbmcodmFsKSA9PT0gXCJbb2JqZWN0IE9iamVjdF1cIjtcbmNvbnN0IGlzSW50ZWdlcktleSA9IChrZXkpID0+IGlzU3RyaW5nKGtleSkgJiYga2V5ICE9PSBcIk5hTlwiICYmIGtleVswXSAhPT0gXCItXCIgJiYgXCJcIiArIHBhcnNlSW50KGtleSwgMTApID09PSBrZXk7XG5jb25zdCBpc1Jlc2VydmVkUHJvcCA9IC8qIEBfX1BVUkVfXyAqLyBtYWtlTWFwKFxuICAvLyB0aGUgbGVhZGluZyBjb21tYSBpcyBpbnRlbnRpb25hbCBzbyBlbXB0eSBzdHJpbmcgXCJcIiBpcyBhbHNvIGluY2x1ZGVkXG4gIFwiLGtleSxyZWYscmVmX2ZvcixyZWZfa2V5LG9uVm5vZGVCZWZvcmVNb3VudCxvblZub2RlTW91bnRlZCxvblZub2RlQmVmb3JlVXBkYXRlLG9uVm5vZGVVcGRhdGVkLG9uVm5vZGVCZWZvcmVVbm1vdW50LG9uVm5vZGVVbm1vdW50ZWRcIlxuKTtcbmNvbnN0IGlzQnVpbHRJbkRpcmVjdGl2ZSA9IC8qIEBfX1BVUkVfXyAqLyBtYWtlTWFwKFxuICBcImJpbmQsY2xvYWssZWxzZS1pZixlbHNlLGZvcixodG1sLGlmLG1vZGVsLG9uLG9uY2UscHJlLHNob3csc2xvdCx0ZXh0LG1lbW9cIlxuKTtcbmNvbnN0IGNhY2hlU3RyaW5nRnVuY3Rpb24gPSAoZm4pID0+IHtcbiAgY29uc3QgY2FjaGUgPSAvKiBAX19QVVJFX18gKi8gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgcmV0dXJuIChzdHIpID0+IHtcbiAgICBjb25zdCBoaXQgPSBjYWNoZVtzdHJdO1xuICAgIHJldHVybi
15BoaXQgfHwgKGNhY2hlW3N0cl0gPSBmbihzdHIpKTtcbiAgfTtcbn07XG5jb25zdCBjYW1lbGl6ZVJFID0gLy0oXFx3KS9nO1xuY29uc3QgY2FtZWxpemUgPSBjYWNoZVN0cmluZ0Z1bmN0aW9uKChzdHIpID0+IHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKGNhbWVsaXplUkUsIChfLCBjKSA9PiBjID8gYy50b1VwcGVyQ2FzZSgpIDogXCJcIik7XG59KTtcbmNvbnN0IGh5cGhlbmF0ZVJFID0gL1xcQihbQS1aXSkvZztcbmNvbnN0IGh5cGhlbmF0ZSA9IGNhY2hlU3RyaW5nRnVuY3Rpb24oXG4gIChzdHIpID0+IHN0ci5yZXBsYWNlKGh5cGhlbmF0ZVJFLCBcIi0kMVwiKS50b0xvd2VyQ2FzZSgpXG4pO1xuY29uc3QgY2FwaXRhbGl6ZSA9IGNhY2hlU3RyaW5nRnVuY3Rpb24oKHN0cikgPT4ge1xuICByZXR1cm4gc3RyLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc3RyLnNsaWNlKDEpO1xufSk7XG5jb25zdCB0b0hhbmRsZXJLZXkgPSBjYWNoZVN0cmluZ0Z1bmN0aW9uKChzdHIpID0+IHtcbiAgY29uc3QgcyA9IHN0ciA/IGBvbiR7Y2FwaXRhbGl6ZShzdHIpfWAgOiBgYDtcbiAgcmV0dXJuIHM7XG59KTtcbmNvbnN0IGhhc0NoYW5nZWQgPSAodmFsdWUsIG9sZFZhbHVlKSA9PiAhT2JqZWN0LmlzKHZhbHVlLCBvbGRWYWx1ZSk7XG5jb25zdCBpbnZva2VBcnJheUZucyA9IChmbnMsIC4uLmFyZykgPT4ge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGZucy5sZW5ndGg7IGkrKykge1xuICAgIGZuc1tpXSguLi5hcmcpO1xuICB9XG59O1xuY29uc3QgZGVmID0gKG9iaiwga2V5LCB2YWx1ZSwgd3JpdGFibGUgPSBmYWxzZSkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHtcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgd3JpdGFibGUsXG4gICAgdmFsdWVcbiAgfSk7XG59O1xuY29uc3QgbG9vc2VUb051bWJlciA9ICh2YWwpID0+IHtcbiAgY29uc3QgbiA9IHBhcnNlRmxvYXQodmFsKTtcbiAgcmV0dXJuIGlzTmFOKG4pID8gdmFsIDogbjtcbn07XG5jb25zdCB0b051bWJlciA9ICh2YWwpID0+IHtcbiAgY29uc3QgbiA9IGlzU3RyaW5nKHZhbCkgPyBOdW1iZXIodmFsKSA6IE5hTjtcbiAgcmV0dXJuIGlzTmFOKG4pID8gdmFsIDogbjtcbn07XG5sZXQgX2dsb2JhbFRoaXM7XG5jb25zdCBnZXRHbG9iYWxUaGlzID0gKCkgPT4ge1xuICByZXR1cm4gX2dsb2JhbFRoaXMgfHwgKF9nbG9iYWxUaGlzID0gdHlwZW9mIGdsb2JhbFRoaXMgIT09IFwidW5kZWZpbmVkXCIgPyBnbG9iYWxUaGlzIDogdHlwZW9mIHNlbGYgIT09IFwidW5kZWZpbmVkXCIgPyBzZWxmIDogdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvdyA6IHR5cGVvZiBnbG9iYWwgIT09IFwidW5kZWZpbmVkXCIgPyBnbG9iYWwgOiB7fSk7XG59O1xuY29uc3QgaWRlbnRSRSA9IC9eW18kYS16QS1aXFx4QTAtXFx1RkZGRl1bXyRhLXpBLVowLTlcXHhBMC1cXHVGRkZGXSokLztcbmZ1bmN0aW9uIGdlblByb3BzQWNjZXNzRXhwKG5hbWUpIHtcbiAgcmV0dXJuIGlkZW50UkUudGVzdChuYW1lKSA/IGBfX3Byb3BzLiR7bmFtZX1gIDogYF9fcHJvcHNbJHtKU09OLnN0cmluZ2lmeShuYW1lKX1dYDtcbn1cblxuY29uc3QgUGF0Y2hGbGFncyA9IHtcbiAgXCJURVhUXCI6IDEsXG4gIFwiMVwiOiBcIlRFWFRcIixcbiAgXCJDTEFTU1wiOiAyLFxuICBcIjJcIjogXCJDTEFTU1wiLFxuICBcIlNUWUxFXCI6IDQsXG4gIFwiNFwiOiBcIlNUWUxFXCIsXG4gIFwiUFJPUFNcIjogOCxcbiAgXCI4XCI6IFwiUFJPUFNcIixcbiAgXCJGVUxMX1BST1BTXCI6IDE2LFxuICBcIjE2XCI6IFwiRlVMTF9QUk9QU1wiLFxuICBcIk5FRURfSFlEUkFUSU9OXCI6IDMyLFxuICBcIjMyXCI6IFwiTkVFRF9IWURSQVRJT05cIixcbiAgXCJTVEFCTEVfRlJBR01FTlRcIjogNjQsXG4gIFwiNjRcIjogXCJTVEFCTEVfRlJBR01FTlRcIixcbiAgXCJLRVlFRF9GUkFHTUVOVFwiOiAxMjgsXG4gIFwiMTI4XCI6IFwiS0VZRURfRlJBR01FTlRcIixcbiAgXCJVTktFWUVEX0ZSQUdNRU5UXCI6IDI1NixcbiAgXCIyNTZcIjogXCJVTktFWUVEX0ZSQUdNRU5UXCIsXG4gIFwiTkVFRF9QQVRDSFwiOiA1MTIsXG4gIFwiNTEyXCI6IFwiTkVFRF9QQVRDSFwiLFxuICBcIkRZTkFNSUNfU0xPVFNcIjogMTAyNCxcbiAgXCIxMDI0XCI6IFwiRFlOQU1JQ19TTE9UU1wiLFxuICBcIkRFVl9ST09UX0ZSQUdNRU5UXCI6IDIwNDgsXG4gIFwiMjA0OFwiOiBcIkRFVl9ST09UX0ZSQUdNRU5UXCIsXG4gIFwiSE9JU1RFRFwiOiAtMSxcbiAgXCItMVwiOiBcIkhPSVNURURcIixcbiAgXCJCQUlMXCI6IC0yLFxuICBcIi0yXCI6IFwiQkFJTFwiXG59O1xuY29uc3QgUGF0Y2hGbGFnTmFtZXMgPSB7XG4gIFsxXTogYFRFWFRgLFxuICBbMl06IGBDTEFTU2AsXG4gIFs0XTogYFNUWUxFYCxcbiAgWzhdOiBgUFJPUFNgLFxuICBbMTZdOiBgRlVMTF9QUk9QU2AsXG4gIFszMl06IGBORUVEX0hZRFJBVElPTmAsXG4gIFs2NF06IGBTVEFCTEVfRlJBR01FTlRgLFxuICBbMTI4XTogYEtFWUVEX0ZSQUdNRU5UYCxcbiAgWzI1Nl06IGBVTktFWUVEX0ZSQUdNRU5UYCxcbiAgWzUxMl06IGBORUVEX1BBVENIYCxcbiAgWzEwMjRdOiBgRFlOQU1JQ19TTE9UU2AsXG4gIFsyMDQ4XTogYERFVl9ST09UX0ZSQUdNRU5UYCxcbiAgWy0xXTogYEhPSVNURURgLFxuICBbLTJdOiBgQkFJTGBcbn07XG5cbmNvbnN0IFNoYXBlRmxhZ3MgPSB7XG4gIFwiRUxFTUVOVFwiOiAxLFxuICBcIjFcIjogXCJFTEVNRU5UXCIsXG4gIFwiRlVOQ1RJT05BTF9DT01QT05FTlRcIjogMixcbiAgXCIyXCI6IFwiRlVOQ1RJT05BTF9DT01QT05FTlRcIixcbiAgXCJTVEFURUZVTF9DT01QT05FTlRcIjogNCxcbiAgXCI0XCI6IFwiU1RBVEVGVUxfQ09NUE9ORU5UXCIsXG4gIFwiVEVYVF9DSElMRFJFTlwiOiA4LFxuICBcIjhcIjogXCJURVhUX0NISUxEUkVOXCIsXG4gIFwiQVJSQVlfQ0hJTERSRU5cIjogMTYsXG4gIFwiMTZcIjogXCJBUlJBWV9DSElMRFJFTlwiLFxuICBcIlNMT1RTX0NISUxEUkVOXCI6IDMyLFxuICBcIjMyXCI6IFwiU0xPVFNfQ0hJTERSRU5cIixcbiAgXCJURUxFUE9SVFwiOiA2NCxcbiAgXCI2NFwiOiBcIlRFTEVQT1J
15UXCIsXG4gIFwiU1VTUEVOU0VcIjogMTI4LFxuICBcIjEyOFwiOiBcIlNVU1BFTlNFXCIsXG4gIFwiQ09NUE9ORU5UX1NIT1VMRF9LRUVQX0FMSVZFXCI6IDI1NixcbiAgXCIyNTZcIjogXCJDT01QT05FTlRfU0hPVUxEX0tFRVBfQUxJVkVcIixcbiAgXCJDT01QT05FTlRfS0VQVF9BTElWRVwiOiA1MTIsXG4gIFwiNTEyXCI6IFwiQ09NUE9ORU5UX0tFUFRfQUxJVkVcIixcbiAgXCJDT01QT05FTlRcIjogNixcbiAgXCI2XCI6IFwiQ09NUE9ORU5UXCJcbn07XG5cbmNvbnN0IFNsb3RGbGFncyA9IHtcbiAgXCJTVEFCTEVcIjogMSxcbiAgXCIxXCI6IFwiU1RBQkxFXCIsXG4gIFwiRFlOQU1JQ1wiOiAyLFxuICBcIjJcIjogXCJEWU5BTUlDXCIsXG4gIFwiRk9SV0FSREVEXCI6IDMsXG4gIFwiM1wiOiBcIkZPUldBUkRFRFwiXG59O1xuY29uc3Qgc2xvdEZsYWdzVGV4dCA9IHtcbiAgWzFdOiBcIlNUQUJMRVwiLFxuICBbMl06IFwiRFlOQU1JQ1wiLFxuICBbM106IFwiRk9SV0FSREVEXCJcbn07XG5cbmNvbnN0IEdMT0JBTFNfQUxMT1dFRCA9IFwiSW5maW5pdHksdW5kZWZpbmVkLE5hTixpc0Zpbml0ZSxpc05hTixwYXJzZUZsb2F0LHBhcnNlSW50LGRlY29kZVVSSSxkZWNvZGVVUklDb21wb25lbnQsZW5jb2RlVVJJLGVuY29kZVVSSUNvbXBvbmVudCxNYXRoLE51bWJlcixEYXRlLEFycmF5LE9iamVjdCxCb29sZWFuLFN0cmluZyxSZWdFeHAsTWFwLFNldCxKU09OLEludGwsQmlnSW50LGNvbnNvbGUsRXJyb3JcIjtcbmNvbnN0IGlzR2xvYmFsbHlBbGxvd2VkID0gLyogQF9fUFVSRV9fICovIG1ha2VNYXAoR0xPQkFMU19BTExPV0VEKTtcbmNvbnN0IGlzR2xvYmFsbHlXaGl0ZWxpc3RlZCA9IGlzR2xvYmFsbHlBbGxvd2VkO1xuXG5jb25zdCByYW5nZSA9IDI7XG5mdW5jdGlvbiBnZW5lcmF0ZUNvZGVGcmFtZShzb3VyY2UsIHN0YXJ0ID0gMCwgZW5kID0gc291cmNlLmxlbmd0aCkge1xuICBzdGFydCA9IE1hdGgubWF4KDAsIE1hdGgubWluKHN0YXJ0LCBzb3VyY2UubGVuZ3RoKSk7XG4gIGVuZCA9IE1hdGgubWF4KDAsIE1hdGgubWluKGVuZCwgc291cmNlLmxlbmd0aCkpO1xuICBpZiAoc3RhcnQgPiBlbmQpIHJldHVybiBcIlwiO1xuICBsZXQgbGluZXMgPSBzb3VyY2Uuc3BsaXQoLyhcXHI/XFxuKS8pO1xuICBjb25zdCBuZXdsaW5lU2VxdWVuY2VzID0gbGluZXMuZmlsdGVyKChfLCBpZHgpID0+IGlkeCAlIDIgPT09IDEpO1xuICBsaW5lcyA9IGxpbmVzLmZpbHRlcigoXywgaWR4KSA9PiBpZHggJSAyID09PSAwKTtcbiAgbGV0IGNvdW50ID0gMDtcbiAgY29uc3QgcmVzID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICBjb3VudCArPSBsaW5lc1tpXS5sZW5ndGggKyAobmV3bGluZVNlcXVlbmNlc1tpXSAmJiBuZXdsaW5lU2VxdWVuY2VzW2ldLmxlbmd0aCB8fCAwKTtcbiAgICBpZiAoY291bnQgPj0gc3RhcnQpIHtcbiAgICAgIGZvciAobGV0IGogPSBpIC0gcmFuZ2U7IGogPD0gaSArIHJhbmdlIHx8IGVuZCA+IGNvdW50OyBqKyspIHtcbiAgICAgICAgaWYgKGogPCAwIHx8IGogPj0gbGluZXMubGVuZ3RoKSBjb250aW51ZTtcbiAgICAgICAgY29uc3QgbGluZSA9IGogKyAxO1xuICAgICAgICByZXMucHVzaChcbiAgICAgICAgICBgJHtsaW5lfSR7XCIgXCIucmVwZWF0KE1hdGgubWF4KDMgLSBTdHJpbmcobGluZSkubGVuZ3RoLCAwKSl9fCAgJHtsaW5lc1tqXX1gXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGxpbmVMZW5ndGggPSBsaW5lc1tqXS5sZW5ndGg7XG4gICAgICAgIGNvbnN0IG5ld0xpbmVTZXFMZW5ndGggPSBuZXdsaW5lU2VxdWVuY2VzW2pdICYmIG5ld2xpbmVTZXF1ZW5jZXNbal0ubGVuZ3RoIHx8IDA7XG4gICAgICAgIGlmIChqID09PSBpKSB7XG4gICAgICAgICAgY29uc3QgcGFkID0gc3RhcnQgLSAoY291bnQgLSAobGluZUxlbmd0aCArIG5ld0xpbmVTZXFMZW5ndGgpKTtcbiAgICAgICAgICBjb25zdCBsZW5ndGggPSBNYXRoLm1heChcbiAgICAgICAgICAgIDEsXG4gICAgICAgICAgICBlbmQgPiBjb3VudCA/IGxpbmVMZW5ndGggLSBwYWQgOiBlbmQgLSBzdGFydFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmVzLnB1c2goYCAgIHwgIGAgKyBcIiBcIi5yZXBlYXQocGFkKSArIFwiXlwiLnJlcGVhdChsZW5ndGgpKTtcbiAgICAgICAgfSBlbHNlIGlmIChqID4gaSkge1xuICAgICAgICAgIGlmIChlbmQgPiBjb3VudCkge1xuICAgICAgICAgICAgY29uc3QgbGVuZ3RoID0gTWF0aC5tYXgoTWF0aC5taW4oZW5kIC0gY291bnQsIGxpbmVMZW5ndGgpLCAxKTtcbiAgICAgICAgICAgIHJlcy5wdXNoKGAgICB8ICBgICsgXCJeXCIucmVwZWF0KGxlbmd0aCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb3VudCArPSBsaW5lTGVuZ3RoICsgbmV3TGluZVNlcUxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXMuam9pbihcIlxcblwiKTtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplU3R5bGUodmFsdWUpIHtcbiAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgY29uc3QgcmVzID0ge307XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgaXRlbSA9IHZhbHVlW2ldO1xuICAgICAgY29uc3Qgbm9ybWFsaXplZCA9IGlzU3RyaW5nKGl0ZW0pID8gcGFyc2VTdHJpbmdTdHlsZShpdGVtKSA6IG5vcm1hbGl6ZVN0eWxlKGl0ZW0pO1xuICAgICAgaWYgKG5vcm1hbGl6ZWQpIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gbm9ybWFsaXplZCkge1xuICAgICAgICAgIHJlc1trZXldID0gbm9ybWFsaXplZFtrZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH0gZWxzZSBpZiAoaXNTdHJpbmcodmFsdWUpIHx8IGlzT2JqZWN0KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuY29uc3QgbGlzdERlbGltaXRlclJFID0gLzsoPyFbXihdKlxcKSkvZztcbmNvbnN0IHByb3BlcnR5RGVsaW1pdGVyUkUgPSAvOihbXl0rKS87XG5jb25zdCBzdHlsZUNvbW1lbnRSRSA9IC9cXC9cXCpbXl0qP1xcKlxcLy9nO1xuZnVuY3Rpb24gcGFyc2VTdHJpbmdTdHlsZShjc3NUZXh0KSB7XG4gIGNvbnN0IHJldCA9IHt9O1xuICBjc3NUZXh0LnJlcGxhY2Uoc3R5bGVDb21tZW50UkUsIFwiXCIpLnNwbGl0KGxpc3REZWxpbWl0ZXJSRSkuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgIGlmIChpdGVtKSB7XG4gICAgICBjb25zdCB0bXAgPSBpdGVtLnNwbGl0KHByb3BlcnR5RGVsaW
151pdGVyUkUpO1xuICAgICAgdG1wLmxlbmd0aCA+IDEgJiYgKHJldFt0bXBbMF0udHJpbSgpXSA9IHRtcFsxXS50cmltKCkpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXQ7XG59XG5mdW5jdGlvbiBzdHJpbmdpZnlTdHlsZShzdHlsZXMpIHtcbiAgbGV0IHJldCA9IFwiXCI7XG4gIGlmICghc3R5bGVzIHx8IGlzU3RyaW5nKHN0eWxlcykpIHtcbiAgICByZXR1cm4gcmV0O1xuICB9XG4gIGZvciAoY29uc3Qga2V5IGluIHN0eWxlcykge1xuICAgIGNvbnN0IHZhbHVlID0gc3R5bGVzW2tleV07XG4gICAgaWYgKGlzU3RyaW5nKHZhbHVlKSB8fCB0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWRLZXkgPSBrZXkuc3RhcnRzV2l0aChgLS1gKSA/IGtleSA6IGh5cGhlbmF0ZShrZXkpO1xuICAgICAgcmV0ICs9IGAke25vcm1hbGl6ZWRLZXl9OiR7dmFsdWV9O2A7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXQ7XG59XG5mdW5jdGlvbiBub3JtYWxpemVDbGFzcyh2YWx1ZSkge1xuICBsZXQgcmVzID0gXCJcIjtcbiAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgIHJlcyA9IHZhbHVlO1xuICB9IGVsc2UgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3Qgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZUNsYXNzKHZhbHVlW2ldKTtcbiAgICAgIGlmIChub3JtYWxpemVkKSB7XG4gICAgICAgIHJlcyArPSBub3JtYWxpemVkICsgXCIgXCI7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKGlzT2JqZWN0KHZhbHVlKSkge1xuICAgIGZvciAoY29uc3QgbmFtZSBpbiB2YWx1ZSkge1xuICAgICAgaWYgKHZhbHVlW25hbWVdKSB7XG4gICAgICAgIHJlcyArPSBuYW1lICsgXCIgXCI7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiByZXMudHJpbSgpO1xufVxuZnVuY3Rpb24gbm9ybWFsaXplUHJvcHMocHJvcHMpIHtcbiAgaWYgKCFwcm9wcykgcmV0dXJuIG51bGw7XG4gIGxldCB7IGNsYXNzOiBrbGFzcywgc3R5bGUgfSA9IHByb3BzO1xuICBpZiAoa2xhc3MgJiYgIWlzU3RyaW5nKGtsYXNzKSkge1xuICAgIHByb3BzLmNsYXNzID0gbm9ybWFsaXplQ2xhc3Moa2xhc3MpO1xuICB9XG4gIGlmIChzdHlsZSkge1xuICAgIHByb3BzLnN0eWxlID0gbm9ybWFsaXplU3R5bGUoc3R5bGUpO1xuICB9XG4gIHJldHVybiBwcm9wcztcbn1cblxuY29uc3QgSFRNTF9UQUdTID0gXCJodG1sLGJvZHksYmFzZSxoZWFkLGxpbmssbWV0YSxzdHlsZSx0aXRsZSxhZGRyZXNzLGFydGljbGUsYXNpZGUsZm9vdGVyLGhlYWRlcixoZ3JvdXAsaDEsaDIsaDMsaDQsaDUsaDYsbmF2LHNlY3Rpb24sZGl2LGRkLGRsLGR0LGZpZ2NhcHRpb24sZmlndXJlLHBpY3R1cmUsaHIsaW1nLGxpLG1haW4sb2wscCxwcmUsdWwsYSxiLGFiYnIsYmRpLGJkbyxicixjaXRlLGNvZGUsZGF0YSxkZm4sZW0saSxrYmQsbWFyayxxLHJwLHJ0LHJ1YnkscyxzYW1wLHNtYWxsLHNwYW4sc3Ryb25nLHN1YixzdXAsdGltZSx1LHZhcix3YnIsYXJlYSxhdWRpbyxtYXAsdHJhY2ssdmlkZW8sZW1iZWQsb2JqZWN0LHBhcmFtLHNvdXJjZSxjYW52YXMsc2NyaXB0LG5vc2NyaXB0LGRlbCxpbnMsY2FwdGlvbixjb2wsY29sZ3JvdXAsdGFibGUsdGhlYWQsdGJvZHksdGQsdGgsdHIsYnV0dG9uLGRhdGFsaXN0LGZpZWxkc2V0LGZvcm0saW5wdXQsbGFiZWwsbGVnZW5kLG1ldGVyLG9wdGdyb3VwLG9wdGlvbixvdXRwdXQscHJvZ3Jlc3Msc2VsZWN0LHRleHRhcmVhLGRldGFpbHMsZGlhbG9nLG1lbnUsc3VtbWFyeSx0ZW1wbGF0ZSxibG9ja3F1b3RlLGlmcmFtZSx0Zm9vdFwiO1xuY29uc3QgU1ZHX1RBR1MgPSBcInN2ZyxhbmltYXRlLGFuaW1hdGVNb3Rpb24sYW5pbWF0ZVRyYW5zZm9ybSxjaXJjbGUsY2xpcFBhdGgsY29sb3ItcHJvZmlsZSxkZWZzLGRlc2MsZGlzY2FyZCxlbGxpcHNlLGZlQmxlbmQsZmVDb2xvck1hdHJpeCxmZUNvbXBvbmVudFRyYW5zZmVyLGZlQ29tcG9zaXRlLGZlQ29udm9sdmVNYXRyaXgsZmVEaWZmdXNlTGlnaHRpbmcsZmVEaXNwbGFjZW1lbnRNYXAsZmVEaXN0YW50TGlnaHQsZmVEcm9wU2hhZG93LGZlRmxvb2QsZmVGdW5jQSxmZUZ1bmNCLGZlRnVuY0csZmVGdW5jUixmZUdhdXNzaWFuQmx1cixmZUltYWdlLGZlTWVyZ2UsZmVNZXJnZU5vZGUsZmVNb3JwaG9sb2d5LGZlT2Zmc2V0LGZlUG9pbnRMaWdodCxmZVNwZWN1bGFyTGlnaHRpbmcsZmVTcG90TGlnaHQsZmVUaWxlLGZlVHVyYnVsZW5jZSxmaWx0ZXIsZm9yZWlnbk9iamVjdCxnLGhhdGNoLGhhdGNocGF0aCxpbWFnZSxsaW5lLGxpbmVhckdyYWRpZW50LG1hcmtlcixtYXNrLG1lc2gsbWVzaGdyYWRpZW50LG1lc2hwYXRjaCxtZXNocm93LG1ldGFkYXRhLG1wYXRoLHBhdGgscGF0dGVybixwb2x5Z29uLHBvbHlsaW5lLHJhZGlhbEdyYWRpZW50LHJlY3Qsc2V0LHNvbGlkY29sb3Isc3RvcCxzd2l0Y2gsc3ltYm9sLHRleHQsdGV4dFBhdGgsdGl0bGUsdHNwYW4sdW5rbm93bix1c2Usdmlld1wiO1xuY29uc3QgTUFUSF9UQUdTID0gXCJhbm5vdGF0aW9uLGFubm90YXRpb24teG1sLG1hY3Rpb24sbWFsaWduZ3JvdXAsbWFsaWdubWFyayxtYXRoLG1lbmNsb3NlLG1lcnJvcixtZmVuY2VkLG1mcmFjLG1mcmFjdGlvbixtZ2x5cGgsbWksbWxhYmVsZWR0cixtbG9uZ2RpdixtbXVsdGlzY3JpcHRzLG1uLG1vLG1vdmVyLG1wYWRkZWQsbXBoYW50b20sbXByZXNjcmlwdHMsbXJvb3QsbXJvdyxtcyxtc2NhcnJpZXMsbXNjYXJyeSxtc2dyb3VwLG1zbGluZSxtc3BhY2UsbXNxcnQsbXNyb3csbXN0YWNrLG1zdHlsZSxtc3ViLG1zdWJzdXAsbXN1cCxtdGFibGUsbXRkLG10ZXh0LG10cixtdW5kZXIsbXVuZGVyb3Zlcixub25lLHNlbWFudGljc1wiO1xuY29uc3QgVk9JRF9UQUdTID0gXCJhcmVhLGJhc2UsYnIsY29sLGVtYmVkLGhyLGltZyxpbnB1dCxsaW5rLG1ldGEscGFyYW0sc291cmNlLHRyYWNrLHdiclwiO1xuY29uc3QgaXNIVE1MVGFnID0gLyogQF9fUFVSRV9fICovIG1ha2VNYXAoSFRNTF9UQUdTKTtcbmNvbnN0IGlzU1ZHVGFnID0gLyogQF9fUFVSRV9fICovIG1ha2VNYXAoU1ZHX1RBR1MpO1xuY29uc3QgaXNNYXRoTUxUYWcgPSAvKiBAX19QVVJFX18gKi8gbWFrZU1hcChNQVRIX1RB
15R1MpO1xuY29uc3QgaXNWb2lkVGFnID0gLyogQF9fUFVSRV9fICovIG1ha2VNYXAoVk9JRF9UQUdTKTtcblxuY29uc3Qgc3BlY2lhbEJvb2xlYW5BdHRycyA9IGBpdGVtc2NvcGUsYWxsb3dmdWxsc2NyZWVuLGZvcm1ub3ZhbGlkYXRlLGlzbWFwLG5vbW9kdWxlLG5vdmFsaWRhdGUscmVhZG9ubHlgO1xuY29uc3QgaXNTcGVjaWFsQm9vbGVhbkF0dHIgPSAvKiBAX19QVVJFX18gKi8gbWFrZU1hcChzcGVjaWFsQm9vbGVhbkF0dHJzKTtcbmNvbnN0IGlzQm9vbGVhbkF0dHIgPSAvKiBAX19QVVJFX18gKi8gbWFrZU1hcChcbiAgc3BlY2lhbEJvb2xlYW5BdHRycyArIGAsYXN5bmMsYXV0b2ZvY3VzLGF1dG9wbGF5LGNvbnRyb2xzLGRlZmF1bHQsZGVmZXIsZGlzYWJsZWQsaGlkZGVuLGluZXJ0LGxvb3Asb3BlbixyZXF1aXJlZCxyZXZlcnNlZCxzY29wZWQsc2VhbWxlc3MsY2hlY2tlZCxtdXRlZCxtdWx0aXBsZSxzZWxlY3RlZGBcbik7XG5mdW5jdGlvbiBpbmNsdWRlQm9vbGVhbkF0dHIodmFsdWUpIHtcbiAgcmV0dXJuICEhdmFsdWUgfHwgdmFsdWUgPT09IFwiXCI7XG59XG5jb25zdCB1bnNhZmVBdHRyQ2hhclJFID0gL1s+Lz1cIidcXHUwMDA5XFx1MDAwYVxcdTAwMGNcXHUwMDIwXS87XG5jb25zdCBhdHRyVmFsaWRhdGlvbkNhY2hlID0ge307XG5mdW5jdGlvbiBpc1NTUlNhZmVBdHRyTmFtZShuYW1lKSB7XG4gIGlmIChhdHRyVmFsaWRhdGlvbkNhY2hlLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgcmV0dXJuIGF0dHJWYWxpZGF0aW9uQ2FjaGVbbmFtZV07XG4gIH1cbiAgY29uc3QgaXNVbnNhZmUgPSB1bnNhZmVBdHRyQ2hhclJFLnRlc3QobmFtZSk7XG4gIGlmIChpc1Vuc2FmZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoYHVuc2FmZSBhdHRyaWJ1dGUgbmFtZTogJHtuYW1lfWApO1xuICB9XG4gIHJldHVybiBhdHRyVmFsaWRhdGlvbkNhY2hlW25hbWVdID0gIWlzVW5zYWZlO1xufVxuY29uc3QgcHJvcHNUb0F0dHJNYXAgPSB7XG4gIGFjY2VwdENoYXJzZXQ6IFwiYWNjZXB0LWNoYXJzZXRcIixcbiAgY2xhc3NOYW1lOiBcImNsYXNzXCIsXG4gIGh0bWxGb3I6IFwiZm9yXCIsXG4gIGh0dHBFcXVpdjogXCJodHRwLWVxdWl2XCJcbn07XG5jb25zdCBpc0tub3duSHRtbEF0dHIgPSAvKiBAX19QVVJFX18gKi8gbWFrZU1hcChcbiAgYGFjY2VwdCxhY2NlcHQtY2hhcnNldCxhY2Nlc3NrZXksYWN0aW9uLGFsaWduLGFsbG93LGFsdCxhc3luYyxhdXRvY2FwaXRhbGl6ZSxhdXRvY29tcGxldGUsYXV0b2ZvY3VzLGF1dG9wbGF5LGJhY2tncm91bmQsYmdjb2xvcixib3JkZXIsYnVmZmVyZWQsY2FwdHVyZSxjaGFsbGVuZ2UsY2hhcnNldCxjaGVja2VkLGNpdGUsY2xhc3MsY29kZSxjb2RlYmFzZSxjb2xvcixjb2xzLGNvbHNwYW4sY29udGVudCxjb250ZW50ZWRpdGFibGUsY29udGV4dG1lbnUsY29udHJvbHMsY29vcmRzLGNyb3Nzb3JpZ2luLGNzcCxkYXRhLGRhdGV0aW1lLGRlY29kaW5nLGRlZmF1bHQsZGVmZXIsZGlyLGRpcm5hbWUsZGlzYWJsZWQsZG93bmxvYWQsZHJhZ2dhYmxlLGRyb3B6b25lLGVuY3R5cGUsZW50ZXJrZXloaW50LGZvcixmb3JtLGZvcm1hY3Rpb24sZm9ybWVuY3R5cGUsZm9ybW1ldGhvZCxmb3Jtbm92YWxpZGF0ZSxmb3JtdGFyZ2V0LGhlYWRlcnMsaGVpZ2h0LGhpZGRlbixoaWdoLGhyZWYsaHJlZmxhbmcsaHR0cC1lcXVpdixpY29uLGlkLGltcG9ydGFuY2
15UsaW5lcnQsaW50ZWdyaXR5LGlzbWFwLGl0ZW1wcm9wLGtleXR5cGUsa2luZCxsYWJlbCxsYW5nLGxhbmd1YWdlLGxvYWRpbmcsbGlzdCxsb29wLGxvdyxtYW5pZmVzdCxtYXgsbWF4bGVuZ3RoLG1pbmxlbmd0aCxtZWRpYSxtaW4sbXVsdGlwbGUsbXV0ZWQsbmFtZSxub3ZhbGlkYXRlLG9wZW4sb3B0aW11bSxwYXR0ZXJuLHBpbmcscGxhY2Vob2xkZXIscG9zdGVyLHByZWxvYWQscmFkaW9ncm91cCxyZWFkb25seSxyZWZlcnJlcnBvbGljeSxyZWwscmVxdWlyZWQscmV2ZXJzZWQscm93cyxyb3dzcGFuLHNhbmRib3gsc2NvcGUsc2NvcGVkLHNlbGVjdGVkLHNoYXBlLHNpemUsc2l6ZXMsc2xvdCxzcGFuLHNwZWxsY2hlY2ssc3JjLHNyY2RvYyxzcmNsYW5nLHNyY3NldCxzdGFydCxzdGVwLHN0eWxlLHN1bW1hcnksdGFiaW5kZXgsdGFyZ2V0LHRpdGxlLHRyYW5zbGF0ZSx0eXBlLHVzZW1hcCx2YWx1ZSx3aWR0aCx3cmFwYFxuKTtcbmNvbnN0IGlzS25vd25TdmdBdHRyID0gLyogQF9fUFVSRV9fICovIG1ha2VNYXAoXG4gIGB4bWxucyxhY2NlbnQtaGVpZ2h0LGFjY3VtdWxhdGUsYWRkaXRpdmUsYWxpZ25tZW50LWJhc2VsaW5lLGFscGhhYmV0aWMsYW1wbGl0dWRlLGFyYWJpYy1mb3JtLGFzY2VudCxhdHRyaWJ1dGVOYW1lLGF0dHJpYnV0ZVR5cGUsYXppbXV0aCxiYXNlRnJlcXVlbmN5LGJhc2VsaW5lLXNoaWZ0LGJhc2VQcm9maWxlLGJib3gsYmVnaW4sYmlhcyxieSxjYWxjTW9kZSxjYXAtaGVpZ2h0LGNsYXNzLGNsaXAsY2xpcFBhdGhVbml0cyxjbGlwLXBhdGgsY2xpcC1ydWxlLGNvbG9yLGNvbG9yLWludGVycG9sYXRpb24sY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzLGNvbG9yLXByb2ZpbGUsY29sb3ItcmVuZGVyaW5nLGNvbnRlbnRTY3JpcHRUeXBlLGNvbnRlbnRTdHlsZVR5cGUsY3Jvc3NvcmlnaW4sY3Vyc29yLGN4LGN5LGQsZGVjZWxlcmF0ZSxkZXNjZW50LGRpZmZ1c2VDb25zdGFudCxkaXJlY3Rpb24sZGlzcGxheSxkaXZpc29yLGRvbWluYW50LWJhc2VsaW5lLGR1cixkeCxkeSxlZGdlTW9kZSxlbGV2YXRpb24sZW5hYmxlLWJhY2tncm91bmQsZW5kLGV4cG9uZW50LGZpbGwsZmlsbC1vcGFjaXR5LGZpbGwtcnVsZSxmaWx0ZXIsZmlsdGVyUmVzLGZpbHRlclVuaXRzLGZsb29kLWNvbG9yLGZsb29kLW9wYWNpdHksZm9udC1mYW1pbHksZm9udC1zaXplLGZvbnQtc2l6ZS1hZGp1c3QsZm9udC1zdHJldGNoLGZvbnQtc3R5bGUsZm9udC12YXJpYW50LGZvbnQtd2VpZ2h0LGZvcm1hdCxmcm9tLGZyLGZ4LGZ5LGcxLGcyLGdseXBoLW5hbWUsZ2x5cGgtb3JpZW50YXRpb24taG9yaXpvbnRhbCxnbHlwaC1vcmllbnRhdGlvbi12ZXJ0aWNhbCxnbHlwaFJlZixncmFkaWVudFRyYW5zZm9ybSxncmFkaWVudFVuaXRzLGhhbmdpbmcsaGVpZ2h0LGhyZWYsaHJlZmxhbmcsaG9yaXotYWR2LXgsaG9yaXotb3JpZ2luLXgsaWQsaWRlb2dyYXBoaWMsaW1hZ2UtcmVuZGVyaW5nLGluLGluMixpbnRlcmNlcHQsayxrMSxrMixrMyxrNCxrZXJuZWxNYXRyaXgsa2VybmVsVW5pdExlbmd0aCxrZXJuaW5nLGtleVBvaW50cyxrZXlTcGxpbmVzLGtleVRpbWVzLGxhbmcsbGVuZ3RoQWRqdXN0LGxldHRlci1zcGFjaW5nLGxpZ2h0aW5nLWNvbG9yLGxpbWl0aW5nQ29uZUFuZ2xlLGxvY2FsLG1hcmtlci1lbmQsbWFya2VyLW1pZCxtYXJrZXItc3RhcnQsbWFya2VySGVpZ2h0LG1hcmtlclVuaXRzLG1hcmtlcldpZHRoLG1hc2ssbWFza0NvbnRlbnRVbml0cyxtYXNrVW5pdHMsbWF0aGVtYXRpY2FsLG1heCxtZWRpYSxtZXRob2QsbWluLG1vZGUsbmFtZSxudW1PY3RhdmVzLG9mZnNldCxvcGFjaXR5LG9wZXJhdG9yLG9yZGVyLG9yaWVudCxvcmllbnRhdGlvbixvcmlnaW4sb3ZlcmZsb3csb3ZlcmxpbmUtcG9zaXRpb24sb3ZlcmxpbmUtdGhpY2tuZXNzLHBhbm9zZS0xLHBhaW50LW9yZGVyLHBhdGgscGF0aExlbmd0aCxwYXR0ZXJuQ29udGVudFVuaXRzLHBhdHRlcm5UcmFuc2Zvcm0scGF0dGVyblVuaXRzLHBpbmcscG9pbnRlci1ldmVudHMscG9pbnRzLHBvaW50c0F0WCxwb2ludHNBdFkscG9pbnRzQXRaLHByZXNlcnZlQWxwaGEscHJlc2VydmVBc3BlY3RSYXRpbyxwcmltaXRpdmVVbml0cyxyLHJhZGl1cyxyZWZlcnJlclBvbGljeSxyZWZYLHJlZlkscmVsLHJlbmRlcmluZy1pbnRlbnQscmVwZWF0Q291bnQscmVwZWF0RHVyLHJlcXVpcmVkRXh0ZW5zaW9ucyxyZXF1aXJlZEZlYXR1cmVzLHJlc3RhcnQscmVzdWx0LHJvdGF0ZSxyeCxyeSxzY2FsZSxzZWVkLHNoYXBlLXJlbmRlcmluZyxzbG9wZSxzcGFjaW5nLHNwZWN1bGFyQ29uc3RhbnQsc3BlY3VsYXJFeHBvbmVudCxzcGVlZCxzcHJlYWRNZXRob2Qsc3RhcnRPZmZzZXQsc3RkRGV2aWF0aW9uLHN0ZW1oLHN0ZW12LHN0aXRjaFRpbGVzLHN0b3AtY29sb3Isc3RvcC1vcGFjaXR5LHN0cmlrZXRocm91Z2gtcG9zaXRpb24sc3RyaWtldGhyb3VnaC10aGlja25lc3Msc3RyaW5nLHN0cm9rZSxzdHJva2UtZGFzaGFycmF5LHN0cm9rZS1kYXNob2Zmc2V0LHN0cm9rZS1saW5lY2FwLHN0cm9rZS1saW5lam9pbixzdHJva2UtbWl0ZXJsaW1pdCxzdHJva2Utb3BhY2l0eSxzdHJva2Utd2lkdGgsc3R5bGUsc3VyZmFjZVNjYWxlLHN5c3RlbUxhbmd1YWdlLHRhYmluZGV4LHRhYmxlVmFsdWVzLHRhcmdldCx0YXJnZXRYLHRhcmdldFksdGV4dC1hbmNob3IsdGV4dC1kZWNvcmF0aW9uLHRleHQtcmVuZGVyaW5nLHRleHRMZW5ndGgsdG8sdHJhbnNmb3JtLHRyYW5zZm9ybS1vcmlnaW4sdHlwZSx1MSx1Mix1bmRlcmxpbmUtcG9zaXRpb24sdW5kZXJsaW5lLXRoaWNrbmVzcyx1bmljb2RlLHVuaWNvZGUtYmlkaSx1bmljb2RlLXJhbmdlLHVuaXRzLXBlci1lbSx2LWFscGhhYmV0aWMsdi1oYW5naW5nLHYtaWRlb2dyYXBoaWMsdi1tYXRoZW1hdGljYWwsdmFsdWVzLHZlY3Rvci1lZmZlY3QsdmVyc2lvbix2ZXJ0LWFkdi15LHZlcnQtb3JpZ2luLXgsdmVydC1vcmlnaW4teSx2aWV3Qm94LHZpZXdUYXJnZXQsdmlzaWJpbGl0eSx3aWR0aCx3aWR0aHMsd29yZC1zcGFjaW5nLHdyaXRpbmctbW9kZSx4LHgtaGVpZ2h0LHgxLHgyLHhDaGFubmVsU2VsZWN0b3IseGxpbms6YWN0dWF0ZSx4bGluazphcmNyb2xlLHhsaW5rOmhyZWYseGxpbms6cm9sZSx4bGluazpzaG93LHhsaW5rOnRpdGxlLHhsaW5rOnR5cGUseG1sbnM6eGxpbmsseG1sOmJhc2UseG1sOmxhbmcseG1sOnNwYWNlLHkseTEseTIseUNoYW5uZWxTZWxlY3Rvcix6LHpvb21BbmRQYW5gXG4pO1xuZnVuY3Rpb24gaXNSZW5kZXJhYmxlQXR0clZhbHVlKHZhbHVlKSB7XG4gIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gIHJldHVybi
15B0eXBlID09PSBcInN0cmluZ1wiIHx8IHR5cGUgPT09IFwibnVtYmVyXCIgfHwgdHlwZSA9PT0gXCJib29sZWFuXCI7XG59XG5cbmNvbnN0IGVzY2FwZVJFID0gL1tcIicmPD5dLztcbmZ1bmN0aW9uIGVzY2FwZUh0bWwoc3RyaW5nKSB7XG4gIGNvbnN0IHN0ciA9IFwiXCIgKyBzdHJpbmc7XG4gIGNvbnN0IG1hdGNoID0gZXNjYXBlUkUuZXhlYyhzdHIpO1xuICBpZiAoIW1hdGNoKSB7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuICBsZXQgaHRtbCA9IFwiXCI7XG4gIGxldCBlc2NhcGVkO1xuICBsZXQgaW5kZXg7XG4gIGxldCBsYXN0SW5kZXggPSAwO1xuICBmb3IgKGluZGV4ID0gbWF0Y2guaW5kZXg7IGluZGV4IDwgc3RyLmxlbmd0aDsgaW5kZXgrKykge1xuICAgIHN3aXRjaCAoc3RyLmNoYXJDb2RlQXQoaW5kZXgpKSB7XG4gICAgICBjYXNlIDM0OlxuICAgICAgICBlc2NhcGVkID0gXCImcXVvdDtcIjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDM4OlxuICAgICAgICBlc2NhcGVkID0gXCImYW1wO1wiO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMzk6XG4gICAgICAgIGVzY2FwZWQgPSBcIiYjMzk7XCI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA2MDpcbiAgICAgICAgZXNjYXBlZCA9IFwiJmx0O1wiO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgNjI6XG4gICAgICAgIGVzY2FwZWQgPSBcIiZndDtcIjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKGxhc3RJbmRleCAhPT0gaW5kZXgpIHtcbiAgICAgIGh0bWwgKz0gc3RyLnNsaWNlKGxhc3RJbmRleCwgaW5kZXgpO1xuICAgIH1cbiAgICBsYXN0SW5kZXggPSBpbmRleCArIDE7XG4gICAgaHRtbCArPSBlc2NhcGVkO1xuICB9XG4gIHJldHVybiBsYXN0SW5kZXggIT09IGluZGV4ID8gaHRtbCArIHN0ci5zbGljZShsYXN0SW5kZXgsIGluZGV4KSA6IGh0bWw7XG59XG5jb25zdCBjb21tZW50U3RyaXBSRSA9IC9eLT8+fDwhLS18LS0+fC0tIT58PCEtJC9nO1xuZnVuY3Rpb24gZXNjYXBlSHRtbENvbW1lbnQoc3JjKSB7XG4gIHJldHVybiBzcmMucmVwbGFjZShjb21tZW50U3RyaXBSRSwgXCJcIik7XG59XG5cbmZ1bmN0aW9uIGxvb3NlQ29tcGFyZUFycmF5cyhhLCBiKSB7XG4gIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgbGV0IGVxdWFsID0gdHJ1ZTtcbiAgZm9yIChsZXQgaSA9IDA7IGVxdWFsICYmIGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgZXF1YWwgPSBsb29zZUVxdWFsKGFbaV0sIGJbaV0pO1xuICB9XG4gIHJldHVybiBlcXVhbDtcbn1cbmZ1bmN0aW9uIGxvb3NlRXF1YWwoYSwgYikge1xuICBpZiAoYSA9PT0gYikgcmV0dXJuIHRydWU7XG4gIGxldCBhVmFsaWRUeXBlID0gaXNEYXRlKGEpO1xuICBsZXQgYlZhbGlkVHlwZSA9IGlzRGF0ZShiKTtcbiAgaWYgKGFWYWxpZFR5cGUgfHwgYlZhbGlkVHlwZSkge1xuICAgIHJldHVybiBhVmFsaWRUeXBlICYmIGJWYWxpZFR5cGUgPyBhLmdldFRpbWUoKSA9PT0gYi5nZXRUaW1lKCkgOiBmYWxzZTtcbiAgfVxuICBhVmFsaWRUeXBlID0gaXNTeW1ib2woYSk7XG4gIGJWYWxpZFR5cGUgPSBpc1N5bWJvbChiKTtcbiAgaWYgKGFWYWxpZFR5cGUgfHwgYlZhbGlkVHlwZSkge1xuICAgIHJldHVybiBhID09PSBiO1xuICB9XG4gIGFWYWxpZFR5cGUgPSBpc0FycmF5KGEpO1xuICBiVmFsaWRUeXBlID0gaXNBcnJheShiKTtcbiAgaWYgKGFWYWxpZFR5cGUgfHwgYlZhbGlkVHlwZSkge1xuICAgIHJldHVybiBhVmFsaWRUeXBlICYmIGJWYWxpZFR5cGUgPyBsb29zZUNvbXBhcmVBcnJheXMoYSwgYikgOiBmYWxzZTtcbiAgfVxuICBhVmFsaWRUeXBlID0gaXNPYmplY3QoYSk7XG4gIGJWYWxpZFR5cGUgPSBpc09iamVjdChiKTtcbiAgaWYgKGFWYWxpZFR5cGUgfHwgYlZhbGlkVHlwZSkge1xuICAgIGlmICghYVZhbGlkVHlwZSB8fCAhYlZhbGlkVHlwZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBhS2V5c0NvdW50ID0gT2JqZWN0LmtleXMoYSkubGVuZ3RoO1xuICAgIGNvbnN0IGJLZXlzQ291bnQgPSBPYmplY3Qua2V5cyhiKS5sZW5ndGg7XG4gICAgaWYgKGFLZXlzQ291bnQgIT09IGJLZXlzQ291bnQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBrZXkgaW4gYSkge1xuICAgICAgY29uc3QgYUhhc0tleSA9IGEuaGFzT3duUHJvcGVydHkoa2V5KTtcbiAgICAgIGNvbnN0IGJIYXNLZXkgPSBiLmhhc093blByb3BlcnR5KGtleSk7XG4gICAgICBpZiAoYUhhc0tleSAmJiAhYkhhc0tleSB8fCAhYUhhc0tleSAmJiBiSGFzS2V5IHx8ICFsb29zZUVxdWFsKGFba2V5XSwgYltrZXldKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBTdHJpbmcoYSkgPT09IFN0cmluZyhiKTtcbn1cbmZ1bmN0aW9uIGxvb3NlSW5kZXhPZihhcnIsIHZhbCkge1xuICByZXR1cm4gYXJyLmZpbmRJbmRleCgoaXRlbSkgPT4gbG9vc2VFcXVhbChpdGVtLCB2YWwpKTtcbn1cblxuY29uc3QgaXNSZWYgPSAodmFsKSA9PiB7XG4gIHJldHVybiAhISh2YWwgJiYgdmFsLl9fdl9pc1JlZiA9PT0gdHJ1ZSk7XG59O1xuY29uc3QgdG9EaXNwbGF5U3RyaW5nID0gKHZhbCkgPT4ge1xuICByZXR1cm4gaXNTdHJpbmcodmFsKSA/IHZhbCA6IHZhbCA9PSBudWxsID8gXCJcIiA6IGlzQXJyYXkodmFsKSB8fCBpc09iamVjdCh2YWwpICYmICh2YWwudG9TdHJpbmcgPT09IG9iamVjdFRvU3RyaW5nIHx8ICFpc0Z1bmN0aW9uKHZhbC50b1N0cmluZykpID8gaXNSZWYodmFsKSA/IHRvRGlzcGxheVN0cmluZyh2YWwudmFsdWUpIDogSlNPTi5zdHJpbmdpZnkodmFsLCByZXBsYWNlciwgMikgOiBTdHJpbmcodmFsKTtcbn07XG5jb25zdCByZXBsYWNlciA9IChfa2V5LCB2YWwpID0+IHtcbiAgaWYgKGlzUmVmKHZhbCkpIHtcbiAgICByZXR1cm4gcmVwbGFjZXIoX2tleSwgdmFsLnZhbHVlKTtcbiAgfSBlbHNlIGlmIChpc01hcCh2YWwpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFtgTWFwKCR7dmFsLnNpemV9KWBdOiBbLi4udmFsLmVud
15HJpZXMoKV0ucmVkdWNlKFxuICAgICAgICAoZW50cmllcywgW2tleSwgdmFsMl0sIGkpID0+IHtcbiAgICAgICAgICBlbnRyaWVzW3N0cmluZ2lmeVN5bWJvbChrZXksIGkpICsgXCIgPT5cIl0gPSB2YWwyO1xuICAgICAgICAgIHJldHVybiBlbnRyaWVzO1xuICAgICAgICB9LFxuICAgICAgICB7fVxuICAgICAgKVxuICAgIH07XG4gIH0gZWxzZSBpZiAoaXNTZXQodmFsKSkge1xuICAgIHJldHVybiB7XG4gICAgICBbYFNldCgke3ZhbC5zaXplfSlgXTogWy4uLnZhbC52YWx1ZXMoKV0ubWFwKCh2KSA9PiBzdHJpbmdpZnlTeW1ib2wodikpXG4gICAgfTtcbiAgfSBlbHNlIGlmIChpc1N5bWJvbCh2YWwpKSB7XG4gICAgcmV0dXJuIHN0cmluZ2lmeVN5bWJvbCh2YWwpO1xuICB9IGVsc2UgaWYgKGlzT2JqZWN0KHZhbCkgJiYgIWlzQXJyYXkodmFsKSAmJiAhaXNQbGFpbk9iamVjdCh2YWwpKSB7XG4gICAgcmV0dXJuIFN0cmluZyh2YWwpO1xuICB9XG4gIHJldHVybiB2YWw7XG59O1xuY29uc3Qgc3RyaW5naWZ5U3ltYm9sID0gKHYsIGkgPSBcIlwiKSA9PiB7XG4gIHZhciBfYTtcbiAgcmV0dXJuIChcbiAgICAvLyBTeW1ib2wuZGVzY3JpcHRpb24gaW4gZXMyMDE5KyBzbyB3ZSBuZWVkIHRvIGNhc3QgaGVyZSB0byBwYXNzXG4gICAgLy8gdGhlIGxpYjogZXMyMDE2IGNoZWNrXG4gICAgaXNTeW1ib2wodikgPyBgU3ltYm9sKCR7KF9hID0gdi5kZXNjcmlwdGlvbikgIT0gbnVsbCA/IF9hIDogaX0pYCA6IHZcbiAgKTtcbn07XG5cbmV4cG9ydCB7IEVNUFRZX0FSUiwgRU1QVFlfT0JKLCBOTywgTk9PUCwgUGF0Y2hGbGFnTmFtZXMsIFBhdGNoRmxhZ3MsIFNoYXBlRmxhZ3MsIFNsb3RGbGFncywgY2FtZWxpemUsIGNhcGl0YWxpemUsIGRlZiwgZXNjYXBlSHRtbCwgZXNjYXBlSHRtbENvbW1lbnQsIGV4dGVuZCwgZ2VuUHJvcHNBY2Nlc3NFeHAsIGdlbmVyYXRlQ29kZUZyYW1lLCBnZXRHbG9iYWxUaGlzLCBoYXNDaGFuZ2VkLCBoYXNPd24sIGh5cGhlbmF0ZSwgaW5jbHVkZUJvb2xlYW5BdHRyLCBpbnZva2VBcnJheUZucywgaXNBcnJheSwgaXNCb29sZWFuQXR0ciwgaXNCdWlsdEluRGlyZWN0aXZlLCBpc0RhdGUsIGlzRnVuY3Rpb24sIGlzR2xvYmFsbHlBbGxvd2VkLCBpc0dsb2JhbGx5V2hpdGVsaXN0ZWQsIGlzSFRNTFRhZywgaXNJbnRlZ2VyS2V5LCBpc0tub3duSHRtbEF0dHIsIGlzS25vd25TdmdBdHRyLCBpc01hcCwgaXNNYXRoTUxUYWcsIGlzTW9kZWxMaXN0ZW5lciwgaXNPYmplY3QsIGlzT24sIGlzUGxhaW5PYmplY3QsIGlzUHJvbWlzZSwgaXNSZWdFeHAsIGlzUmVuZGVyYWJsZUF0dHJWYWx1ZSwgaXNSZXNlcnZlZFByb3AsIGlzU1NSU2FmZUF0dHJOYW1lLCBpc1NWR1RhZywgaXNTZXQsIGlzU3BlY2lhbEJvb2xlYW5BdHRyLCBpc1N0cmluZywgaXNTeW1ib2wsIGlzVm9pZFRhZywgbG9vc2VFcXVhbCwgbG9vc2VJbmRleE9mLCBsb29zZVRvTnVtYmVyLCBtYWtlTWFwLCBub3JtYWxpemVDbGFzcywgbm9ybWFsaXplUHJvcHMsIG5vcm1hbGl6ZVN0eWxlLCBvYmplY3RUb1N0cmluZywgcGFyc2VTdHJpbmdTdHlsZSwgcHJvcHNUb0F0dHJNYXAsIHJlbW92ZSwgc2xvdEZsYWdzVGV4dCwgc3RyaW5naWZ5U3R5bGUsIHRvRGlzcGxheVN0cmluZywgdG9IYW5kbGVyS2V5LCB0b051bWJlciwgdG9SYXdUeXBlLCB0b1R5cGVTdHJpbmcgfTtcbiIsIi8qKlxuKiBAdnVlL3JlYWN0aXZpdHkgdjMuNC4zOFxuKiAoYykgMjAxOC1wcmVzZW50IFl1eGkgKEV2YW4pIFlvdSBhbmQgVnVlIGNvbnRyaWJ1dG9yc1xuKiBAbGljZW5zZSBNSVRcbioqL1xuaW1wb3J0IHsgTk9PUCwgZXh0ZW5kLCBpc0FycmF5LCBpc1N5bWJvbCwgaXNNYXAsIGlzSW50ZWdlcktleSwgaGFzT3duLCBoYXNDaGFuZ2VkLCBpc09iamVjdCwgbWFrZU1hcCwgY2FwaXRhbGl6ZSwgdG9SYXdUeXBlLCBkZWYsIGlzRnVuY3Rpb24gfSBmcm9tICdAdnVlL3NoYXJlZCc7XG5cbmZ1bmN0aW9uIHdhcm4obXNnLCAuLi5hcmdzKSB7XG4gIGNvbnNvbGUud2FybihgW1Z1ZSB3YXJuXSAke21zZ31gLCAuLi5hcmdzKTtcbn1cblxubGV0IGFjdGl2ZUVmZmVjdFNjb3BlO1xuY2xhc3MgRWZmZWN0U2NvcGUge1xuICBjb25zdHJ1Y3RvcihkZXRhY2hlZCA9IGZhbHNlKSB7XG4gICAgdGhpcy5kZXRhY2hlZCA9IGRldGFjaGVkO1xuICAgIC8qKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHRoaXMuX2FjdGl2ZSA9IHRydWU7XG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgdGhpcy5lZmZlY3RzID0gW107XG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgdGhpcy5jbGVhbnVwcyA9IFtdO1xuICAgIHRoaXMucGFyZW50ID0gYWN0aXZlRWZmZWN0U2NvcGU7XG4gICAgaWYgKCFkZXRhY2hlZCAmJiBhY3RpdmVFZmZlY3RTY29wZSkge1xuICAgICAgdGhpcy5pbmRleCA9IChhY3RpdmVFZmZlY3RTY29wZS5zY29wZXMgfHwgKGFjdGl2ZUVmZmVjdFNjb3BlLnNjb3BlcyA9IFtdKSkucHVzaChcbiAgICAgICAgdGhpc1xuICAgICAgKSAtIDE7XG4gICAgfVxuICB9XG4gIGdldCBhY3RpdmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZTtcbiAgfVxuICBydW4oZm4pIHtcbiAgICBpZiAodGhpcy5fYWN0aXZlKSB7XG4gICAgICBjb25zdCBjdXJyZW50RWZmZWN0U2NvcGUgPSBhY3RpdmVFZmZlY3RTY29wZTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGFjdGl2ZUVmZmVjdFNjb3BlID0gdGhpcztcbiAgICAgICAgcmV0dXJuIGZuKCk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBhY3RpdmVFZmZlY3RTY29wZSA9IGN1cnJlbnRFZmZlY3RTY29wZTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikpIHtcbiAgICAgIHdhcm4oYGNhbm5vdCBydW4gYW4gaW5hY3RpdmUgZWZmZWN0IHNjb3BlLmApO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogVGhpcyBzaG91bGQgb25seSBiZSBjYWxsZWQgb24gbm9uLWRldGFjaGVkIHNjb3Blc1xuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG9uKCkge1xuICAgIGFjdGl2ZUVmZmVjdFNjb3BlID0gdGhpcztcbiAgfVxuICAvKipcbiAgICogVGhpcyBzaG91bGQgb25seSBiZSBjYWxsZWQgb24gbm9uLWRldGFjaGVkIHNjb3Blc1xuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG9mZigpIHtcbiAgICBhY3RpdmVFZmZlY3RTY29wZSA9IHRoaXMucGFyZW50O1xuICB9XG4gI
15HN0b3AoZnJvbVBhcmVudCkge1xuICAgIGlmICh0aGlzLl9hY3RpdmUpIHtcbiAgICAgIGxldCBpLCBsO1xuICAgICAgZm9yIChpID0gMCwgbCA9IHRoaXMuZWZmZWN0cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgdGhpcy5lZmZlY3RzW2ldLnN0b3AoKTtcbiAgICAgIH1cbiAgICAgIGZvciAoaSA9IDAsIGwgPSB0aGlzLmNsZWFudXBzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICB0aGlzLmNsZWFudXBzW2ldKCk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5zY29wZXMpIHtcbiAgICAgICAgZm9yIChpID0gMCwgbCA9IHRoaXMuc2NvcGVzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgIHRoaXMuc2NvcGVzW2ldLnN0b3AodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5kZXRhY2hlZCAmJiB0aGlzLnBhcmVudCAmJiAhZnJvbVBhcmVudCkge1xuICAgICAgICBjb25zdCBsYXN0ID0gdGhpcy5wYXJlbnQuc2NvcGVzLnBvcCgpO1xuICAgICAgICBpZiAobGFzdCAmJiBsYXN0ICE9PSB0aGlzKSB7XG4gICAgICAgICAgdGhpcy5wYXJlbnQuc2NvcGVzW3RoaXMuaW5kZXhdID0gbGFzdDtcbiAgICAgICAgICBsYXN0LmluZGV4ID0gdGhpcy5pbmRleDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5wYXJlbnQgPSB2b2lkIDA7XG4gICAgICB0aGlzLl9hY3RpdmUgPSBmYWxzZTtcbiAgICB9XG4gIH1cbn1cbmZ1bmN0aW9uIGVmZmVjdFNjb3BlKGRldGFjaGVkKSB7XG4gIHJldHVybiBuZXcgRWZmZWN0U2NvcGUoZGV0YWNoZWQpO1xufVxuZnVuY3Rpb24gcmVjb3JkRWZmZWN0U2NvcGUoZWZmZWN0LCBzY29wZSA9IGFjdGl2ZUVmZmVjdFNjb3BlKSB7XG4gIGlmIChzY29wZSAmJiBzY29wZS5hY3RpdmUpIHtcbiAgICBzY29wZS5lZmZlY3RzLnB1c2goZWZmZWN0KTtcbiAgfVxufVxuZnVuY3Rpb24gZ2V0Q3VycmVudFNjb3BlKCkge1xuICByZXR1cm4gYWN0aXZlRWZmZWN0U2NvcGU7XG59XG5mdW5jdGlvbiBvblNjb3BlRGlzcG9zZShmbikge1xuICBpZiAoYWN0aXZlRWZmZWN0U2NvcGUpIHtcbiAgICBhY3RpdmVFZmZlY3RTY29wZS5jbGVhbnVwcy5wdXNoKGZuKTtcbiAgfSBlbHNlIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpKSB7XG4gICAgd2FybihcbiAgICAgIGBvblNjb3BlRGlzcG9zZSgpIGlzIGNhbGxlZCB3aGVuIHRoZXJlIGlzIG5vIGFjdGl2ZSBlZmZlY3Qgc2NvcGUgdG8gYmUgYXNzb2NpYXRlZCB3aXRoLmBcbiAgICApO1xuICB9XG59XG5cbmxldCBhY3RpdmVFZmZlY3Q7XG5jbGFzcyBSZWFjdGl2ZUVmZmVjdCB7XG4gIGNvbnN0cnVjdG9yKGZuLCB0cmlnZ2VyLCBzY2hlZHVsZXIsIHNjb3BlKSB7XG4gICAgdGhpcy5mbiA9IGZuO1xuICAgIHRoaXMudHJpZ2dlciA9IHRyaWdnZXI7XG4gICAgdGhpcy5zY2hlZHVsZXIgPSBzY2hlZHVsZXI7XG4gICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xuICAgIHRoaXMuZGVwcyA9IFtdO1xuICAgIC8qKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHRoaXMuX2RpcnR5TGV2ZWwgPSA0O1xuICAgIC8qKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHRoaXMuX3RyYWNrSWQgPSAwO1xuICAgIC8qKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHRoaXMuX3J1bm5pbmdzID0gMDtcbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICB0aGlzLl9zaG91bGRTY2hlZHVsZSA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHRoaXMuX2RlcHNMZW5ndGggPSAwO1xuICAgIHJlY29yZEVmZmVjdFNjb3BlKHRoaXMsIHNjb3BlKTtcbiAgfVxuICBnZXQgZGlydHkoKSB7XG4gICAgaWYgKHRoaXMuX2RpcnR5TGV2ZWwgPT09IDIgfHwgdGhpcy5fZGlydHlMZXZlbCA9PT0gMykge1xuICAgICAgdGhpcy5fZGlydHlMZXZlbCA9IDE7XG4gICAgICBwYXVzZVRyYWNraW5nKCk7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX2RlcHNMZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBkZXAgPSB0aGlzLmRlcHNbaV07XG4gICAgICAgIGlmIChkZXAuY29tcHV0ZWQpIHtcbiAgICAgICAgICB0cmlnZ2VyQ29tcHV0ZWQoZGVwLmNvbXB1dGVkKTtcbiAgICAgICAgICBpZiAodGhpcy5fZGlydHlMZXZlbCA+PSA0KSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLl9kaXJ0eUxldmVsID09PSAxKSB7XG4gICAgICAgIHRoaXMuX2RpcnR5TGV2ZWwgPSAwO1xuICAgICAgfVxuICAgICAgcmVzZXRUcmFja2luZygpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fZGlydHlMZXZlbCA+PSA0O1xuICB9XG4gIHNldCBkaXJ0eSh2KSB7XG4gICAgdGhpcy5fZGlydHlMZXZlbCA9IHYgPyA0IDogMDtcbiAgfVxuICBydW4oKSB7XG4gICAgdGhpcy5fZGlydHlMZXZlbCA9IDA7XG4gICAgaWYgKCF0aGlzLmFjdGl2ZSkge1xuICAgICAgcmV0dXJuIHRoaXMuZm4oKTtcbiAgICB9XG4gICAgbGV0IGxhc3RTaG91bGRUcmFjayA9IHNob3VsZFRyYWNrO1xuICAgIGxldCBsYXN0RWZmZWN0ID0gYWN0aXZlRWZmZWN0O1xuICAgIHRyeSB7XG4gICAgICBzaG91bGRUcmFjayA9IHRydWU7XG4gICAgICBhY3RpdmVFZmZlY3QgPSB0aGlzO1xuICAgICAgdGhpcy5fcnVubmluZ3MrKztcbiAgICAgIHByZUNsZWFudXBFZmZlY3QodGhpcyk7XG4gICAgICByZXR1cm4gdGhpcy5mbigpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBwb3N0Q2xlYW51cEVmZmVjdCh0aGlzKTtcbiAgICAgIHRoaXMuX3J1bm5pbmdzLS07XG4gICAgICBhY3RpdmVFZmZlY3QgPSBsYXN0RWZmZWN0O1xuICAgICAgc2hvdWxkVHJhY2sgPSBsYXN0U2hvdWxkVHJhY2s7XG4gICAgfVxuICB9XG4gIHN0b3AoKSB7XG4gICAgaWYgKHRoaXMuYWN0aXZlKSB7XG4gICAgICBwcmVDbGVhbnVwRWZmZWN0KHRoaXMpO1xuICAgICAgcG9zdENsZWFudXBFZmZlY3QodGhpcyk7XG4gICAgICB0aGlzLm9uU3RvcCAmJiB0aGlzLm9uU3RvcCgpO1xuICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcbiAgICB9XG4gI
15H1cbn1cbmZ1bmN0aW9uIHRyaWdnZXJDb21wdXRlZChjb21wdXRlZCkge1xuICByZXR1cm4gY29tcHV0ZWQudmFsdWU7XG59XG5mdW5jdGlvbiBwcmVDbGVhbnVwRWZmZWN0KGVmZmVjdDIpIHtcbiAgZWZmZWN0Mi5fdHJhY2tJZCsrO1xuICBlZmZlY3QyLl9kZXBzTGVuZ3RoID0gMDtcbn1cbmZ1bmN0aW9uIHBvc3RDbGVhbnVwRWZmZWN0KGVmZmVjdDIpIHtcbiAgaWYgKGVmZmVjdDIuZGVwcy5sZW5ndGggPiBlZmZlY3QyLl9kZXBzTGVuZ3RoKSB7XG4gICAgZm9yIChsZXQgaSA9IGVmZmVjdDIuX2RlcHNMZW5ndGg7IGkgPCBlZmZlY3QyLmRlcHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNsZWFudXBEZXBFZmZlY3QoZWZmZWN0Mi5kZXBzW2ldLCBlZmZlY3QyKTtcbiAgICB9XG4gICAgZWZmZWN0Mi5kZXBzLmxlbmd0aCA9IGVmZmVjdDIuX2RlcHNMZW5ndGg7XG4gIH1cbn1cbmZ1bmN0aW9uIGNsZWFudXBEZXBFZmZlY3QoZGVwLCBlZmZlY3QyKSB7XG4gIGNvbnN0IHRyYWNrSWQgPSBkZXAuZ2V0KGVmZmVjdDIpO1xuICBpZiAodHJhY2tJZCAhPT0gdm9pZCAwICYmIGVmZmVjdDIuX3RyYWNrSWQgIT09IHRyYWNrSWQpIHtcbiAgICBkZXAuZGVsZXRlKGVmZmVjdDIpO1xuICAgIGlmIChkZXAuc2l6ZSA9PT0gMCkge1xuICAgICAgZGVwLmNsZWFudXAoKTtcbiAgICB9XG4gIH1cbn1cbmZ1bmN0aW9uIGVmZmVjdChmbiwgb3B0aW9ucykge1xuICBpZiAoZm4uZWZmZWN0IGluc3RhbmNlb2YgUmVhY3RpdmVFZmZlY3QpIHtcbiAgICBmbiA9IGZuLmVmZmVjdC5mbjtcbiAgfVxuICBjb25zdCBfZWZmZWN0ID0gbmV3IFJlYWN0aXZlRWZmZWN0KGZuLCBOT09QLCAoKSA9PiB7XG4gICAgaWYgKF9lZmZlY3QuZGlydHkpIHtcbiAgICAgIF9lZmZlY3QucnVuKCk7XG4gICAgfVxuICB9KTtcbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBleHRlbmQoX2VmZmVjdCwgb3B0aW9ucyk7XG4gICAgaWYgKG9wdGlvbnMuc2NvcGUpIHJlY29yZEVmZmVjdFNjb3BlKF9lZmZlY3QsIG9wdGlvbnMuc2NvcGUpO1xuICB9XG4gIGlmICghb3B0aW9ucyB8fCAhb3B0aW9ucy5sYXp5KSB7XG4gICAgX2VmZmVjdC5ydW4oKTtcbiAgfVxuICBjb25zdCBydW5uZXIgPSBfZWZmZWN0LnJ1bi5iaW5kKF9lZmZlY3QpO1xuICBydW5uZXIuZWZmZWN0ID0gX2VmZmVjdDtcbiAgcmV0dXJuIHJ1bm5lcjtcbn1cbmZ1bmN0aW9uIHN0b3AocnVubmVyKSB7XG4gIHJ1bm5lci5lZmZlY3Quc3RvcCgpO1xufVxubGV0IHNob3VsZFRyYWNrID0gdHJ1ZTtcbmxldCBwYXVzZVNjaGVkdWxlU3RhY2sgPSAwO1xuY29uc3QgdHJhY2tTdGFjayA9IFtdO1xuZnVuY3Rpb24gcGF1c2VUcmFja2luZygpIHtcbiAgdHJhY2tTdGFjay5wdXNoKHNob3VsZFRyYWNrKTtcbiAgc2hvdWxkVHJhY2sgPSBmYWxzZTtcbn1cbmZ1bmN0aW9uIGVuYWJsZVRyYWNraW5nKCkge1xuICB0cmFja1N0YWNrLnB1c2goc2hvdWxkVHJhY2spO1xuICBzaG91bGRUcmFjayA9IHRydWU7XG59XG5mdW5jdGlvbiByZXNldFRyYWNraW5nKCkge1xuICBjb25zdCBsYXN0ID0gdHJhY2tTdGFjay5wb3AoKTtcbiAgc2hvdWxkVHJhY2sgPSBsYXN0ID09PSB2b2lkIDAgPyB0cnVlIDogbGFzdDtcbn1cbmZ1bmN0aW9uIHBhdXNlU2NoZWR1bGluZygpIHtcbiAgcGF1c2VTY2hlZHVsZVN0YWNrKys7XG59XG5mdW5jdGlvbiByZXNldFNjaGVkdWxpbmcoKSB7XG4gIHBhdXNlU2NoZWR1bGVTdGFjay0tO1xuICB3aGlsZSAoIXBhdXNlU2NoZWR1bGVTdGFjayAmJiBxdWV1ZUVmZmVjdFNjaGVkdWxlcnMubGVuZ3RoKSB7XG4gICAgcXVldWVFZmZlY3RTY2hlZHVsZXJzLnNoaWZ0KCkoKTtcbiAgfVxufVxuZnVuY3Rpb24gdHJhY2tFZmZlY3QoZWZmZWN0MiwgZGVwLCBkZWJ1Z2dlckV2ZW50RXh0cmFJbmZvKSB7XG4gIHZhciBfYTtcbiAgaWYgKGRlcC5nZXQoZWZmZWN0MikgIT09IGVmZmVjdDIuX3RyYWNrSWQpIHtcbiAgICBkZXAuc2V0KGVmZmVjdDIsIGVmZmVjdDIuX3RyYWNrSWQpO1xuICAgIGNvbnN0IG9sZERlcCA9IGVmZmVjdDIuZGVwc1tlZmZlY3QyLl9kZXBzTGVuZ3RoXTtcbiAgICBpZiAob2xkRGVwICE9PSBkZXApIHtcbiAgICAgIGlmIChvbGREZXApIHtcbiAgICAgICAgY2xlYW51cERlcEVmZmVjdChvbGREZXAsIGVmZmVjdDIpO1xuICAgICAgfVxuICAgICAgZWZmZWN0Mi5kZXBzW2VmZmVjdDIuX2RlcHNMZW5ndGgrK10gPSBkZXA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVmZmVjdDIuX2RlcHNMZW5ndGgrKztcbiAgICB9XG4gICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikpIHtcbiAgICAgIChfYSA9IGVmZmVjdDIub25UcmFjaykgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmNhbGwoZWZmZWN0MiwgZXh0ZW5kKHsgZWZmZWN0OiBlZmZlY3QyIH0sIGRlYnVnZ2VyRXZlbnRFeHRyYUluZm8pKTtcbiAgICB9XG4gIH1cbn1cbmNvbnN0IHF1ZXVlRWZmZWN0U2NoZWR1bGVycyA9IFtdO1xuZnVuY3Rpb24gdHJpZ2dlckVmZmVjdHMoZGVwLCBkaXJ0eUxldmVsLCBkZWJ1Z2dlckV2ZW50RXh0cmFJbmZvKSB7XG4gIHZhciBfYTtcbiAgcGF1c2VTY2hlZHVsaW5nKCk7XG4gIGZvciAoY29uc3QgZWZmZWN0MiBvZiBkZXAua2V5cygpKSB7XG4gICAgbGV0IHRyYWNraW5nO1xuICAgIGlmIChlZmZlY3QyLl9kaXJ0eUxldmVsIDwgZGlydHlMZXZlbCAmJiAodHJhY2tpbmcgIT0gbnVsbCA/IHRyYWNraW5nIDogdHJhY2tpbmcgPSBkZXAuZ2V0KGVmZmVjdDIpID09PSBlZmZlY3QyLl90cmFja0lkKSkge1xuICAgICAgZWZmZWN0Mi5fc2hvdWxkU2NoZWR1bGUgfHwgKGVmZmVjdDIuX3Nob3VsZFNjaGVkdWxlID0gZWZmZWN0Mi5fZGlydHlMZXZlbCA9PT0gMCk7XG4gICAgICBlZmZlY3QyLl9kaXJ0eUxldmVsID0gZGlydHlMZXZlbDtcbiAgICB9XG4gICAgaWYgKGVmZmVjdDIuX3Nob3VsZFNjaGVkdWxlICYmICh0cmFja2luZyAhPSBudWxsID8gdHJhY2tpbmcgOiB0cmFja2luZyA9IGRlcC5nZXQoZWZmZWN0MikgPT09IGVmZmVjdDIuX3RyYWNrSWQpKSB7XG4gICAgICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSkge1xuICAgICAgICAoX2EgPSBlZmZlY3QyLm9uVHJpZ2dlcikgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmNhbGwoZWZmZWN0MiwgZXh0ZW5kKHsgZWZmZWN0OiBlZmZlY3QyIH0sIGRlYnVnZ2VyRXZlbnRFeHRyYUluZm8pKTtcbiAgICAgIH1cbiAgICAgIGVmZmVjdDIudHJpZ2dlcigpO1xuICAgICAgaWYgKCghZWZmZWN0Mi5fcnVubmluZ3MgfHwgZWZmZWN0Mi5hbGxvd1JlY3Vyc2UpICYmIGVmZmVjdDIuX2RpcnR5TGV2ZWwgIT09IDIpIHtcbiAgICAgICAgZWZmZWN0Mi5fc2hvdWxkU2NoZWR1bGUgPSBmYWxzZTtcbiAgICAgICAgaWYgKGVmZmVjdDIuc2NoZWR1bGVyKSB7XG4gICAgICAgICAgcXVldWVFZmZlY3RTY2hlZHVsZXJzLnB1c2goZWZmZWN0Mi5zY2hlZHVsZXIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gI
15HJlc2V0U2NoZWR1bGluZygpO1xufVxuXG5jb25zdCBjcmVhdGVEZXAgPSAoY2xlYW51cCwgY29tcHV0ZWQpID0+IHtcbiAgY29uc3QgZGVwID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbiAgZGVwLmNsZWFudXAgPSBjbGVhbnVwO1xuICBkZXAuY29tcHV0ZWQgPSBjb21wdXRlZDtcbiAgcmV0dXJuIGRlcDtcbn07XG5cbmNvbnN0IHRhcmdldE1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgV2Vha01hcCgpO1xuY29uc3QgSVRFUkFURV9LRVkgPSBTeW1ib2woISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSA/IFwiaXRlcmF0ZVwiIDogXCJcIik7XG5jb25zdCBNQVBfS0VZX0lURVJBVEVfS0VZID0gU3ltYm9sKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgPyBcIk1hcCBrZXkgaXRlcmF0ZVwiIDogXCJcIik7XG5mdW5jdGlvbiB0cmFjayh0YXJnZXQsIHR5cGUsIGtleSkge1xuICBpZiAoc2hvdWxkVHJhY2sgJiYgYWN0aXZlRWZmZWN0KSB7XG4gICAgbGV0IGRlcHNNYXAgPSB0YXJnZXRNYXAuZ2V0KHRhcmdldCk7XG4gICAgaWYgKCFkZXBzTWFwKSB7XG4gICAgICB0YXJnZXRNYXAuc2V0KHRhcmdldCwgZGVwc01hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCkpO1xuICAgIH1cbiAgICBsZXQgZGVwID0gZGVwc01hcC5nZXQoa2V5KTtcbiAgICBpZiAoIWRlcCkge1xuICAgICAgZGVwc01hcC5zZXQoa2V5LCBkZXAgPSBjcmVhdGVEZXAoKCkgPT4gZGVwc01hcC5kZWxldGUoa2V5KSkpO1xuICAgIH1cbiAgICB0cmFja0VmZmVjdChcbiAgICAgIGFjdGl2ZUVmZmVjdCxcbiAgICAgIGRlcCxcbiAgICAgICEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgPyB7XG4gICAgICAgIHRhcmdldCxcbiAgICAgICAgdHlwZSxcbiAgICAgICAga2V5XG4gICAgICB9IDogdm9pZCAwXG4gICAgKTtcbiAgfVxufVxuZnVuY3Rpb24gdHJpZ2dlcih0YXJnZXQsIHR5cGUsIGtleSwgbmV3VmFsdWUsIG9sZFZhbHVlLCBvbGRUYXJnZXQpIHtcbiAgY29uc3QgZGVwc01hcCA9IHRhcmdldE1hcC5nZXQodGFyZ2V0KTtcbiAgaWYgKCFkZXBzTWFwKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGxldCBkZXBzID0gW107XG4gIGlmICh0eXBlID09PSBcImNsZWFyXCIpIHtcbiAgICBkZXBzID0gWy4uLmRlcHNNYXAudmFsdWVzKCldO1xuICB9IGVsc2UgaWYgKGtleSA9PT0gXCJsZW5ndGhcIiAmJiBpc0FycmF5KHRhcmdldCkpIHtcbiAgICBjb25zdCBuZXdMZW5ndGggPSBOdW1iZXIobmV3VmFsdWUpO1xuICAgIGRlcHNNYXAuZm9yRWFjaCgoZGVwLCBrZXkyKSA9PiB7XG4gICAgICBpZiAoa2V5MiA9PT0gXCJsZW5ndGhcIiB8fCAhaXNTeW1ib2woa2V5MikgJiYga2V5MiA+PSBuZXdMZW5ndGgpIHtcbiAgICAgICAgZGVwcy5wdXNoKGRlcCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKGtleSAhPT0gdm9pZCAwKSB7XG4gICAgICBkZXBzLnB1c2goZGVwc01hcC5nZXQoa2V5KSk7XG4gICAgfVxuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBcImFkZFwiOlxuICAgICAgICBpZiAoIWlzQXJyYXkodGFyZ2V0KSkge1xuICAgICAgICAgIGRlcHMucHVzaChkZXBzTWFwLmdldChJVEVSQVRFX0tFWSkpO1xuICAgICAgICAgIGlmIChpc01hcCh0YXJnZXQpKSB7XG4gICAgICAgICAgICBkZXBzLnB1c2goZGVwc01hcC5nZXQoTUFQX0tFWV9JVEVSQVRFX0tFWSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChpc0ludGVnZXJLZXkoa2V5KSkge1xuICAgICAgICAgIGRlcHMucHVzaChkZXBzTWFwLmdldChcImxlbmd0aFwiKSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiZGVsZXRlXCI6XG4gICAgICAgIGlmICghaXNBcnJheSh0YXJnZXQpKSB7XG4gICAgICAgICAgZGVwcy5wdXNoKGRlcHNNYXAuZ2V0KElURVJBVEVfS0VZKSk7XG4gICAgICAgICAgaWYgKGlzTWFwKHRhcmdldCkpIHtcbiAgICAgICAgICAgIGRlcHMucHVzaChkZXBzTWFwLmdldChNQVBfS0VZX0lURVJBVEVfS0VZKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInNldFwiOlxuICAgICAgICBpZiAoaXNNYXAodGFyZ2V0KSkge1xuICAgICAgICAgIGRlcHMucHVzaChkZXBzTWFwLmdldChJVEVSQVRFX0tFWSkpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICBwYXVzZVNjaGVkdWxpbmcoKTtcbiAgZm9yIChjb25zdCBkZXAgb2YgZGVwcykge1xuICAgIGlmIChkZXApIHtcbiAgICAgIHRyaWdnZXJFZmZlY3RzKFxuICAgICAgICBkZXAsXG4gICAgICAgIDQsXG4gICAgICAgICEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgPyB7XG4gICAgICAgICAgdGFyZ2V0LFxuICAgICAgICAgIHR5cGUsXG4gICAgICAgICAga2V5LFxuICAgICAgICAgIG5ld1ZhbHVlLFxuICAgICAgICAgIG9sZFZhbHVlLFxuICAgICAgICAgIG9sZFRhcmdldFxuICAgICAgICB9IDogdm9pZCAwXG4gICAgICApO1xuICAgIH1cbiAgfVxuICByZXNldFNjaGVkdWxpbmcoKTtcbn1cbmZ1bmN0aW9uIGdldERlcEZyb21SZWFjdGl2ZShvYmplY3QsIGtleSkge1xuICBjb25zdCBkZXBzTWFwID0gdGFyZ2V0TWFwLmdldChvYmplY3QpO1xuICByZXR1cm4gZGVwc01hcCAmJiBkZXBzTWFwLmdldChrZXkpO1xufVxuXG5jb25zdCBpc05vblRyYWNrYWJsZUtleXMgPSAvKiBAX19QVVJFX18gKi8gbWFrZU1hcChgX19wcm90b19fLF9fdl9pc1JlZixfX2lzVnVlYCk7XG5jb25zdCBidWlsdEluU3ltYm9scyA9IG5ldyBTZXQoXG4gIC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhTeW1ib2wpLmZpbHRlcigoa2V5KSA9PiBrZXkgIT09IFwiYXJndW1lbnRzXCIgJiYga2V5ICE9PSBcImNhbGxlclwiKS5tYXAoKGtleSkgPT4gU3ltYm9sW2tleV0pLmZpbHRlcihpc1N5bWJvbClcbik7XG5jb25zdCBhcnJheUluc3RydW1lbnRhdGlvbnMgPSAvKiBAX19QVVJFX18gKi8gY3JlYXRlQXJyYXlJbnN0cnVtZW50YXRpb25zKCk7XG5mdW5jdGlvbiBjcmVhdGVBcnJheUluc3RydW1lbnRhdGlvbnMoKSB7XG4gIGNvbnN0IGluc3RydW1lbnRhdGlvbnMgPSB7fTtcbiAgW1wiaW5jbHVkZXNcIiwgXCJpbmRleE9mXCIsIFwibGFzdEluZGV4T2ZcIl0uZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgaW5zdHJ1bWVudGF0aW9uc1trZXldID0gZnVuY3Rpb24oLi4uYXJncykge1xuICAgICAgY29uc3QgYXJyID0gdG9SYXcodGhpcyk7XG4gICAgICBmb3IgKGxldCBpID0gMCwgbCA9IHRoaXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgI
15HRyYWNrKGFyciwgXCJnZXRcIiwgaSArIFwiXCIpO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVzID0gYXJyW2tleV0oLi4uYXJncyk7XG4gICAgICBpZiAocmVzID09PSAtMSB8fCByZXMgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiBhcnJba2V5XSguLi5hcmdzLm1hcCh0b1JhdykpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgIH1cbiAgICB9O1xuICB9KTtcbiAgW1wicHVzaFwiLCBcInBvcFwiLCBcInNoaWZ0XCIsIFwidW5zaGlmdFwiLCBcInNwbGljZVwiXS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICBpbnN0cnVtZW50YXRpb25zW2tleV0gPSBmdW5jdGlvbiguLi5hcmdzKSB7XG4gICAgICBwYXVzZVRyYWNraW5nKCk7XG4gICAgICBwYXVzZVNjaGVkdWxpbmcoKTtcbiAgICAgIGNvbnN0IHJlcyA9IHRvUmF3KHRoaXMpW2tleV0uYXBwbHkodGhpcywgYXJncyk7XG4gICAgICByZXNldFNjaGVkdWxpbmcoKTtcbiAgICAgIHJlc2V0VHJhY2tpbmcoKTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfTtcbiAgfSk7XG4gIHJldHVybiBpbnN0cnVtZW50YXRpb25zO1xufVxuZnVuY3Rpb24gaGFzT3duUHJvcGVydHkoa2V5KSB7XG4gIGlmICghaXNTeW1ib2woa2V5KSkga2V5ID0gU3RyaW5nKGtleSk7XG4gIGNvbnN0IG9iaiA9IHRvUmF3KHRoaXMpO1xuICB0cmFjayhvYmosIFwiaGFzXCIsIGtleSk7XG4gIHJldHVybiBvYmouaGFzT3duUHJvcGVydHkoa2V5KTtcbn1cbmNsYXNzIEJhc2VSZWFjdGl2ZUhhbmRsZXIge1xuICBjb25zdHJ1Y3RvcihfaXNSZWFkb25seSA9IGZhbHNlLCBfaXNTaGFsbG93ID0gZmFsc2UpIHtcbiAgICB0aGlzLl9pc1JlYWRvbmx5ID0gX2lzUmVhZG9ubHk7XG4gICAgdGhpcy5faXNTaGFsbG93ID0gX2lzU2hhbGxvdztcbiAgfVxuICBnZXQodGFyZ2V0LCBrZXksIHJlY2VpdmVyKSB7XG4gICAgY29uc3QgaXNSZWFkb25seTIgPSB0aGlzLl9pc1JlYWRvbmx5LCBpc1NoYWxsb3cyID0gdGhpcy5faXNTaGFsbG93O1xuICAgIGlmIChrZXkgPT09IFwiX192X2lzUmVhY3RpdmVcIikge1xuICAgICAgcmV0dXJuICFpc1JlYWRvbmx5MjtcbiAgICB9IGVsc2UgaWYgKGtleSA9PT0gXCJfX3ZfaXNSZWFkb25seVwiKSB7XG4gICAgICByZXR1cm4gaXNSZWFkb25seTI7XG4gICAgfSBlbHNlIGlmIChrZXkgPT09IFwiX192X2lzU2hhbGxvd1wiKSB7XG4gICAgICByZXR1cm4gaXNTaGFsbG93MjtcbiAgICB9IGVsc2UgaWYgKGtleSA9PT0gXCJfX3ZfcmF3XCIpIHtcbiAgICAgIGlmIChyZWNlaXZlciA9PT0gKGlzUmVhZG9ubHkyID8gaXNTaGFsbG93MiA/IHNoYWxsb3dSZWFkb25seU1hcCA6IHJlYWRvbmx5TWFwIDogaXNTaGFsbG93MiA/IHNoYWxsb3dSZWFjdGl2ZU1hcCA6IHJlYWN0aXZlTWFwKS5nZXQodGFyZ2V0KSB8fCAvLyByZWNlaXZlciBpcyBub3QgdGhlIHJlYWN0aXZlIHByb3h5LCBidXQgaGFzIHRoZSBzYW1lIHByb3RvdHlwZVxuICAgICAgLy8gdGhpcyBtZWFucyB0aGUgcmVjZWl2ZXIgaXMgYSB1c2VyIHByb3h5IG9mIHRoZSByZWFjdGl2ZSBwcm94eVxuICAgICAgT2JqZWN0LmdldFByb3RvdHlwZU9mKHRhcmdldCkgPT09IE9iamVjdC5nZXRQcm90b3R5cGVPZihyZWNlaXZlcikpIHtcbiAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgdGFyZ2V0SXNBcnJheSA9IGlzQXJyYXkodGFyZ2V0KTtcbiAgICBpZiAoIWlzUmVhZG9ubHkyKSB7XG4gICAgICBpZiAodGFyZ2V0SXNBcnJheSAmJiBoYXNPd24oYXJyYXlJbnN0cnVtZW50YXRpb25zLCBrZXkpKSB7XG4gICAgICAgIHJldHVybiBSZWZsZWN0LmdldChhcnJheUluc3RydW1lbnRhdGlvbnMsIGtleSwgcmVjZWl2ZXIpO1xuICAgICAgfVxuICAgICAgaWYgKGtleSA9PT0gXCJoYXNPd25Qcm9wZXJ0eVwiKSB7XG4gICAgICAgIHJldHVybiBoYXNPd25Qcm9wZXJ0eTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgcmVzID0gUmVmbGVjdC5nZXQodGFyZ2V0LCBrZXksIHJlY2VpdmVyKTtcbiAgICBpZiAoaXNTeW1ib2woa2V5KSA/IGJ1aWx0SW5TeW1ib2xzLmhhcyhrZXkpIDogaXNOb25UcmFja2FibGVLZXlzKGtleSkpIHtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfVxuICAgIGlmICghaXNSZWFkb25seTIpIHtcbiAgICAgIHRyYWNrKHRhcmdldCwgXCJnZXRcIiwga2V5KTtcbiAgICB9XG4gICAgaWYgKGlzU2hhbGxvdzIpIHtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfVxuICAgIGlmIChpc1JlZihyZXMpKSB7XG4gICAgICByZXR1cm4gdGFyZ2V0SXNBcnJheSAmJiBpc0ludGVnZXJLZXkoa2V5KSA/IHJlcyA6IHJlcy52YWx1ZTtcbiAgICB9XG4gICAgaWYgKGlzT2JqZWN0KHJlcykpIHtcbiAgICAgIHJldHVybiBpc1JlYWRvbmx5MiA/IHJlYWRvbmx5KHJlcykgOiByZWFjdGl2ZShyZXMpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9XG59XG5jbGFzcyBNdXRhYmxlUmVhY3RpdmVIYW5kbGVyIGV4dGVuZHMgQmFzZVJlYWN0aXZlSGFuZGxlciB7XG4gIGNvbnN0cnVjdG9yKGlzU2hhbGxvdzIgPSBmYWxzZSkge1xuICAgIHN1cGVyKGZhbHNlLCBpc1NoYWxsb3cyKTtcbiAgfVxuICBzZXQodGFyZ2V0LCBrZXksIHZhbHVlLCByZWNlaXZlcikge1xuICAgIGxldCBvbGRWYWx1ZSA9IHRhcmdldFtrZXldO1xuICAgIGlmICghdGhpcy5faXNTaGFsbG93KSB7XG4gICAgICBjb25zdCBpc09sZFZhbHVlUmVhZG9ubHkgPSBpc1JlYWRvbmx5KG9sZFZhbHVlKTtcbiAgICAgIGlmICghaXNTaGFsbG93KHZhbHVlKSAmJiAhaXNSZWFkb25seSh2YWx1ZSkpIHtcbiAgICAgICAgb2xkVmFsdWUgPSB0b1JhdyhvbGRWYWx1ZSk7XG4gICAgICAgIHZhbHVlID0gdG9SYXcodmFsdWUpO1xuICAgICAgfVxuICAgICAgaWYgKCFpc0FycmF5KHRhcmdldCkgJiYgaXNSZWYob2xkVmFsdWUpICYmICFpc1JlZih2YWx1ZSkpIHtcbiAgICAgICAgaWYgKGlzT2xkVmFsdWVSZWFkb25seSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvbGRWYWx1ZS52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgI
15HJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGhhZEtleSA9IGlzQXJyYXkodGFyZ2V0KSAmJiBpc0ludGVnZXJLZXkoa2V5KSA/IE51bWJlcihrZXkpIDwgdGFyZ2V0Lmxlbmd0aCA6IGhhc093bih0YXJnZXQsIGtleSk7XG4gICAgY29uc3QgcmVzdWx0ID0gUmVmbGVjdC5zZXQodGFyZ2V0LCBrZXksIHZhbHVlLCByZWNlaXZlcik7XG4gICAgaWYgKHRhcmdldCA9PT0gdG9SYXcocmVjZWl2ZXIpKSB7XG4gICAgICBpZiAoIWhhZEtleSkge1xuICAgICAgICB0cmlnZ2VyKHRhcmdldCwgXCJhZGRcIiwga2V5LCB2YWx1ZSk7XG4gICAgICB9IGVsc2UgaWYgKGhhc0NoYW5nZWQodmFsdWUsIG9sZFZhbHVlKSkge1xuICAgICAgICB0cmlnZ2VyKHRhcmdldCwgXCJzZXRcIiwga2V5LCB2YWx1ZSwgb2xkVmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIGRlbGV0ZVByb3BlcnR5KHRhcmdldCwga2V5KSB7XG4gICAgY29uc3QgaGFkS2V5ID0gaGFzT3duKHRhcmdldCwga2V5KTtcbiAgICBjb25zdCBvbGRWYWx1ZSA9IHRhcmdldFtrZXldO1xuICAgIGNvbnN0IHJlc3VsdCA9IFJlZmxlY3QuZGVsZXRlUHJvcGVydHkodGFyZ2V0LCBrZXkpO1xuICAgIGlmIChyZXN1bHQgJiYgaGFkS2V5KSB7XG4gICAgICB0cmlnZ2VyKHRhcmdldCwgXCJkZWxldGVcIiwga2V5LCB2b2lkIDAsIG9sZFZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBoYXModGFyZ2V0LCBrZXkpIHtcbiAgICBjb25zdCByZXN1bHQgPSBSZWZsZWN0Lmhhcyh0YXJnZXQsIGtleSk7XG4gICAgaWYgKCFpc1N5bWJvbChrZXkpIHx8ICFidWlsdEluU3ltYm9scy5oYXMoa2V5KSkge1xuICAgICAgdHJhY2sodGFyZ2V0LCBcImhhc1wiLCBrZXkpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIG93bktleXModGFyZ2V0KSB7XG4gICAgdHJhY2soXG4gICAgICB0YXJnZXQsXG4gICAgICBcIml0ZXJhdGVcIixcbiAgICAgIGlzQXJyYXkodGFyZ2V0KSA/IFwibGVuZ3RoXCIgOiBJVEVSQVRFX0tFWVxuICAgICk7XG4gICAgcmV0dXJuIFJlZmxlY3Qub3duS2V5cyh0YXJnZXQpO1xuICB9XG59XG5jbGFzcyBSZWFkb25seVJlYWN0aXZlSGFuZGxlciBleHRlbmRzIEJhc2VSZWFjdGl2ZUhhbmRsZXIge1xuICBjb25zdHJ1Y3Rvcihpc1NoYWxsb3cyID0gZmFsc2UpIHtcbiAgICBzdXBlcih0cnVlLCBpc1NoYWxsb3cyKTtcbiAgfVxuICBzZXQodGFyZ2V0LCBrZXkpIHtcbiAgICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSkge1xuICAgICAgd2FybihcbiAgICAgICAgYFNldCBvcGVyYXRpb24gb24ga2V5IFwiJHtTdHJpbmcoa2V5KX1cIiBmYWlsZWQ6IHRhcmdldCBpcyByZWFkb25seS5gLFxuICAgICAgICB0YXJnZXRcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGRlbGV0ZVByb3BlcnR5KHRhcmdldCwga2V5KSB7XG4gICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikpIHtcbiAgICAgIHdhcm4oXG4gICAgICAgIGBEZWxldGUgb3BlcmF0aW9uIG9uIGtleSBcIiR7U3RyaW5nKGtleSl9XCIgZmFpbGVkOiB0YXJnZXQgaXMgcmVhZG9ubHkuYCxcbiAgICAgICAgdGFyZ2V0XG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuY29uc3QgbXV0YWJsZUhhbmRsZXJzID0gLyogQF9fUFVSRV9fICovIG5ldyBNdXRhYmxlUmVhY3RpdmVIYW5kbGVyKCk7XG5jb25zdCByZWFkb25seUhhbmRsZXJzID0gLyogQF9fUFVSRV9fICovIG5ldyBSZWFkb25seVJlYWN0aXZlSGFuZGxlcigpO1xuY29uc3Qgc2hhbGxvd1JlYWN0aXZlSGFuZGxlcnMgPSAvKiBAX19QVVJFX18gKi8gbmV3IE11dGFibGVSZWFjdGl2ZUhhbmRsZXIoXG4gIHRydWVcbik7XG5jb25zdCBzaGFsbG93UmVhZG9ubHlIYW5kbGVycyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgUmVhZG9ubHlSZWFjdGl2ZUhhbmRsZXIodHJ1ZSk7XG5cbmNvbnN0IHRvU2hhbGxvdyA9ICh2YWx1ZSkgPT4gdmFsdWU7XG5jb25zdCBnZXRQcm90byA9ICh2KSA9PiBSZWZsZWN0LmdldFByb3RvdHlwZU9mKHYpO1xuZnVuY3Rpb24gZ2V0KHRhcmdldCwga2V5LCBpc1JlYWRvbmx5MiA9IGZhbHNlLCBpc1NoYWxsb3cyID0gZmFsc2UpIHtcbiAgdGFyZ2V0ID0gdGFyZ2V0W1wiX192X3Jhd1wiXTtcbiAgY29uc3QgcmF3VGFyZ2V0ID0gdG9SYXcodGFyZ2V0KTtcbiAgY29uc3QgcmF3S2V5ID0gdG9SYXcoa2V5KTtcbiAgaWYgKCFpc1JlYWRvbmx5Mikge1xuICAgIGlmIChoYXNDaGFuZ2VkKGtleSwgcmF3S2V5KSkge1xuICAgICAgdHJhY2socmF3VGFyZ2V0LCBcImdldFwiLCBrZXkpO1xuICAgIH1cbiAgICB0cmFjayhyYXdUYXJnZXQsIFwiZ2V0XCIsIHJhd0tleSk7XG4gIH1cbiAgY29uc3QgeyBoYXM6IGhhczIgfSA9IGdldFByb3RvKHJhd1RhcmdldCk7XG4gIGNvbnN0IHdyYXAgPSBpc1NoYWxsb3cyID8gdG9TaGFsbG93IDogaXNSZWFkb25seTIgPyB0b1JlYWRvbmx5IDogdG9SZWFjdGl2ZTtcbiAgaWYgKGhhczIuY2FsbChyYXdUYXJnZXQsIGtleSkpIHtcbiAgICByZXR1cm4gd3JhcCh0YXJnZXQuZ2V0KGtleSkpO1xuICB9IGVsc2UgaWYgKGhhczIuY2FsbChyYXdUYXJnZXQsIHJhd0tleSkpIHtcbiAgICByZXR1cm4gd3JhcCh0YXJnZXQuZ2V0KHJhd0tleSkpO1xuICB9IGVsc2UgaWYgKHRhcmdldCAhPT0gcmF3VGFyZ2V0KSB7XG4gICAgdGFyZ2V0LmdldChrZXkpO1xuICB9XG59XG5mdW5jdGlvbiBoYXMoa2V5LCBpc1JlYWRvbmx5MiA9IGZhbHNlKSB7XG4gIGNvbnN0IHRhcmdldCA9IHRoaXNbXCJfX3ZfcmF3XCJdO1xuICBjb25zdCByYXdUYXJnZXQgPSB0b1Jhdyh0YXJnZXQpO1xuICBjb25zdCByYXdLZXkgPSB0b1JhdyhrZXkpO1xuICBpZiAoIWlzUmVhZG9ubHkyKSB7XG4gICAgaWYgKGhhc0NoYW5nZWQoa2V5LCByYXdLZXkpKSB7XG4gICAgICB0cmFjayhyYXdUYXJnZXQsIFwiaGFzXCIsIGtleSk7XG4gICAgfVxuICAgIHRyYWNrKHJhd1RhcmdldCwgXCJoYXNcIiwgcmF3S2V5KTtcbiAgfVxuICByZXR1cm4ga2V5ID09PSByYXdLZXkgPyB0YXJnZXQuaGFzKGtleSkgOiB0YXJnZXQuaGFzKGtleSkgfHwgdGFyZ2V0LmhhcyhyYXdLZXkpO1xufVxuZnVuY3Rpb24gc2l6ZSh0YXJnZXQsIGlzUmVhZG9ubHkyID0gZmFsc2UpIHtcbiAgdGFyZ2V0ID0gdGFyZ2V0W1wiX192X3Jhd1wiXTtcbiAgIWlzUmVhZG9ubHkyICYmIHRyYWNrKHRvUmF3KHRhcmdldCksIFwiaXRlcmF0ZVwiLCBJVEVSQVRFX0tFWSk7XG4gIHJldHVybi
15BSZWZsZWN0LmdldCh0YXJnZXQsIFwic2l6ZVwiLCB0YXJnZXQpO1xufVxuZnVuY3Rpb24gYWRkKHZhbHVlLCBfaXNTaGFsbG93ID0gZmFsc2UpIHtcbiAgaWYgKCFfaXNTaGFsbG93ICYmICFpc1NoYWxsb3codmFsdWUpICYmICFpc1JlYWRvbmx5KHZhbHVlKSkge1xuICAgIHZhbHVlID0gdG9SYXcodmFsdWUpO1xuICB9XG4gIGNvbnN0IHRhcmdldCA9IHRvUmF3KHRoaXMpO1xuICBjb25zdCBwcm90byA9IGdldFByb3RvKHRhcmdldCk7XG4gIGNvbnN0IGhhZEtleSA9IHByb3RvLmhhcy5jYWxsKHRhcmdldCwgdmFsdWUpO1xuICBpZiAoIWhhZEtleSkge1xuICAgIHRhcmdldC5hZGQodmFsdWUpO1xuICAgIHRyaWdnZXIodGFyZ2V0LCBcImFkZFwiLCB2YWx1ZSwgdmFsdWUpO1xuICB9XG4gIHJldHVybiB0aGlzO1xufVxuZnVuY3Rpb24gc2V0KGtleSwgdmFsdWUsIF9pc1NoYWxsb3cgPSBmYWxzZSkge1xuICBpZiAoIV9pc1NoYWxsb3cgJiYgIWlzU2hhbGxvdyh2YWx1ZSkgJiYgIWlzUmVhZG9ubHkodmFsdWUpKSB7XG4gICAgdmFsdWUgPSB0b1Jhdyh2YWx1ZSk7XG4gIH1cbiAgY29uc3QgdGFyZ2V0ID0gdG9SYXcodGhpcyk7XG4gIGNvbnN0IHsgaGFzOiBoYXMyLCBnZXQ6IGdldDIgfSA9IGdldFByb3RvKHRhcmdldCk7XG4gIGxldCBoYWRLZXkgPSBoYXMyLmNhbGwodGFyZ2V0LCBrZXkpO1xuICBpZiAoIWhhZEtleSkge1xuICAgIGtleSA9IHRvUmF3KGtleSk7XG4gICAgaGFkS2V5ID0gaGFzMi5jYWxsKHRhcmdldCwga2V5KTtcbiAgfSBlbHNlIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpKSB7XG4gICAgY2hlY2tJZGVudGl0eUtleXModGFyZ2V0LCBoYXMyLCBrZXkpO1xuICB9XG4gIGNvbnN0IG9sZFZhbHVlID0gZ2V0Mi5jYWxsKHRhcmdldCwga2V5KTtcbiAgdGFyZ2V0LnNldChrZXksIHZhbHVlKTtcbiAgaWYgKCFoYWRLZXkpIHtcbiAgICB0cmlnZ2VyKHRhcmdldCwgXCJhZGRcIiwga2V5LCB2YWx1ZSk7XG4gIH0gZWxzZSBpZiAoaGFzQ2hhbmdlZCh2YWx1ZSwgb2xkVmFsdWUpKSB7XG4gICAgdHJpZ2dlcih0YXJnZXQsIFwic2V0XCIsIGtleSwgdmFsdWUsIG9sZFZhbHVlKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn1cbmZ1bmN0aW9uIGRlbGV0ZUVudHJ5KGtleSkge1xuICBjb25zdCB0YXJnZXQgPSB0b1Jhdyh0aGlzKTtcbiAgY29uc3QgeyBoYXM6IGhhczIsIGdldDogZ2V0MiB9ID0gZ2V0UHJvdG8odGFyZ2V0KTtcbiAgbGV0IGhhZEtleSA9IGhhczIuY2FsbCh0YXJnZXQsIGtleSk7XG4gIGlmICghaGFkS2V5KSB7XG4gICAga2V5ID0gdG9SYXcoa2V5KTtcbiAgICBoYWRLZXkgPSBoYXMyLmNhbGwodGFyZ2V0LCBrZXkpO1xuICB9IGVsc2UgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikpIHtcbiAgICBjaGVja0lkZW50aXR5S2V5cyh0YXJnZXQsIGhhczIsIGtleSk7XG4gIH1cbiAgY29uc3Qgb2xkVmFsdWUgPSBnZXQyID8gZ2V0Mi5jYWxsKHRhcmdldCwga2V5KSA6IHZvaWQgMDtcbiAgY29uc3QgcmVzdWx0ID0gdGFyZ2V0LmRlbGV0ZShrZXkpO1xuICBpZiAoaGFkS2V5KSB7XG4gICAgdHJpZ2dlcih0YXJnZXQsIFwiZGVsZXRlXCIsIGtleSwgdm9pZCAwLCBvbGRWYWx1ZSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIGNsZWFyKCkge1xuICBjb25zdCB0YXJnZXQgPSB0b1Jhdyh0aGlzKTtcbiAgY29uc3QgaGFkSXRlbXMgPSB0YXJnZXQuc2l6ZSAhPT0gMDtcbiAgY29uc3Qgb2xkVGFyZ2V0ID0gISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSA/IGlzTWFwKHRhcmdldCkgPyBuZXcgTWFwKHRhcmdldCkgOiBuZXcgU2V0KHRhcmdldCkgOiB2b2lkIDA7XG4gIGNvbnN0IHJlc3VsdCA9IHRhcmdldC5jbGVhcigpO1xuICBpZiAoaGFkSXRlbXMpIHtcbiAgICB0cmlnZ2VyKHRhcmdldCwgXCJjbGVhclwiLCB2b2lkIDAsIHZvaWQgMCwgb2xkVGFyZ2V0KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gY3JlYXRlRm9yRWFjaChpc1JlYWRvbmx5MiwgaXNTaGFsbG93Mikge1xuICByZXR1cm4gZnVuY3Rpb24gZm9yRWFjaChjYWxsYmFjaywgdGhpc0FyZykge1xuICAgIGNvbnN0IG9ic2VydmVkID0gdGhpcztcbiAgICBjb25zdCB0YXJnZXQgPSBvYnNlcnZlZFtcIl9fdl9yYXdcIl07XG4gICAgY29uc3QgcmF3VGFyZ2V0ID0gdG9SYXcodGFyZ2V0KTtcbiAgICBjb25zdCB3cmFwID0gaXNTaGFsbG93MiA/IHRvU2hhbGxvdyA6IGlzUmVhZG9ubHkyID8gdG9SZWFkb25seSA6IHRvUmVhY3RpdmU7XG4gICAgIWlzUmVhZG9ubHkyICYmIHRyYWNrKHJhd1RhcmdldCwgXCJpdGVyYXRlXCIsIElURVJBVEVfS0VZKTtcbiAgICByZXR1cm4gdGFyZ2V0LmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgIHJldHVybiBjYWxsYmFjay5jYWxsKHRoaXNBcmcsIHdyYXAodmFsdWUpLCB3cmFwKGtleSksIG9ic2VydmVkKTtcbiAgICB9KTtcbiAgfTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUl0ZXJhYmxlTWV0aG9kKG1ldGhvZCwgaXNSZWFkb25seTIsIGlzU2hhbGxvdzIpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKC4uLmFyZ3MpIHtcbiAgICBjb25zdCB0YXJnZXQgPSB0aGlzW1wiX192X3Jhd1wiXTtcbiAgICBjb25zdCByYXdUYXJnZXQgPSB0b1Jhdyh0YXJnZXQpO1xuICAgIGNvbnN0IHRhcmdldElzTWFwID0gaXNNYXAocmF3VGFyZ2V0KTtcbiAgICBjb25zdCBpc1BhaXIgPSBtZXRob2QgPT09IFwiZW50cmllc1wiIHx8IG1ldGhvZCA9PT0gU3ltYm9sLml0ZXJhdG9yICYmIHRhcmdldElzTWFwO1xuICAgIGNvbnN0IGlzS2V5T25seSA9IG1ldGhvZCA9PT0gXCJrZXlzXCIgJiYgdGFyZ2V0SXNNYXA7XG4gICAgY29uc3QgaW5uZXJJdGVyYXRvciA9IHRhcmdldFttZXRob2RdKC4uLmFyZ3MpO1xuICAgIGNvbnN0IHdyYXAgPSBpc1NoYWxsb3cyID8gdG9TaGFsbG93IDogaXNSZWFkb25seTIgPyB0b1JlYWRvbmx5IDogdG9SZWFjdGl2ZTtcbiAgICAhaXNSZWFkb25seTIgJiYgdHJhY2soXG4gICAgICByYXdUYXJnZXQsXG4gICAgICBcIml0ZXJhdGVcIixcbiAgICAgIGlzS2V5T25seSA/IE1BUF9L
15RVlfSVRFUkFURV9LRVkgOiBJVEVSQVRFX0tFWVxuICAgICk7XG4gICAgcmV0dXJuIHtcbiAgICAgIC8vIGl0ZXJhdG9yIHByb3RvY29sXG4gICAgICBuZXh0KCkge1xuICAgICAgICBjb25zdCB7IHZhbHVlLCBkb25lIH0gPSBpbm5lckl0ZXJhdG9yLm5leHQoKTtcbiAgICAgICAgcmV0dXJuIGRvbmUgPyB7IHZhbHVlLCBkb25lIH0gOiB7XG4gICAgICAgICAgdmFsdWU6IGlzUGFpciA/IFt3cmFwKHZhbHVlWzBdKSwgd3JhcCh2YWx1ZVsxXSldIDogd3JhcCh2YWx1ZSksXG4gICAgICAgICAgZG9uZVxuICAgICAgICB9O1xuICAgICAgfSxcbiAgICAgIC8vIGl0ZXJhYmxlIHByb3RvY29sXG4gICAgICBbU3ltYm9sLml0ZXJhdG9yXSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG4gICAgfTtcbiAgfTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVJlYWRvbmx5TWV0aG9kKHR5cGUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKC4uLmFyZ3MpIHtcbiAgICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSkge1xuICAgICAgY29uc3Qga2V5ID0gYXJnc1swXSA/IGBvbiBrZXkgXCIke2FyZ3NbMF19XCIgYCA6IGBgO1xuICAgICAgd2FybihcbiAgICAgICAgYCR7Y2FwaXRhbGl6ZSh0eXBlKX0gb3BlcmF0aW9uICR7a2V5fWZhaWxlZDogdGFyZ2V0IGlzIHJlYWRvbmx5LmAsXG4gICAgICAgIHRvUmF3KHRoaXMpXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdHlwZSA9PT0gXCJkZWxldGVcIiA/IGZhbHNlIDogdHlwZSA9PT0gXCJjbGVhclwiID8gdm9pZCAwIDogdGhpcztcbiAgfTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUluc3RydW1lbnRhdGlvbnMoKSB7XG4gIGNvbnN0IG11dGFibGVJbnN0cnVtZW50YXRpb25zMiA9IHtcbiAgICBnZXQoa2V5KSB7XG4gICAgICByZXR1cm4gZ2V0KHRoaXMsIGtleSk7XG4gICAgfSxcbiAgICBnZXQgc2l6ZSgpIHtcbiAgICAgIHJldHVybiBzaXplKHRoaXMpO1xuICAgIH0sXG4gICAgaGFzLFxuICAgIGFkZCxcbiAgICBzZXQsXG4gICAgZGVsZXRlOiBkZWxldGVFbnRyeSxcbiAgICBjbGVhcixcbiAgICBmb3JFYWNoOiBjcmVhdGVGb3JFYWNoKGZhbHNlLCBmYWxzZSlcbiAgfTtcbiAgY29uc3Qgc2hhbGxvd0luc3RydW1lbnRhdGlvbnMyID0ge1xuICAgIGdldChrZXkpIHtcbiAgICAgIHJldHVybiBnZXQodGhpcywga2V5LCBmYWxzZSwgdHJ1ZSk7XG4gICAgfSxcbiAgICBnZXQgc2l6ZSgpIHtcbiAgICAgIHJldHVybiBzaXplKHRoaXMpO1xuICAgIH0sXG4gICAgaGFzLFxuICAgIGFkZCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGFkZC5jYWxsKHRoaXMsIHZhbHVlLCB0cnVlKTtcbiAgICB9LFxuICAgIHNldChrZXksIHZhbHVlKSB7XG4gICAgICByZXR1cm4gc2V0LmNhbGwodGhpcywga2V5LCB2YWx1ZSwgdHJ1ZSk7XG4gICAgfSxcbiAgICBkZWxldGU6IGRlbGV0ZUVudHJ5LFxuICAgIGNsZWFyLFxuICAgIGZvckVhY2g6IGNyZWF0ZUZvckVhY2goZmFsc2UsIHRydWUpXG4gIH07XG4gIGNvbnN0IHJlYWRvbmx5SW5zdHJ1bWVudGF0aW9uczIgPSB7XG4gICAgZ2V0KGtleSkge1xuICAgICAgcmV0dXJuIGdldCh0aGlzLCBrZXksIHRydWUpO1xuICAgIH0sXG4gICAgZ2V0IHNpemUoKSB7XG4gICAgICByZXR1cm4gc2l6ZSh0aGlzLCB0cnVlKTtcbiAgICB9LFxuICAgIGhhcyhrZXkpIHtcbiAgICAgIHJldHVybiBoYXMuY2FsbCh0aGlzLCBrZXksIHRydWUpO1xuICAgIH0sXG4gICAgYWRkOiBjcmVhdGVSZWFkb25seU1ldGhvZChcImFkZFwiKSxcbiAgICBzZXQ6IGNyZWF0ZVJlYWRvbmx5TWV0aG9kKFwic2V0XCIpLFxuICAgIGRlbGV0ZTogY3JlYXRlUmVhZG9ubHlNZXRob2QoXCJkZWxldGVcIiksXG4gICAgY2xlYXI6IGNyZWF0ZVJlYWRvbmx5TWV0aG9kKFwiY2xlYXJcIiksXG4gICAgZm9yRWFjaDogY3JlYXRlRm9yRWFjaCh0cnVlLCBmYWxzZSlcbiAgfTtcbiAgY29uc3Qgc2hhbGxvd1JlYWRvbmx5SW5zdHJ1bWVudGF0aW9uczIgPSB7XG4gICAgZ2V0KGtleSkge1xuICAgICAgcmV0dXJuIGdldCh0aGlzLCBrZXksIHRydWUsIHRydWUpO1xuICAgIH0sXG4gICAgZ2V0IHNpemUoKSB7XG4gICAgICByZXR1cm4gc2l6ZSh0aGlzLCB0cnVlKTtcbiAgICB9LFxuICAgIGhhcyhrZXkpIHtcbiAgICAgIHJldHVybiBoYXMuY2FsbCh0aGlzLCBrZXksIHRydWUpO1xuICAgIH0sXG4gICAgYWRkOiBjcmVhdGVSZWFkb25seU1ldGhvZChcImFkZFwiKSxcbiAgICBzZXQ6IGNyZWF0ZVJlYWRvbmx5TWV0aG9kKFwic2V0XCIpLFxuICAgIGRlbGV0ZTogY3JlYXRlUmVhZG9ubHlNZXRob2QoXCJkZWxldGVcIiksXG4gICAgY2xlYXI6IGNyZWF0ZVJlYWRvbmx5TWV0aG9kKFwiY2xlYXJcIiksXG4gICAgZm9yRWFjaDogY3JlYXRlRm9yRWFjaCh0cnVlLCB0cnVlKVxuICB9O1xuICBjb25zdCBpdGVyYXRvck1ldGhvZHMgPSBbXG4gICAgXCJrZXlzXCIsXG4gICAgXCJ2YWx1ZXNcIixcbiAgICBcImVudHJpZXNcIixcbiAgICBTeW1ib2wuaXRlcmF0b3JcbiAgXTtcbiAgaXRlcmF0b3JNZXRob2RzLmZvckVhY2goKG1ldGhvZCkgPT4ge1xuICAgIG11dGFibGVJbnN0cnVtZW50YXRpb25zMlttZXRob2RdID0gY3JlYXRlSXRlcmFibGVNZXRob2QobWV0aG9kLCBmYWxzZSwgZmFsc2UpO1xuICAgIHJlYWRvbmx5SW5zdHJ1bWVudGF0aW9uczJbbWV0aG9kXSA9IGNyZWF0ZUl0ZXJhYmxlTWV0aG9kKG1ldGhvZCwgdHJ1ZSwgZmFsc2UpO1xuICAgIHNoYWxsb3dJbnN0cnVtZW50YXRpb25zMlttZXRob2RdID0gY3JlYXRlSXRlcmFibGVNZXRob2QobWV0aG9kLCBmYWxzZSwgdHJ1ZSk7XG4gICAgc2hhbGxvd1JlYWRvbmx5SW5zdHJ1bWVudGF0aW9uczJbbWV0aG9kXSA9IGNyZWF0ZUl0ZXJhYmxlTWV0aG9kKFxuICAgICAgbWV0aG9kLFxuICAgICAgdHJ1ZSxcbiAgICAgIHRydWVcbiAgICApO1xuICB9KTtcbiAgcmV0dXJuIFtcbiAgICBtdXRhYmxlSW5zdHJ1bWVudGF0aW9uczIsXG4gICAgcmVhZG9ubHlJbnN0cnVtZW50YXRpb25zMixcbiAgICBzaGFsbG93SW5zdHJ1bWVudGF0aW9uczIsXG4gICAgc2hhbGxvd1JlYWRvbmx5SW5zdHJ1bWVudGF0aW9uczJcbiAgXTtcbn1cbmNvbnN0IFtcbiAgbXV0YWJsZUluc3RydW1lbnRhdGlvbnMsXG4gIHJlYWRvbmx5SW5zdHJ1bWVudGF0aW9ucyxcbiAgc2hhbGxvd0luc3RydW1lbnRhdGlvbnMsXG4gIHNoYWxsb3dSZWFkb25seUluc3RydW1lbnRhdGlvbnNcbl0gPSAvKiBAX19QVVJFX18gKi8gY3JlYXRlSW5zdHJ1bWVudGF0aW9ucygpO1xuZnVuY3Rpb24gY3JlYXRlSW5zdHJ1bWVudGF0aW9uR2V0dGVyKGlzUmVhZG9ubHkyLCBzaGFsbG93KSB7XG4gIGNvbnN0IGluc3RydW1lbnRhdGlvbnMgPSBzaGFsbG93ID8gaXNSZWFkb25seTIgPyBzaGFsbG93UmVhZG9ubHlJbnN0cnVtZW50YXRpb25zIDogc2hhbGxvd0luc3RydW1lbnRhdGlvbnMgOiBpc1JlYWRvbmx5MiA/IHJlYWRvbmx5SW5zdHJ1bWVudGF0aW9ucyA6IG11dGFibGVJbnN0cnVtZW50YXRpb25zO1xuICByZXR1cm4gKHRhcmdldCwga2V5LCByZWNlaXZlcikgPT4ge1xuICAgIGlmIChrZXkgPT09IFwiX192X2lzUmVhY3RpdmVcIikge1xuICAgICAgcmV0dXJuICFpc1JlYWRvbmx5MjtcbiAgICB9IGVsc2UgaWYgKGtleSA9PT0gXCJfX3ZfaXNSZWFkb25seVwiKSB7XG4gICAgICByZXR1cm4gaXNSZWFkb25seTI7XG4gICAgfSBlbHNlIGlmIChrZXkgPT09IFwiX192X3Jhd1wiKSB7XG4gICAgICByZXR1cm4gdGFyZ2V0O1xuICAgIH1cbiAgICByZXR1cm4gUmVmbGVjdC5nZXQoXG4gICAgICBoYXNPd24oaW5zdHJ1bWVudGF0aW9ucywga2V5KSAmJiBrZXkgaW4gdGFyZ2V0ID8gaW5zdHJ1bWVudGF0aW9ucyA6IHRhcmdldCxcbiAgICAgIGtleSxcbiAgICAgIHJlY2VpdmVyXG4gICAgKTtcbiAgfTtcbn1cbmNvbnN0IG11dGFibGVDb2xsZWN0aW9uSGFuZGxlcnMgPSB7XG4gIGdldDogLyogQF9fUFVSRV9fICovIGNyZWF0ZUluc3RydW1lbnRhdGlvbkdldHRlcihmYWxzZSwgZmFsc2UpXG59O1xuY29uc3Qgc2hhbGxvd0NvbGxlY3Rpb25IYW5kbGVycyA9IHtcbiAgZ2V0OiAvKiBAX19QVVJFX18gKi8gY3JlYXRlSW5zdHJ1bWVudGF0aW9uR2V0dGVyKGZhbHNlLCB0cnVlKVxufTtcbmNvbnN0IHJlYWRvbmx5Q29sbGVjdGlvbkhhbmRsZXJzID0ge1xuICBnZXQ6IC8qIEBfX1BVUkVfXyAqLyBjcmVhdGVJbnN0cnVtZW50YXRpb25HZXR0ZXIodHJ1ZSwgZmFsc2UpXG59O1xuY29uc3Qgc2hhbGxvd1JlYWRvbmx5Q29sbGVjdGlvbkhhbmRsZXJzID0ge1xuICBnZXQ6IC8qIEBfX1BVUkVfXyAqLyBjcmVhdGVJbnN0cnVtZW50YXRpb25HZXR0ZXIodHJ1ZSwgdHJ1ZSlcbn07XG5mdW5jdGlvbiBjaGVja0lkZW50aXR5S2V5cyh0YXJnZXQsIGhhczIsIGtleSkge1xuICBjb25zdCByYXdLZXkgPSB0b1JhdyhrZXkpO1xuICBpZiAocmF3S2V5ICE9PSBrZXkgJiYgaGFzMi5jYWxsKHRhcmdldCwgcmF3S2V5KSkge1xuICAgIGNvbnN0IHR5cGUgPSB0b1Jhd1R5cGUodGFyZ2V0KTtcbiAgICB3YXJuKFxuICAgICAgYFJlYWN0aXZlICR7dHlwZX0gY29udGFpbnMgYm90aCB0aGUgcmF3IGFuZCByZWFjdGl2ZSB2ZXJzaW9ucyBvZiB0aGUgc2FtZSBvYmplY3Qke3R5cGUgPT09IGBNYXBgID8gYCBhcyBrZXlzYCA6IGBgfSwgd2hpY2ggY2FuIGxlYWQgdG8gaW5jb25zaXN0ZW5jaWVzLiBBdm9pZCBkaWZmZXJlbnRpYXRpbmcgYmV0d2VlbiB0aGUgcmF3IGFuZCByZWFjdGl2ZSB2ZXJzaW9ucyBvZiBhbiBvYmplY3QgYW5kIG9ubHkgdXNlIHRoZSByZWFjdGl2ZSB2ZXJzaW9uIGlmIHBvc3NpYmxlLmBcbiAgICApO
151xuICB9XG59XG5cbmNvbnN0IHJlYWN0aXZlTWFwID0gLyogQF9fUFVSRV9fICovIG5ldyBXZWFrTWFwKCk7XG5jb25zdCBzaGFsbG93UmVhY3RpdmVNYXAgPSAvKiBAX19QVVJFX18gKi8gbmV3IFdlYWtNYXAoKTtcbmNvbnN0IHJlYWRvbmx5TWFwID0gLyogQF9fUFVSRV9fICovIG5ldyBXZWFrTWFwKCk7XG5jb25zdCBzaGFsbG93UmVhZG9ubHlNYXAgPSAvKiBAX19QVVJFX18gKi8gbmV3IFdlYWtNYXAoKTtcbmZ1bmN0aW9uIHRhcmdldFR5cGVNYXAocmF3VHlwZSkge1xuICBzd2l0Y2ggKHJhd1R5cGUpIHtcbiAgICBjYXNlIFwiT2JqZWN0XCI6XG4gICAgY2FzZSBcIkFycmF5XCI6XG4gICAgICByZXR1cm4gMSAvKiBDT01NT04gKi87XG4gICAgY2FzZSBcIk1hcFwiOlxuICAgIGNhc2UgXCJTZXRcIjpcbiAgICBjYXNlIFwiV2Vha01hcFwiOlxuICAgIGNhc2UgXCJXZWFrU2V0XCI6XG4gICAgICByZXR1cm4gMiAvKiBDT0xMRUNUSU9OICovO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gMCAvKiBJTlZBTElEICovO1xuICB9XG59XG5mdW5jdGlvbiBnZXRUYXJnZXRUeXBlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZVtcIl9fdl9za2lwXCJdIHx8ICFPYmplY3QuaXNFeHRlbnNpYmxlKHZhbHVlKSA/IDAgLyogSU5WQUxJRCAqLyA6IHRhcmdldFR5cGVNYXAodG9SYXdUeXBlKHZhbHVlKSk7XG59XG5mdW5jdGlvbiByZWFjdGl2ZSh0YXJnZXQpIHtcbiAgaWYgKGlzUmVhZG9ubHkodGFyZ2V0KSkge1xuICAgIHJldHVybiB0YXJnZXQ7XG4gIH1cbiAgcmV0dXJuIGNyZWF0ZVJlYWN0aXZlT2JqZWN0KFxuICAgIHRhcmdldCxcbiAgICBmYWxzZSxcbiAgICBtdXRhYmxlSGFuZGxlcnMsXG4gICAgbXV0YWJsZUNvbGxlY3Rpb25IYW5kbGVycyxcbiAgICByZWFjdGl2ZU1hcFxuICApO1xufVxuZnVuY3Rpb24gc2hhbGxvd1JlYWN0aXZlKHRhcmdldCkge1xuICByZXR1cm4gY3JlYXRlUmVhY3RpdmVPYmplY3QoXG4gICAgdGFyZ2V0LFxuICAgIGZhbHNlLFxuICAgIHNoYWxsb3dSZWFjdGl2ZUhhbmRsZXJzLFxuICAgIHNoYWxsb3dDb2xsZWN0aW9uSGFuZGxlcnMsXG4gICAgc2hhbGxvd1JlYWN0aXZlTWFwXG4gICk7XG59XG5mdW5jdGlvbiByZWFkb25seSh0YXJnZXQpIHtcbiAgcmV0dXJuIGNyZWF0ZVJlYWN0aXZlT2JqZWN0KFxuICAgIHRhcmdldCxcbiAgICB0cnVlLFxuICAgIHJlYWRvbmx5SGFuZGxlcnMsXG4gICAgcmVhZG9ubHlDb2xsZWN0aW9uSGFuZGxlcnMsXG4gICAgcmVhZG9ubHlNYXBcbiAgKTtcbn1cbmZ1bmN0aW9uIHNoYWxsb3dSZWFkb25seSh0YXJnZXQpIHtcbiAgcmV0dXJuIGNyZWF0ZVJlYWN0aXZlT2JqZWN0KFxuICAgIHRhcmdldCxcbiAgICB0cnVlLFxuICAgIHNoYWxsb3dSZWFkb25seUhhbmRsZXJzLFxuICAgIHNoYWxsb3dSZWFkb25seUNvbGxlY3Rpb25IYW5kbGVycyxcbiAgICBzaGFsbG93UmVhZG9ubHlNYXBcbiAgKTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVJlYWN0aXZlT2JqZWN0KHRhcmdldCwgaXNSZWFkb25seTIsIGJhc2VIYW5kbGVycywgY29sbGVjdGlvbkhhbmRsZXJzLCBwcm94eU1hcCkge1xuICBpZiAoIWlzT2JqZWN0KHRhcmdldCkpIHtcbiAgICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSkge1xuICAgICAgd2FybihcbiAgICAgICAgYHZhbHVlIGNhbm5vdCBiZSBtYWRlICR7aXNSZWFkb25seTIgPyBcInJlYWRvbmx5XCIgOiBcInJlYWN0aXZlXCJ9OiAke1N0cmluZyhcbiAgICAgICAgICB0YXJnZXRcbiAgICAgICAgKX1gXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9XG4gIGlmICh0YXJnZXRbXCJfX3ZfcmF3XCJdICYmICEoaXNSZWFkb25seTIgJiYgdGFyZ2V0W1wiX192X2lzUmVhY3RpdmVcIl0pKSB7XG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuICBjb25zdCBleGlzdGluZ1Byb3h5ID0gcHJveHlNYXAuZ2V0KHRhcmdldCk7XG4gIGlmIChleGlzdGluZ1Byb3h5KSB7XG4gICAgcmV0dXJuIGV4aXN0aW5nUHJveHk7XG4gIH1cbiAgY29uc3QgdGFyZ2V0VHlwZSA9IGdldFRhcmdldFR5cGUodGFyZ2V0KTtcbiAgaWYgKHRhcmdldFR5cGUgPT09IDAgLyogSU5WQUxJRCAqLykge1xuICAgIHJldHVybiB0YXJnZXQ7XG4gIH1cbiAgY29uc3QgcHJveHkgPSBuZXcgUHJveHkoXG4gICAgdGFyZ2V0LFxuICAgIHRhcmdldFR5cGUgPT09IDIgLyogQ09MTEVDVElPTiAqLyA/IGNvbGxlY3Rpb25IYW5kbGVycyA6IGJhc2VIYW5kbGVyc1xuICApO1xuICBwcm94eU1hcC5zZXQodGFyZ2V0LCBwcm94eSk7XG4gIHJldHVybiBwcm94eTtcbn1cbmZ1bmN0aW9uIGlzUmVhY3RpdmUodmFsdWUpIHtcbiAgaWYgKGlzUmVhZG9ubHkodmFsdWUpKSB7XG4gICAgcmV0dXJuIGlzUmVhY3RpdmUodmFsdWVbXCJfX3ZfcmF3XCJdKTtcbiAgfVxuICByZXR1cm4gISEodmFsdWUgJiYgdmFsdWVbXCJfX3ZfaXNSZWFjdGl2ZVwiXSk7XG59XG5mdW5jdGlvbiBpc1JlYWRvbmx5KHZhbHVlKSB7XG4gIHJldHVybiAhISh2YWx1ZSAmJiB2YWx1ZVtcIl9fdl9pc1JlYWRvbmx5XCJdKTtcbn1cbmZ1bmN0aW9uIGlzU2hhbGxvdyh2YWx1ZSkge1xuICByZXR1cm4gISEodmFsdWUgJiYgdmFsdWVbXCJfX3ZfaXNTaGFsbG93XCJdKTtcbn1cbmZ1bmN0aW9uIGlzUHJveHkodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID8gISF2YWx1ZVtcIl9fdl9yYXdcIl0gOiBmYWxzZTtcbn1cbmZ1bmN0aW9uIHRvUmF3KG9ic2VydmVkKSB7XG4gIGNvbnN0IHJhdyA9IG9ic2VydmVkICYmIG9ic2VydmVkW1wiX192X3Jhd1wiXTtcbiAgcmV0dXJuIHJhdyA/IHRvUmF3KHJhdykgOiBvYnNlcnZlZDtcbn1cbmZ1bmN0aW9uIG1hcmtSYXcodmFsdWUpIHtcbiAgaWYgKE9iamVjdC5pc0V4dGVuc2libGUodmFsdWUpKSB7XG4gICAgZGVmKHZhbHVlLCBcIl9fdl9za2lwXCIsIHRydWUpO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cbmNvbnN0IHRvUmVhY3RpdmUgPSAodmFsdWUpID0+IGlzT2JqZWN0KHZhbHVlKSA/IHJlYWN0aXZlKHZhbHVlKSA6IHZhbHVlO1xuY29uc3QgdG9SZWFkb25seSA9ICh2YWx1ZSkgPT4gaXNPYmplY3QodmFsdWUpID8gcmVhZG9ubHkodmFsdWUpIDogdmFsdWU7XG5cbmNvbnN0IENPTVBVVEVEX1NJREVfRUZGRUNUX1dBUk4gPSBgQ29tcHV0ZWQgaXMgc3RpbGwgZGlydHkgYWZ0ZXIgZ2V0dGVyIGV2YWx1YXRpb24sIGxpa2VseSBiZWNhdXNlIGEgY29tcHV0ZWQgaXMgbXV0YXRpbmcgaXRzIG93biBkZXBlbmRlbmN5IGluIGl0cyBnZXR0ZXIuIFN0YXRlIG11dGF0aW9ucyBpbiBjb21wdXRlZCBnZXR0ZXJzIHNob3VsZCBiZSBhdm9pZGVkLiAgQ2hlY2sgdGhlIGRvY3MgZm9yIG1vcmUgZGV0YWlsczogaHR0cHM6Ly92dWVqcy5vcmcvZ3VpZGUvZXNzZW50aWFscy9jb21wdXRlZC5o
15dG1sI2dldHRlcnMtc2hvdWxkLWJlLXNpZGUtZWZmZWN0LWZyZWVgO1xuY2xhc3MgQ29tcHV0ZWRSZWZJbXBsIHtcbiAgY29uc3RydWN0b3IoZ2V0dGVyLCBfc2V0dGVyLCBpc1JlYWRvbmx5LCBpc1NTUikge1xuICAgIHRoaXMuZ2V0dGVyID0gZ2V0dGVyO1xuICAgIHRoaXMuX3NldHRlciA9IF9zZXR0ZXI7XG4gICAgdGhpcy5kZXAgPSB2b2lkIDA7XG4gICAgdGhpcy5fX3ZfaXNSZWYgPSB0cnVlO1xuICAgIHRoaXNbXCJfX3ZfaXNSZWFkb25seVwiXSA9IGZhbHNlO1xuICAgIHRoaXMuZWZmZWN0ID0gbmV3IFJlYWN0aXZlRWZmZWN0KFxuICAgICAgKCkgPT4gZ2V0dGVyKHRoaXMuX3ZhbHVlKSxcbiAgICAgICgpID0+IHRyaWdnZXJSZWZWYWx1ZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgdGhpcy5lZmZlY3QuX2RpcnR5TGV2ZWwgPT09IDIgPyAyIDogM1xuICAgICAgKVxuICAgICk7XG4gICAgdGhpcy5lZmZlY3QuY29tcHV0ZWQgPSB0aGlzO1xuICAgIHRoaXMuZWZmZWN0LmFjdGl2ZSA9IHRoaXMuX2NhY2hlYWJsZSA9ICFpc1NTUjtcbiAgICB0aGlzW1wiX192X2lzUmVhZG9ubHlcIl0gPSBpc1JlYWRvbmx5O1xuICB9XG4gIGdldCB2YWx1ZSgpIHtcbiAgICBjb25zdCBzZWxmID0gdG9SYXcodGhpcyk7XG4gICAgaWYgKCghc2VsZi5fY2FjaGVhYmxlIHx8IHNlbGYuZWZmZWN0LmRpcnR5KSAmJiBoYXNDaGFuZ2VkKHNlbGYuX3ZhbHVlLCBzZWxmLl92YWx1ZSA9IHNlbGYuZWZmZWN0LnJ1bigpKSkge1xuICAgICAgdHJpZ2dlclJlZlZhbHVlKHNlbGYsIDQpO1xuICAgIH1cbiAgICB0cmFja1JlZlZhbHVlKHNlbGYpO1xuICAgIGlmIChzZWxmLmVmZmVjdC5fZGlydHlMZXZlbCA+PSAyKSB7XG4gICAgICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSAmJiB0aGlzLl93YXJuUmVjdXJzaXZlKSB7XG4gICAgICAgIHdhcm4oQ09NUFVURURfU0lERV9FRkZFQ1RfV0FSTiwgYFxuXG5nZXR0ZXI6IGAsIHRoaXMuZ2V0dGVyKTtcbiAgICAgIH1cbiAgICAgIHRyaWdnZXJSZWZWYWx1ZShzZWxmLCAyKTtcbiAgICB9XG4gICAgcmV0dXJuIHNlbGYuX3ZhbHVlO1xuICB9XG4gIHNldCB2YWx1ZShuZXdWYWx1ZSkge1xuICAgIHRoaXMuX3NldHRlcihuZXdWYWx1ZSk7XG4gIH1cbiAgLy8gI3JlZ2lvbiBwb2x5ZmlsbCBfZGlydHkgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgdGhpcmQgcGFydHkgY29kZSBmb3IgVnVlIDw9IDMuMy54XG4gIGdldCBfZGlydHkoKSB7XG4gICAgcmV0dXJuIHRoaXMuZWZmZWN0LmRpcnR5O1xuICB9XG4gIHNldCBfZGlydHkodikge1xuICAgIHRoaXMuZWZmZWN0LmRpcnR5ID0gdjtcbiAgfVxuICAvLyAjZW5kcmVnaW9uXG59XG5mdW5jdGlvbiBjb21wdXRlZChnZXR0ZXJPck9wdGlvbnMsIGRlYnVnT3B0aW9ucywgaXNTU1IgPSBmYWxzZSkge1xuICBsZXQgZ2V0dGVyO1xuICBsZXQgc2V0dGVyO1xuICBjb25zdCBvbmx5R2V0dGVyID0gaXNGdW5jdGlvbihnZXR0ZXJPck9wdGlvbnMpO1xuICBpZiAob25seUdldHRlcikge1xuICAgIGdldHRlciA9IGdldHRlck9yT3B0aW9ucztcbiAgICBzZXR0ZXIgPSAhIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpID8gKCkgPT4ge1xuICAgICAgd2FybihcIldyaXRlIG9wZXJhdGlvbiBmYWlsZWQ6IGNvbXB1dGVkIHZhbHVlIGlzIHJlYWRvbmx5XCIpO1xuICAgIH0gOiBOT09QO1xuICB9IGVsc2Uge1xuICAgIGdldHRlciA9IGdldHRlck9yT3B0aW9ucy5nZXQ7XG4gICAgc2V0dGVyID0gZ2V0dGVyT3JPcHRpb25zLnNldDtcbiAgfVxuICBjb25zdCBjUmVmID0gbmV3IENvbXB1dGVkUmVmSW1wbChnZXR0ZXIsIHNldHRlciwgb25seUdldHRlciB8fCAhc2V0dGVyLCBpc1NTUik7XG4gIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpICYmIGRlYnVnT3B0aW9ucyAmJiAhaXNTU1IpIHtcbiAgICBjUmVmLmVmZmVjdC5vblRyYWNrID0gZGVidWdPcHRpb25zLm9uVHJhY2s7XG4gICAgY1JlZi5lZmZlY3Qub25UcmlnZ2VyID0gZGVidWdPcHRpb25zLm9uVHJpZ2dlcjtcbiAgfVxuICByZXR1cm4gY1JlZjtcbn1cblxuZnVuY3Rpb24gdHJhY2tSZWZWYWx1ZShyZWYyKSB7XG4gIHZhciBfYTtcbiAgaWYgKHNob3VsZFRyYWNrICYmIGFjdGl2ZUVmZmVjdCkge1xuICAgIHJlZjIgPSB0b1JhdyhyZWYyKTtcbiAgICB0cmFja0VmZmVjdChcbiAgICAgIGFjdGl2ZUVmZmVjdCxcbiAgICAgIChfYSA9IHJlZjIuZGVwKSAhPSBudWxsID8gX2EgOiByZWYyLmRlcCA9IGNyZWF0ZURlcChcbiAgICAgICAgKCkgPT4gcmVmMi5kZXAgPSB2b2lkIDAsXG4gICAgICAgIHJlZjIgaW5zdGFuY2VvZiBDb21wdXRlZFJlZkltcGwgPyByZWYyIDogdm9pZCAwXG4gICAgICApLFxuICAgICAgISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSA/IHtcbiAgICAgICAgdGFyZ2V0OiByZWYyLFxuICAgICAgICB0eXBlOiBcImdldFwiLFxuICAgICAgICBrZXk6IFwidmFsdWVcIlxuICAgICAgfSA6IHZvaWQgMFxuICAgICk7XG4gIH1cbn1cbmZ1bmN0aW9uIHRyaWdnZXJSZWZWYWx1ZShyZWYyLCBkaXJ0eUxldmVsID0gNCwgbmV3VmFsLCBvbGRWYWwpIHtcbiAgcmVmMiA9IHRvUmF3KHJlZjIpO1xuICBjb25zdCBkZXAgPSByZWYyLmRlcDtcbiAgaWYgKGRlcCkge1xuICAgIHRyaWdnZXJFZmZlY3RzKFxuICAgICAgZGVwLFxuICAgICAgZGlydHlMZXZlbCxcbiAgICAgICEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgPyB7XG4gICAgICAgIHRhcmdldDogcmVmMixcbiAgICAgICAgdHlwZTogXCJzZXRcIixcbiAgICAgICAga2V5OiBcInZhbHVlXCIsXG4gICAgICAgIG5ld1ZhbHVlOiBuZXdWYWwsXG4gICAgICAgIG9sZFZhbHVlOiBvbGRWYWxcbiAgICAgIH0gOiB2b2lkIDBcbiAgICApO1xuICB9XG59XG5mdW5jdGlvbiBpc1JlZihyKSB7XG4gIHJldHVybiAhIShyICYmIHIuX192X2lzUmVmID09PSB0cnVlKTtcbn1cbmZ1bmN0aW9uIHJlZih2YWx1ZSkge1xuICByZXR1cm4gY3JlYXRlUmVmKHZhbHVlLCBmYWxzZSk7XG59XG5mdW5jdGlvbiBzaGFsbG93UmVmKHZhbHVlKSB7XG4gIHJldHVybi
15BjcmVhdGVSZWYodmFsdWUsIHRydWUpO1xufVxuZnVuY3Rpb24gY3JlYXRlUmVmKHJhd1ZhbHVlLCBzaGFsbG93KSB7XG4gIGlmIChpc1JlZihyYXdWYWx1ZSkpIHtcbiAgICByZXR1cm4gcmF3VmFsdWU7XG4gIH1cbiAgcmV0dXJuIG5ldyBSZWZJbXBsKHJhd1ZhbHVlLCBzaGFsbG93KTtcbn1cbmNsYXNzIFJlZkltcGwge1xuICBjb25zdHJ1Y3Rvcih2YWx1ZSwgX192X2lzU2hhbGxvdykge1xuICAgIHRoaXMuX192X2lzU2hhbGxvdyA9IF9fdl9pc1NoYWxsb3c7XG4gICAgdGhpcy5kZXAgPSB2b2lkIDA7XG4gICAgdGhpcy5fX3ZfaXNSZWYgPSB0cnVlO1xuICAgIHRoaXMuX3Jhd1ZhbHVlID0gX192X2lzU2hhbGxvdyA/IHZhbHVlIDogdG9SYXcodmFsdWUpO1xuICAgIHRoaXMuX3ZhbHVlID0gX192X2lzU2hhbGxvdyA/IHZhbHVlIDogdG9SZWFjdGl2ZSh2YWx1ZSk7XG4gIH1cbiAgZ2V0IHZhbHVlKCkge1xuICAgIHRyYWNrUmVmVmFsdWUodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG4gIHNldCB2YWx1ZShuZXdWYWwpIHtcbiAgICBjb25zdCB1c2VEaXJlY3RWYWx1ZSA9IHRoaXMuX192X2lzU2hhbGxvdyB8fCBpc1NoYWxsb3cobmV3VmFsKSB8fCBpc1JlYWRvbmx5KG5ld1ZhbCk7XG4gICAgbmV3VmFsID0gdXNlRGlyZWN0VmFsdWUgPyBuZXdWYWwgOiB0b1JhdyhuZXdWYWwpO1xuICAgIGlmIChoYXNDaGFuZ2VkKG5ld1ZhbCwgdGhpcy5fcmF3VmFsdWUpKSB7XG4gICAgICBjb25zdCBvbGRWYWwgPSB0aGlzLl9yYXdWYWx1ZTtcbiAgICAgIHRoaXMuX3Jhd1ZhbHVlID0gbmV3VmFsO1xuICAgICAgdGhpcy5fdmFsdWUgPSB1c2VEaXJlY3RWYWx1ZSA/IG5ld1ZhbCA6IHRvUmVhY3RpdmUobmV3VmFsKTtcbiAgICAgIHRyaWdnZXJSZWZWYWx1ZSh0aGlzLCA0LCBuZXdWYWwsIG9sZFZhbCk7XG4gICAgfVxuICB9XG59XG5mdW5jdGlvbiB0cmlnZ2VyUmVmKHJlZjIpIHtcbiAgdHJpZ2dlclJlZlZhbHVlKHJlZjIsIDQsICEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgPyByZWYyLnZhbHVlIDogdm9pZCAwKTtcbn1cbmZ1bmN0aW9uIHVucmVmKHJlZjIpIHtcbiAgcmV0dXJuIGlzUmVmKHJlZjIpID8gcmVmMi52YWx1ZSA6IHJlZjI7XG59XG5mdW5jdGlvbiB0b1ZhbHVlKHNvdXJjZSkge1xuICByZXR1cm4gaXNGdW5jdGlvbihzb3VyY2UpID8gc291cmNlKCkgOiB1bnJlZihzb3VyY2UpO1xufVxuY29uc3Qgc2hhbGxvd1Vud3JhcEhhbmRsZXJzID0ge1xuICBnZXQ6ICh0YXJnZXQsIGtleSwgcmVjZWl2ZXIpID0+IHVucmVmKFJlZmxlY3QuZ2V0KHRhcmdldCwga2V5LCByZWNlaXZlcikpLFxuICBzZXQ6ICh0YXJnZXQsIGtleSwgdmFsdWUsIHJlY2VpdmVyKSA9PiB7XG4gICAgY29uc3Qgb2xkVmFsdWUgPSB0YXJnZXRba2V5XTtcbiAgICBpZiAoaXNSZWYob2xkVmFsdWUpICYmICFpc1JlZih2YWx1ZSkpIHtcbiAgICAgIG9sZFZhbHVlLnZhbHVlID0gdmFsdWU7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFJlZmxlY3Quc2V0KHRhcmdldCwga2V5LCB2YWx1ZSwgcmVjZWl2ZXIpO1xuICAgIH1cbiAgfVxufTtcbmZ1bmN0aW9uIHByb3h5UmVmcyhvYmplY3RXaXRoUmVmcykge1xuICByZXR1cm4gaXNSZWFjdGl2ZShvYmplY3RXaXRoUmVmcykgPyBvYmplY3RXaXRoUmVmcyA6IG5ldyBQcm94eShvYmplY3RXaXRoUmVmcywgc2hhbGxvd1Vud3JhcEhhbmRsZXJzKTtcbn1cbmNsYXNzIEN1c3RvbVJlZkltcGwge1xuICBjb25zdHJ1Y3RvcihmYWN0b3J5KSB7XG4gICAgdGhpcy5kZXAgPSB2b2lkIDA7XG4gICAgdGhpcy5fX3ZfaXNSZWYgPSB0cnVlO1xuICAgIGNvbnN0IHsgZ2V0LCBzZXQgfSA9IGZhY3RvcnkoXG4gICAgICAoKSA9PiB0cmFja1JlZlZhbHVlKHRoaXMpLFxuICAgICAgKCkgPT4gdHJpZ2dlclJlZlZhbHVlKHRoaXMpXG4gICAgKTtcbiAgICB0aGlzLl9nZXQgPSBnZXQ7XG4gICAgdGhpcy5fc2V0ID0gc2V0O1xuICB9XG4gIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZ2V0KCk7XG4gIH1cbiAgc2V0IHZhbHVlKG5ld1ZhbCkge1xuICAgIHRoaXMuX3NldChuZXdWYWwpO1xuICB9XG59XG5mdW5jdGlvbiBjdXN0b21SZWYoZmFjdG9yeSkge1xuICByZXR1cm4gbmV3IEN1c3RvbVJlZkltcGwoZmFjdG9yeSk7XG59XG5mdW5jdGlvbiB0b1JlZnMob2JqZWN0KSB7XG4gIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpICYmICFpc1Byb3h5KG9iamVjdCkpIHtcbiAgICB3YXJuKGB0b1JlZnMoKSBleHBlY3RzIGEgcmVhY3RpdmUgb2JqZWN0IGJ1dCByZWNlaXZlZCBhIHBsYWluIG9uZS5gKTtcbiAgfVxuICBjb25zdCByZXQgPSBpc0FycmF5KG9iamVjdCkgPyBuZXcgQXJyYXkob2JqZWN0Lmxlbmd0aCkgOiB7fTtcbiAgZm9yIChjb25zdCBrZXkgaW4gb2JqZWN0KSB7XG4gICAgcmV0W2tleV0gPSBwcm9wZXJ0eVRvUmVmKG9iamVjdCwga2V5KTtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuY2xhc3MgT2JqZWN0UmVmSW1wbCB7XG4gIGNvbnN0cnVjdG9yKF9vYmplY3QsIF9rZXksIF9kZWZhdWx0VmFsdWUpIHtcbiAgICB0aGlzLl9vYmplY3QgPSBfb2JqZWN0O1xuICAgIHRoaXMuX2tleSA9IF9rZXk7XG4gICAgdGhpcy5fZGVmYXVsdFZhbHVlID0gX2RlZmF1bHRWYWx1ZTtcbiAgICB0aGlzLl9fdl9pc1JlZiA9IHRydWU7XG4gIH1cbiAgZ2V0IHZhbHVlKCkge1xuICAgIGNvbnN0IHZhbCA9IHRoaXMuX29iamVjdFt0aGlzLl9rZXldO1xuICAgIHJldHVybiB2YWwgPT09IHZvaWQgMCA/IHRoaXMuX2RlZmF1bHRWYWx1ZSA6IHZhbDtcbiAgfVxuICBzZXQgdmFsdWUobmV3VmFsKSB7XG4gICAgdGhpcy5fb2JqZWN0W3RoaXMuX2tleV0gPSBuZXdWYWw7XG4gIH1cbiAgZ2V0IGRlcCgpIHtcbiAgICByZXR1cm4gZ2V0RGVwRnJvbVJlYWN0aXZlKHRvUmF3KHRoaXMuX29iamVjdCksIHRoaXMuX2tleSk7XG4gIH1cbn1cbmNsYXNzIEdldHRlclJlZkltcGwge1xuICBjb25zdHJ1Y3RvcihfZ2V0dGVyKSB7XG4gICAgdGhpcy5fZ2V0dGVyID0gX2dldHRlcjtcbiAgICB0aGlzLl9fdl9pc1JlZiA9IHRydWU7XG4gICAgdGhpcy5fX3ZfaXNSZWFkb25seSA9IHRydWU7XG4gIH1cbiAgZ2V0IHZhbHVlKCkge1xuICAgIHJldHVybi
15B0aGlzLl9nZXR0ZXIoKTtcbiAgfVxufVxuZnVuY3Rpb24gdG9SZWYoc291cmNlLCBrZXksIGRlZmF1bHRWYWx1ZSkge1xuICBpZiAoaXNSZWYoc291cmNlKSkge1xuICAgIHJldHVybiBzb3VyY2U7XG4gIH0gZWxzZSBpZiAoaXNGdW5jdGlvbihzb3VyY2UpKSB7XG4gICAgcmV0dXJuIG5ldyBHZXR0ZXJSZWZJbXBsKHNvdXJjZSk7XG4gIH0gZWxzZSBpZiAoaXNPYmplY3Qoc291cmNlKSAmJiBhcmd1bWVudHMubGVuZ3RoID4gMSkge1xuICAgIHJldHVybiBwcm9wZXJ0eVRvUmVmKHNvdXJjZSwga2V5LCBkZWZhdWx0VmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiByZWYoc291cmNlKTtcbiAgfVxufVxuZnVuY3Rpb24gcHJvcGVydHlUb1JlZihzb3VyY2UsIGtleSwgZGVmYXVsdFZhbHVlKSB7XG4gIGNvbnN0IHZhbCA9IHNvdXJjZVtrZXldO1xuICByZXR1cm4gaXNSZWYodmFsKSA/IHZhbCA6IG5ldyBPYmplY3RSZWZJbXBsKHNvdXJjZSwga2V5LCBkZWZhdWx0VmFsdWUpO1xufVxuXG5jb25zdCBkZWZlcnJlZENvbXB1dGVkID0gY29tcHV0ZWQ7XG5cbmNvbnN0IFRyYWNrT3BUeXBlcyA9IHtcbiAgXCJHRVRcIjogXCJnZXRcIixcbiAgXCJIQVNcIjogXCJoYXNcIixcbiAgXCJJVEVSQVRFXCI6IFwiaXRlcmF0ZVwiXG59O1xuY29uc3QgVHJpZ2dlck9wVHlwZXMgPSB7XG4gIFwiU0VUXCI6IFwic2V0XCIsXG4gIFwiQUREXCI6IFwiYWRkXCIsXG4gIFwiREVMRVRFXCI6IFwiZGVsZXRlXCIsXG4gIFwiQ0xFQVJcIjogXCJjbGVhclwiXG59O1xuY29uc3QgUmVhY3RpdmVGbGFncyA9IHtcbiAgXCJTS0lQXCI6IFwiX192X3NraXBcIixcbiAgXCJJU19SRUFDVElWRVwiOiBcIl9fdl9pc1JlYWN0aXZlXCIsXG4gIFwiSVNfUkVBRE9OTFlcIjogXCJfX3ZfaXNSZWFkb25seVwiLFxuICBcIklTX1NIQUxMT1dcIjogXCJfX3ZfaXNTaGFsbG93XCIsXG4gIFwiUkFXXCI6IFwiX192X3Jhd1wiXG59O1xuXG5leHBvcnQgeyBFZmZlY3RTY29wZSwgSVRFUkFURV9LRVksIFJlYWN0aXZlRWZmZWN0LCBSZWFjdGl2ZUZsYWdzLCBUcmFja09wVHlwZXMsIFRyaWdnZXJPcFR5cGVzLCBjb21wdXRlZCwgY3VzdG9tUmVmLCBkZWZlcnJlZENvbXB1dGVkLCBlZmZlY3QsIGVmZmVjdFNjb3BlLCBlbmFibGVUcmFja2luZywgZ2V0Q3VycmVudFNjb3BlLCBpc1Byb3h5LCBpc1JlYWN0aXZlLCBpc1JlYWRvbmx5LCBpc1JlZiwgaXNTaGFsbG93LCBtYXJrUmF3LCBvblNjb3BlRGlzcG9zZSwgcGF1c2VTY2hlZHVsaW5nLCBwYXVzZVRyYWNraW5nLCBwcm94eVJlZnMsIHJlYWN0aXZlLCByZWFkb25seSwgcmVmLCByZXNldFNjaGVkdWxpbmcsIHJlc2V0VHJhY2tpbmcsIHNoYWxsb3dSZWFjdGl2ZSwgc2hhbGxvd1JlYWRvbmx5LCBzaGFsbG93UmVmLCBzdG9wLCB0b1JhdywgdG9SZWYsIHRvUmVmcywgdG9WYWx1ZSwgdHJhY2ssIHRyaWdnZXIsIHRyaWdnZXJSZWYsIHVucmVmIH07XG4iLCIvKipcbiogQHZ1ZS9ydW50aW1lLWNvcmUgdjMuNC4zOFxuKiAoYykgMjAxOC1wcmVzZW50IFl1eGkgKEV2YW4pIFlvdSBhbmQgVnVlIGNvbnRyaWJ1dG9yc1xuKiBAbGljZW5zZSBNSVRcbioqL1xuaW1wb3J0IHsgcGF1c2VUcmFja2luZywgcmVzZXRUcmFja2luZywgaXNSZWYsIHRvUmF3LCByZWYsIHNoYWxsb3dSZWFkb25seSwgdHJhY2ssIHJlYWN0aXZlLCBzaGFsbG93UmVhY3RpdmUsIHRyaWdnZXIsIGlzUmVhY3RpdmUsIFJlYWN0aXZlRWZmZWN0LCBpc1NoYWxsb3csIGdldEN1cnJlbnRTY29wZSwgY3VzdG9tUmVmLCBpc1Byb3h5LCBwcm94eVJlZnMsIG1hcmtSYXcsIEVmZmVjdFNjb3BlLCBjb21wdXRlZCBhcyBjb21wdXRlZCQxLCBpc1JlYWRvbmx5IH0gZnJvbSAnQHZ1ZS9yZWFjdGl2aXR5JztcbmV4cG9ydCB7IEVmZmVjdFNjb3BlLCBSZWFjdGl2ZUVmZmVjdCwgVHJhY2tPcFR5cGVzLCBUcmlnZ2VyT3BUeXBlcywgY3VzdG9tUmVmLCBlZmZlY3QsIGVmZmVjdFNjb3BlLCBnZXRDdXJyZW50U2NvcGUsIGlzUHJveHksIGlzUmVhY3RpdmUsIGlzUmVhZG9ubHksIGlzUmVmLCBpc1NoYWxsb3csIG1hcmtSYXcsIG9uU2NvcGVEaXNwb3NlLCBwcm94eVJlZnMsIHJlYWN0aXZlLCByZWFkb25seSwgcmVmLCBzaGFsbG93UmVhY3RpdmUsIHNoYWxsb3dSZWFkb25seSwgc2hhbGxvd1JlZiwgc3RvcCwgdG9SYXcsIHRvUmVmLCB0b1JlZnMsIHRvVmFsdWUsIHRyaWdnZXJSZWYsIHVucmVmIH0gZnJvbSAnQHZ1ZS9yZWFjdGl2aXR5JztcbmltcG9ydCB7IGlzU3RyaW5nLCBpc0Z1bmN0aW9uLCBpc1Byb21pc2UsIGlzQXJyYXksIE5PT1AsIGdldEdsb2JhbFRoaXMsIGV4dGVuZCwgaXNCdWlsdEluRGlyZWN0aXZlLCBFTVBUWV9PQkosIGlzT2JqZWN0LCByZW1vdmUsIGlzUmVnRXhwLCBpbnZva2VBcnJheUZucywgdG9IYW5kbGVyS2V5LCBjYXBpdGFsaXplLCBjYW1lbGl6ZSwgaGFzT3duLCBpc0dsb2JhbGx5QWxsb3dlZCwgTk8sIGh5cGhlbmF0ZSwgaXNSZXNlcnZlZFByb3AsIEVNUFRZX0FSUiwgdG9SYXdUeXBlLCBtYWtlTWFwLCBkZWYsIGlzT24sIG5vcm1hbGl6ZUNsYXNzLCBzdHJpbmdpZnlTdHlsZSwgbm9ybWFsaXplU3R5bGUsIGlzS25vd25TdmdBdHRyLCBpc0Jvb2xlYW5BdHRyLCBpc0tub3duSHRtbEF0dHIsIGluY2x1ZGVCb29sZWFuQXR0ciwgaXNSZW5kZXJhYmxlQXR0clZhbHVlLCBoYXNDaGFuZ2VkLCBpc1NldCwgaXNNYXAsIGlzUGxhaW5PYmplY3QsIGxvb3NlVG9OdW1iZXIsIGlzTW9kZWxMaXN0ZW5lciwgdG9OdW1iZXIgfSBmcm9tICdAdnVlL3NoYXJlZCc7XG5leHBvcnQgeyBjYW1lbGl6ZSwgY2FwaXRhbGl6ZSwgbm9ybWFsaXplQ2xhc3MsIG5vcm1hbGl6ZVByb3BzLCBub3JtYWxpemVTdHlsZSwgdG9EaXNwbGF5U3RyaW5nLCB0b0hhbmRsZXJLZXkgfSBmcm9tICdAdnVlL3NoYXJlZCc7XG5cbmNvbnN0IHN0YWNrID0gW107XG5mdW5jdGlvbiBwdXNoV2FybmluZ0NvbnRleHQodm5vZGUpIHtcbiAgc3RhY2sucHVzaCh2bm9kZSk7XG59XG5mdW5jdGlvbiBwb3BXYXJuaW5nQ29udGV4dCgpIHtcbiAgc3RhY2sucG9wKCk7XG59XG5sZXQgaXNXYXJuaW5nID0gZmFsc2U7XG5mdW5jdGlvbiB3YXJuJDEobXNnLCAuLi5hcmdzKSB7XG4gIGlmIChpc1dhcm5pbmcpIHJldHVybjtcbiAgaXNXYXJuaW5nID0gdHJ1ZTtcbiAgcGF1c2VUcmFja2luZygpO1xuICBjb25zdCBpbnN0YW5jZSA9IHN0YWNrLmxlbmd0aCA/IHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdLmNvbXBvbmVudCA6IG51bGw7XG4gIGNvbnN0IGFwcFdhcm5IYW5kbGVyID0gaW5zdGFuY2UgJiYgaW5zdGFuY2UuYXBwQ29udGV4dC5jb25maWcud2FybkhhbmRsZXI7XG4gIGNvbnN0IHRyYWNlID0gZ2V0Q29tcG9uZW50VHJhY2UoKTtcbiAgaWYgKGFwcFdhcm5IYW5kbGVyKSB7XG4gICAgY2FsbFdpdGhFcnJvckhhbmRsaW5nKFxuICAgICAgYXBwV2FybkhhbmRsZXIsXG4gICAgICBpbnN0YW5jZSxcbiAgICAgIDExLFxuICAgICAgW1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1zeW50YXhcbiAgICAgICAgbXNnICsgYXJncy5tYXAoKGEpID0+IHtcbiAgICAgICAgICB2Y
15XIgX2EsIF9iO1xuICAgICAgICAgIHJldHVybiAoX2IgPSAoX2EgPSBhLnRvU3RyaW5nKSA9PSBudWxsID8gdm9pZCAwIDogX2EuY2FsbChhKSkgIT0gbnVsbCA/IF9iIDogSlNPTi5zdHJpbmdpZnkoYSk7XG4gICAgICAgIH0pLmpvaW4oXCJcIiksXG4gICAgICAgIGluc3RhbmNlICYmIGluc3RhbmNlLnByb3h5LFxuICAgICAgICB0cmFjZS5tYXAoXG4gICAgICAgICAgKHsgdm5vZGUgfSkgPT4gYGF0IDwke2Zvcm1hdENvbXBvbmVudE5hbWUoaW5zdGFuY2UsIHZub2RlLnR5cGUpfT5gXG4gICAgICAgICkuam9pbihcIlxcblwiKSxcbiAgICAgICAgdHJhY2VcbiAgICAgIF1cbiAgICApO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHdhcm5BcmdzID0gW2BbVnVlIHdhcm5dOiAke21zZ31gLCAuLi5hcmdzXTtcbiAgICBpZiAodHJhY2UubGVuZ3RoICYmIC8vIGF2b2lkIHNwYW1taW5nIGNvbnNvbGUgZHVyaW5nIHRlc3RzXG4gICAgdHJ1ZSkge1xuICAgICAgd2FybkFyZ3MucHVzaChgXG5gLCAuLi5mb3JtYXRUcmFjZSh0cmFjZSkpO1xuICAgIH1cbiAgICBjb25zb2xlLndhcm4oLi4ud2FybkFyZ3MpO1xuICB9XG4gIHJlc2V0VHJhY2tpbmcoKTtcbiAgaXNXYXJuaW5nID0gZmFsc2U7XG59XG5mdW5jdGlvbiBnZXRDb21wb25lbnRUcmFjZSgpIHtcbiAgbGV0IGN1cnJlbnRWTm9kZSA9IHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdO1xuICBpZiAoIWN1cnJlbnRWTm9kZSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBjb25zdCBub3JtYWxpemVkU3RhY2sgPSBbXTtcbiAgd2hpbGUgKGN1cnJlbnRWTm9kZSkge1xuICAgIGNvbnN0IGxhc3QgPSBub3JtYWxpemVkU3RhY2tbMF07XG4gICAgaWYgKGxhc3QgJiYgbGFzdC52bm9kZSA9PT0gY3VycmVudFZOb2RlKSB7XG4gICAgICBsYXN0LnJlY3Vyc2VDb3VudCsrO1xuICAgIH0gZWxzZSB7XG4gICAgICBub3JtYWxpemVkU3RhY2sucHVzaCh7XG4gICAgICAgIHZub2RlOiBjdXJyZW50Vk5vZGUsXG4gICAgICAgIHJlY3Vyc2VDb3VudDogMFxuICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IHBhcmVudEluc3RhbmNlID0gY3VycmVudFZOb2RlLmNvbXBvbmVudCAmJiBjdXJyZW50Vk5vZGUuY29tcG9uZW50LnBhcmVudDtcbiAgICBjdXJyZW50Vk5vZGUgPSBwYXJlbnRJbnN0YW5jZSAmJiBwYXJlbnRJbnN0YW5jZS52bm9kZTtcbiAgfVxuICByZXR1cm4gbm9ybWFsaXplZFN0YWNrO1xufVxuZnVuY3Rpb24gZm9ybWF0VHJhY2UodHJhY2UpIHtcbiAgY29uc3QgbG9ncyA9IFtdO1xuICB0cmFjZS5mb3JFYWNoKChlbnRyeSwgaSkgPT4ge1xuICAgIGxvZ3MucHVzaCguLi5pID09PSAwID8gW10gOiBbYFxuYF0sIC4uLmZvcm1hdFRyYWNlRW50cnkoZW50cnkpKTtcbiAgfSk7XG4gIHJldHVybiBsb2dzO1xufVxuZnVuY3Rpb24gZm9ybWF0VHJhY2VFbnRyeSh7IHZub2RlLCByZWN1cnNlQ291bnQgfSkge1xuICBjb25zdCBwb3N0Zml4ID0gcmVjdXJzZUNvdW50ID4gMCA/IGAuLi4gKCR7cmVjdXJzZUNvdW50fSByZWN1cnNpdmUgY2FsbHMpYCA6IGBgO1xuICBjb25zdCBpc1Jvb3QgPSB2bm9kZS5jb21wb25lbnQgPyB2bm9kZS5jb21wb25lbnQucGFyZW50ID09IG51bGwgOiBmYWxzZTtcbiAgY29uc3Qgb3BlbiA9IGAgYXQgPCR7Zm9ybWF0Q29tcG9uZW50TmFtZShcbiAgICB2bm9kZS5jb21wb25lbnQsXG4gICAgdm5vZGUudHlwZSxcbiAgICBpc1Jvb3RcbiAgKX1gO1xuICBjb25zdCBjbG9zZSA9IGA+YCArIHBvc3RmaXg7XG4gIHJldHVybiB2bm9kZS5wcm9wcyA/IFtvcGVuLCAuLi5mb3JtYXRQcm9wcyh2bm9kZS5wcm9wcyksIGNsb3NlXSA6IFtvcGVuICsgY2xvc2VdO1xufVxuZnVuY3Rpb24gZm9ybWF0UHJvcHMocHJvcHMpIHtcbiAgY29uc3QgcmVzID0gW107XG4gIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhwcm9wcyk7XG4gIGtleXMuc2xpY2UoMCwgMykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgcmVzLnB1c2goLi4uZm9ybWF0UHJvcChrZXksIHByb3BzW2tleV0pKTtcbiAgfSk7XG4gIGlmIChrZXlzLmxlbmd0aCA+IDMpIHtcbiAgICByZXMucHVzaChgIC4uLmApO1xuICB9XG4gIHJldHVybiByZXM7XG59XG5mdW5jdGlvbiBmb3JtYXRQcm9wKGtleSwgdmFsdWUsIHJhdykge1xuICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgdmFsdWUgPSBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gICAgcmV0dXJuIHJhdyA/IHZhbHVlIDogW2Ake2tleX09JHt2YWx1ZX1gXTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIgfHwgdHlwZW9mIHZhbHVlID09PSBcImJvb2xlYW5cIiB8fCB2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHJhdyA/IHZhbHVlIDogW2Ake2tleX09JHt2YWx1ZX1gXTtcbiAgfSBlbHNlIGlmIChpc1JlZih2YWx1ZSkpIHtcbiAgICB2YWx1ZSA9IGZvcm1hdFByb3Aoa2V5LCB0b1Jhdyh2YWx1ZS52YWx1ZSksIHRydWUpO1xuICAgIHJldHVybiByYXcgPyB2YWx1ZSA6IFtgJHtrZXl9PVJlZjxgLCB2YWx1ZSwgYD5gXTtcbiAgfSBlbHNlIGlmIChpc0Z1bmN0aW9uKHZhbHVlKSkge1xuICAgIHJldHVybiBbYCR7a2V5fT1mbiR7dmFsdWUubmFtZSA/IGA8JHt2YWx1ZS5uYW1lfT5gIDogYGB9YF07XG4gIH0gZWxzZSB7XG4gICAgdmFsdWUgPSB0b1Jhdyh2YWx1ZSk7XG4gICAgcmV0dXJuIHJhdyA/IHZhbHVlIDogW2Ake2tleX09YCwgdmFsdWVdO1xuICB9XG59XG5mdW5jdGlvbiBhc3NlcnROdW1iZXIodmFsLCB0eXBlKSB7XG4gIGlmICghISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSkgcmV0dXJuO1xuICBpZiAodmFsID09PSB2b2lkIDApIHtcbiAgICByZXR1cm47XG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbCAhPT0gXCJudW1iZXJcIikge1xuICAgIHdhcm4kMShgJHt0eXBlfSBpcyBub3QgYSB2YWxpZCBudW1iZXIgLSBnb3QgJHtKU09OLnN0cmluZ2lmeSh2YWwpfS5gKTtcbiAgfSBlbHNlIGlmIChpc05hTih2YWwpKSB7XG4gICAgd2FybiQxKGAke3R5cGV9IGlzIE5hTiAtIHRoZSBkdXJhdGlvbiBleHByZXNzaW9uIG1pZ2h0IGJlIGluY29ycmVjdC5gKTtcbiAgfVxufVxuXG5jb25zdCBFcnJvckNvZGVzID0ge1xuICBcIlNFVFVQX0ZVTkNUSU9OXCI6IDAsXG4gIFwiMFwiOiBcIlNFVFVQX0ZVTkNUSU9OXCIsXG4gIFwiUkVOREVSX0ZVTkNUSU9OXCI6IDEsXG4gIFwiMVwiOiBcIlJFTkRFUl9GVU5DVElPTlwiLFxuICBcIldBVENIX0dFVFRFUlwiOiAyLFxuICBcIjJcIjogXCJXQVRDSF9HRVRURVJcIixcbiAgXCJXQVRDSF9DQUxMQkFDS1wiOiAzLFxuICBcIjNcIjogXCJXQVRDSF9DQUxMQkFDS1wiLFxuICBcIldBVENIX0NMRUFOVVBcIjogNCxcbiAgXCI0XCI6IFwiV0FUQ0hfQ0xFQU5VUFwiLFxuICBcIk5BVElWRV9FVkVOVF9IQU5ETEVSXCI6I
15DUsXG4gIFwiNVwiOiBcIk5BVElWRV9FVkVOVF9IQU5ETEVSXCIsXG4gIFwiQ09NUE9ORU5UX0VWRU5UX0hBTkRMRVJcIjogNixcbiAgXCI2XCI6IFwiQ09NUE9ORU5UX0VWRU5UX0hBTkRMRVJcIixcbiAgXCJWTk9ERV9IT09LXCI6IDcsXG4gIFwiN1wiOiBcIlZOT0RFX0hPT0tcIixcbiAgXCJESVJFQ1RJVkVfSE9PS1wiOiA4LFxuICBcIjhcIjogXCJESVJFQ1RJVkVfSE9PS1wiLFxuICBcIlRSQU5TSVRJT05fSE9PS1wiOiA5LFxuICBcIjlcIjogXCJUUkFOU0lUSU9OX0hPT0tcIixcbiAgXCJBUFBfRVJST1JfSEFORExFUlwiOiAxMCxcbiAgXCIxMFwiOiBcIkFQUF9FUlJPUl9IQU5ETEVSXCIsXG4gIFwiQVBQX1dBUk5fSEFORExFUlwiOiAxMSxcbiAgXCIxMVwiOiBcIkFQUF9XQVJOX0hBTkRMRVJcIixcbiAgXCJGVU5DVElPTl9SRUZcIjogMTIsXG4gIFwiMTJcIjogXCJGVU5DVElPTl9SRUZcIixcbiAgXCJBU1lOQ19DT01QT05FTlRfTE9BREVSXCI6IDEzLFxuICBcIjEzXCI6IFwiQVNZTkNfQ09NUE9ORU5UX0xPQURFUlwiLFxuICBcIlNDSEVEVUxFUlwiOiAxNCxcbiAgXCIxNFwiOiBcIlNDSEVEVUxFUlwiLFxuICBcIkNPTVBPTkVOVF9VUERBVEVcIjogMTUsXG4gIFwiMTVcIjogXCJDT01QT05FTlRfVVBEQVRFXCJcbn07XG5jb25zdCBFcnJvclR5cGVTdHJpbmdzJDEgPSB7XG4gIFtcInNwXCJdOiBcInNlcnZlclByZWZldGNoIGhvb2tcIixcbiAgW1wiYmNcIl06IFwiYmVmb3JlQ3JlYXRlIGhvb2tcIixcbiAgW1wiY1wiXTogXCJjcmVhdGVkIGhvb2tcIixcbiAgW1wiYm1cIl06IFwiYmVmb3JlTW91bnQgaG9va1wiLFxuICBbXCJtXCJdOiBcIm1vdW50ZWQgaG9va1wiLFxuICBbXCJidVwiXTogXCJiZWZvcmVVcGRhdGUgaG9va1wiLFxuICBbXCJ1XCJdOiBcInVwZGF0ZWRcIixcbiAgW1wiYnVtXCJdOiBcImJlZm9yZVVubW91bnQgaG9va1wiLFxuICBbXCJ1bVwiXTogXCJ1bm1vdW50ZWQgaG9va1wiLFxuICBbXCJhXCJdOiBcImFjdGl2YXRlZCBob29rXCIsXG4gIFtcImRhXCJdOiBcImRlYWN0aXZhdGVkIGhvb2tcIixcbiAgW1wiZWNcIl06IFwiZXJyb3JDYXB0dXJlZCBob29rXCIsXG4gIFtcInJ0Y1wiXTogXCJyZW5kZXJUcmFja2VkIGhvb2tcIixcbiAgW1wicnRnXCJdOiBcInJlbmRlclRyaWdnZXJlZCBob29rXCIsXG4gIFswXTogXCJzZXR1cCBmdW5jdGlvblwiLFxuICBbMV06IFwicmVuZGVyIGZ1bmN0aW9uXCIsXG4gIFsyXTogXCJ3YXRjaGVyIGdldHRlclwiLFxuICBbM106IFwid2F0Y2hlciBjYWxsYmFja1wiLFxuICBbNF06IFwid2F0Y2hlciBjbGVhbnVwIGZ1bmN0aW9uXCIsXG4gIFs1XTogXCJuYXRpdmUgZXZlbnQgaGFuZGxlclwiLFxuICBbNl06IFwiY29tcG9uZW50IGV2ZW50IGhhbmRsZXJcIixcbiAgWzddOiBcInZub2RlIGhvb2tcIixcbiAgWzhdOiBcImRpcmVjdGl2ZSBob29rXCIsXG4gIFs5XTogXCJ0cmFuc2l0aW9uIGhvb2tcIixcbiAgWzEwXTogXCJhcHAgZXJyb3JIYW5kbGVyXCIsXG4gIFsxMV06IFwiYXBwIHdhcm5IYW5kbGVyXCIsXG4gIFsxMl06IFwicmVmIGZ1bmN0aW9uXCIsXG4gIFsxM106IFwiYXN5bmMgY29tcG9uZW50IGxvYWRlclwiLFxuICBbMTRdOiBcInNjaGVkdWxlciBmbHVzaFwiLFxuICBbMTVdOiBcImNvbXBvbmVudCB1cGRhdGVcIlxufTtcbmZ1bmN0aW9uIGNhbGxXaXRoRXJyb3JIYW5kbGluZyhmbiwgaW5zdGFuY2UsIHR5cGUsIGFyZ3MpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXJncyA/IGZuKC4uLmFyZ3MpIDogZm4oKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgaGFuZGxlRXJyb3IoZXJyLCBpbnN0YW5jZSwgdHlwZSk7XG4gIH1cbn1cbmZ1bmN0aW9uIGNhbGxXaXRoQXN5bmNFcnJvckhhbmRsaW5nKGZuLCBpbnN0YW5jZSwgdHlwZSwgYXJncykge1xuICBpZiAoaXNGdW5jdGlvbihmbikpIHtcbiAgICBjb25zdCByZXMgPSBjYWxsV2l0aEVycm9ySGFuZGxpbmcoZm4sIGluc3RhbmNlLCB0eXBlLCBhcmdzKTtcbiAgICBpZiAocmVzICYmIGlzUHJvbWlzZShyZXMpKSB7XG4gICAgICByZXMuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICBoYW5kbGVFcnJvcihlcnIsIGluc3RhbmNlLCB0eXBlKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9XG4gIGlmIChpc0FycmF5KGZuKSkge1xuICAgIGNvbnN0IHZhbHVlcyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZm4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhbHVlcy5wdXNoKGNhbGxXaXRoQXN5bmNFcnJvckhhbmRsaW5nKGZuW2ldLCBpbnN0YW5jZSwgdHlwZSwgYXJncykpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWVzO1xuICB9IGVsc2UgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikpIHtcbiAgICB3YXJuJDEoXG4gICAgICBgSW52YWxpZCB2YWx1ZSB0eXBlIHBhc3NlZCB0byBjYWxsV2l0aEFzeW5jRXJyb3JIYW5kbGluZygpOiAke3R5cGVvZiBmbn1gXG4gICAgKTtcbiAgfVxufVxuZnVuY3Rpb24gaGFuZGxlRXJyb3IoZXJyLCBpbnN0YW5jZSwgdHlwZSwgdGhyb3dJbkRldiA9IHRydWUpIHtcbiAgY29uc3QgY29udGV4dFZOb2RlID0gaW5zdGFuY2UgPyBpbnN0YW5jZS52bm9kZSA6IG51bGw7XG4gIGlmIChpbnN0YW5jZSkge1xuICAgIGxldCBjdXIgPSBpbnN0YW5jZS5wYXJlbnQ7XG4gICAgY29uc3QgZXhwb3NlZEluc3RhbmNlID0gaW5zdGFuY2UucHJveHk7XG4gICAgY29uc3QgZXJyb3JJbmZvID0gISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSA/IEVycm9yVHlwZVN0cmluZ3MkMVt0eXBlXSA6IGBodHRwczovL3Z1ZWpzLm9yZy9lcnJvci1yZWZlcmVuY2UvI3J1bnRpbWUtJHt0eXBlfWA7XG4gICAgd2hpbGUgKGN1cikge1xuICAgICAgY29uc3QgZXJyb3JDYXB0dXJlZEhvb2tzID0gY3VyLmVjO1xuICAgICAgaWYgKGVycm9yQ2FwdHVyZWRIb29rcykge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVycm9yQ2FwdHVyZWRIb29rcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmIChlcnJvckNhcHR1cmVkSG9va3NbaV0oZXJyLCBleHBvc2VkSW5zdGFuY2UsIGVycm9ySW5mbykgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjdXIgPSBjdXIucGFyZW50O1xuICAgIH1cbiAgICBjb25zdCBhcHBFcnJvckhhbmRsZXIgPSBpbnN0YW5jZS5hcHBDb250ZXh0LmNvbmZpZy5lcnJvckhhbmRsZXI7XG4gICAgaWYgKGFwcEVycm9ySGFuZGxlcikge1xuICAgICAgcGF1c2VUcmFja2luZygpO1xuICAgICAgY2FsbFdpdGhFcnJvckhhbmRsaW5nKFxuICAgICAgICBhcHBFcnJvckhhbmRsZXIsXG4gICAgICAgIG51bGwsXG4gICAgICAgIDEwLFxuICAgICAgICBbZXJyLCBleHBvc2VkSW5zdGFuY2UsIGVycm9ySW5mb11cbiAgICAgICk7XG4gICAgICByZXNldFRyYWNraW5nKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG4gIGxvZ0Vycm9yKGVyciwgdHlwZSwgY29udGV4dFZOb2RlLCB0aHJvd0luRGV2KTtcbn1cbmZ1bmN0aW9uIGxvZ0Vycm9yKGVyciwgdHlwZSwgY29udGV4dFZOb2RlLCB0aHJvd0luRGV2ID0gdHJ1ZSkge1xuICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSkge1xuICAgIGNvbnN0IGluZm8gPSBFcnJvclR5cGVTdHJpbmdzJDFbdHlwZV07XG4gICAgaWYgKGNvbnRleHRWTm9kZSkge1xuICAgICAgcHVzaFdhcm5pbmdDb250ZXh0KGNvbnRleHRWTm9kZSk7XG4gICAgfVxuICAgIHdhcm4kMShgVW5oYW5kbGVkIGVycm9yJHtpbmZvID8gYCBkdXJpbmcgZXhlY3V0aW9uIG9mICR7aW5mb31gIDogYGB9YCk7XG4gICAgaWYgKGNvbnRleHRWTm9kZSkge1xuICAgICAgcG9wV2FybmluZ0NvbnRleHQoKTtcbiAgICB9XG4gICAgaWYgKHRocm93SW5EZXYpIHtcbiAgICAgIHRocm93IGVycjtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjb25zb2xlLmVycm9yKGVycik7XG4gIH1cbn1cblxubGV0IGlzRmx1c2hpbmcgPSBmYWxzZTtcbmxldCBpc0ZsdXNoUGVuZGluZyA9IGZhbHNlO1xuY29uc3QgcXVldWUgPSBbXTtcbmxldCBmbHVzaEluZGV4ID0gMDtcbmNvbnN0IHBlbmRpbmdQb3N0Rmx1c2hDYnMgPSBbXTtcbmxldCBhY3RpdmVQb3N0Rmx1c2hDYnMgPSBudWxsO1xubGV0IHBvc3RGbHVzaEluZGV4ID0gMDtcbmNvbnN0IHJlc29sdmVkUHJvbWlzZSA9IC8qIEBfX1BVUkVfXyAqLyBQcm9taXNlLnJlc29sdmUoKTtcbmxldCBjdXJyZW50Rmx1c2hQcm9taXNlID0gbnVsbDtcbmNvbnN0IFJFQ1VSU0lPTl9MSU1JVCA9IDEwMDtcbmZ1bmN0aW9uIG5leHRUaWNrKGZuKSB7XG4gIGNvbnN0IHAgPSBjdXJyZW50Rmx1c2hQcm9taXNlIHx8IHJlc29sdmVkUHJvbWlzZTtcbiAgcmV0dXJuIGZuID8gcC50aGVuKHRoaXMgPyBmbi5iaW5kKHRoaXMpIDogZm4pIDogcDtcbn1cbmZ1bmN0aW9uIGZpbmRJbnNlcnRpb25JbmRleChpZCkge1xuICBsZXQgc3RhcnQgPSBmbHVzaEluZGV4ICsgMTtcbiAgbGV0IGVuZCA9IHF1ZXVlLmxlbmd0aDtcbiAgd2hpbGUgKHN0YXJ0IDwgZW5kKSB7XG4gICAgY29uc3QgbWlkZGxlID0gc3RhcnQgKyBlbmQgPj4+IDE7XG4gICAgY29uc3QgbWlkZGxlSm9iID0gcXVldWVbbWlkZGxlXTtcbiAgICBjb25zdCBtaWRkbGVKb2JJZCA9IGdldElkKG1pZGRsZUpvYik7XG4gICAgaWYgKG1pZGRsZUpvYklkIDwgaWQgfHwgbWlkZGxlSm9iSWQgPT09IGlkICYmIG1pZGRsZUpvYi5wcmUpIHtcbiAgICAgIHN0YXJ0ID0gbWlkZGxlICsgMTtcbiAgICB9IGVsc2Uge1xuICAgICAgZW5kID0gbWlkZGxlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gc3RhcnQ7XG59XG5mdW5jdGlvbiBxdWV1ZUpvYihqb2IpIHtcbiAgaWYgKCFxdWV1ZS5sZW5ndGggfHwgIXF1ZXVlLmluY2x1ZGVzKFxuICAgIGpvYixcbiAgICBpc0ZsdXNoaW5nICYmIGpvYi5hbGxvd1JlY3Vyc2UgPyBmbHVzaEluZGV4ICsgMSA6
15IGZsdXNoSW5kZXhcbiAgKSkge1xuICAgIGlmIChqb2IuaWQgPT0gbnVsbCkge1xuICAgICAgcXVldWUucHVzaChqb2IpO1xuICAgIH0gZWxzZSB7XG4gICAgICBxdWV1ZS5zcGxpY2UoZmluZEluc2VydGlvbkluZGV4KGpvYi5pZCksIDAsIGpvYik7XG4gICAgfVxuICAgIHF1ZXVlRmx1c2goKTtcbiAgfVxufVxuZnVuY3Rpb24gcXVldWVGbHVzaCgpIHtcbiAgaWYgKCFpc0ZsdXNoaW5nICYmICFpc0ZsdXNoUGVuZGluZykge1xuICAgIGlzRmx1c2hQZW5kaW5nID0gdHJ1ZTtcbiAgICBjdXJyZW50Rmx1c2hQcm9taXNlID0gcmVzb2x2ZWRQcm9taXNlLnRoZW4oZmx1c2hKb2JzKTtcbiAgfVxufVxuZnVuY3Rpb24gaW52YWxpZGF0ZUpvYihqb2IpIHtcbiAgY29uc3QgaSA9IHF1ZXVlLmluZGV4T2Yoam9iKTtcbiAgaWYgKGkgPiBmbHVzaEluZGV4KSB7XG4gICAgcXVldWUuc3BsaWNlKGksIDEpO1xuICB9XG59XG5mdW5jdGlvbiBxdWV1ZVBvc3RGbHVzaENiKGNiKSB7XG4gIGlmICghaXNBcnJheShjYikpIHtcbiAgICBpZiAoIWFjdGl2ZVBvc3RGbHVzaENicyB8fCAhYWN0aXZlUG9zdEZsdXNoQ2JzLmluY2x1ZGVzKFxuICAgICAgY2IsXG4gICAgICBjYi5hbGxvd1JlY3Vyc2UgPyBwb3N0Rmx1c2hJbmRleCArIDEgOiBwb3N0Rmx1c2hJbmRleFxuICAgICkpIHtcbiAgICAgIHBlbmRpbmdQb3N0Rmx1c2hDYnMucHVzaChjYik7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHBlbmRpbmdQb3N0Rmx1c2hDYnMucHVzaCguLi5jYik7XG4gIH1cbiAgcXVldWVGbHVzaCgpO1xufVxuZnVuY3Rpb24gZmx1c2hQcmVGbHVzaENicyhpbnN0YW5jZSwgc2VlbiwgaSA9IGlzRmx1c2hpbmcgPyBmbHVzaEluZGV4ICsgMSA6IDApIHtcbiAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikpIHtcbiAgICBzZWVuID0gc2VlbiB8fCAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuICB9XG4gIGZvciAoOyBpIDwgcXVldWUubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBjYiA9IHF1ZXVlW2ldO1xuICAgIGlmIChjYiAmJiBjYi5wcmUpIHtcbiAgICAgIGlmIChpbnN0YW5jZSAmJiBjYi5pZCAhPT0gaW5zdGFuY2UudWlkKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgJiYgY2hlY2tSZWN1cnNpdmVVcGRhdGVzKHNlZW4sIGNiKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHF1ZXVlLnNwbGljZShpLCAxKTtcbiAgICAgIGktLTtcbiAgICAgIGNiKCk7XG4gICAgfVxuICB9XG59XG5mdW5jdGlvbiBmbHVzaFBvc3RGbHVzaENicyhzZWVuKSB7XG4gIGlmIChwZW5kaW5nUG9zdEZsdXNoQ2JzLmxlbmd0aCkge1xuICAgIGNvbnN0IGRlZHVwZWQgPSBbLi4ubmV3IFNldChwZW5kaW5nUG9zdEZsdXNoQ2JzKV0uc29ydChcbiAgICAgIChhLCBiKSA9PiBnZXRJZChhKSAtIGdldElkKGIpXG4gICAgKTtcbiAgICBwZW5kaW5nUG9zdEZsdXNoQ2JzLmxlbmd0aCA9IDA7XG4gICAgaWYgKGFjdGl2ZVBvc3RGbHVzaENicykge1xuICAgICAgYWN0aXZlUG9zdEZsdXNoQ2JzLnB1c2goLi4uZGVkdXBlZCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGFjdGl2ZVBvc3RGbHVzaENicyA9IGRlZHVwZWQ7XG4gICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikpIHtcbiAgICAgIHNlZW4gPSBzZWVuIHx8IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG4gICAgfVxuICAgIGZvciAocG9zdEZsdXNoSW5kZXggPSAwOyBwb3N0Rmx1c2hJbmRleCA8IGFjdGl2ZVBvc3RGbHVzaENicy5sZW5ndGg7IHBvc3RGbHVzaEluZGV4KyspIHtcbiAgICAgIGNvbnN0IGNiID0gYWN0aXZlUG9zdEZsdXNoQ2JzW3Bvc3RGbHVzaEluZGV4XTtcbiAgICAgIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpICYmIGNoZWNrUmVjdXJzaXZlVXBkYXRlcyhzZWVuLCBjYikpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAoY2IuYWN0aXZlICE9PSBmYWxzZSkgY2IoKTtcbiAgICB9XG4gICAgYWN0aXZlUG9zdEZsdXNoQ2JzID0gbnVsbDtcbiAgICBwb3N0Rmx1c2hJbmRleCA9IDA7XG4gIH1cbn1cbmNvbnN0IGdldElkID0gKGpvYikgPT4gam9iLmlkID09IG51bGwgPyBJbmZpbml0eSA6IGpvYi5pZDtcbmNvbnN0IGNvbXBhcmF0b3IgPSAoYSwgYikgPT4ge1xuICBjb25zdCBkaWZmID0gZ2V0SWQoYSkgLSBnZXRJZChiKTtcbiAgaWYgKGRpZmYgPT09IDApIHtcbiAgICBpZiAoYS5wcmUgJiYgIWIucHJlKSByZXR1cm4gLTE7XG4gICAgaWYgKGIucHJlICYmICFhLnByZSkgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIGRpZmY7XG59O1xuZnVuY3Rpb24gZmx1c2hKb2JzKHNlZW4pIHtcbiAgaXNGbHVzaFBlbmRpbmcgPSBmYWxzZTtcbiAgaXNGbHVzaGluZyA9IHRydWU7XG4gIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpKSB7XG4gICAgc2VlbiA9IHNlZW4gfHwgLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbiAgfVxuICBxdWV1ZS5zb3J0KGNvbXBhcmF0b3IpO1xuICBjb25zdCBjaGVjayA9ICEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgPyAoam9iKSA9PiBjaGVja1JlY3Vyc2l2ZVVwZGF0ZXMoc2Vlbiwgam9iKSA6IE5PT1A7XG4gIHRyeSB7XG4gICAgZm9yIChmbHVzaEluZGV4ID0gMDsgZmx1c2hJbmRleCA8IHF1ZXVlLmxlbmd0aDsgZmx1c2hJbmRleCsrKSB7XG4gICAgICBjb25zdCBqb2IgPSBxdWV1ZVtmbHVzaEluZGV4XTtcbiAgICAgIGlmIChqb2IgJiYgam9iLmFjdGl2ZSAhPT0gZmFsc2UpIHtcbiAgICAgICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgJiYgY2hlY2soam9iKSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNhbGxXaXRoRXJyb3JIYW5kbGluZyhcbiAgICAgICAgICBqb2IsXG4gICAgICAgICAgam9iLmksXG4gICAgICAgICAgam9iLmkgPyAxNSA6IDE0XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9IGZpbmFsbHkge1xuICAgIGZsdXNoSW5kZXggPSAwO1xuICAgIHF1ZXVlLmxlbmd0aCA9IDA7XG4gICAgZmx1c2hQb3N0Rmx1c2hDYnMoc2Vlbik7XG4gICAgaXNGbHVzaGluZyA9IGZhbHNlO1xuICAgIGN1cnJlbnRGbHVzaFByb21pc2UgPSBudWxsO1xuICAgIGlmIChxdWV1ZS5sZW5ndGggfHwgcGVuZGluZ1Bvc3RGbHVzaENicy5sZW5ndGgpIHtcbiAgICAgIGZsdXNoSm9icyhzZWVuKTtcbiAgICB9XG4gI
15H1cbn1cbmZ1bmN0aW9uIGNoZWNrUmVjdXJzaXZlVXBkYXRlcyhzZWVuLCBmbikge1xuICBpZiAoIXNlZW4uaGFzKGZuKSkge1xuICAgIHNlZW4uc2V0KGZuLCAxKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBjb3VudCA9IHNlZW4uZ2V0KGZuKTtcbiAgICBpZiAoY291bnQgPiBSRUNVUlNJT05fTElNSVQpIHtcbiAgICAgIGNvbnN0IGluc3RhbmNlID0gZm4uaTtcbiAgICAgIGNvbnN0IGNvbXBvbmVudE5hbWUgPSBpbnN0YW5jZSAmJiBnZXRDb21wb25lbnROYW1lKGluc3RhbmNlLnR5cGUpO1xuICAgICAgaGFuZGxlRXJyb3IoXG4gICAgICAgIGBNYXhpbXVtIHJlY3Vyc2l2ZSB1cGRhdGVzIGV4Y2VlZGVkJHtjb21wb25lbnROYW1lID8gYCBpbiBjb21wb25lbnQgPCR7Y29tcG9uZW50TmFtZX0+YCA6IGBgfS4gVGhpcyBtZWFucyB5b3UgaGF2ZSBhIHJlYWN0aXZlIGVmZmVjdCB0aGF0IGlzIG11dGF0aW5nIGl0cyBvd24gZGVwZW5kZW5jaWVzIGFuZCB0aHVzIHJlY3Vyc2l2ZWx5IHRyaWdnZXJpbmcgaXRzZWxmLiBQb3NzaWJsZSBzb3VyY2VzIGluY2x1ZGUgY29tcG9uZW50IHRlbXBsYXRlLCByZW5kZXIgZnVuY3Rpb24sIHVwZGF0ZWQgaG9vayBvciB3YXRjaGVyIHNvdXJjZSBmdW5jdGlvbi5gLFxuICAgICAgICBudWxsLFxuICAgICAgICAxMFxuICAgICAgKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWVuLnNldChmbiwgY291bnQgKyAxKTtcbiAgICB9XG4gIH1cbn1cblxubGV0IGlzSG1yVXBkYXRpbmcgPSBmYWxzZTtcbmNvbnN0IGhtckRpcnR5Q29tcG9uZW50cyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG5pZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSkge1xuICBnZXRHbG9iYWxUaGlzKCkuX19WVUVfSE1SX1JVTlRJTUVfXyA9IHtcbiAgICBjcmVhdGVSZWNvcmQ6IHRyeVdyYXAoY3JlYXRlUmVjb3JkKSxcbiAgICByZXJlbmRlcjogdHJ5V3JhcChyZXJlbmRlciksXG4gICAgcmVsb2FkOiB0cnlXcmFwKHJlbG9hZClcbiAgfTtcbn1cbmNvbnN0IG1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG5mdW5jdGlvbiByZWdpc3RlckhNUihpbnN0YW5jZSkge1xuICBjb25zdCBpZCA9IGluc3RhbmNlLnR5cGUuX19obXJJZDtcbiAgbGV0IHJlY29yZCA9IG1hcC5nZXQoaWQpO1xuICBpZiAoIXJlY29yZCkge1xuICAgIGNyZWF0ZVJlY29yZChpZCwgaW5zdGFuY2UudHlwZSk7XG4gICAgcmVjb3JkID0gbWFwLmdldChpZCk7XG4gIH1cbiAgcmVjb3JkLmluc3RhbmNlcy5hZGQoaW5zdGFuY2UpO1xufVxuZnVuY3Rpb24gdW5yZWdpc3RlckhNUihpbnN0YW5jZSkge1xuICBtYXAuZ2V0KGluc3RhbmNlLnR5cGUuX19obXJJZCkuaW5zdGFuY2VzLmRlbGV0ZShpbnN0YW5jZSk7XG59XG5mdW5jdGlvbiBjcmVhdGVSZWNvcmQoaWQsIGluaXRpYWxEZWYpIHtcbiAgaWYgKG1hcC5oYXMoaWQpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIG1hcC5zZXQoaWQsIHtcbiAgICBpbml0aWFsRGVmOiBub3JtYWxpemVDbGFzc0NvbXBvbmVudChpbml0aWFsRGVmKSxcbiAgICBpbnN0YW5jZXM6IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KClcbiAgfSk7XG4gIHJldHVybiB0cnVlO1xufVxuZnVuY3Rpb24gbm9ybWFsaXplQ2xhc3NDb21wb25lbnQoY29tcG9uZW50KSB7XG4gIHJldHVybiBpc0NsYXNzQ29tcG9uZW50KGNvbXBvbmVudCkgPyBjb21wb25lbnQuX192Y2NPcHRzIDogY29tcG9uZW50O1xufVxuZnVuY3Rpb24gcmVyZW5kZXIoaWQsIG5ld1JlbmRlcikge1xuICBjb25zdCByZWNvcmQgPSBtYXAuZ2V0KGlkKTtcbiAgaWYgKCFyZWNvcmQpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgcmVjb3JkLmluaXRpYWxEZWYucmVuZGVyID0gbmV3UmVuZGVyO1xuICBbLi4ucmVjb3JkLmluc3RhbmNlc10uZm9yRWFjaCgoaW5zdGFuY2UpID0+IHtcbiAgICBpZiAobmV3UmVuZGVyKSB7XG4gICAgICBpbnN0YW5jZS5yZW5kZXIgPSBuZXdSZW5kZXI7XG4gICAgICBub3JtYWxpemVDbGFzc0NvbXBvbmVudChpbnN0YW5jZS50eXBlKS5yZW5kZXIgPSBuZXdSZW5kZXI7XG4gICAgfVxuICAgIGluc3RhbmNlLnJlbmRlckNhY2hlID0gW107XG4gICAgaXNIbXJVcGRhdGluZyA9IHRydWU7XG4gICAgaW5zdGFuY2UuZWZmZWN0LmRpcnR5ID0gdHJ1ZTtcbiAgICBpbnN0YW5jZS51cGRhdGUoKTtcbiAgICBpc0htclVwZGF0aW5nID0gZmFsc2U7XG4gIH0pO1xufVxuZnVuY3Rpb24gcmVsb2FkKGlkLCBuZXdDb21wKSB7XG4gIGNvbnN0IHJlY29yZCA9IG1hcC5nZXQoaWQpO1xuICBpZiAoIXJlY29yZCkgcmV0dXJuO1xuICBuZXdDb21wID0gbm9ybWFsaXplQ2xhc3NDb21wb25lbnQobmV3Q29tcCk7XG4gIHVwZGF0ZUNvbXBvbmVudERlZihyZWNvcmQuaW5pdGlhbERlZiwgbmV3Q29tcCk7XG4gIGNvbnN0IGluc3RhbmNlcyA9IFsuLi5yZWNvcmQuaW5zdGFuY2VzXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbnN0YW5jZXMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBpbnN0YW5jZSA9IGluc3RhbmNlc1tpXTtcbiAgICBjb25zdCBvbGRDb21wID0gbm9ybWFsaXplQ2xhc3NDb21wb25lbnQoaW5zdGFuY2UudHlwZSk7XG4gICAgbGV0IGRpcnR5SW5zdGFuY2VzID0gaG1yRGlydHlDb21wb25lbnRzLmdldChvbGRDb21wKTtcbiAgICBpZiAoIWRpcnR5SW5zdGFuY2VzKSB7XG4gICAgICBpZiAob2xkQ29tcCAhPT0gcmVjb3JkLmluaXRpYWxEZWYpIHtcbiAgICAgICAgdXBkYXRlQ29tcG9uZW50RGVmKG9sZENvbXAsIG5ld0NvbXApO1xuICAgICAgfVxuICAgICAgaG1yRGlydHlDb21wb25lbnRzLnNldChvbGRDb21wLCBkaXJ0eUluc3RhbmNlcyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCkpO1xuICAgIH1cbiAgICBkaXJ0eUluc3RhbmNlcy5hZGQoaW5zdGFuY2UpO1xuICAgIGluc3RhbmNlLmFwcENvbnRleHQucHJvcHNDYWNoZS5kZWxldGUoaW5zdGFuY2UudHlwZSk7XG4gICAgaW5zdGFuY2UuYXBwQ29udGV4dC5lbWl0c0NhY2hlLmRlbGV0ZShpbnN0YW5jZS50eXBlKTtcbiAgICBpbnN0YW5jZS5hcHBDb250ZXh0Lm9wdGlvbnNDYWNoZS5kZWxldGUoaW5zdGFuY2UudHlwZSk7XG4gICAgaWYgKGluc3RhbmNlLmNlUmVsb2FkKSB7XG4gICAgICBkaXJ0eUluc3RhbmNlcy5hZGQoaW5zdGFuY2UpO1xuICAgICAgaW5zdGFuY2UuY2VSZWxvYWQobmV3Q29tcC5zdHlsZXMpO1xuICAgICAgZGlydHlJbnN0YW5jZXMuZGVsZXRlKGluc3RhbmNlKTtcbiAgICB9IGVsc2UgaWYgKGluc3RhbmNlLnBhcmVudCkge1xuICAgICAgaW5zdGFuY2UucGFyZW50LmVmZmVjdC5kaXJ0eSA9IHRydWU7XG4gICAgICBxdWV1ZUpvYigoKSA9PiB7XG4gICAgICAgIGluc3RhbmNlLnBhcmVudC51cGRhdGUoKTtcbiAgICAgICAgZGlydHlJbnN0YW5jZXMuZGVsZXRlKGluc3RhbmNlKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoaW5zdGFuY2UuYXBwQ29udGV4dC5yZWxvYWQpIHtcbiAgICAgIGluc3RhbmNlLmFwcENvbnRleHQucmVsb2FkKCk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgXCJbSE1SXSBSb290IG9yIG1hbnVhbGx5IG1vdW50ZWQgaW5zdGFuY2UgbW9kaWZpZWQuIE
15Z1bGwgcmVsb2FkIHJlcXVpcmVkLlwiXG4gICAgICApO1xuICAgIH1cbiAgfVxuICBxdWV1ZVBvc3RGbHVzaENiKCgpID0+IHtcbiAgICBobXJEaXJ0eUNvbXBvbmVudHMuY2xlYXIoKTtcbiAgfSk7XG59XG5mdW5jdGlvbiB1cGRhdGVDb21wb25lbnREZWYob2xkQ29tcCwgbmV3Q29tcCkge1xuICBleHRlbmQob2xkQ29tcCwgbmV3Q29tcCk7XG4gIGZvciAoY29uc3Qga2V5IGluIG9sZENvbXApIHtcbiAgICBpZiAoa2V5ICE9PSBcIl9fZmlsZVwiICYmICEoa2V5IGluIG5ld0NvbXApKSB7XG4gICAgICBkZWxldGUgb2xkQ29tcFtrZXldO1xuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gdHJ5V3JhcChmbikge1xuICByZXR1cm4gKGlkLCBhcmcpID0+IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGZuKGlkLCBhcmcpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBbSE1SXSBTb21ldGhpbmcgd2VudCB3cm9uZyBkdXJpbmcgVnVlIGNvbXBvbmVudCBob3QtcmVsb2FkLiBGdWxsIHJlbG9hZCByZXF1aXJlZC5gXG4gICAgICApO1xuICAgIH1cbiAgfTtcbn1cblxubGV0IGRldnRvb2xzJDE7XG5sZXQgYnVmZmVyID0gW107XG5sZXQgZGV2dG9vbHNOb3RJbnN0YWxsZWQgPSBmYWxzZTtcbmZ1bmN0aW9uIGVtaXQkMShldmVudCwgLi4uYXJncykge1xuICBpZiAoZGV2dG9vbHMkMSkge1xuICAgIGRldnRvb2xzJDEuZW1pdChldmVudCwgLi4uYXJncyk7XG4gIH0gZWxzZSBpZiAoIWRldnRvb2xzTm90SW5zdGFsbGVkKSB7XG4gICAgYnVmZmVyLnB1c2goeyBldmVudCwgYXJncyB9KTtcbiAgfVxufVxuZnVuY3Rpb24gc2V0RGV2dG9vbHNIb29rJDEoaG9vaywgdGFyZ2V0KSB7XG4gIHZhciBfYSwgX2I7XG4gIGRldnRvb2xzJDEgPSBob29rO1xuICBpZiAoZGV2dG9vbHMkMSkge1xuICAgIGRldnRvb2xzJDEuZW5hYmxlZCA9IHRydWU7XG4gICAgYnVmZmVyLmZvckVhY2goKHsgZXZlbnQsIGFyZ3MgfSkgPT4gZGV2dG9vbHMkMS5lbWl0KGV2ZW50LCAuLi5hcmdzKSk7XG4gICAgYnVmZmVyID0gW107XG4gIH0gZWxzZSBpZiAoXG4gICAgLy8gaGFuZGxlIGxhdGUgZGV2dG9vbHMgaW5qZWN0aW9uIC0gb25seSBkbyB0aGlzIGlmIHdlIGFyZSBpbiBhbiBhY3R1YWxcbiAgICAvLyBicm93c2VyIGVudmlyb25tZW50IHRvIGF2b2lkIHRoZSB0aW1lciBoYW5kbGUgc3RhbGxpbmcgdGVzdCBydW5uZXIgZXhpdFxuICAgIC8vICgjNDgxNSlcbiAgICB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiICYmIC8vIHNvbWUgZW52cyBtb2NrIHdpbmRvdyBidXQgbm90IGZ1bGx5XG4gICAgd2luZG93LkhUTUxFbGVtZW50ICYmIC8vIGFsc28gZXhjbHVkZSBqc2RvbVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLXN5bnRheFxuICAgICEoKF9iID0gKF9hID0gd2luZG93Lm5hdmlnYXRvcikgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLnVzZXJBZ2VudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLmluY2x1ZGVzKFwianNkb21cIikpXG4gICkge1xuICAgIGNvbnN0IHJlcGxheSA9IHRhcmdldC5fX1ZVRV9ERVZUT09MU19IT09LX1JFUExBWV9fID0gdGFyZ2V0Ll9fVlVFX0RFVlRPT0xTX0hPT0tfUkVQTEFZX18gfHwgW107XG4gICAgcmVwbGF5LnB1c2goKG5ld0hvb2spID0+IHtcbiAgICAgIHNldERldnRvb2xzSG9vayQxKG5ld0hvb2ssIHRhcmdldCk7XG4gICAgfSk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoIWRldnRvb2xzJDEpIHtcbiAgICAgICAgdGFyZ2V0Ll9fVlVFX0RFVlRPT0xTX0hPT0tfUkVQTEFZX18gPSBudWxsO1xuICAgICAgICBkZXZ0b29sc05vdEluc3RhbGxlZCA9IHRydWU7XG4gICAgICAgIGJ1ZmZlciA9IFtdO1xuICAgICAgfVxuICAgIH0sIDNlMyk7XG4gIH0gZWxzZSB7XG4gICAgZGV2dG9vbHNOb3RJbnN0YWxsZWQgPSB0cnVlO1xuICAgIGJ1ZmZlciA9IFtdO1xuICB9XG59XG5mdW5jdGlvbiBkZXZ0b29sc0luaXRBcHAoYXBwLCB2ZXJzaW9uKSB7XG4gIGVtaXQkMShcImFwcDppbml0XCIgLyogQVBQX0lOSVQgKi8sIGFwcCwgdmVyc2lvbiwge1xuICAgIEZyYWdtZW50LFxuICAgIFRleHQsXG4gICAgQ29tbWVudCxcbiAgICBTdGF0aWNcbiAgfSk7XG59XG5mdW5jdGlvbiBkZXZ0b29sc1VubW91bnRBcHAoYXBwKSB7XG4gIGVtaXQkMShcImFwcDp1bm1vdW50XCIgLyogQVBQX1VOTU9VTlQgKi8sIGFwcCk7XG59XG5jb25zdCBkZXZ0b29sc0NvbXBvbmVudEFkZGVkID0gLyogQF9fUFVSRV9fICovIGNyZWF0ZURldnRvb2xzQ29tcG9uZW50SG9vayhcbiAgXCJjb21wb25lbnQ6YWRkZWRcIiAvKiBDT01QT05FTlRfQURERUQgKi9cbik7XG5jb25zdCBkZXZ0b29sc0NvbXBvbmVudFVwZGF0ZWQgPSAvKiBAX19QVVJFX18gKi8gY3JlYXRlRGV2dG9vbHNDb21wb25lbnRIb29rKFwiY29tcG9uZW50OnVwZGF0ZWRcIiAvKiBDT01QT05FTlRfVVBEQVRFRCAqLyk7XG5jb25zdCBfZGV2dG9vbHNDb21wb25lbnRSZW1vdmVkID0gLyogQF9fUFVSRV9fICovIGNyZWF0ZURldnRvb2xzQ29tcG9uZW50SG9vayhcbiAgXCJjb21wb25lbnQ6cmVtb3ZlZFwiIC8qIENPTVBPTkVOVF9SRU1PVkVEICovXG4pO1xuY29uc3QgZGV2dG9vbHNDb21wb25lbnRSZW1vdmVkID0gKGNvbXBvbmVudCkgPT4ge1xuICBpZiAoZGV2dG9vbHMkMSAmJiB0eXBlb2YgZGV2dG9vbHMkMS5jbGVhbnVwQnVmZmVyID09PSBcImZ1bmN0aW9uXCIgJiYgLy8gcmVtb3ZlIHRoZSBjb21wb25lbnQgaWYgaXQgd2Fzbid0IGJ1ZmZlcmVkXG4gICFkZXZ0b29scyQxLmNsZWFudXBCdWZmZXIoY29tcG9uZW50KSkge1xuICAgIF9kZXZ0b29sc0NvbXBvbmVudFJlbW92ZWQoY29tcG9uZW50KTtcbiAgfVxufTtcbi8qISAjX19OT19TSURFX0VGRkVDVFNfXyAqL1xuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmZ1bmN0aW9uIGNyZWF0ZURldnRvb2xzQ29tcG9uZW50SG9vayhob29rKSB7XG4gIHJldHVybiAoY29tcG9uZW50KSA9PiB7XG4gICAgZW1pdCQxKFxuICAgICAgaG9vayxcbiAgICAgIGNvbXBvbmVudC5hcHBDb250ZXh0LmFwcCxcbiAgICAgIGNvbXBvbmVudC51aWQsXG4gICAgICBjb21wb25lbnQucGFyZW50ID8gY29tcG9uZW50LnBhcmVudC51aWQgOiB2b2lkIDAsXG4gICAgICBjb21wb25lbnRcbiAgICApO
151xuICB9O1xufVxuY29uc3QgZGV2dG9vbHNQZXJmU3RhcnQgPSAvKiBAX19QVVJFX18gKi8gY3JlYXRlRGV2dG9vbHNQZXJmb3JtYW5jZUhvb2soXG4gIFwicGVyZjpzdGFydFwiIC8qIFBFUkZPUk1BTkNFX1NUQVJUICovXG4pO1xuY29uc3QgZGV2dG9vbHNQZXJmRW5kID0gLyogQF9fUFVSRV9fICovIGNyZWF0ZURldnRvb2xzUGVyZm9ybWFuY2VIb29rKFxuICBcInBlcmY6ZW5kXCIgLyogUEVSRk9STUFOQ0VfRU5EICovXG4pO1xuZnVuY3Rpb24gY3JlYXRlRGV2dG9vbHNQZXJmb3JtYW5jZUhvb2soaG9vaykge1xuICByZXR1cm4gKGNvbXBvbmVudCwgdHlwZSwgdGltZSkgPT4ge1xuICAgIGVtaXQkMShob29rLCBjb21wb25lbnQuYXBwQ29udGV4dC5hcHAsIGNvbXBvbmVudC51aWQsIGNvbXBvbmVudCwgdHlwZSwgdGltZSk7XG4gIH07XG59XG5mdW5jdGlvbiBkZXZ0b29sc0NvbXBvbmVudEVtaXQoY29tcG9uZW50LCBldmVudCwgcGFyYW1zKSB7XG4gIGVtaXQkMShcbiAgICBcImNvbXBvbmVudDplbWl0XCIgLyogQ09NUE9ORU5UX0VNSVQgKi8sXG4gICAgY29tcG9uZW50LmFwcENvbnRleHQuYXBwLFxuICAgIGNvbXBvbmVudCxcbiAgICBldmVudCxcbiAgICBwYXJhbXNcbiAgKTtcbn1cblxubGV0IGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZSA9IG51bGw7XG5sZXQgY3VycmVudFNjb3BlSWQgPSBudWxsO1xuZnVuY3Rpb24gc2V0Q3VycmVudFJlbmRlcmluZ0luc3RhbmNlKGluc3RhbmNlKSB7XG4gIGNvbnN0IHByZXYgPSBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2U7XG4gIGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZSA9IGluc3RhbmNlO1xuICBjdXJyZW50U2NvcGVJZCA9IGluc3RhbmNlICYmIGluc3RhbmNlLnR5cGUuX19zY29wZUlkIHx8IG51bGw7XG4gIHJldHVybiBwcmV2O1xufVxuZnVuY3Rpb24gcHVzaFNjb3BlSWQoaWQpIHtcbiAgY3VycmVudFNjb3BlSWQgPSBpZDtcbn1cbmZ1bmN0aW9uIHBvcFNjb3BlSWQoKSB7XG4gIGN1cnJlbnRTY29wZUlkID0gbnVsbDtcbn1cbmNvbnN0IHdpdGhTY29wZUlkID0gKF9pZCkgPT4gd2l0aEN0eDtcbmZ1bmN0aW9uIHdpdGhDdHgoZm4sIGN0eCA9IGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZSwgaXNOb25TY29wZWRTbG90KSB7XG4gIGlmICghY3R4KSByZXR1cm4gZm47XG4gIGlmIChmbi5fbikge1xuICAgIHJldHVybiBmbjtcbiAgfVxuICBjb25zdCByZW5kZXJGbldpdGhDb250ZXh0ID0gKC4uLmFyZ3MpID0+IHtcbiAgICBpZiAocmVuZGVyRm5XaXRoQ29udGV4dC5fZCkge1xuICAgICAgc2V0QmxvY2tUcmFja2luZygtMSk7XG4gICAgfVxuICAgIGNvbnN0IHByZXZJbnN0YW5jZSA9IHNldEN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZShjdHgpO1xuICAgIGxldCByZXM7XG4gICAgdHJ5IHtcbiAgICAgIHJlcyA9IGZuKC4uLmFyZ3MpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBzZXRDdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UocHJldkluc3RhbmNlKTtcbiAgICAgIGlmIChyZW5kZXJGbldpdGhDb250ZXh0Ll9kKSB7XG4gICAgICAgIHNldEJsb2NrVHJhY2tpbmcoMSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHx8IF9fVlVFX1BST0RfREVWVE9PTFNfXykge1xuICAgICAgZGV2dG9vbHNDb21wb25lbnRVcGRhdGVkKGN0eCk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH07XG4gIHJlbmRlckZuV2l0aENvbnRleHQuX24gPSB0cnVlO1xuICByZW5kZXJGbldpdGhDb250ZXh0Ll9jID0gdHJ1ZTtcbiAgcmVuZGVyRm5XaXRoQ29udGV4dC5fZCA9IHRydWU7XG4gIHJldHVybiByZW5kZXJGbldpdGhDb250ZXh0O1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZURpcmVjdGl2ZU5hbWUobmFtZSkge1xuICBpZiAoaXNCdWlsdEluRGlyZWN0aXZlKG5hbWUpKSB7XG4gICAgd2FybiQxKFwiRG8gbm90IHVzZSBidWlsdC1pbiBkaXJlY3RpdmUgaWRzIGFzIGN1c3RvbSBkaXJlY3RpdmUgaWQ6IFwiICsgbmFtZSk7XG4gIH1cbn1cbmZ1bmN0aW9uIHdpdGhEaXJlY3RpdmVzKHZub2RlLCBkaXJlY3RpdmVzKSB7XG4gIGlmIChjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UgPT09IG51bGwpIHtcbiAgICAhIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpICYmIHdhcm4kMShgd2l0aERpcmVjdGl2ZXMgY2FuIG9ubHkgYmUgdXNlZCBpbnNpZGUgcmVuZGVyIGZ1bmN0aW9ucy5gKTtcbiAgICByZXR1cm4gdm5vZGU7XG4gIH1cbiAgY29uc3QgaW5zdGFuY2UgPSBnZXRDb21wb25lbnRQdWJsaWNJbnN0YW5jZShjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UpO1xuICBjb25zdCBiaW5kaW5ncyA9IHZub2RlLmRpcnMgfHwgKHZub2RlLmRpcnMgPSBbXSk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZGlyZWN0aXZlcy5sZW5ndGg7IGkrKykge1xuICAgIGxldCBbZGlyLCB2YWx1ZSwgYXJnLCBtb2RpZmllcnMgPSBFTVBUWV9PQkpdID0gZGlyZWN0aXZlc1tpXTtcbiAgICBpZiAoZGlyKSB7XG4gICAgICBpZiAoaXNGdW5jdGlvbihkaXIpKSB7XG4gICAgICAgIGRpciA9IHtcbiAgICAgICAgICBtb3VudGVkOiBkaXIsXG4gICAgICAgICAgdXBkYXRlZDogZGlyXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBpZiAoZGlyLmRlZXApIHtcbiAgICAgICAgdHJhdmVyc2UodmFsdWUpO1xuICAgICAgfVxuICAgICAgYmluZGluZ3MucHVzaCh7XG4gICAgICAgIGRpcixcbiAgICAgICAgaW5zdGFuY2UsXG4gICAgICAgIHZhbHVlLFxuICAgICAgICBvbGRWYWx1ZTogdm9pZCAwLFxuICAgICAgICBhcmcsXG4gICAgICAgIG1vZGlmaWVyc1xuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIHJldHVybiB2bm9kZTtcbn1cbmZ1bmN0aW9uIGludm9rZURpcmVjdGl2ZUhvb2sodm5vZGUsIHByZXZWTm9kZSwgaW5zdGFuY2UsIG5hbWUpIHtcbiAgY29uc3QgYmluZGluZ3MgPSB2bm9kZS5kaXJzO1xuICBjb25zdCBvbGRCaW5kaW5ncyA9IHByZXZWTm9kZSAmJiBwcmV2Vk5vZGUuZGlycztcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBiaW5kaW5ncy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGJpbmRpbmcgPSBiaW5kaW5nc1tpXTtcbiAgICBpZiAob2xkQmluZGluZ3MpIHtcbiAgICAgIGJpbmRpbmcub2xkVmFsdWUgPSBvbGRCaW5kaW5nc1tpXS52YWx1ZTtcbiAgICB9XG4gICAgbGV0IGhvb2sgPSBiaW5kaW5nLmRpcltuYW1lXTtcbiAgICBpZiAoaG9vaykge1xuICAgICAgcGF1c2VUcmFja2luZygpO1xuICAgICAgY2FsbFdpdGhBc3luY0Vycm9ySGFuZGxpbmcoaG9vaywgaW5zdGFuY2UsIDgsIFtcbiAgICAgICAgdm5vZGUuZWwsXG4gICAgICAgIGJpbmRpbmcsXG4gICAgICAgI
15HZub2RlLFxuICAgICAgICBwcmV2Vk5vZGVcbiAgICAgIF0pO1xuICAgICAgcmVzZXRUcmFja2luZygpO1xuICAgIH1cbiAgfVxufVxuXG5jb25zdCBsZWF2ZUNiS2V5ID0gU3ltYm9sKFwiX2xlYXZlQ2JcIik7XG5jb25zdCBlbnRlckNiS2V5ID0gU3ltYm9sKFwiX2VudGVyQ2JcIik7XG5mdW5jdGlvbiB1c2VUcmFuc2l0aW9uU3RhdGUoKSB7XG4gIGNvbnN0IHN0YXRlID0ge1xuICAgIGlzTW91bnRlZDogZmFsc2UsXG4gICAgaXNMZWF2aW5nOiBmYWxzZSxcbiAgICBpc1VubW91bnRpbmc6IGZhbHNlLFxuICAgIGxlYXZpbmdWTm9kZXM6IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKClcbiAgfTtcbiAgb25Nb3VudGVkKCgpID0+IHtcbiAgICBzdGF0ZS5pc01vdW50ZWQgPSB0cnVlO1xuICB9KTtcbiAgb25CZWZvcmVVbm1vdW50KCgpID0+IHtcbiAgICBzdGF0ZS5pc1VubW91bnRpbmcgPSB0cnVlO1xuICB9KTtcbiAgcmV0dXJuIHN0YXRlO1xufVxuY29uc3QgVHJhbnNpdGlvbkhvb2tWYWxpZGF0b3IgPSBbRnVuY3Rpb24sIEFycmF5XTtcbmNvbnN0IEJhc2VUcmFuc2l0aW9uUHJvcHNWYWxpZGF0b3JzID0ge1xuICBtb2RlOiBTdHJpbmcsXG4gIGFwcGVhcjogQm9vbGVhbixcbiAgcGVyc2lzdGVkOiBCb29sZWFuLFxuICAvLyBlbnRlclxuICBvbkJlZm9yZUVudGVyOiBUcmFuc2l0aW9uSG9va1ZhbGlkYXRvcixcbiAgb25FbnRlcjogVHJhbnNpdGlvbkhvb2tWYWxpZGF0b3IsXG4gIG9uQWZ0ZXJFbnRlcjogVHJhbnNpdGlvbkhvb2tWYWxpZGF0b3IsXG4gIG9uRW50ZXJDYW5jZWxsZWQ6IFRyYW5zaXRpb25Ib29rVmFsaWRhdG9yLFxuICAvLyBsZWF2ZVxuICBvbkJlZm9yZUxlYXZlOiBUcmFuc2l0aW9uSG9va1ZhbGlkYXRvcixcbiAgb25MZWF2ZTogVHJhbnNpdGlvbkhvb2tWYWxpZGF0b3IsXG4gIG9uQWZ0ZXJMZWF2ZTogVHJhbnNpdGlvbkhvb2tWYWxpZGF0b3IsXG4gIG9uTGVhdmVDYW5jZWxsZWQ6IFRyYW5zaXRpb25Ib29rVmFsaWRhdG9yLFxuICAvLyBhcHBlYXJcbiAgb25CZWZvcmVBcHBlYXI6IFRyYW5zaXRpb25Ib29rVmFsaWRhdG9yLFxuICBvbkFwcGVhcjogVHJhbnNpdGlvbkhvb2tWYWxpZGF0b3IsXG4gIG9uQWZ0ZXJBcHBlYXI6IFRyYW5zaXRpb25Ib29rVmFsaWRhdG9yLFxuICBvbkFwcGVhckNhbmNlbGxlZDogVHJhbnNpdGlvbkhvb2tWYWxpZGF0b3Jcbn07XG5jb25zdCByZWN1cnNpdmVHZXRTdWJ0cmVlID0gKGluc3RhbmNlKSA9PiB7XG4gIGNvbnN0IHN1YlRyZWUgPSBpbnN0YW5jZS5zdWJUcmVlO1xuICByZXR1cm4gc3ViVHJlZS5jb21wb25lbnQgPyByZWN1cnNpdmVHZXRTdWJ0cmVlKHN1YlRyZWUuY29tcG9uZW50KSA6IHN1YlRyZWU7XG59O1xuY29uc3QgQmFzZVRyYW5zaXRpb25JbXBsID0ge1xuICBuYW1lOiBgQmFzZVRyYW5zaXRpb25gLFxuICBwcm9wczogQmFzZVRyYW5zaXRpb25Qcm9wc1ZhbGlkYXRvcnMsXG4gIHNldHVwKHByb3BzLCB7IHNsb3RzIH0pIHtcbiAgICBjb25zdCBpbnN0YW5jZSA9IGdldEN1cnJlbnRJbnN0YW5jZSgpO1xuICAgIGNvbnN0IHN0YXRlID0gdXNlVHJhbnNpdGlvblN0YXRlKCk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNvbnN0IGNoaWxkcmVuID0gc2xvdHMuZGVmYXVsdCAmJiBnZXRUcmFuc2l0aW9uUmF3Q2hpbGRyZW4oc2xvdHMuZGVmYXVsdCgpLCB0cnVlKTtcbiAgICAgIGlmICghY2hpbGRyZW4gfHwgIWNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBsZXQgY2hpbGQgPSBjaGlsZHJlblswXTtcbiAgICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPiAxKSB7XG4gICAgICAgIGxldCBoYXNGb3VuZCA9IGZhbHNlO1xuICAgICAgICBmb3IgKGNvbnN0IGMgb2YgY2hpbGRyZW4pIHtcbiAgICAgICAgICBpZiAoYy50eXBlICE9PSBDb21tZW50KSB7XG4gICAgICAgICAgICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSAmJiBoYXNGb3VuZCkge1xuICAgICAgICAgICAgICB3YXJuJDEoXG4gICAgICAgICAgICAgICAgXCI8dHJhbnNpdGlvbj4gY2FuIG9ubHkgYmUgdXNlZCBvbiBhIHNpbmdsZSBlbGVtZW50IG9yIGNvbXBvbmVudC4gVXNlIDx0cmFuc2l0aW9uLWdyb3VwPiBmb3IgbGlzdHMuXCJcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjaGlsZCA9IGM7XG4gICAgICAgICAgICBoYXNGb3VuZCA9IHRydWU7XG4gICAgICAgICAgICBpZiAoISEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikpIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29uc3QgcmF3UHJvcHMgPSB0b1Jhdyhwcm9wcyk7XG4gICAgICBjb25zdCB7IG1vZGUgfSA9IHJhd1Byb3BzO1xuICAgICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgJiYgbW9kZSAmJiBtb2RlICE9PSBcImluLW91dFwiICYmIG1vZGUgIT09IFwib3V0LWluXCIgJiYgbW9kZSAhPT0gXCJkZWZhdWx0XCIpIHtcbiAgICAgICAgd2FybiQxKGBpbnZhbGlkIDx0cmFuc2l0aW9uPiBtb2RlOiAke21vZGV9YCk7XG4gICAgICB9XG4gICAgICBpZiAoc3RhdGUuaXNMZWF2aW5nKSB7XG4gICAgICAgIHJldHVybiBlbXB0eVBsYWNlaG9sZGVyKGNoaWxkKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGlubmVyQ2hpbGQgPSBnZXRLZWVwQWxpdmVDaGlsZChjaGlsZCk7XG4gICAgICBpZiAoIWlubmVyQ2hpbGQpIHtcbiAgICAgICAgcmV0dXJuIGVtcHR5UGxhY2Vob2xkZXIoY2hpbGQpO1xuICAgICAgfVxuICAgICAgbGV0IGVudGVySG9va3MgPSByZXNvbHZlVHJhbnNpdGlvbkhvb2tzKFxuICAgICAgICBpbm5lckNoaWxkLFxuICAgICAgICByYXdQcm9wcyxcbiAgICAgICAgc3RhdGUsXG4gICAgICAgIGluc3RhbmNlLFxuICAgICAgICAvLyAjMTEwNjEsIGVuc3VyZSBlbnRlckhvb2tzIGlzIGZyZXNoIGFmdGVyIGNsb25lXG4gICAgICAgIChob29rcykgPT4gZW50ZXJIb29rcyA9IGhvb2tzXG4gICAgICApO1xuICAgICAgc2V0VHJhbnNpdGlvbkhvb2tzKGlubmVyQ2hpbGQsIGVudGVySG9va3MpO1xuICAgICAgY29uc3Qgb2xkQ2hpbGQgPSBpbnN0YW5jZS5zdWJUcmVlO1xuICAgICAgY29uc3Qgb2xkSW5uZXJDaGlsZCA9IG9sZENoaWxkICYmIGdldEtlZXBBbGl2ZUNoaWxkKG9sZENoaWxkKTtcbiAgICAgIGlmIChvbGRJbm5lckNoaWxkICYmIG9sZElubmVyQ2hpbGQudHlwZSAhPT0gQ29tbWVudCAmJiAhaXNTYW1lVk5vZGVUeXBlKGlubmVyQ2hpbGQsIG9sZElubmVyQ2hpbGQpICYmIHJlY3Vyc2l2ZUdldFN1YnRyZWUoaW5zdGFuY2UpLnR5cGUgIT09IENvbW1lbnQpIHtcbiAgICAgICAgY29uc3QgbGVhdmluZ0hvb2tzID0gcmVzb2x2ZVRyYW5zaXRpb25Ib29rcyhcbiAgICAgICAgICBvbGRJbm5lckNoaWxkLFxuICAgICAgICAgI
15HJhd1Byb3BzLFxuICAgICAgICAgIHN0YXRlLFxuICAgICAgICAgIGluc3RhbmNlXG4gICAgICAgICk7XG4gICAgICAgIHNldFRyYW5zaXRpb25Ib29rcyhvbGRJbm5lckNoaWxkLCBsZWF2aW5nSG9va3MpO1xuICAgICAgICBpZiAobW9kZSA9PT0gXCJvdXQtaW5cIiAmJiBpbm5lckNoaWxkLnR5cGUgIT09IENvbW1lbnQpIHtcbiAgICAgICAgICBzdGF0ZS5pc0xlYXZpbmcgPSB0cnVlO1xuICAgICAgICAgIGxlYXZpbmdIb29rcy5hZnRlckxlYXZlID0gKCkgPT4ge1xuICAgICAgICAgICAgc3RhdGUuaXNMZWF2aW5nID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAoaW5zdGFuY2UudXBkYXRlLmFjdGl2ZSAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgaW5zdGFuY2UuZWZmZWN0LmRpcnR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgaW5zdGFuY2UudXBkYXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgICByZXR1cm4gZW1wdHlQbGFjZWhvbGRlcihjaGlsZCk7XG4gICAgICAgIH0gZWxzZSBpZiAobW9kZSA9PT0gXCJpbi1vdXRcIiAmJiBpbm5lckNoaWxkLnR5cGUgIT09IENvbW1lbnQpIHtcbiAgICAgICAgICBsZWF2aW5nSG9va3MuZGVsYXlMZWF2ZSA9IChlbCwgZWFybHlSZW1vdmUsIGRlbGF5ZWRMZWF2ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGVhdmluZ1ZOb2Rlc0NhY2hlID0gZ2V0TGVhdmluZ05vZGVzRm9yVHlwZShcbiAgICAgICAgICAgICAgc3RhdGUsXG4gICAgICAgICAgICAgIG9sZElubmVyQ2hpbGRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBsZWF2aW5nVk5vZGVzQ2FjaGVbU3RyaW5nKG9sZElubmVyQ2hpbGQua2V5KV0gPSBvbGRJbm5lckNoaWxkO1xuICAgICAgICAgICAgZWxbbGVhdmVDYktleV0gPSAoKSA9PiB7XG4gICAgICAgICAgICAgIGVhcmx5UmVtb3ZlKCk7XG4gICAgICAgICAgICAgIGVsW2xlYXZlQ2JLZXldID0gdm9pZCAwO1xuICAgICAgICAgICAgICBkZWxldGUgZW50ZXJIb29rcy5kZWxheWVkTGVhdmU7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZW50ZXJIb29rcy5kZWxheWVkTGVhdmUgPSBkZWxheWVkTGVhdmU7XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGNoaWxkO1xuICAgIH07XG4gIH1cbn07XG5jb25zdCBCYXNlVHJhbnNpdGlvbiA9IEJhc2VUcmFuc2l0aW9uSW1wbDtcbmZ1bmN0aW9uIGdldExlYXZpbmdOb2Rlc0ZvclR5cGUoc3RhdGUsIHZub2RlKSB7XG4gIGNvbnN0IHsgbGVhdmluZ1ZOb2RlcyB9ID0gc3RhdGU7XG4gIGxldCBsZWF2aW5nVk5vZGVzQ2FjaGUgPSBsZWF2aW5nVk5vZGVzLmdldCh2bm9kZS50eXBlKTtcbiAgaWYgKCFsZWF2aW5nVk5vZGVzQ2FjaGUpIHtcbiAgICBsZWF2aW5nVk5vZGVzQ2FjaGUgPSAvKiBAX19QVVJFX18gKi8gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICBsZWF2aW5nVk5vZGVzLnNldCh2bm9kZS50eXBlLCBsZWF2aW5nVk5vZGVzQ2FjaGUpO1xuICB9XG4gIHJldHVybiBsZWF2aW5nVk5vZGVzQ2FjaGU7XG59XG5mdW5jdGlvbiByZXNvbHZlVHJhbnNpdGlvbkhvb2tzKHZub2RlLCBwcm9wcywgc3RhdGUsIGluc3RhbmNlLCBwb3N0Q2xvbmUpIHtcbiAgY29uc3Qge1xuICAgIGFwcGVhcixcbiAgICBtb2RlLFxuICAgIHBlcnNpc3RlZCA9IGZhbHNlLFxuICAgIG9uQmVmb3JlRW50ZXIsXG4gICAgb25FbnRlcixcbiAgICBvbkFmdGVyRW50ZXIsXG4gICAgb25FbnRlckNhbmNlbGxlZCxcbiAgICBvbkJlZm9yZUxlYXZlLFxuICAgIG9uTGVhdmUsXG4gICAgb25BZnRlckxlYXZlLFxuICAgIG9uTGVhdmVDYW5jZWxsZWQsXG4gICAgb25CZWZvcmVBcHBlYXIsXG4gICAgb25BcHBlYXIsXG4gICAgb25BZnRlckFwcGVhcixcbiAgICBvbkFwcGVhckNhbmNlbGxlZFxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IGtleSA9IFN0cmluZyh2bm9kZS5rZXkpO1xuICBjb25zdCBsZWF2aW5nVk5vZGVzQ2FjaGUgPSBnZXRMZWF2aW5nTm9kZXNGb3JUeXBlKHN0YXRlLCB2bm9kZSk7XG4gIGNvbnN0IGNhbGxIb29rID0gKGhvb2ssIGFyZ3MpID0+IHtcbiAgICBob29rICYmIGNhbGxXaXRoQXN5bmNFcnJvckhhbmRsaW5nKFxuICAgICAgaG9vayxcbiAgICAgIGluc3RhbmNlLFxuICAgICAgOSxcbiAgICAgIGFyZ3NcbiAgICApO1xuICB9O1xuICBjb25zdCBjYWxsQXN5bmNIb29rID0gKGhvb2ssIGFyZ3MpID0+IHtcbiAgICBjb25zdCBkb25lID0gYXJnc1sxXTtcbiAgICBjYWxsSG9vayhob29rLCBhcmdzKTtcbiAgICBpZiAoaXNBcnJheShob29rKSkge1xuICAgICAgaWYgKGhvb2suZXZlcnkoKGhvb2syKSA9PiBob29rMi5sZW5ndGggPD0gMSkpIGRvbmUoKTtcbiAgICB9IGVsc2UgaWYgKGhvb2subGVuZ3RoIDw9IDEpIHtcbiAgICAgIGRvbmUoKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IGhvb2tzID0ge1xuICAgIG1vZGUsXG4gICAgcGVyc2lzdGVkLFxuICAgIGJlZm9yZUVudGVyKGVsKSB7XG4gICAgICBsZXQgaG9vayA9IG9uQmVmb3JlRW50ZXI7XG4gICAgICBpZiAoIXN0YXRlLmlzTW91bnRlZCkge1xuICAgICAgICBpZiAoYXBwZWFyKSB7XG4gICAgICAgICAgaG9vayA9IG9uQmVmb3JlQXBwZWFyIHx8IG9uQmVmb3JlRW50ZXI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZWxbbGVhdmVDYktleV0pIHtcbiAgICAgICAgZWxbbGVhdmVDYktleV0oXG4gICAgICAgICAgdHJ1ZVxuICAgICAgICAgIC8qIGNhbmNlbGxlZCAqL1xuICAgICAgICApO1xuICAgICAgfVxuICAgICAgY29uc3QgbGVhdmluZ1ZOb2RlID0gbGVhdmluZ1ZOb2Rlc0NhY2hlW2tleV07XG4gICAgICBpZiAobGVhdmluZ1ZOb2RlICYmIGlzU2FtZVZOb2RlVHlwZSh2bm9kZSwgbGVhdmluZ1ZOb2RlKSAmJiBsZWF2aW5nVk5vZGUuZWxbbGVhdmVDYktleV0pIHtcbiAgICAgICAgbGVhdmluZ1ZOb2RlLmVsW2xlYXZlQ2JLZXldKCk7XG4gICAgICB9XG4gICAgICBjYWxsSG9vayhob29rLCBbZWxdKTtcbiAgICB9LFxuICAgIGVudGVyKGVsKSB7XG4gICAgICBsZXQgaG9vayA9IG9uRW50ZXI7XG4gICAgICBsZXQgYWZ0ZXJIb29rID0gb25BZnRlckVudGVyO1xuICAgICAgbGV0IGNhbmNlbEhvb2sgPSBvbkVudGVyQ2FuY2VsbGVkO1xuICAgICAgaWYgKCFzdGF0ZS5pc01vdW50ZWQpIHtcbiAgICAgICAgaWYgKGFwcGVhcikge1xuICAgICAgICAgIGhvb2sgPSBvbkFwcGVhciB8fCBvbkVudGVyO1xuICAgICAgICAgIGFmdGVySG9vayA9IG9uQWZ0ZXJBcHBlYXIgfHwgb25BZnRlckVudGVyO1xuICAgICAgICAgIGNhbmNlbEhvb2sgPSBvbkFwcGVhckNhbmNlbGxlZCB8fCBvbkVudGVyQ2FuY2VsbGVkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgI
15HJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbGV0IGNhbGxlZCA9IGZhbHNlO1xuICAgICAgY29uc3QgZG9uZSA9IGVsW2VudGVyQ2JLZXldID0gKGNhbmNlbGxlZCkgPT4ge1xuICAgICAgICBpZiAoY2FsbGVkKSByZXR1cm47XG4gICAgICAgIGNhbGxlZCA9IHRydWU7XG4gICAgICAgIGlmIChjYW5jZWxsZWQpIHtcbiAgICAgICAgICBjYWxsSG9vayhjYW5jZWxIb29rLCBbZWxdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjYWxsSG9vayhhZnRlckhvb2ssIFtlbF0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChob29rcy5kZWxheWVkTGVhdmUpIHtcbiAgICAgICAgICBob29rcy5kZWxheWVkTGVhdmUoKTtcbiAgICAgICAgfVxuICAgICAgICBlbFtlbnRlckNiS2V5XSA9IHZvaWQgMDtcbiAgICAgIH07XG4gICAgICBpZiAoaG9vaykge1xuICAgICAgICBjYWxsQXN5bmNIb29rKGhvb2ssIFtlbCwgZG9uZV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfVxuICAgIH0sXG4gICAgbGVhdmUoZWwsIHJlbW92ZSkge1xuICAgICAgY29uc3Qga2V5MiA9IFN0cmluZyh2bm9kZS5rZXkpO1xuICAgICAgaWYgKGVsW2VudGVyQ2JLZXldKSB7XG4gICAgICAgIGVsW2VudGVyQ2JLZXldKFxuICAgICAgICAgIHRydWVcbiAgICAgICAgICAvKiBjYW5jZWxsZWQgKi9cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChzdGF0ZS5pc1VubW91bnRpbmcpIHtcbiAgICAgICAgcmV0dXJuIHJlbW92ZSgpO1xuICAgICAgfVxuICAgICAgY2FsbEhvb2sob25CZWZvcmVMZWF2ZSwgW2VsXSk7XG4gICAgICBsZXQgY2FsbGVkID0gZmFsc2U7XG4gICAgICBjb25zdCBkb25lID0gZWxbbGVhdmVDYktleV0gPSAoY2FuY2VsbGVkKSA9PiB7XG4gICAgICAgIGlmIChjYWxsZWQpIHJldHVybjtcbiAgICAgICAgY2FsbGVkID0gdHJ1ZTtcbiAgICAgICAgcmVtb3ZlKCk7XG4gICAgICAgIGlmIChjYW5jZWxsZWQpIHtcbiAgICAgICAgICBjYWxsSG9vayhvbkxlYXZlQ2FuY2VsbGVkLCBbZWxdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjYWxsSG9vayhvbkFmdGVyTGVhdmUsIFtlbF0pO1xuICAgICAgICB9XG4gICAgICAgIGVsW2xlYXZlQ2JLZXldID0gdm9pZCAwO1xuICAgICAgICBpZiAobGVhdmluZ1ZOb2Rlc0NhY2hlW2tleTJdID09PSB2bm9kZSkge1xuICAgICAgICAgIGRlbGV0ZSBsZWF2aW5nVk5vZGVzQ2FjaGVba2V5Ml07XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBsZWF2aW5nVk5vZGVzQ2FjaGVba2V5Ml0gPSB2bm9kZTtcbiAgICAgIGlmIChvbkxlYXZlKSB7XG4gICAgICAgIGNhbGxBc3luY0hvb2sob25MZWF2ZSwgW2VsLCBkb25lXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkb25lKCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBjbG9uZSh2bm9kZTIpIHtcbiAgICAgIGNvbnN0IGhvb2tzMiA9IHJlc29sdmVUcmFuc2l0aW9uSG9va3MoXG4gICAgICAgIHZub2RlMixcbiAgICAgICAgcHJvcHMsXG4gICAgICAgIHN0YXRlLFxuICAgICAgICBpbnN0YW5jZSxcbiAgICAgICAgcG9zdENsb25lXG4gICAgICApO1xuICAgICAgaWYgKHBvc3RDbG9uZSkgcG9zdENsb25lKGhvb2tzMik7XG4gICAgICByZXR1cm4gaG9va3MyO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGhvb2tzO1xufVxuZnVuY3Rpb24gZW1wdHlQbGFjZWhvbGRlcih2bm9kZSkge1xuICBpZiAoaXNLZWVwQWxpdmUodm5vZGUpKSB7XG4gICAgdm5vZGUgPSBjbG9uZVZOb2RlKHZub2RlKTtcbiAgICB2bm9kZS5jaGlsZHJlbiA9IG51bGw7XG4gICAgcmV0dXJuIHZub2RlO1xuICB9XG59XG5mdW5jdGlvbiBnZXRLZWVwQWxpdmVDaGlsZCh2bm9kZSkge1xuICBpZiAoIWlzS2VlcEFsaXZlKHZub2RlKSkge1xuICAgIHJldHVybiB2bm9kZTtcbiAgfVxuICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSAmJiB2bm9kZS5jb21wb25lbnQpIHtcbiAgICByZXR1cm4gdm5vZGUuY29tcG9uZW50LnN1YlRyZWU7XG4gIH1cbiAgY29uc3QgeyBzaGFwZUZsYWcsIGNoaWxkcmVuIH0gPSB2bm9kZTtcbiAgaWYgKGNoaWxkcmVuKSB7XG4gICAgaWYgKHNoYXBlRmxhZyAmIDE2KSB7XG4gICAgICByZXR1cm4gY2hpbGRyZW5bMF07XG4gICAgfVxuICAgIGlmIChzaGFwZUZsYWcgJiAzMiAmJiBpc0Z1bmN0aW9uKGNoaWxkcmVuLmRlZmF1bHQpKSB7XG4gICAgICByZXR1cm4gY2hpbGRyZW4uZGVmYXVsdCgpO1xuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gc2V0VHJhbnNpdGlvbkhvb2tzKHZub2RlLCBob29rcykge1xuICBpZiAodm5vZGUuc2hhcGVGbGFnICYgNiAmJiB2bm9kZS5jb21wb25lbnQpIHtcbiAgICBzZXRUcmFuc2l0aW9uSG9va3Modm5vZGUuY29tcG9uZW50LnN1YlRyZWUsIGhvb2tzKTtcbiAgfSBlbHNlIGlmICh2bm9kZS5zaGFwZUZsYWcgJiAxMjgpIHtcbiAgICB2bm9kZS5zc0NvbnRlbnQudHJhbnNpdGlvbiA9IGhvb2tzLmNsb25lKHZub2RlLnNzQ29udGVudCk7XG4gICAgdm5vZGUuc3NGYWxsYmFjay50cmFuc2l0aW9uID0gaG9va3MuY2xvbmUodm5vZGUuc3NGYWxsYmFjayk7XG4gIH0gZWxzZSB7XG4gICAgdm5vZGUudHJhbnNpdGlvbiA9IGhvb2tzO1xuICB9XG59XG5mdW5jdGlvbiBnZXRUcmFuc2l0aW9uUmF3Q2hpbGRyZW4oY2hpbGRyZW4sIGtlZXBDb21tZW50ID0gZmFsc2UsIHBhcmVudEtleSkge1xuICBsZXQgcmV0ID0gW107XG4gIGxldCBrZXllZEZyYWdtZW50Q291bnQgPSAwO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGNoaWxkID0gY2hpbGRyZW5baV07XG4gICAgY29uc3Qga2V5ID0gcGFyZW50S2V5ID09IG51bGwgPyBjaGlsZC5rZXkgOiBTdHJpbmcocGFyZW50S2V5KSArIFN0cmluZyhjaGlsZC5rZXkgIT0gbnVsbCA/IGNoaWxkLmtleSA6IGkpO1xuICAgIGlmIChjaGlsZC50eXBlID09PSBGcmFnbWVudCkge1xuICAgICAgaWYgKGNoaWxkLnBhdGNoRmxhZyAmIDEyOCkga2V5ZWRGcmFnbWVudENvdW50Kys7XG4gICAgICByZXQgPSByZXQuY29uY2F0KFxuICAgICAgICBnZXRUcmFuc2l0aW9uUmF3Q2hpbGRyZW4oY2hpbGQuY2hpbGRyZW4sIGtlZXBDb21tZW50LCBrZXkpXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoa2VlcENvbW1lbnQgfHwgY2hpbGQudHlwZSAhPT0gQ29tbWVudCkge1xuICAgICAgcmV0LnB1c2goa2V5ICE9IG51bGwgPyBjbG9uZVZOb2RlKGNo
15aWxkLCB7IGtleSB9KSA6IGNoaWxkKTtcbiAgICB9XG4gIH1cbiAgaWYgKGtleWVkRnJhZ21lbnRDb3VudCA+IDEpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJldC5sZW5ndGg7IGkrKykge1xuICAgICAgcmV0W2ldLnBhdGNoRmxhZyA9IC0yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmV0O1xufVxuXG4vKiEgI19fTk9fU0lERV9FRkZFQ1RTX18gKi9cbi8vIEBfX05PX1NJREVfRUZGRUNUU19fXG5mdW5jdGlvbiBkZWZpbmVDb21wb25lbnQob3B0aW9ucywgZXh0cmFPcHRpb25zKSB7XG4gIHJldHVybiBpc0Z1bmN0aW9uKG9wdGlvbnMpID8gKFxuICAgIC8vICM4MzI2OiBleHRlbmQgY2FsbCBhbmQgb3B0aW9ucy5uYW1lIGFjY2VzcyBhcmUgY29uc2lkZXJlZCBzaWRlLWVmZmVjdHNcbiAgICAvLyBieSBSb2xsdXAsIHNvIHdlIGhhdmUgdG8gd3JhcCBpdCBpbiBhIHB1cmUtYW5ub3RhdGVkIElJRkUuXG4gICAgLyogQF9fUFVSRV9fICovICgoKSA9PiBleHRlbmQoeyBuYW1lOiBvcHRpb25zLm5hbWUgfSwgZXh0cmFPcHRpb25zLCB7IHNldHVwOiBvcHRpb25zIH0pKSgpXG4gICkgOiBvcHRpb25zO1xufVxuXG5jb25zdCBpc0FzeW5jV3JhcHBlciA9IChpKSA9PiAhIWkudHlwZS5fX2FzeW5jTG9hZGVyO1xuLyohICNfX05PX1NJREVfRUZGRUNUU19fICovXG4vLyBAX19OT19TSURFX0VGRkVDVFNfX1xuZnVuY3Rpb24gZGVmaW5lQXN5bmNDb21wb25lbnQoc291cmNlKSB7XG4gIGlmIChpc0Z1bmN0aW9uKHNvdXJjZSkpIHtcbiAgICBzb3VyY2UgPSB7IGxvYWRlcjogc291cmNlIH07XG4gIH1cbiAgY29uc3Qge1xuICAgIGxvYWRlcixcbiAgICBsb2FkaW5nQ29tcG9uZW50LFxuICAgIGVycm9yQ29tcG9uZW50LFxuICAgIGRlbGF5ID0gMjAwLFxuICAgIHRpbWVvdXQsXG4gICAgLy8gdW5kZWZpbmVkID0gbmV2ZXIgdGltZXMgb3V0XG4gICAgc3VzcGVuc2libGUgPSB0cnVlLFxuICAgIG9uRXJyb3I6IHVzZXJPbkVycm9yXG4gIH0gPSBzb3VyY2U7XG4gIGxldCBwZW5kaW5nUmVxdWVzdCA9IG51bGw7XG4gIGxldCByZXNvbHZlZENvbXA7XG4gIGxldCByZXRyaWVzID0gMDtcbiAgY29uc3QgcmV0cnkgPSAoKSA9PiB7XG4gICAgcmV0cmllcysrO1xuICAgIHBlbmRpbmdSZXF1ZXN0ID0gbnVsbDtcbiAgICByZXR1cm4gbG9hZCgpO1xuICB9O1xuICBjb25zdCBsb2FkID0gKCkgPT4ge1xuICAgIGxldCB0aGlzUmVxdWVzdDtcbiAgICByZXR1cm4gcGVuZGluZ1JlcXVlc3QgfHwgKHRoaXNSZXF1ZXN0ID0gcGVuZGluZ1JlcXVlc3QgPSBsb2FkZXIoKS5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICBlcnIgPSBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyciA6IG5ldyBFcnJvcihTdHJpbmcoZXJyKSk7XG4gICAgICBpZiAodXNlck9uRXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICBjb25zdCB1c2VyUmV0cnkgPSAoKSA9PiByZXNvbHZlKHJldHJ5KCkpO1xuICAgICAgICAgIGNvbnN0IHVzZXJGYWlsID0gKCkgPT4gcmVqZWN0KGVycik7XG4gICAgICAgICAgdXNlck9uRXJyb3IoZXJyLCB1c2VyUmV0cnksIHVzZXJGYWlsLCByZXRyaWVzICsgMSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuICAgIH0pLnRoZW4oKGNvbXApID0+IHtcbiAgICAgIGlmICh0aGlzUmVxdWVzdCAhPT0gcGVuZGluZ1JlcXVlc3QgJiYgcGVuZGluZ1JlcXVlc3QpIHtcbiAgICAgICAgcmV0dXJuIHBlbmRpbmdSZXF1ZXN0O1xuICAgICAgfVxuICAgICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgJiYgIWNvbXApIHtcbiAgICAgICAgd2FybiQxKFxuICAgICAgICAgIGBBc3luYyBjb21wb25lbnQgbG9hZGVyIHJlc29sdmVkIHRvIHVuZGVmaW5lZC4gSWYgeW91IGFyZSB1c2luZyByZXRyeSgpLCBtYWtlIHN1cmUgdG8gcmV0dXJuIGl0cyByZXR1cm4gdmFsdWUuYFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKGNvbXAgJiYgKGNvbXAuX19lc01vZHVsZSB8fCBjb21wW1N5bWJvbC50b1N0cmluZ1RhZ10gPT09IFwiTW9kdWxlXCIpKSB7XG4gICAgICAgIGNvbXAgPSBjb21wLmRlZmF1bHQ7XG4gICAgICB9XG4gICAgICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSAmJiBjb21wICYmICFpc09iamVjdChjb21wKSAmJiAhaXNGdW5jdGlvbihjb21wKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgYXN5bmMgY29tcG9uZW50IGxvYWQgcmVzdWx0OiAke2NvbXB9YCk7XG4gICAgICB9XG4gICAgICByZXNvbHZlZENvbXAgPSBjb21wO1xuICAgICAgcmV0dXJuIGNvbXA7XG4gICAgfSkpO1xuICB9O1xuICByZXR1cm4gZGVmaW5lQ29tcG9uZW50KHtcbiAgICBuYW1lOiBcIkFzeW5jQ29tcG9uZW50V3JhcHBlclwiLFxuICAgIF9fYXN5bmNMb2FkZXI6IGxvYWQsXG4gICAgZ2V0IF9fYXN5bmNSZXNvbHZlZCgpIHtcbiAgICAgIHJldHVybiByZXNvbHZlZENvbXA7XG4gICAgfSxcbiAgICBzZXR1cCgpIHtcbiAgICAgIGNvbnN0IGluc3RhbmNlID0gY3VycmVudEluc3RhbmNlO1xuICAgICAgaWYgKHJlc29sdmVkQ29tcCkge1xuICAgICAgICByZXR1cm4gKCkgPT4gY3JlYXRlSW5uZXJDb21wKHJlc29sdmVkQ29tcCwgaW5zdGFuY2UpO1xuICAgICAgfVxuICAgICAgY29uc3Qgb25FcnJvciA9IChlcnIpID0+IHtcbiAgICAgICAgcGVuZGluZ1JlcXVlc3QgPSBudWxsO1xuICAgICAgICBoYW5kbGVFcnJvcihcbiAgICAgICAgICBlcnIsXG4gICAgICAgICAgaW5zdGFuY2UsXG4gICAgICAgICAgMTMsXG4gICAgICAgICAgIWVycm9yQ29tcG9uZW50XG4gICAgICAgICk7XG4gICAgICB9O1xuICAgICAgaWYgKHN1c3BlbnNpYmxlICYmIGluc3RhbmNlLnN1c3BlbnNlIHx8IGlzSW5TU1JDb21wb25lbnRTZXR1cCkge1xuICAgICAgICByZXR1cm4gbG9hZCgpLnRoZW4oKGNvbXApID0+IHtcbiAgICAgICAgICByZXR1cm4gKCkgPT4gY3JlYXRlSW5uZXJDb21wKGNvbXAsIGluc3RhbmNlKTtcbiAgICAgICAgfSkuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICAgIG9uRXJyb3IoZXJyKTtcbiAgICAgICAgICByZXR1cm4gKCkgPT4gZXJyb3JDb21wb25lbnQgPyBjcmVhdGVWTm9kZShlcnJvckNvbXBvbmVudCwge1xuICAgICAgICAgICAgZXJyb3I6IGVyclxuICAgICAgICAgI
15H0pIDogbnVsbDtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBjb25zdCBsb2FkZWQgPSByZWYoZmFsc2UpO1xuICAgICAgY29uc3QgZXJyb3IgPSByZWYoKTtcbiAgICAgIGNvbnN0IGRlbGF5ZWQgPSByZWYoISFkZWxheSk7XG4gICAgICBpZiAoZGVsYXkpIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgZGVsYXllZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB9LCBkZWxheSk7XG4gICAgICB9XG4gICAgICBpZiAodGltZW91dCAhPSBudWxsKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlmICghbG9hZGVkLnZhbHVlICYmICFlcnJvci52YWx1ZSkge1xuICAgICAgICAgICAgY29uc3QgZXJyID0gbmV3IEVycm9yKFxuICAgICAgICAgICAgICBgQXN5bmMgY29tcG9uZW50IHRpbWVkIG91dCBhZnRlciAke3RpbWVvdXR9bXMuYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIG9uRXJyb3IoZXJyKTtcbiAgICAgICAgICAgIGVycm9yLnZhbHVlID0gZXJyO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgdGltZW91dCk7XG4gICAgICB9XG4gICAgICBsb2FkKCkudGhlbigoKSA9PiB7XG4gICAgICAgIGxvYWRlZC52YWx1ZSA9IHRydWU7XG4gICAgICAgIGlmIChpbnN0YW5jZS5wYXJlbnQgJiYgaXNLZWVwQWxpdmUoaW5zdGFuY2UucGFyZW50LnZub2RlKSkge1xuICAgICAgICAgIGluc3RhbmNlLnBhcmVudC5lZmZlY3QuZGlydHkgPSB0cnVlO1xuICAgICAgICAgIHF1ZXVlSm9iKGluc3RhbmNlLnBhcmVudC51cGRhdGUpO1xuICAgICAgICB9XG4gICAgICB9KS5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgIG9uRXJyb3IoZXJyKTtcbiAgICAgICAgZXJyb3IudmFsdWUgPSBlcnI7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGlmIChsb2FkZWQudmFsdWUgJiYgcmVzb2x2ZWRDb21wKSB7XG4gICAgICAgICAgcmV0dXJuIGNyZWF0ZUlubmVyQ29tcChyZXNvbHZlZENvbXAsIGluc3RhbmNlKTtcbiAgICAgICAgfSBlbHNlIGlmIChlcnJvci52YWx1ZSAmJiBlcnJvckNvbXBvbmVudCkge1xuICAgICAgICAgIHJldHVybiBjcmVhdGVWTm9kZShlcnJvckNvbXBvbmVudCwge1xuICAgICAgICAgICAgZXJyb3I6IGVycm9yLnZhbHVlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAobG9hZGluZ0NvbXBvbmVudCAmJiAhZGVsYXllZC52YWx1ZSkge1xuICAgICAgICAgIHJldHVybiBjcmVhdGVWTm9kZShsb2FkaW5nQ29tcG9uZW50KTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gIH0pO1xufVxuZnVuY3Rpb24gY3JlYXRlSW5uZXJDb21wKGNvbXAsIHBhcmVudCkge1xuICBjb25zdCB7IHJlZjogcmVmMiwgcHJvcHMsIGNoaWxkcmVuLCBjZSB9ID0gcGFyZW50LnZub2RlO1xuICBjb25zdCB2bm9kZSA9IGNyZWF0ZVZOb2RlKGNvbXAsIHByb3BzLCBjaGlsZHJlbik7XG4gIHZub2RlLnJlZiA9IHJlZjI7XG4gIHZub2RlLmNlID0gY2U7XG4gIGRlbGV0ZSBwYXJlbnQudm5vZGUuY2U7XG4gIHJldHVybiB2bm9kZTtcbn1cblxuY29uc3QgaXNLZWVwQWxpdmUgPSAodm5vZGUpID0+IHZub2RlLnR5cGUuX19pc0tlZXBBbGl2ZTtcbmNvbnN0IEtlZXBBbGl2ZUltcGwgPSB7XG4gIG5hbWU6IGBLZWVwQWxpdmVgLFxuICAvLyBNYXJrZXIgZm9yIHNwZWNpYWwgaGFuZGxpbmcgaW5zaWRlIHRoZSByZW5kZXJlci4gV2UgYXJlIG5vdCB1c2luZyBhID09PVxuICAvLyBjaGVjayBkaXJlY3RseSBvbiBLZWVwQWxpdmUgaW4gdGhlIHJlbmRlcmVyLCBiZWNhdXNlIGltcG9ydGluZyBpdCBkaXJlY3RseVxuICAvLyB3b3VsZCBwcmV2ZW50IGl0IGZyb20gYmVpbmcgdHJlZS1zaGFrZW4uXG4gIF9faXNLZWVwQWxpdmU6IHRydWUsXG4gIHByb3BzOiB7XG4gICAgaW5jbHVkZTogW1N0cmluZywgUmVnRXhwLCBBcnJheV0sXG4gICAgZXhjbHVkZTogW1N0cmluZywgUmVnRXhwLCBBcnJheV0sXG4gICAgbWF4OiBbU3RyaW5nLCBOdW1iZXJdXG4gIH0sXG4gIHNldHVwKHByb3BzLCB7IHNsb3RzIH0pIHtcbiAgICBjb25zdCBpbnN0YW5jZSA9IGdldEN1cnJlbnRJbnN0YW5jZSgpO1xuICAgIGNvbnN0IHNoYXJlZENvbnRleHQgPSBpbnN0YW5jZS5jdHg7XG4gICAgaWYgKCFzaGFyZWRDb250ZXh0LnJlbmRlcmVyKSB7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBjb25zdCBjaGlsZHJlbiA9IHNsb3RzLmRlZmF1bHQgJiYgc2xvdHMuZGVmYXVsdCgpO1xuICAgICAgICByZXR1cm4gY2hpbGRyZW4gJiYgY2hpbGRyZW4ubGVuZ3RoID09PSAxID8gY2hpbGRyZW5bMF0gOiBjaGlsZHJlbjtcbiAgICAgIH07XG4gICAgfVxuICAgIGNvbnN0IGNhY2hlID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbiAgICBjb25zdCBrZXlzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKTtcbiAgICBsZXQgY3VycmVudCA9IG51bGw7XG4gICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgfHwgX19WVUVfUFJPRF9ERVZUT09MU19fKSB7XG4gICAgICBpbnN0YW5jZS5fX3ZfY2FjaGUgPSBjYWNoZTtcbiAgICB9XG4gICAgY29uc3QgcGFyZW50U3VzcGVuc2UgPSBpbnN0YW5jZS5zdXNwZW5zZTtcbiAgICBjb25zdCB7XG4gICAgICByZW5kZXJlcjoge1xuICAgICAgICBwOiBwYXRjaCxcbiAgICAgICAgbTogbW92ZSxcbiAgICAgICAgdW06IF91bm1vdW50LFxuICAgICAgICBvOiB7IGNyZWF0ZUVsZW1lbnQgfVxuICAgICAgfVxuICAgIH0gPSBzaGFyZWRDb250ZXh0O1xuICAgIGNvbnN0IHN0b3JhZ2VDb250YWluZXIgPSBjcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgIHNoYXJlZENvbnRleHQuYWN0aXZhdGUgPSAodm5vZGUsIGNvbnRhaW5lciwgYW5jaG9yLCBuYW1lc3BhY2UsIG9wdGltaXplZCkgPT4ge1xuICAgICAgY29uc3QgaW5zdGFuY2UyID0gdm5vZGUuY29tcG9uZW50O1xuICAgICAgbW92ZSh2bm9kZSwgY29udGFpbmVyLCBhbmNob3IsIDAsIHBhcmVudFN1c3BlbnNlKTtcbiAgICAgIHBhdGNoKFxuICAgICAgICBpbnN0YW5jZTIudm5vZGUsXG4gICAgICAgIHZub2RlLFxuICAgICAgICBjb250YWluZXIsXG4gICAgICAgIGFuY2hvcixcbiAgICAgICAgaW5zdGFuY2UyLFxuICAgICAgICBwYXJlbnRTdXNwZW5zZSxcbiAgICAgICAgbmFtZXNwYWNlLFxuICAgICAgICB2bm9kZS5zbG90U2NvcGVJZHMsXG4gICAgICAgIG9wdGltaXplZFxuICAgICAgKTtcbiAgICAgIHF1ZXVlUG9zdFJlbmRlckVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGluc3RhbmNlMi5pc0RlYWN0aXZhdGVkID0gZmFsc2U7XG4gICAgICAgIGlmIChpbnN0YW5jZTIuYSkge1xuICAgICAgICAgIGludm9rZUFycmF5Rm5zKGluc3RhbmNlMi5hKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB2bm9kZUhvb2sgP
15SB2bm9kZS5wcm9wcyAmJiB2bm9kZS5wcm9wcy5vblZub2RlTW91bnRlZDtcbiAgICAgICAgaWYgKHZub2RlSG9vaykge1xuICAgICAgICAgIGludm9rZVZOb2RlSG9vayh2bm9kZUhvb2ssIGluc3RhbmNlMi5wYXJlbnQsIHZub2RlKTtcbiAgICAgICAgfVxuICAgICAgfSwgcGFyZW50U3VzcGVuc2UpO1xuICAgICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgfHwgX19WVUVfUFJPRF9ERVZUT09MU19fKSB7XG4gICAgICAgIGRldnRvb2xzQ29tcG9uZW50QWRkZWQoaW5zdGFuY2UyKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHNoYXJlZENvbnRleHQuZGVhY3RpdmF0ZSA9ICh2bm9kZSkgPT4ge1xuICAgICAgY29uc3QgaW5zdGFuY2UyID0gdm5vZGUuY29tcG9uZW50O1xuICAgICAgaW52YWxpZGF0ZU1vdW50KGluc3RhbmNlMi5tKTtcbiAgICAgIGludmFsaWRhdGVNb3VudChpbnN0YW5jZTIuYSk7XG4gICAgICBtb3ZlKHZub2RlLCBzdG9yYWdlQ29udGFpbmVyLCBudWxsLCAxLCBwYXJlbnRTdXNwZW5zZSk7XG4gICAgICBxdWV1ZVBvc3RSZW5kZXJFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoaW5zdGFuY2UyLmRhKSB7XG4gICAgICAgICAgaW52b2tlQXJyYXlGbnMoaW5zdGFuY2UyLmRhKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB2bm9kZUhvb2sgPSB2bm9kZS5wcm9wcyAmJiB2bm9kZS5wcm9wcy5vblZub2RlVW5tb3VudGVkO1xuICAgICAgICBpZiAodm5vZGVIb29rKSB7XG4gICAgICAgICAgaW52b2tlVk5vZGVIb29rKHZub2RlSG9vaywgaW5zdGFuY2UyLnBhcmVudCwgdm5vZGUpO1xuICAgICAgICB9XG4gICAgICAgIGluc3RhbmNlMi5pc0RlYWN0aXZhdGVkID0gdHJ1ZTtcbiAgICAgIH0sIHBhcmVudFN1c3BlbnNlKTtcbiAgICAgIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHx8IF9fVlVFX1BST0RfREVWVE9PTFNfXykge1xuICAgICAgICBkZXZ0b29sc0NvbXBvbmVudEFkZGVkKGluc3RhbmNlMik7XG4gICAgICB9XG4gICAgfTtcbiAgICBmdW5jdGlvbiB1bm1vdW50KHZub2RlKSB7XG4gICAgICByZXNldFNoYXBlRmxhZyh2bm9kZSk7XG4gICAgICBfdW5tb3VudCh2bm9kZSwgaW5zdGFuY2UsIHBhcmVudFN1c3BlbnNlLCB0cnVlKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJ1bmVDYWNoZShmaWx0ZXIpIHtcbiAgICAgIGNhY2hlLmZvckVhY2goKHZub2RlLCBrZXkpID0+IHtcbiAgICAgICAgY29uc3QgbmFtZSA9IGdldENvbXBvbmVudE5hbWUodm5vZGUudHlwZSk7XG4gICAgICAgIGlmIChuYW1lICYmICghZmlsdGVyIHx8ICFmaWx0ZXIobmFtZSkpKSB7XG4gICAgICAgICAgcHJ1bmVDYWNoZUVudHJ5KGtleSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcnVuZUNhY2hlRW50cnkoa2V5KSB7XG4gICAgICBjb25zdCBjYWNoZWQgPSBjYWNoZS5nZXQoa2V5KTtcbiAgICAgIGlmIChjYWNoZWQgJiYgKCFjdXJyZW50IHx8ICFpc1NhbWVWTm9kZVR5cGUoY2FjaGVkLCBjdXJyZW50KSkpIHtcbiAgICAgICAgdW5tb3VudChjYWNoZWQpO1xuICAgICAgfSBlbHNlIGlmIChjdXJyZW50KSB7XG4gICAgICAgIHJlc2V0U2hhcGVGbGFnKGN1cnJlbnQpO1xuICAgICAgfVxuICAgICAgY2FjaGUuZGVsZXRlKGtleSk7XG4gICAgICBrZXlzLmRlbGV0ZShrZXkpO1xuICAgIH1cbiAgICB3YXRjaChcbiAgICAgICgpID0+IFtwcm9wcy5pbmNsdWRlLCBwcm9wcy5leGNsdWRlXSxcbiAgICAgIChbaW5jbHVkZSwgZXhjbHVkZV0pID0+IHtcbiAgICAgICAgaW5jbHVkZSAmJiBwcnVuZUNhY2hlKChuYW1lKSA9PiBtYXRjaGVzKGluY2x1ZGUsIG5hbWUpKTtcbiAgICAgICAgZXhjbHVkZSAmJiBwcnVuZUNhY2hlKChuYW1lKSA9PiAhbWF0Y2hlcyhleGNsdWRlLCBuYW1lKSk7XG4gICAgICB9LFxuICAgICAgLy8gcHJ1bmUgcG9zdC1yZW5kZXIgYWZ0ZXIgYGN1cnJlbnRgIGhhcyBiZWVuIHVwZGF0ZWRcbiAgICAgIHsgZmx1c2g6IFwicG9zdFwiLCBkZWVwOiB0cnVlIH1cbiAgICApO1xuICAgIGxldCBwZW5kaW5nQ2FjaGVLZXkgPSBudWxsO1xuICAgIGNvbnN0IGNhY2hlU3VidHJlZSA9ICgpID0+IHtcbiAgICAgIGlmIChwZW5kaW5nQ2FjaGVLZXkgIT0gbnVsbCkge1xuICAgICAgICBpZiAoaXNTdXNwZW5zZShpbnN0YW5jZS5zdWJUcmVlLnR5cGUpKSB7XG4gICAgICAgICAgcXVldWVQb3N0UmVuZGVyRWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGNhY2hlLnNldChwZW5kaW5nQ2FjaGVLZXksIGdldElubmVyQ2hpbGQoaW5zdGFuY2Uuc3ViVHJlZSkpO1xuICAgICAgICAgIH0sIGluc3RhbmNlLnN1YlRyZWUuc3VzcGVuc2UpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNhY2hlLnNldChwZW5kaW5nQ2FjaGVLZXksIGdldElubmVyQ2hpbGQoaW5zdGFuY2Uuc3ViVHJlZSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgICBvbk1vdW50ZWQoY2FjaGVTdWJ0cmVlKTtcbiAgICBvblVwZGF0ZWQoY2FjaGVTdWJ0cmVlKTtcbiAgICBvbkJlZm9yZVVubW91bnQoKCkgPT4ge1xuICAgICAgY2FjaGUuZm9yRWFjaCgoY2FjaGVkKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgc3ViVHJlZSwgc3VzcGVuc2UgfSA9IGluc3RhbmNlO1xuICAgICAgICBjb25zdCB2bm9kZSA9IGdldElubmVyQ2hpbGQoc3ViVHJlZSk7XG4gICAgICAgIGlmIChjYWNoZWQudHlwZSA9PT0gdm5vZGUudHlwZSAmJiBjYWNoZWQua2V5ID09PSB2bm9kZS5rZXkpIHtcbiAgICAgICAgICByZXNldFNoYXBlRmxhZyh2bm9kZSk7XG4gICAgICAgICAgY29uc3QgZGEgPSB2bm9kZS5jb21wb25lbnQuZGE7XG4gICAgICAgICAgZGEgJiYgcXVldWVQb3N0UmVuZGVyRWZmZWN0KGRhLCBzdXNwZW5zZSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHVubW91bnQoY2FjaGVkKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBwZW5kaW5nQ2FjaGVLZXkgPSBudWxsO1xuICAgICAgaWYgKCFzbG90cy5kZWZh
15dWx0KSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgY29uc3QgY2hpbGRyZW4gPSBzbG90cy5kZWZhdWx0KCk7XG4gICAgICBjb25zdCByYXdWTm9kZSA9IGNoaWxkcmVuWzBdO1xuICAgICAgaWYgKGNoaWxkcmVuLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikpIHtcbiAgICAgICAgICB3YXJuJDEoYEtlZXBBbGl2ZSBzaG91bGQgY29udGFpbiBleGFjdGx5IG9uZSBjb21wb25lbnQgY2hpbGQuYCk7XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudCA9IG51bGw7XG4gICAgICAgIHJldHVybiBjaGlsZHJlbjtcbiAgICAgIH0gZWxzZSBpZiAoIWlzVk5vZGUocmF3Vk5vZGUpIHx8ICEocmF3Vk5vZGUuc2hhcGVGbGFnICYgNCkgJiYgIShyYXdWTm9kZS5zaGFwZUZsYWcgJiAxMjgpKSB7XG4gICAgICAgIGN1cnJlbnQgPSBudWxsO1xuICAgICAgICByZXR1cm4gcmF3Vk5vZGU7XG4gICAgICB9XG4gICAgICBsZXQgdm5vZGUgPSBnZXRJbm5lckNoaWxkKHJhd1ZOb2RlKTtcbiAgICAgIGlmICh2bm9kZS50eXBlID09PSBDb21tZW50KSB7XG4gICAgICAgIGN1cnJlbnQgPSBudWxsO1xuICAgICAgICByZXR1cm4gdm5vZGU7XG4gICAgICB9XG4gICAgICBjb25zdCBjb21wID0gdm5vZGUudHlwZTtcbiAgICAgIGNvbnN0IG5hbWUgPSBnZXRDb21wb25lbnROYW1lKFxuICAgICAgICBpc0FzeW5jV3JhcHBlcih2bm9kZSkgPyB2bm9kZS50eXBlLl9fYXN5bmNSZXNvbHZlZCB8fCB7fSA6IGNvbXBcbiAgICAgICk7XG4gICAgICBjb25zdCB7IGluY2x1ZGUsIGV4Y2x1ZGUsIG1heCB9ID0gcHJvcHM7XG4gICAgICBpZiAoaW5jbHVkZSAmJiAoIW5hbWUgfHwgIW1hdGNoZXMoaW5jbHVkZSwgbmFtZSkpIHx8IGV4Y2x1ZGUgJiYgbmFtZSAmJiBtYXRjaGVzKGV4Y2x1ZGUsIG5hbWUpKSB7XG4gICAgICAgIGN1cnJlbnQgPSB2bm9kZTtcbiAgICAgICAgcmV0dXJuIHJhd1ZOb2RlO1xuICAgICAgfVxuICAgICAgY29uc3Qga2V5ID0gdm5vZGUua2V5ID09IG51bGwgPyBjb21wIDogdm5vZGUua2V5O1xuICAgICAgY29uc3QgY2FjaGVkVk5vZGUgPSBjYWNoZS5nZXQoa2V5KTtcbiAgICAgIGlmICh2bm9kZS5lbCkge1xuICAgICAgICB2bm9kZSA9IGNsb25lVk5vZGUodm5vZGUpO1xuICAgICAgICBpZiAocmF3Vk5vZGUuc2hhcGVGbGFnICYgMTI4KSB7XG4gICAgICAgICAgcmF3Vk5vZGUuc3NDb250ZW50ID0gdm5vZGU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHBlbmRpbmdDYWNoZUtleSA9IGtleTtcbiAgICAgIGlmIChjYWNoZWRWTm9kZSkge1xuICAgICAgICB2bm9kZS5lbCA9IGNhY2hlZFZOb2RlLmVsO1xuICAgICAgICB2bm9kZS5jb21wb25lbnQgPSBjYWNoZWRWTm9kZS5jb21wb25lbnQ7XG4gICAgICAgIGlmICh2bm9kZS50cmFuc2l0aW9uKSB7XG4gICAgICAgICAgc2V0VHJhbnNpdGlvbkhvb2tzKHZub2RlLCB2bm9kZS50cmFuc2l0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICB2bm9kZS5zaGFwZUZsYWcgfD0gNTEyO1xuICAgICAgICBrZXlzLmRlbGV0ZShrZXkpO1xuICAgICAgICBrZXlzLmFkZChrZXkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAga2V5cy5hZGQoa2V5KTtcbiAgICAgICAgaWYgKG1heCAmJiBrZXlzLnNpemUgPiBwYXJzZUludChtYXgsIDEwKSkge1xuICAgICAgICAgIHBydW5lQ2FjaGVFbnRyeShrZXlzLnZhbHVlcygpLm5leHQoKS52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHZub2RlLnNoYXBlRmxhZyB8PSAyNTY7XG4gICAgICBjdXJyZW50ID0gdm5vZGU7XG4gICAgICByZXR1cm4gaXNTdXNwZW5zZShyYXdWTm9kZS50eXBlKSA/IHJhd1ZOb2RlIDogdm5vZGU7XG4gICAgfTtcbiAgfVxufTtcbmNvbnN0IEtlZXBBbGl2ZSA9IEtlZXBBbGl2ZUltcGw7XG5mdW5jdGlvbiBtYXRjaGVzKHBhdHRlcm4sIG5hbWUpIHtcbiAgaWYgKGlzQXJyYXkocGF0dGVybikpIHtcbiAgICByZXR1cm4gcGF0dGVybi5zb21lKChwKSA9PiBtYXRjaGVzKHAsIG5hbWUpKTtcbiAgfSBlbHNlIGlmIChpc1N0cmluZyhwYXR0ZXJuKSkge1xuICAgIHJldHVybiBwYXR0ZXJuLnNwbGl0KFwiLFwiKS5pbmNsdWRlcyhuYW1lKTtcbiAgfSBlbHNlIGlmIChpc1JlZ0V4cChwYXR0ZXJuKSkge1xuICAgIHJldHVybiBwYXR0ZXJuLnRlc3QobmFtZSk7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuZnVuY3Rpb24gb25BY3RpdmF0ZWQoaG9vaywgdGFyZ2V0KSB7XG4gIHJlZ2lzdGVyS2VlcEFsaXZlSG9vayhob29rLCBcImFcIiwgdGFyZ2V0KTtcbn1cbmZ1bmN0aW9uIG9uRGVhY3RpdmF0ZWQoaG9vaywgdGFyZ2V0KSB7XG4gIHJlZ2lzdGVyS2VlcEFsaXZlSG9vayhob29rLCBcImRhXCIsIHRhcmdldCk7XG59XG5mdW5jdGlvbiByZWdpc3RlcktlZXBBbGl2ZUhvb2soaG9vaywgdHlwZSwgdGFyZ2V0ID0gY3VycmVudEluc3RhbmNlKSB7XG4gIGNvbnN0IHdyYXBwZWRIb29rID0gaG9vay5fX3dkYyB8fCAoaG9vay5fX3dkYyA9ICgpID0+IHtcbiAgICBsZXQgY3VycmVudCA9IHRhcmdldDtcbiAgICB3aGlsZSAoY3VycmVudCkge1xuICAgICAgaWYgKGN1cnJlbnQuaXNEZWFjdGl2YXRlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjdXJyZW50ID0gY3VycmVudC5wYXJlbnQ7XG4gICAgfVxuICAgIHJldHVybiBob29rKCk7XG4gIH0pO1xuICBpbmplY3RIb29rKHR5cGUsIHdyYXBwZWRIb29rLCB0YXJnZXQpO1xuICBpZiAodGFyZ2V0KSB7XG4gICAgbGV0IGN1cnJlbnQgPSB0YXJnZXQucGFyZW50O1xuICAgIHdoaWxlIChjdXJyZW50ICYmIGN1cnJlbnQucGFyZW50KSB7XG4gICAgICBpZiAoaXNLZWVwQWxpdmUoY3VycmVudC5wYXJlbnQudm5vZGUpKSB7XG4gICAgICAgIGluamVjdFRvS2VlcEFsaXZlUm9vdCh3cmFwcGVkSG9vaywgdHlwZSwgdGFyZ2V0LCBjdXJyZW50KTtcbiAgICAgIH1cbiAgICAgIGN1cnJlbnQgPSBjdXJyZW50LnBhcmVudDtcbiAgICB9XG4gIH1cbn1cbmZ1bmN0aW9uIGluamVjdFRvS2VlcEFsaXZlUm9vdChob29rLCB0eXBlLCB0YXJnZXQsIGtlZXBBbGl2ZVJvb3QpIHtcbiAgY29uc3QgaW5qZWN0ZWQgPSBpbmplY3RIb29rKFxuICAgIHR5cGUsXG4gICAgaG9vayxcbiAgICBrZWVwQWxpdmVSb290LFxuICAgIHRydWVcbiAgICAvKiBwcmVwZW5kICovXG4gICk7XG4gIG9uVW5tb3VudGVkKCgpID0+IHtcbiAgICByZW1vdmUoa2VlcEFsaXZlUm9vdFt0eXBlXSwgaW5qZWN0ZWQpO1xuICB9LCB0YXJnZXQpO1xufVxuZnVuY3Rpb24gcmVzZXRTaGFwZUZsYWcodm5vZGUpIHtcbiAgdm5vZGUuc2hhcGVGbGFnICY9IH4yNTY7XG4gIHZub2RlLnNoYX
15BlRmxhZyAmPSB+NTEyO1xufVxuZnVuY3Rpb24gZ2V0SW5uZXJDaGlsZCh2bm9kZSkge1xuICByZXR1cm4gdm5vZGUuc2hhcGVGbGFnICYgMTI4ID8gdm5vZGUuc3NDb250ZW50IDogdm5vZGU7XG59XG5cbmZ1bmN0aW9uIGluamVjdEhvb2sodHlwZSwgaG9vaywgdGFyZ2V0ID0gY3VycmVudEluc3RhbmNlLCBwcmVwZW5kID0gZmFsc2UpIHtcbiAgaWYgKHRhcmdldCkge1xuICAgIGNvbnN0IGhvb2tzID0gdGFyZ2V0W3R5cGVdIHx8ICh0YXJnZXRbdHlwZV0gPSBbXSk7XG4gICAgY29uc3Qgd3JhcHBlZEhvb2sgPSBob29rLl9fd2VoIHx8IChob29rLl9fd2VoID0gKC4uLmFyZ3MpID0+IHtcbiAgICAgIHBhdXNlVHJhY2tpbmcoKTtcbiAgICAgIGNvbnN0IHJlc2V0ID0gc2V0Q3VycmVudEluc3RhbmNlKHRhcmdldCk7XG4gICAgICBjb25zdCByZXMgPSBjYWxsV2l0aEFzeW5jRXJyb3JIYW5kbGluZyhob29rLCB0YXJnZXQsIHR5cGUsIGFyZ3MpO1xuICAgICAgcmVzZXQoKTtcbiAgICAgIHJlc2V0VHJhY2tpbmcoKTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfSk7XG4gICAgaWYgKHByZXBlbmQpIHtcbiAgICAgIGhvb2tzLnVuc2hpZnQod3JhcHBlZEhvb2spO1xuICAgIH0gZWxzZSB7XG4gICAgICBob29rcy5wdXNoKHdyYXBwZWRIb29rKTtcbiAgICB9XG4gICAgcmV0dXJuIHdyYXBwZWRIb29rO1xuICB9IGVsc2UgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikpIHtcbiAgICBjb25zdCBhcGlOYW1lID0gdG9IYW5kbGVyS2V5KEVycm9yVHlwZVN0cmluZ3MkMVt0eXBlXS5yZXBsYWNlKC8gaG9vayQvLCBcIlwiKSk7XG4gICAgd2FybiQxKFxuICAgICAgYCR7YXBpTmFtZX0gaXMgY2FsbGVkIHdoZW4gdGhlcmUgaXMgbm8gYWN0aXZlIGNvbXBvbmVudCBpbnN0YW5jZSB0byBiZSBhc3NvY2lhdGVkIHdpdGguIExpZmVjeWNsZSBpbmplY3Rpb24gQVBJcyBjYW4gb25seSBiZSB1c2VkIGR1cmluZyBleGVjdXRpb24gb2Ygc2V0dXAoKS5gICsgKGAgSWYgeW91IGFyZSB1c2luZyBhc3luYyBzZXR1cCgpLCBtYWtlIHN1cmUgdG8gcmVnaXN0ZXIgbGlmZWN5Y2xlIGhvb2tzIGJlZm9yZSB0aGUgZmlyc3QgYXdhaXQgc3RhdGVtZW50LmAgKVxuICAgICk7XG4gIH1cbn1cbmNvbnN0IGNyZWF0ZUhvb2sgPSAobGlmZWN5Y2xlKSA9PiAoaG9vaywgdGFyZ2V0ID0gY3VycmVudEluc3RhbmNlKSA9PiB7XG4gIGlmICghaXNJblNTUkNvbXBvbmVudFNldHVwIHx8IGxpZmVjeWNsZSA9PT0gXCJzcFwiKSB7XG4gICAgaW5qZWN0SG9vayhsaWZlY3ljbGUsICguLi5hcmdzKSA9PiBob29rKC4uLmFyZ3MpLCB0YXJnZXQpO1xuICB9XG59O1xuY29uc3Qgb25CZWZvcmVNb3VudCA9IGNyZWF0ZUhvb2soXCJibVwiKTtcbmNvbnN0IG9uTW91bnRlZCA9IGNyZWF0ZUhvb2soXCJtXCIpO1xuY29uc3Qgb25CZWZvcmVVcGRhdGUgPSBjcmVhdGVIb29rKFwiYnVcIik7XG5jb25zdCBvblVwZGF0ZWQgPSBjcmVhdGVIb29rKFwidVwiKTtcbmNvbnN0IG9uQmVmb3JlVW5tb3VudCA9IGNyZWF0ZUhvb2soXCJidW1cIik7XG5jb25zdCBvblVubW91bnRlZCA9IGNyZWF0ZUhvb2soXCJ1bVwiKTtcbmNvbnN0IG9uU2VydmVyUHJlZmV0Y2ggPSBjcmVhdGVIb29rKFwic3BcIik7XG5jb25zdCBvblJlbmRlclRyaWdnZXJlZCA9IGNyZWF0ZUhvb2soXG4gIFwicnRnXCJcbik7XG5jb25zdCBvblJlbmRlclRyYWNrZWQgPSBjcmVhdGVIb29rKFxuICBcInJ0Y1wiXG4pO1xuZnVuY3Rpb24gb25FcnJvckNhcHR1cmVkKGhvb2ssIHRhcmdldCA9IGN1cnJlbnRJbnN0YW5jZSkge1xuICBpbmplY3RIb29rKFwiZWNcIiwgaG9vaywgdGFyZ2V0KTtcbn1cblxuY29uc3QgQ09NUE9ORU5UUyA9IFwiY29tcG9uZW50c1wiO1xuY29uc3QgRElSRUNUSVZFUyA9IFwiZGlyZWN0aXZlc1wiO1xuZnVuY3Rpb24gcmVzb2x2ZUNvbXBvbmVudChuYW1lLCBtYXliZVNlbGZSZWZlcmVuY2UpIHtcbiAgcmV0dXJuIHJlc29sdmVBc3NldChDT01QT05FTlRTLCBuYW1lLCB0cnVlLCBtYXliZVNlbGZSZWZlcmVuY2UpIHx8IG5hbWU7XG59XG5jb25zdCBOVUxMX0RZTkFNSUNfQ09NUE9ORU5UID0gU3ltYm9sLmZvcihcInYtbmRjXCIpO1xuZnVuY3Rpb24gcmVzb2x2ZUR5bmFtaWNDb21wb25lbnQoY29tcG9uZW50KSB7XG4gIGlmIChpc1N0cmluZyhjb21wb25lbnQpKSB7XG4gICAgcmV0dXJuIHJlc29sdmVBc3NldChDT01QT05FTlRTLCBjb21wb25lbnQsIGZhbHNlKSB8fCBjb21wb25lbnQ7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGNvbXBvbmVudCB8fCBOVUxMX0RZTkFNSUNfQ09NUE9ORU5UO1xuICB9XG59XG5mdW5jdGlvbiByZXNvbHZlRGlyZWN0aXZlKG5hbWUpIHtcbiAgcmV0dXJuIHJlc29sdmVBc3NldChESVJFQ1RJVkVTLCBuYW1lKTtcbn1cbmZ1bmN0aW9uIHJlc29sdmVBc3NldCh0eXBlLCBuYW1lLCB3YXJuTWlzc2luZyA9IHRydWUsIG1heWJlU2VsZlJlZmVyZW5jZSA9IGZhbHNlKSB7XG4gIGNvbnN0IGluc3RhbmNlID0gY3VycmVudFJlbmRlcmluZ0luc3RhbmNlIHx8IGN1cnJlbnRJbnN0YW5jZTtcbiAgaWYgKGluc3RhbmNlKSB7XG4gICAgY29uc3QgQ29tcG9uZW50ID0gaW5zdGFuY2UudHlwZTtcbiAgICBpZiAodHlwZSA9PT0gQ09NUE9ORU5UUykge1xuICAgICAgY29uc3Qgc2VsZk5hbWUgPSBnZXRDb21wb25lbnROYW1lKFxuICAgICAgICBDb21wb25lbnQsXG4gICAgICAgIGZhbHNlXG4gICAgICApO1xuICAgICAgaWYgKHNlbGZOYW1lICYmIChzZWxmTmFtZSA9PT0gbmFtZSB8fCBzZWxmTmFtZSA9PT0gY2FtZWxpemUobmFtZSkgfHwgc2VsZk5hbWUgPT09IGNhcGl0YWxpemUoY2FtZWxpemUobmFtZSkpKSkge1xuICAgICAgICByZXR1cm4gQ29tcG9uZW50O1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCByZXMgPSAoXG4gICAgICAvLyBsb2NhbCByZWdpc3RyYXRpb25cbiAgICAgIC8vIGNoZWNrIGluc3RhbmNlW3R5cGVdIGZpcnN0IHdoaWNoIGlzIHJlc29sdmVkIGZvciBvcHRpb25zIEFQSVxuICAgICAgcmVzb2x2ZShpbnN0YW5jZVt0eXBlXSB8fCBDb21wb25lbnRbdHlwZV0sIG5hbWUpIHx8IC8vIGdsb2JhbCByZWdpc3RyYXRpb25cbiAgICAgIHJlc29sdmUoaW5zdGFuY2UuYXBwQ29udGV4dFt0eXBlXSwgbmFtZSlcbiAgICApO
151xuICAgIGlmICghcmVzICYmIG1heWJlU2VsZlJlZmVyZW5jZSkge1xuICAgICAgcmV0dXJuIENvbXBvbmVudDtcbiAgICB9XG4gICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgJiYgd2Fybk1pc3NpbmcgJiYgIXJlcykge1xuICAgICAgY29uc3QgZXh0cmEgPSB0eXBlID09PSBDT01QT05FTlRTID8gYFxuSWYgdGhpcyBpcyBhIG5hdGl2ZSBjdXN0b20gZWxlbWVudCwgbWFrZSBzdXJlIHRvIGV4Y2x1ZGUgaXQgZnJvbSBjb21wb25lbnQgcmVzb2x1dGlvbiB2aWEgY29tcGlsZXJPcHRpb25zLmlzQ3VzdG9tRWxlbWVudC5gIDogYGA7XG4gICAgICB3YXJuJDEoYEZhaWxlZCB0byByZXNvbHZlICR7dHlwZS5zbGljZSgwLCAtMSl9OiAke25hbWV9JHtleHRyYX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbiAgfSBlbHNlIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpKSB7XG4gICAgd2FybiQxKFxuICAgICAgYHJlc29sdmUke2NhcGl0YWxpemUodHlwZS5zbGljZSgwLCAtMSkpfSBjYW4gb25seSBiZSB1c2VkIGluIHJlbmRlcigpIG9yIHNldHVwKCkuYFxuICAgICk7XG4gIH1cbn1cbmZ1bmN0aW9uIHJlc29sdmUocmVnaXN0cnksIG5hbWUpIHtcbiAgcmV0dXJuIHJlZ2lzdHJ5ICYmIChyZWdpc3RyeVtuYW1lXSB8fCByZWdpc3RyeVtjYW1lbGl6ZShuYW1lKV0gfHwgcmVnaXN0cnlbY2FwaXRhbGl6ZShjYW1lbGl6ZShuYW1lKSldKTtcbn1cblxuZnVuY3Rpb24gcmVuZGVyTGlzdChzb3VyY2UsIHJlbmRlckl0ZW0sIGNhY2hlLCBpbmRleCkge1xuICBsZXQgcmV0O1xuICBjb25zdCBjYWNoZWQgPSBjYWNoZSAmJiBjYWNoZVtpbmRleF07XG4gIGlmIChpc0FycmF5KHNvdXJjZSkgfHwgaXNTdHJpbmcoc291cmNlKSkge1xuICAgIHJldCA9IG5ldyBBcnJheShzb3VyY2UubGVuZ3RoKTtcbiAgICBmb3IgKGxldCBpID0gMCwgbCA9IHNvdXJjZS5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIHJldFtpXSA9IHJlbmRlckl0ZW0oc291cmNlW2ldLCBpLCB2b2lkIDAsIGNhY2hlZCAmJiBjYWNoZWRbaV0pO1xuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlb2Ygc291cmNlID09PSBcIm51bWJlclwiKSB7XG4gICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgJiYgIU51bWJlci5pc0ludGVnZXIoc291cmNlKSkge1xuICAgICAgd2FybiQxKGBUaGUgdi1mb3IgcmFuZ2UgZXhwZWN0IGFuIGludGVnZXIgdmFsdWUgYnV0IGdvdCAke3NvdXJjZX0uYCk7XG4gICAgfVxuICAgIHJldCA9IG5ldyBBcnJheShzb3VyY2UpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc291cmNlOyBpKyspIHtcbiAgICAgIHJldFtpXSA9IHJlbmRlckl0ZW0oaSArIDEsIGksIHZvaWQgMCwgY2FjaGVkICYmIGNhY2hlZFtpXSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGlzT2JqZWN0KHNvdXJjZSkpIHtcbiAgICBpZiAoc291cmNlW1N5bWJvbC5pdGVyYXRvcl0pIHtcbiAgICAgIHJldCA9IEFycmF5LmZyb20oXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgKGl0ZW0sIGkpID0+IHJlbmRlckl0ZW0oaXRlbSwgaSwgdm9pZCAwLCBjYWNoZWQgJiYgY2FjaGVkW2ldKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7XG4gICAgICByZXQgPSBuZXcgQXJyYXkoa2V5cy5sZW5ndGgpO1xuICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSBrZXlzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICBjb25zdCBrZXkgPSBrZXlzW2ldO1xuICAgICAgICByZXRbaV0gPSByZW5kZXJJdGVtKHNvdXJjZVtrZXldLCBrZXksIGksIGNhY2hlZCAmJiBjYWNoZWRbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICByZXQgPSBbXTtcbiAgfVxuICBpZiAoY2FjaGUpIHtcbiAgICBjYWNoZVtpbmRleF0gPSByZXQ7XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cblxuZnVuY3Rpb24gY3JlYXRlU2xvdHMoc2xvdHMsIGR5bmFtaWNTbG90cykge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGR5bmFtaWNTbG90cy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHNsb3QgPSBkeW5hbWljU2xvdHNbaV07XG4gICAgaWYgKGlzQXJyYXkoc2xvdCkpIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgc2xvdC5sZW5ndGg7IGorKykge1xuICAgICAgICBzbG90c1tzbG90W2pdLm5hbWVdID0gc2xvdFtqXS5mbjtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHNsb3QpIHtcbiAgICAgIHNsb3RzW3Nsb3QubmFtZV0gPSBzbG90LmtleSA/ICguLi5hcmdzKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlcyA9IHNsb3QuZm4oLi4uYXJncyk7XG4gICAgICAgIGlmIChyZXMpIHJlcy5rZXkgPSBzbG90LmtleTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgIH0gOiBzbG90LmZuO1xuICAgIH1cbiAgfVxuICByZXR1cm4gc2xvdHM7XG59XG5cbmZ1bmN0aW9uIHJlbmRlclNsb3Qoc2xvdHMsIG5hbWUsIHByb3BzID0ge30sIGZhbGxiYWNrLCBub1Nsb3R0ZWQpIHtcbiAgaWYgKGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZS5pc0NFIHx8IGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZS5wYXJlbnQgJiYgaXNBc3luY1dyYXBwZXIoY3VycmVudFJlbmRlcmluZ0luc3RhbmNlLnBhcmVudCkgJiYgY3VycmVudFJlbmRlcmluZ0luc3RhbmNlLnBhcmVudC5pc0NFKSB7XG4gICAgaWYgKG5hbWUgIT09IFwiZGVmYXVsdFwiKSBwcm9wcy5uYW1lID0gbmFtZTtcbiAgICByZXR1cm4gY3JlYXRlVk5vZGUoXCJzbG90XCIsIHByb3BzLCBmYWxsYmFjayAmJiBmYWxsYmFjaygpKTtcbiAgfVxuICBsZXQgc2xvdCA9IHNsb3RzW25hbWVdO1xuICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSAmJiBzbG90ICYmIHNsb3QubGVuZ3RoID4gMSkge1xuICAgIHdhcm4kMShcbiAgICAgIGBTU1Itb3B0aW1pemVkIHNsb3QgZnVuY3Rpb24gZGV0ZWN0ZWQgaW4gYSBub24tU1NSLW9wdGltaXplZCByZW5kZXIgZnVuY3Rpb24uIFlvdSBuZWVkIHRvIG1hcmsgdGhpcyBjb21wb25lbnQgd2l0aCAkZHluYW1pYy1zbG90cyBpbiB0aGUgcGFyZW50IHRlbXBsYXRlLmBcbiAgICApO
151xuICAgIHNsb3QgPSAoKSA9PiBbXTtcbiAgfVxuICBpZiAoc2xvdCAmJiBzbG90Ll9jKSB7XG4gICAgc2xvdC5fZCA9IGZhbHNlO1xuICB9XG4gIG9wZW5CbG9jaygpO1xuICBjb25zdCB2YWxpZFNsb3RDb250ZW50ID0gc2xvdCAmJiBlbnN1cmVWYWxpZFZOb2RlKHNsb3QocHJvcHMpKTtcbiAgY29uc3QgcmVuZGVyZWQgPSBjcmVhdGVCbG9jayhcbiAgICBGcmFnbWVudCxcbiAgICB7XG4gICAgICBrZXk6IChwcm9wcy5rZXkgfHwgLy8gc2xvdCBjb250ZW50IGFycmF5IG9mIGEgZHluYW1pYyBjb25kaXRpb25hbCBzbG90IG1heSBoYXZlIGEgYnJhbmNoXG4gICAgICAvLyBrZXkgYXR0YWNoZWQgaW4gdGhlIGBjcmVhdGVTbG90c2AgaGVscGVyLCByZXNwZWN0IHRoYXRcbiAgICAgIHZhbGlkU2xvdENvbnRlbnQgJiYgdmFsaWRTbG90Q29udGVudC5rZXkgfHwgYF8ke25hbWV9YCkgKyAvLyAjNzI1NiBmb3JjZSBkaWZmZXJlbnRpYXRlIGZhbGxiYWNrIGNvbnRlbnQgZnJvbSBhY3R1YWwgY29udGVudFxuICAgICAgKCF2YWxpZFNsb3RDb250ZW50ICYmIGZhbGxiYWNrID8gXCJfZmJcIiA6IFwiXCIpXG4gICAgfSxcbiAgICB2YWxpZFNsb3RDb250ZW50IHx8IChmYWxsYmFjayA/IGZhbGxiYWNrKCkgOiBbXSksXG4gICAgdmFsaWRTbG90Q29udGVudCAmJiBzbG90cy5fID09PSAxID8gNjQgOiAtMlxuICApO1xuICBpZiAoIW5vU2xvdHRlZCAmJiByZW5kZXJlZC5zY29wZUlkKSB7XG4gICAgcmVuZGVyZWQuc2xvdFNjb3BlSWRzID0gW3JlbmRlcmVkLnNjb3BlSWQgKyBcIi1zXCJdO1xuICB9XG4gIGlmIChzbG90ICYmIHNsb3QuX2MpIHtcbiAgICBzbG90Ll9kID0gdHJ1ZTtcbiAgfVxuICByZXR1cm4gcmVuZGVyZWQ7XG59XG5mdW5jdGlvbiBlbnN1cmVWYWxpZFZOb2RlKHZub2Rlcykge1xuICByZXR1cm4gdm5vZGVzLnNvbWUoKGNoaWxkKSA9PiB7XG4gICAgaWYgKCFpc1ZOb2RlKGNoaWxkKSkgcmV0dXJuIHRydWU7XG4gICAgaWYgKGNoaWxkLnR5cGUgPT09IENvbW1lbnQpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoY2hpbGQudHlwZSA9PT0gRnJhZ21lbnQgJiYgIWVuc3VyZVZhbGlkVk5vZGUoY2hpbGQuY2hpbGRyZW4pKVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0cnVlO1xuICB9KSA/IHZub2RlcyA6IG51bGw7XG59XG5cbmZ1bmN0aW9uIHRvSGFuZGxlcnMob2JqLCBwcmVzZXJ2ZUNhc2VJZk5lY2Vzc2FyeSkge1xuICBjb25zdCByZXQgPSB7fTtcbiAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgJiYgIWlzT2JqZWN0KG9iaikpIHtcbiAgICB3YXJuJDEoYHYtb24gd2l0aCBubyBhcmd1bWVudCBleHBlY3RzIGFuIG9iamVjdCB2YWx1ZS5gKTtcbiAgICByZXR1cm4gcmV0O1xuICB9XG4gIGZvciAoY29uc3Qga2V5IGluIG9iaikge1xuICAgIHJldFtwcmVzZXJ2ZUNhc2VJZk5lY2Vzc2FyeSAmJiAvW0EtWl0vLnRlc3Qoa2V5KSA/IGBvbjoke2tleX1gIDogdG9IYW5kbGVyS2V5KGtleSldID0gb2JqW2tleV07XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cblxuY29uc3QgZ2V0UHVibGljSW5zdGFuY2UgPSAoaSkgPT4ge1xuICBpZiAoIWkpIHJldHVybiBudWxsO1xuICBpZiAoaXNTdGF0ZWZ1bENvbXBvbmVudChpKSkgcmV0dXJuIGdldENvbXBvbmVudFB1YmxpY0luc3RhbmNlKGkpO1xuICByZXR1cm4gZ2V0UHVibGljSW5zdGFuY2UoaS5wYXJlbnQpO1xufTtcbmNvbnN0IHB1YmxpY1Byb3BlcnRpZXNNYXAgPSAoXG4gIC8vIE1vdmUgUFVSRSBtYXJrZXIgdG8gbmV3IGxpbmUgdG8gd29ya2Fyb3VuZCBjb21waWxlciBkaXNjYXJkaW5nIGl0XG4gIC8vIGR1ZSB0byB0eXBlIGFubm90YXRpb25cbiAgLyogQF9fUFVSRV9fICovIGV4dGVuZCgvKiBAX19QVVJFX18gKi8gT2JqZWN0LmNyZWF0ZShudWxsKSwge1xuICAgICQ6IChpKSA9PiBpLFxuICAgICRlbDogKGkpID0+IGkudm5vZGUuZWwsXG4gICAgJGRhdGE6IChpKSA9PiBpLmRhdGEsXG4gICAgJHByb3BzOiAoaSkgPT4gISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSA/IHNoYWxsb3dSZWFkb25seShpLnByb3BzKSA6IGkucHJvcHMsXG4gICAgJGF0dHJzOiAoaSkgPT4gISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSA/IHNoYWxsb3dSZWFkb25seShpLmF0dHJzKSA6IGkuYXR0cnMsXG4gICAgJHNsb3RzOiAoaSkgPT4gISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSA/IHNoYWxsb3dSZWFkb25seShpLnNsb3RzKSA6IGkuc2xvdHMsXG4gICAgJHJlZnM6IChpKSA9PiAhIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpID8gc2hhbGxvd1JlYWRvbmx5KGkucmVmcykgOiBpLnJlZnMsXG4gICAgJHBhcmVudDogKGkpID0+IGdldFB1YmxpY0luc3RhbmNlKGkucGFyZW50KSxcbiAgICAkcm9vdDogKGkpID0+IGdldFB1YmxpY0luc3RhbmNlKGkucm9vdCksXG4gICAgJGVtaXQ6IChpKSA9PiBpLmVtaXQsXG4gICAgJG9wdGlvbnM6IChpKSA9PiBfX1ZVRV9PUFRJT05TX0FQSV9fID8gcmVzb2x2ZU1lcmdlZE9wdGlvbnMoaSkgOiBpLnR5cGUsXG4gICAgJGZvcmNlVXBkYXRlOiAoaSkgPT4gaS5mIHx8IChpLmYgPSAoKSA9PiB7XG4gICAgICBpLmVmZmVjdC5kaXJ0eSA9IHRydWU7XG4gICAgICBxdWV1ZUpvYihpLnVwZGF0ZSk7XG4gICAgfSksXG4gICAgJG5leHRUaWNrOiAoaSkgPT4gaS5uIHx8IChpLm4gPSBuZXh0VGljay5iaW5kKGkucHJveHkpKSxcbiAgICAkd2F0Y2g6IChpKSA9PiBfX1ZVRV9PUFRJT05TX0FQSV9fID8gaW5zdGFuY2VXYXRjaC5iaW5kKGkpIDogTk9PUFxuICB9KVxuKTtcbmNvbnN0IGlzUmVzZXJ2ZWRQcmVmaXggPSAoa2V5KSA9PiBrZXkgPT09IFwiX1wiIHx8IGtleSA9PT0gXCIkXCI7XG5jb25zdCBoYXNTZXR1cEJpbmRpbmcgPSAoc3RhdGUsIGtleSkgPT4gc3RhdGUgIT09IEVNUFRZX09CSiAmJiAhc3RhdGUuX19pc1NjcmlwdFNldHVwICYmIGhhc093bihzdGF0ZSwga2V5KTtcbmNvbnN0IFB1YmxpY0luc3RhbmNlUHJveHlIYW5kbGVycyA9IHtcbiAgZ2V0KHsgXzogaW5zdGFuY2UgfSwga2V5KSB7XG4gICAgaWYgKGtleSA9PT0gXCJfX3Zfc2tpcFwiKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgeyBjdHgsIHNldHVwU3RhdGUsIGRhdGEsIHByb3BzLCBhY2Nlc3NDYWNoZSwgdHlwZSwgYXBwQ29udGV4dCB9ID0gaW5zdGFuY2U7XG4gICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgJiYga2V5ID09PSBcIl9faXNWdWVcIikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGxldCBub3JtYWxpem
15VkUHJvcHM7XG4gICAgaWYgKGtleVswXSAhPT0gXCIkXCIpIHtcbiAgICAgIGNvbnN0IG4gPSBhY2Nlc3NDYWNoZVtrZXldO1xuICAgICAgaWYgKG4gIT09IHZvaWQgMCkge1xuICAgICAgICBzd2l0Y2ggKG4pIHtcbiAgICAgICAgICBjYXNlIDEgLyogU0VUVVAgKi86XG4gICAgICAgICAgICByZXR1cm4gc2V0dXBTdGF0ZVtrZXldO1xuICAgICAgICAgIGNhc2UgMiAvKiBEQVRBICovOlxuICAgICAgICAgICAgcmV0dXJuIGRhdGFba2V5XTtcbiAgICAgICAgICBjYXNlIDQgLyogQ09OVEVYVCAqLzpcbiAgICAgICAgICAgIHJldHVybiBjdHhba2V5XTtcbiAgICAgICAgICBjYXNlIDMgLyogUFJPUFMgKi86XG4gICAgICAgICAgICByZXR1cm4gcHJvcHNba2V5XTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChoYXNTZXR1cEJpbmRpbmcoc2V0dXBTdGF0ZSwga2V5KSkge1xuICAgICAgICBhY2Nlc3NDYWNoZVtrZXldID0gMSAvKiBTRVRVUCAqLztcbiAgICAgICAgcmV0dXJuIHNldHVwU3RhdGVba2V5XTtcbiAgICAgIH0gZWxzZSBpZiAoZGF0YSAhPT0gRU1QVFlfT0JKICYmIGhhc093bihkYXRhLCBrZXkpKSB7XG4gICAgICAgIGFjY2Vzc0NhY2hlW2tleV0gPSAyIC8qIERBVEEgKi87XG4gICAgICAgIHJldHVybiBkYXRhW2tleV07XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAvLyBvbmx5IGNhY2hlIG90aGVyIHByb3BlcnRpZXMgd2hlbiBpbnN0YW5jZSBoYXMgZGVjbGFyZWQgKHRodXMgc3RhYmxlKVxuICAgICAgICAvLyBwcm9wc1xuICAgICAgICAobm9ybWFsaXplZFByb3BzID0gaW5zdGFuY2UucHJvcHNPcHRpb25zWzBdKSAmJiBoYXNPd24obm9ybWFsaXplZFByb3BzLCBrZXkpXG4gICAgICApIHtcbiAgICAgICAgYWNjZXNzQ2FjaGVba2V5XSA9IDMgLyogUFJPUFMgKi87XG4gICAgICAgIHJldHVybiBwcm9wc1trZXldO1xuICAgICAgfSBlbHNlIGlmIChjdHggIT09IEVNUFRZX09CSiAmJiBoYXNPd24oY3R4LCBrZXkpKSB7XG4gICAgICAgIGFjY2Vzc0NhY2hlW2tleV0gPSA0IC8qIENPTlRFWFQgKi87XG4gICAgICAgIHJldHVybiBjdHhba2V5XTtcbiAgICAgIH0gZWxzZSBpZiAoIV9fVlVFX09QVElPTlNfQVBJX18gfHwgc2hvdWxkQ2FjaGVBY2Nlc3MpIHtcbiAgICAgICAgYWNjZXNzQ2FjaGVba2V5XSA9IDAgLyogT1RIRVIgKi87XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHB1YmxpY0dldHRlciA9IHB1YmxpY1Byb3BlcnRpZXNNYXBba2V5XTtcbiAgICBsZXQgY3NzTW9kdWxlLCBnbG9iYWxQcm9wZXJ0aWVzO1xuICAgIGlmIChwdWJsaWNHZXR0ZXIpIHtcbiAgICAgIGlmIChrZXkgPT09IFwiJGF0dHJzXCIpIHtcbiAgICAgICAgdHJhY2soaW5zdGFuY2UuYXR0cnMsIFwiZ2V0XCIsIFwiXCIpO1xuICAgICAgICAhIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpICYmIG1hcmtBdHRyc0FjY2Vzc2VkKCk7XG4gICAgICB9IGVsc2UgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgJiYga2V5ID09PSBcIiRzbG90c1wiKSB7XG4gICAgICAgIHRyYWNrKGluc3RhbmNlLCBcImdldFwiLCBrZXkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHB1YmxpY0dldHRlcihpbnN0YW5jZSk7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIC8vIGNzcyBtb2R1bGUgKGluamVjdGVkIGJ5IHZ1ZS1sb2FkZXIpXG4gICAgICAoY3NzTW9kdWxlID0gdHlwZS5fX2Nzc01vZHVsZXMpICYmIChjc3NNb2R1bGUgPSBjc3NNb2R1bGVba2V5XSlcbiAgICApIHtcbiAgICAgIHJldHVybiBjc3NNb2R1bGU7XG4gICAgfSBlbHNlIGlmIChjdHggIT09IEVNUFRZX09CSiAmJiBoYXNPd24oY3R4LCBrZXkpKSB7XG4gICAgICBhY2Nlc3NDYWNoZVtrZXldID0gNCAvKiBDT05URVhUICovO1xuICAgICAgcmV0dXJuIGN0eFtrZXldO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICAvLyBnbG9iYWwgcHJvcGVydGllc1xuICAgICAgZ2xvYmFsUHJvcGVydGllcyA9IGFwcENvbnRleHQuY29uZmlnLmdsb2JhbFByb3BlcnRpZXMsIGhhc093bihnbG9iYWxQcm9wZXJ0aWVzLCBrZXkpXG4gICAgKSB7XG4gICAgICB7XG4gICAgICAgIHJldHVybiBnbG9iYWxQcm9wZXJ0aWVzW2tleV07XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpICYmIGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZSAmJiAoIWlzU3RyaW5nKGtleSkgfHwgLy8gIzEwOTEgYXZvaWQgaW50ZXJuYWwgaXNSZWYvaXNWTm9kZSBjaGVja3Mgb24gY29tcG9uZW50IGluc3RhbmNlIGxlYWRpbmdcbiAgICAvLyB0byBpbmZpbml0ZSB3YXJuaW5nIGxvb3BcbiAgICBrZXkuaW5kZXhPZihcIl9fdlwiKSAhPT0gMCkpIHtcbiAgICAgIGlmIChkYXRhICE9PSBFTVBUWV9PQkogJiYgaXNSZXNlcnZlZFByZWZpeChrZXlbMF0pICYmIGhhc093bihkYXRhLCBrZXkpKSB7XG4gICAgICAgIHdhcm4kMShcbiAgICAgICAgICBgUHJvcGVydHkgJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgIGtleVxuICAgICAgICAgICl9IG11c3QgYmUgYWNjZXNzZWQgdmlhICRkYXRhIGJlY2F1c2UgaXQgc3RhcnRzIHdpdGggYSByZXNlcnZlZCBjaGFyYWN0ZXIgKFwiJFwiIG9yIFwiX1wiKSBhbmQgaXMgbm90IHByb3hpZWQgb24gdGhlIHJlbmRlciBjb250ZXh0LmBcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAoaW5zdGFuY2UgPT09IGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZSkge1xuICAgICAgICB3YXJuJDEoXG4gICAgICAgICAgYFByb3BlcnR5ICR7SlNPTi5zdHJpbmdpZnkoa2V5KX0gd2FzIGFjY2Vzc2VkIGR1cmluZyByZW5kZXIgYnV0IGlzIG5vdCBkZWZpbmVkIG9uIGluc3RhbmNlLmBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIHNldCh7IF86IGluc3RhbmNlIH0sIGtleSwgdmFsdWUpIHtcbiAgICBjb25zdCB7IGRhdGEsIHNldHVwU3RhdGUsIGN0eCB9ID0gaW5zdGFuY2U7XG4gICAgaWYgKGhhc1NldHVwQmluZGluZyhzZXR1cFN0YXRlLCBrZXkpKSB7XG4gICAgICBzZXR1cFN0YXRlW2tleV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybi
15B0cnVlO1xuICAgIH0gZWxzZSBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSAmJiBzZXR1cFN0YXRlLl9faXNTY3JpcHRTZXR1cCAmJiBoYXNPd24oc2V0dXBTdGF0ZSwga2V5KSkge1xuICAgICAgd2FybiQxKGBDYW5ub3QgbXV0YXRlIDxzY3JpcHQgc2V0dXA+IGJpbmRpbmcgXCIke2tleX1cIiBmcm9tIE9wdGlvbnMgQVBJLmApO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoZGF0YSAhPT0gRU1QVFlfT0JKICYmIGhhc093bihkYXRhLCBrZXkpKSB7XG4gICAgICBkYXRhW2tleV0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSBpZiAoaGFzT3duKGluc3RhbmNlLnByb3BzLCBrZXkpKSB7XG4gICAgICAhIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpICYmIHdhcm4kMShgQXR0ZW1wdGluZyB0byBtdXRhdGUgcHJvcCBcIiR7a2V5fVwiLiBQcm9wcyBhcmUgcmVhZG9ubHkuYCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChrZXlbMF0gPT09IFwiJFwiICYmIGtleS5zbGljZSgxKSBpbiBpbnN0YW5jZSkge1xuICAgICAgISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSAmJiB3YXJuJDEoXG4gICAgICAgIGBBdHRlbXB0aW5nIHRvIG11dGF0ZSBwdWJsaWMgcHJvcGVydHkgXCIke2tleX1cIi4gUHJvcGVydGllcyBzdGFydGluZyB3aXRoICQgYXJlIHJlc2VydmVkIGFuZCByZWFkb25seS5gXG4gICAgICApO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSAmJiBrZXkgaW4gaW5zdGFuY2UuYXBwQ29udGV4dC5jb25maWcuZ2xvYmFsUHJvcGVydGllcykge1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3R4LCBrZXksIHtcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICB2YWx1ZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN0eFtrZXldID0gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9LFxuICBoYXMoe1xuICAgIF86IHsgZGF0YSwgc2V0dXBTdGF0ZSwgYWNjZXNzQ2FjaGUsIGN0eCwgYXBwQ29udGV4dCwgcHJvcHNPcHRpb25zIH1cbiAgfSwga2V5KSB7XG4gICAgbGV0IG5vcm1hbGl6ZWRQcm9wcztcbiAgICByZXR1cm4gISFhY2Nlc3NDYWNoZVtrZXldIHx8IGRhdGEgIT09IEVNUFRZX09CSiAmJiBoYXNPd24oZGF0YSwga2V5KSB8fCBoYXNTZXR1cEJpbmRpbmcoc2V0dXBTdGF0ZSwga2V5KSB8fCAobm9ybWFsaXplZFByb3BzID0gcHJvcHNPcHRpb25zWzBdKSAmJiBoYXNPd24obm9ybWFsaXplZFByb3BzLCBrZXkpIHx8IGhhc093bihjdHgsIGtleSkgfHwgaGFzT3duKHB1YmxpY1Byb3BlcnRpZXNNYXAsIGtleSkgfHwgaGFzT3duKGFwcENvbnRleHQuY29uZmlnLmdsb2JhbFByb3BlcnRpZXMsIGtleSk7XG4gIH0sXG4gIGRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBkZXNjcmlwdG9yKSB7XG4gICAgaWYgKGRlc2NyaXB0b3IuZ2V0ICE9IG51bGwpIHtcbiAgICAgIHRhcmdldC5fLmFjY2Vzc0NhY2hlW2tleV0gPSAwO1xuICAgIH0gZWxzZSBpZiAoaGFzT3duKGRlc2NyaXB0b3IsIFwidmFsdWVcIikpIHtcbiAgICAgIHRoaXMuc2V0KHRhcmdldCwga2V5LCBkZXNjcmlwdG9yLnZhbHVlLCBudWxsKTtcbiAgICB9XG4gICAgcmV0dXJuIFJlZmxlY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIGRlc2NyaXB0b3IpO1xuICB9XG59O1xuaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgJiYgdHJ1ZSkge1xuICBQdWJsaWNJbnN0YW5jZVByb3h5SGFuZGxlcnMub3duS2V5cyA9ICh0YXJnZXQpID0+IHtcbiAgICB3YXJuJDEoXG4gICAgICBgQXZvaWQgYXBwIGxvZ2ljIHRoYXQgcmVsaWVzIG9uIGVudW1lcmF0aW5nIGtleXMgb24gYSBjb21wb25lbnQgaW5zdGFuY2UuIFRoZSBrZXlzIHdpbGwgYmUgZW1wdHkgaW4gcHJvZHVjdGlvbiBtb2RlIHRvIGF2b2lkIHBlcmZvcm1hbmNlIG92ZXJoZWFkLmBcbiAgICApO1xuICAgIHJldHVybiBSZWZsZWN0Lm93bktleXModGFyZ2V0KTtcbiAgfTtcbn1cbmNvbnN0IFJ1bnRpbWVDb21waWxlZFB1YmxpY0luc3RhbmNlUHJveHlIYW5kbGVycyA9IC8qIEBfX1BVUkVfXyAqLyBleHRlbmQoXG4gIHt9LFxuICBQdWJsaWNJbnN0YW5jZVByb3h5SGFuZGxlcnMsXG4gIHtcbiAgICBnZXQodGFyZ2V0LCBrZXkpIHtcbiAgICAgIGlmIChrZXkgPT09IFN5bWJvbC51bnNjb3BhYmxlcykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICByZXR1cm4gUHVibGljSW5zdGFuY2VQcm94eUhhbmRsZXJzLmdldCh0YXJnZXQsIGtleSwgdGFyZ2V0KTtcbiAgICB9LFxuICAgIGhhcyhfLCBrZXkpIHtcbiAgICAgIGNvbnN0IGhhcyA9IGtleVswXSAhPT0gXCJfXCIgJiYgIWlzR2xvYmFsbHlBbGxvd2VkKGtleSk7XG4gICAgICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSAmJiAhaGFzICYmIFB1YmxpY0luc3RhbmNlUHJveHlIYW5kbGVycy5oYXMoXywga2V5KSkge1xuICAgICAgICB3YXJuJDEoXG4gICAgICAgICAgYFByb3BlcnR5ICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgICBrZXlcbiAgICAgICAgICApfSBzaG91bGQgbm90IHN0YXJ0IHdpdGggXyB3aGljaCBpcyBhIHJlc2VydmVkIHByZWZpeCBmb3IgVnVlIGludGVybmFscy5gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gaGFzO1xuICAgIH1cbiAgfVxuKTtcbmZ1bmN0aW9uIGNyZWF0ZURldlJlbmRlckNvbnRleHQoaW5zdGFuY2UpIHtcbiAgY29uc3QgdGFyZ2V0ID0ge307XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGBfYCwge1xuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICBnZXQ6ICgpID0+IGluc3RhbmNlXG4gIH0pO1xuICBPYmplY3Qua2V5cyhwdWJsaWNQcm9wZXJ0aWVzTWFwKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgZ2V0OiAoKSA9PiBwdWJsaWNQcm9wZXJ0aWVzTWFwW2tleV0oaW5zdGFuY2UpLFxuICAgICAgLy8gaW50ZXJjZXB0ZWQgYnkgdGhlI
15HByb3h5IHNvIG5vIG5lZWQgZm9yIGltcGxlbWVudGF0aW9uLFxuICAgICAgLy8gYnV0IG5lZWRlZCB0byBwcmV2ZW50IHNldCBlcnJvcnNcbiAgICAgIHNldDogTk9PUFxuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIHRhcmdldDtcbn1cbmZ1bmN0aW9uIGV4cG9zZVByb3BzT25SZW5kZXJDb250ZXh0KGluc3RhbmNlKSB7XG4gIGNvbnN0IHtcbiAgICBjdHgsXG4gICAgcHJvcHNPcHRpb25zOiBbcHJvcHNPcHRpb25zXVxuICB9ID0gaW5zdGFuY2U7XG4gIGlmIChwcm9wc09wdGlvbnMpIHtcbiAgICBPYmplY3Qua2V5cyhwcm9wc09wdGlvbnMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGN0eCwga2V5LCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiAoKSA9PiBpbnN0YW5jZS5wcm9wc1trZXldLFxuICAgICAgICBzZXQ6IE5PT1BcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59XG5mdW5jdGlvbiBleHBvc2VTZXR1cFN0YXRlT25SZW5kZXJDb250ZXh0KGluc3RhbmNlKSB7XG4gIGNvbnN0IHsgY3R4LCBzZXR1cFN0YXRlIH0gPSBpbnN0YW5jZTtcbiAgT2JqZWN0LmtleXModG9SYXcoc2V0dXBTdGF0ZSkpLmZvckVhY2goKGtleSkgPT4ge1xuICAgIGlmICghc2V0dXBTdGF0ZS5fX2lzU2NyaXB0U2V0dXApIHtcbiAgICAgIGlmIChpc1Jlc2VydmVkUHJlZml4KGtleVswXSkpIHtcbiAgICAgICAgd2FybiQxKFxuICAgICAgICAgIGBzZXR1cCgpIHJldHVybiBwcm9wZXJ0eSAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAga2V5XG4gICAgICAgICAgKX0gc2hvdWxkIG5vdCBzdGFydCB3aXRoIFwiJFwiIG9yIFwiX1wiIHdoaWNoIGFyZSByZXNlcnZlZCBwcmVmaXhlcyBmb3IgVnVlIGludGVybmFscy5gXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjdHgsIGtleSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGdldDogKCkgPT4gc2V0dXBTdGF0ZVtrZXldLFxuICAgICAgICBzZXQ6IE5PT1BcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG59XG5cbmNvbnN0IHdhcm5SdW50aW1lVXNhZ2UgPSAobWV0aG9kKSA9PiB3YXJuJDEoXG4gIGAke21ldGhvZH0oKSBpcyBhIGNvbXBpbGVyLWhpbnQgaGVscGVyIHRoYXQgaXMgb25seSB1c2FibGUgaW5zaWRlIDxzY3JpcHQgc2V0dXA+IG9mIGEgc2luZ2xlIGZpbGUgY29tcG9uZW50LiBJdHMgYXJndW1lbnRzIHNob3VsZCBiZSBjb21waWxlZCBhd2F5IGFuZCBwYXNzaW5nIGl0IGF0IHJ1bnRpbWUgaGFzIG5vIGVmZmVjdC5gXG4pO1xuZnVuY3Rpb24gZGVmaW5lUHJvcHMoKSB7XG4gIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpKSB7XG4gICAgd2FyblJ1bnRpbWVVc2FnZShgZGVmaW5lUHJvcHNgKTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cbmZ1bmN0aW9uIGRlZmluZUVtaXRzKCkge1xuICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSkge1xuICAgIHdhcm5SdW50aW1lVXNhZ2UoYGRlZmluZUVtaXRzYCk7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5mdW5jdGlvbiBkZWZpbmVFeHBvc2UoZXhwb3NlZCkge1xuICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSkge1xuICAgIHdhcm5SdW50aW1lVXNhZ2UoYGRlZmluZUV4cG9zZWApO1xuICB9XG59XG5mdW5jdGlvbiBkZWZpbmVPcHRpb25zKG9wdGlvbnMpIHtcbiAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikpIHtcbiAgICB3YXJuUnVudGltZVVzYWdlKGBkZWZpbmVPcHRpb25zYCk7XG4gIH1cbn1cbmZ1bmN0aW9uIGRlZmluZVNsb3RzKCkge1xuICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSkge1xuICAgIHdhcm5SdW50aW1lVXNhZ2UoYGRlZmluZVNsb3RzYCk7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5mdW5jdGlvbiBkZWZpbmVNb2RlbCgpIHtcbiAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikpIHtcbiAgICB3YXJuUnVudGltZVVzYWdlKFwiZGVmaW5lTW9kZWxcIik7XG4gIH1cbn1cbmZ1bmN0aW9uIHdpdGhEZWZhdWx0cyhwcm9wcywgZGVmYXVsdHMpIHtcbiAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikpIHtcbiAgICB3YXJuUnVudGltZVVzYWdlKGB3aXRoRGVmYXVsdHNgKTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cbmZ1bmN0aW9uIHVzZVNsb3RzKCkge1xuICByZXR1cm4gZ2V0Q29udGV4dCgpLnNsb3RzO1xufVxuZnVuY3Rpb24gdXNlQXR0cnMoKSB7XG4gIHJldHVybiBnZXRDb250ZXh0KCkuYXR0cnM7XG59XG5mdW5jdGlvbiBnZXRDb250ZXh0KCkge1xuICBjb25zdCBpID0gZ2V0Q3VycmVudEluc3RhbmNlKCk7XG4gIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpICYmICFpKSB7XG4gICAgd2FybiQxKGB1c2VDb250ZXh0KCkgY2FsbGVkIHdpdGhvdXQgYWN0aXZlIGluc3RhbmNlLmApO1xuICB9XG4gIHJldHVybiBpLnNldHVwQ29udGV4dCB8fCAoaS5zZXR1cENvbnRleHQgPSBjcmVhdGVTZXR1cENvbnRleHQoaSkpO1xufVxuZnVuY3Rpb24gbm9ybWFsaXplUHJvcHNPckVtaXRzKHByb3BzKSB7XG4gIHJldHVybiBpc0FycmF5KHByb3BzKSA/IHByb3BzLnJlZHVjZShcbiAgICAobm9ybWFsaXplZCwgcCkgPT4gKG5vcm1hbGl6ZWRbcF0gPSBudWxsLCBub3JtYWxpemVkKSxcbiAgICB7fVxuICApIDogcHJvcHM7XG59XG5mdW5jdGlvbiBtZXJnZURlZmF1bHRzKHJhdywgZGVmYXVsdHMpIHtcbiAgY29uc3QgcHJvcHMgPSBub3JtYWxpemVQcm9wc09yRW1pdHMocmF3KTtcbiAgZm9yIChjb25zdCBrZXkgaW4gZGVmYXVsdHMpIHtcbiAgICBpZiAoa2V5LnN0YXJ0c1dpdGgoXCJfX3NraXBcIikpIGNvbnRpbnVlO1xuICAgIGxldCBvcHQgPSBwcm9wc1trZXldO1xuICAgIGlmIChvcHQpIHtcbiAgICAgIGlmIChpc0FycmF
155KG9wdCkgfHwgaXNGdW5jdGlvbihvcHQpKSB7XG4gICAgICAgIG9wdCA9IHByb3BzW2tleV0gPSB7IHR5cGU6IG9wdCwgZGVmYXVsdDogZGVmYXVsdHNba2V5XSB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3B0LmRlZmF1bHQgPSBkZWZhdWx0c1trZXldO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAob3B0ID09PSBudWxsKSB7XG4gICAgICBvcHQgPSBwcm9wc1trZXldID0geyBkZWZhdWx0OiBkZWZhdWx0c1trZXldIH07XG4gICAgfSBlbHNlIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpKSB7XG4gICAgICB3YXJuJDEoYHByb3BzIGRlZmF1bHQga2V5IFwiJHtrZXl9XCIgaGFzIG5vIGNvcnJlc3BvbmRpbmcgZGVjbGFyYXRpb24uYCk7XG4gICAgfVxuICAgIGlmIChvcHQgJiYgZGVmYXVsdHNbYF9fc2tpcF8ke2tleX1gXSkge1xuICAgICAgb3B0LnNraXBGYWN0b3J5ID0gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHByb3BzO1xufVxuZnVuY3Rpb24gbWVyZ2VNb2RlbHMoYSwgYikge1xuICBpZiAoIWEgfHwgIWIpIHJldHVybiBhIHx8IGI7XG4gIGlmIChpc0FycmF5KGEpICYmIGlzQXJyYXkoYikpIHJldHVybiBhLmNvbmNhdChiKTtcbiAgcmV0dXJuIGV4dGVuZCh7fSwgbm9ybWFsaXplUHJvcHNPckVtaXRzKGEpLCBub3JtYWxpemVQcm9wc09yRW1pdHMoYikpO1xufVxuZnVuY3Rpb24gY3JlYXRlUHJvcHNSZXN0UHJveHkocHJvcHMsIGV4Y2x1ZGVkS2V5cykge1xuICBjb25zdCByZXQgPSB7fTtcbiAgZm9yIChjb25zdCBrZXkgaW4gcHJvcHMpIHtcbiAgICBpZiAoIWV4Y2x1ZGVkS2V5cy5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocmV0LCBrZXksIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiAoKSA9PiBwcm9wc1trZXldXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cbmZ1bmN0aW9uIHdpdGhBc3luY0NvbnRleHQoZ2V0QXdhaXRhYmxlKSB7XG4gIGNvbnN0IGN0eCA9IGdldEN1cnJlbnRJbnN0YW5jZSgpO1xuICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSAmJiAhY3R4KSB7XG4gICAgd2FybiQxKFxuICAgICAgYHdpdGhBc3luY0NvbnRleHQgY2FsbGVkIHdpdGhvdXQgYWN0aXZlIGN1cnJlbnQgaW5zdGFuY2UuIFRoaXMgaXMgbGlrZWx5IGEgYnVnLmBcbiAgICApO1xuICB9XG4gIGxldCBhd2FpdGFibGUgPSBnZXRBd2FpdGFibGUoKTtcbiAgdW5zZXRDdXJyZW50SW5zdGFuY2UoKTtcbiAgaWYgKGlzUHJvbWlzZShhd2FpdGFibGUpKSB7XG4gICAgYXdhaXRhYmxlID0gYXdhaXRhYmxlLmNhdGNoKChlKSA9PiB7XG4gICAgICBzZXRDdXJyZW50SW5zdGFuY2UoY3R4KTtcbiAgICAgIHRocm93IGU7XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIFthd2FpdGFibGUsICgpID0+IHNldEN1cnJlbnRJbnN0YW5jZShjdHgpXTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlRHVwbGljYXRlQ2hlY2tlcigpIHtcbiAgY29uc3QgY2FjaGUgPSAvKiBAX19QVVJFX18gKi8gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgcmV0dXJuICh0eXBlLCBrZXkpID0+IHtcbiAgICBpZiAoY2FjaGVba2V5XSkge1xuICAgICAgd2FybiQxKGAke3R5cGV9IHByb3BlcnR5IFwiJHtrZXl9XCIgaXMgYWxyZWFkeSBkZWZpbmVkIGluICR7Y2FjaGVba2V5XX0uYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhY2hlW2tleV0gPSB0eXBlO1xuICAgIH1cbiAgfTtcbn1cbmxldCBzaG91bGRDYWNoZUFjY2VzcyA9IHRydWU7XG5mdW5jdGlvbiBhcHBseU9wdGlvbnMoaW5zdGFuY2UpIHtcbiAgY29uc3Qgb3B0aW9ucyA9IHJlc29sdmVNZXJnZWRPcHRpb25zKGluc3RhbmNlKTtcbiAgY29uc3QgcHVibGljVGhpcyA9IGluc3RhbmNlLnByb3h5O1xuICBjb25zdCBjdHggPSBpbnN0YW5jZS5jdHg7XG4gIHNob3VsZENhY2hlQWNjZXNzID0gZmFsc2U7XG4gIGlmIChvcHRpb25zLmJlZm9yZUNyZWF0ZSkge1xuICAgIGNhbGxIb29rKG9wdGlvbnMuYmVmb3JlQ3JlYXRlLCBpbnN0YW5jZSwgXCJiY1wiKTtcbiAgfVxuICBjb25zdCB7XG4gICAgLy8gc3RhdGVcbiAgICBkYXRhOiBkYXRhT3B0aW9ucyxcbiAgICBjb21wdXRlZDogY29tcHV0ZWRPcHRpb25zLFxuICAgIG1ldGhvZHMsXG4gICAgd2F0Y2g6IHdhdGNoT3B0aW9ucyxcbiAgICBwcm92aWRlOiBwcm92aWRlT3B0aW9ucyxcbiAgICBpbmplY3Q6IGluamVjdE9wdGlvbnMsXG4gICAgLy8gbGlmZWN5Y2xlXG4gICAgY3JlYXRlZCxcbiAgICBiZWZvcmVNb3VudCxcbiAgICBtb3VudGVkLFxuICAgIGJlZm9yZVVwZGF0ZSxcbiAgICB1cGRhdGVkLFxuICAgIGFjdGl2YXRlZCxcbiAgICBkZWFjdGl2YXRlZCxcbiAgICBiZWZvcmVEZXN0cm95LFxuICAgIGJlZm9yZVVubW91bnQsXG4gICAgZGVzdHJveWVkLFxuICAgIHVubW91bnRlZCxcbiAgICByZW5kZXIsXG4gICAgcmVuZGVyVHJhY2tlZCxcbiAgICByZW5kZXJUcmlnZ2VyZWQsXG4gICAgZXJyb3JDYXB0dXJlZCxcbiAgICBzZXJ2ZXJQcmVmZXRjaCxcbiAgICAvLyBwdWJsaWMgQVBJXG4gICAgZXhwb3NlLFxuICAgIGluaGVyaXRBdHRycyxcbiAgICAvLyBhc3NldHNcbiAgICBjb21wb25lbnRzLFxuICAgIGRpcmVjdGl2ZXMsXG4gICAgZmlsdGVyc1xuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgY2hlY2tEdXBsaWNhdGVQcm9wZXJ0aWVzID0gISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSA/IGNyZWF0ZUR1cGxpY2F0ZUNoZWNrZXIoKSA6IG51bGw7XG4gIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpKSB7XG4gICAgY29uc3QgW3Byb3BzT3B0aW9uc10gPSBpbnN0YW5jZS5wcm9wc09wdGlvbnM7XG4gICAgaWYgKHByb3BzT3B0aW9ucykge1xuICAgICAgZm9yIChjb25zdCBrZXkgaW4gcHJvcHNPcHRpb25zKSB7XG4gICAgICAgIGNoZWNrRHVwbGljYXRlUHJvcGVydGllcyhcIlByb3BzXCIgLyogUFJPUFMgKi8sIGtleSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmIChpbmplY3RPcHRpb25zKSB7XG4gICAgcmVzb2x2ZUluamVjdGlvbnMoaW5qZWN0T3B0aW9ucywgY3R4LCBjaGVja0R1cGxpY2F0ZVByb3BlcnRpZXMpO1xuICB9XG4gIGlmIChtZXRob2RzKSB7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gbWV0aG9kcykge1xuICAgICAgY29uc3QgbWV0aG9kSGFuZGxlciA9IG1ldGhvZHNba2V5XTtcbiAgICAgIGlmIChpc0Z1bmN0aW9uKG1ldGhvZEhhbmRsZXIpKSB7XG4gICAgICAgIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9k
15dWN0aW9uXCIpKSB7XG4gICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGN0eCwga2V5LCB7XG4gICAgICAgICAgICB2YWx1ZTogbWV0aG9kSGFuZGxlci5iaW5kKHB1YmxpY1RoaXMpLFxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY3R4W2tleV0gPSBtZXRob2RIYW5kbGVyLmJpbmQocHVibGljVGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikpIHtcbiAgICAgICAgICBjaGVja0R1cGxpY2F0ZVByb3BlcnRpZXMoXCJNZXRob2RzXCIgLyogTUVUSE9EUyAqLywga2V5KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpKSB7XG4gICAgICAgIHdhcm4kMShcbiAgICAgICAgICBgTWV0aG9kIFwiJHtrZXl9XCIgaGFzIHR5cGUgXCIke3R5cGVvZiBtZXRob2RIYW5kbGVyfVwiIGluIHRoZSBjb21wb25lbnQgZGVmaW5pdGlvbi4gRGlkIHlvdSByZWZlcmVuY2UgdGhlIGZ1bmN0aW9uIGNvcnJlY3RseT9gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmIChkYXRhT3B0aW9ucykge1xuICAgIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpICYmICFpc0Z1bmN0aW9uKGRhdGFPcHRpb25zKSkge1xuICAgICAgd2FybiQxKFxuICAgICAgICBgVGhlIGRhdGEgb3B0aW9uIG11c3QgYmUgYSBmdW5jdGlvbi4gUGxhaW4gb2JqZWN0IHVzYWdlIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuYFxuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgZGF0YSA9IGRhdGFPcHRpb25zLmNhbGwocHVibGljVGhpcywgcHVibGljVGhpcyk7XG4gICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgJiYgaXNQcm9taXNlKGRhdGEpKSB7XG4gICAgICB3YXJuJDEoXG4gICAgICAgIGBkYXRhKCkgcmV0dXJuZWQgYSBQcm9taXNlIC0gbm90ZSBkYXRhKCkgY2Fubm90IGJlIGFzeW5jOyBJZiB5b3UgaW50ZW5kIHRvIHBlcmZvcm0gZGF0YSBmZXRjaGluZyBiZWZvcmUgY29tcG9uZW50IHJlbmRlcnMsIHVzZSBhc3luYyBzZXR1cCgpICsgPFN1c3BlbnNlPi5gXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoIWlzT2JqZWN0KGRhdGEpKSB7XG4gICAgICAhIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpICYmIHdhcm4kMShgZGF0YSgpIHNob3VsZCByZXR1cm4gYW4gb2JqZWN0LmApO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbnN0YW5jZS5kYXRhID0gcmVhY3RpdmUoZGF0YSk7XG4gICAgICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSkge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBkYXRhKSB7XG4gICAgICAgICAgY2hlY2tEdXBsaWNhdGVQcm9wZXJ0aWVzKFwiRGF0YVwiIC8qIERBVEEgKi8sIGtleSk7XG4gICAgICAgICAgaWYgKCFpc1Jlc2VydmVkUHJlZml4KGtleVswXSkpIHtcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjdHgsIGtleSwge1xuICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgICAgIGdldDogKCkgPT4gZGF0YVtrZXldLFxuICAgICAgICAgICAgICBzZXQ6IE5PT1BcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBzaG91bGRDYWNoZUFjY2VzcyA9IHRydWU7XG4gIGlmIChjb21wdXRlZE9wdGlvbnMpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBjb21wdXRlZE9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IG9wdCA9IGNvbXB1dGVkT3B0aW9uc1trZXldO1xuICAgICAgY29uc3QgZ2V0ID0gaXNGdW5jdGlvbihvcHQpID8gb3B0LmJpbmQocHVibGljVGhpcywgcHVibGljVGhpcykgOiBpc0Z1bmN0aW9uKG9wdC5nZXQpID8gb3B0LmdldC5iaW5kKHB1YmxpY1RoaXMsIHB1YmxpY1RoaXMpIDogTk9PUDtcbiAgICAgIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpICYmIGdldCA9PT0gTk9PUCkge1xuICAgICAgICB3YXJuJDEoYENvbXB1dGVkIHByb3BlcnR5IFwiJHtrZXl9XCIgaGFzIG5vIGdldHRlci5gKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNldCA9ICFpc0Z1bmN0aW9uKG9wdCkgJiYgaXNGdW5jdGlvbihvcHQuc2V0KSA/IG9wdC5zZXQuYmluZChwdWJsaWNUaGlzKSA6ICEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgPyAoKSA9PiB7XG4gICAgICAgIHdhcm4kMShcbiAgICAgICAgICBgV3JpdGUgb3BlcmF0aW9uIGZhaWxlZDogY29tcHV0ZWQgcHJvcGVydHkgXCIke2tleX1cIiBpcyByZWFkb25seS5gXG4gICAgICAgICk7XG4gICAgICB9IDogTk9PUDtcbiAgICAgIGNvbnN0IGMgPSBjb21wdXRlZCh7XG4gICAgICAgIGdldCxcbiAgICAgICAgc2V0XG4gICAgICB9KTtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjdHgsIGtleSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGdldDogKCkgPT4gYy52YWx1ZSxcbiAgICAgICAgc2V0OiAodikgPT4gYy52YWx1ZSA9IHZcbiAgICAgIH0pO1xuICAgICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikpIHtcbiAgICAgICAgY2hlY2tEdXBsaWNhdGVQcm9wZXJ0aWVzKFwiQ29tcHV0ZWRcIiAvKiBDT01QVVRFRCAqLywga2V5KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKHdhdGNoT3B0aW9ucykge1xuICAgIGZvciAoY29uc3Qga2V5IGluIHdhdGNoT3B0aW9ucykge1xuICAgICAgY3JlYXRlV2F0Y2hlcih3YXRjaE9wdGlvbnNba2V5XSwgY3R4LCBwdWJsaWNUaGlzLCBrZXkpO1xuICAgIH1cbiAgfVxuICBpZiAocHJvdmlkZU9wdGlvbnMpIHtcbiAgICBjb25zdCBwcm92aWRlcyA9IGlzRnVuY3Rpb24ocHJvdmlkZU9wdGlvbnMpID8gcHJvdmlkZU9wdGlvbnMuY2FsbChwdWJsaWNUaGlzKSA6IHByb3ZpZGVPcHRpb25zO1xuICAgIFJlZmxlY3Qub3duS2V5cyhwcm92aWRlcykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBwcm92aWRlKGtleSwgcHJvdmlkZXNba2V5XSk7XG4gICAgfSk7XG4gIH1cbiAgaWYgKGNyZWF0ZWQpIHtcbiAgICBjYWxsSG9vayhjcmVhdGVkLCBpbnN0YW5jZSwgXCJjXCIpO1xuICB9XG4gIGZ1bmN0aW9uIHJlZ2lzdGVyTGlmZWN5Y2xlSG9vayhyZWdpc3RlciwgaG9vaykge1xuICAgIGlmIChpc0FycmF
155KGhvb2spKSB7XG4gICAgICBob29rLmZvckVhY2goKF9ob29rKSA9PiByZWdpc3RlcihfaG9vay5iaW5kKHB1YmxpY1RoaXMpKSk7XG4gICAgfSBlbHNlIGlmIChob29rKSB7XG4gICAgICByZWdpc3Rlcihob29rLmJpbmQocHVibGljVGhpcykpO1xuICAgIH1cbiAgfVxuICByZWdpc3RlckxpZmVjeWNsZUhvb2sob25CZWZvcmVNb3VudCwgYmVmb3JlTW91bnQpO1xuICByZWdpc3RlckxpZmVjeWNsZUhvb2sob25Nb3VudGVkLCBtb3VudGVkKTtcbiAgcmVnaXN0ZXJMaWZlY3ljbGVIb29rKG9uQmVmb3JlVXBkYXRlLCBiZWZvcmVVcGRhdGUpO1xuICByZWdpc3RlckxpZmVjeWNsZUhvb2sob25VcGRhdGVkLCB1cGRhdGVkKTtcbiAgcmVnaXN0ZXJMaWZlY3ljbGVIb29rKG9uQWN0aXZhdGVkLCBhY3RpdmF0ZWQpO1xuICByZWdpc3RlckxpZmVjeWNsZUhvb2sob25EZWFjdGl2YXRlZCwgZGVhY3RpdmF0ZWQpO1xuICByZWdpc3RlckxpZmVjeWNsZUhvb2sob25FcnJvckNhcHR1cmVkLCBlcnJvckNhcHR1cmVkKTtcbiAgcmVnaXN0ZXJMaWZlY3ljbGVIb29rKG9uUmVuZGVyVHJhY2tlZCwgcmVuZGVyVHJhY2tlZCk7XG4gIHJlZ2lzdGVyTGlmZWN5Y2xlSG9vayhvblJlbmRlclRyaWdnZXJlZCwgcmVuZGVyVHJpZ2dlcmVkKTtcbiAgcmVnaXN0ZXJMaWZlY3ljbGVIb29rKG9uQmVmb3JlVW5tb3VudCwgYmVmb3JlVW5tb3VudCk7XG4gIHJlZ2lzdGVyTGlmZWN5Y2xlSG9vayhvblVubW91bnRlZCwgdW5tb3VudGVkKTtcbiAgcmVnaXN0ZXJMaWZlY3ljbGVIb29rKG9uU2VydmVyUHJlZmV0Y2gsIHNlcnZlclByZWZldGNoKTtcbiAgaWYgKGlzQXJyYXkoZXhwb3NlKSkge1xuICAgIGlmIChleHBvc2UubGVuZ3RoKSB7XG4gICAgICBjb25zdCBleHBvc2VkID0gaW5zdGFuY2UuZXhwb3NlZCB8fCAoaW5zdGFuY2UuZXhwb3NlZCA9IHt9KTtcbiAgICAgIGV4cG9zZS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9zZWQsIGtleSwge1xuICAgICAgICAgIGdldDogKCkgPT4gcHVibGljVGhpc1trZXldLFxuICAgICAgICAgIHNldDogKHZhbCkgPT4gcHVibGljVGhpc1trZXldID0gdmFsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICghaW5zdGFuY2UuZXhwb3NlZCkge1xuICAgICAgaW5zdGFuY2UuZXhwb3NlZCA9IHt9O1xuICAgIH1cbiAgfVxuICBpZiAocmVuZGVyICYmIGluc3RhbmNlLnJlbmRlciA9PT0gTk9PUCkge1xuICAgIGluc3RhbmNlLnJlbmRlciA9IHJlbmRlcjtcbiAgfVxuICBpZiAoaW5oZXJpdEF0dHJzICE9IG51bGwpIHtcbiAgICBpbnN0YW5jZS5pbmhlcml0QXR0cnMgPSBpbmhlcml0QXR0cnM7XG4gIH1cbiAgaWYgKGNvbXBvbmVudHMpIGluc3RhbmNlLmNvbXBvbmVudHMgPSBjb21wb25lbnRzO1xuICBpZiAoZGlyZWN0aXZlcykgaW5zdGFuY2UuZGlyZWN0aXZlcyA9IGRpcmVjdGl2ZXM7XG59XG5mdW5jdGlvbiByZXNvbHZlSW5qZWN0aW9ucyhpbmplY3RPcHRpb25zLCBjdHgsIGNoZWNrRHVwbGljYXRlUHJvcGVydGllcyA9IE5PT1ApIHtcbiAgaWYgKGlzQXJyYXkoaW5qZWN0T3B0aW9ucykpIHtcbiAgICBpbmplY3RPcHRpb25zID0gbm9ybWFsaXplSW5qZWN0KGluamVjdE9wdGlvbnMpO1xuICB9XG4gIGZvciAoY29uc3Qga2V5IGluIGluamVjdE9wdGlvbnMpIHtcbiAgICBjb25zdCBvcHQgPSBpbmplY3RPcHRpb25zW2tleV07XG4gICAgbGV0IGluamVjdGVkO1xuICAgIGlmIChpc09iamVjdChvcHQpKSB7XG4gICAgICBpZiAoXCJkZWZhdWx0XCIgaW4gb3B0KSB7XG4gICAgICAgIGluamVjdGVkID0gaW5qZWN0KFxuICAgICAgICAgIG9wdC5mcm9tIHx8IGtleSxcbiAgICAgICAgICBvcHQuZGVmYXVsdCxcbiAgICAgICAgICB0cnVlXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbmplY3RlZCA9IGluamVjdChvcHQuZnJvbSB8fCBrZXkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpbmplY3RlZCA9IGluamVjdChvcHQpO1xuICAgIH1cbiAgICBpZiAoaXNSZWYoaW5qZWN0ZWQpKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3R4LCBrZXksIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6ICgpID0+IGluamVjdGVkLnZhbHVlLFxuICAgICAgICBzZXQ6ICh2KSA9PiBpbmplY3RlZC52YWx1ZSA9IHZcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjdHhba2V5XSA9IGluamVjdGVkO1xuICAgIH1cbiAgICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSkge1xuICAgICAgY2hlY2tEdXBsaWNhdGVQcm9wZXJ0aWVzKFwiSW5qZWN0XCIgLyogSU5KRUNUICovLCBrZXkpO1xuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gY2FsbEhvb2soaG9vaywgaW5zdGFuY2UsIHR5cGUpIHtcbiAgY2FsbFdpdGhBc3luY0Vycm9ySGFuZGxpbmcoXG4gICAgaXNBcnJheShob29rKSA/IGhvb2subWFwKChoKSA9PiBoLmJpbmQoaW5zdGFuY2UucHJveHkpKSA6IGhvb2suYmluZChpbnN0YW5jZS5wcm94eSksXG4gICAgaW5zdGFuY2UsXG4gICAgdHlwZVxuICApO1xufVxuZnVuY3Rpb24gY3JlYXRlV2F0Y2hlcihyYXcsIGN0eCwgcHVibGljVGhpcywga2V5KSB7XG4gIGNvbnN0IGdldHRlciA9IGtleS5pbmNsdWRlcyhcIi5cIikgPyBjcmVhdGVQYXRoR2V0dGVyKHB1YmxpY1RoaXMsIGtleSkgOiAoKSA9PiBwdWJsaWNUaGlzW2tleV07XG4gIGlmIChpc1N0cmluZyhyYXcpKSB7XG4gICAgY29uc3QgaGFuZGxlciA9IGN0eFtyYXddO1xuICAgIGlmIChpc0Z1bmN0aW9uKGhhbmRsZXIpKSB7XG4gICAgICB3YXRjaChnZXR0ZXIsIGhhbmRsZXIpO1xuICAgIH0gZWxzZSBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSkge1xuICAgICAgd2FybiQxKGBJbnZhbGlkIHdhdGNoIGhhbmRsZXIgc3BlY2lmaWVkIGJ5IGtleSBcIiR7cmF3fVwiYCwgaGFuZGxlcik7XG4gICAgfVxuICB9IGVsc2UgaWYgKGlzRnVuY3Rpb24ocmF3KSkge1xuICAgIHdhdGNoKGdldHRlciwgcmF3LmJpbmQocHVibGljVGhpcykpO1xuICB9IGVsc2UgaWYgKGlzT2JqZWN0KHJhdykpIHtcbiAgICBpZiAoaXNBcnJheShyYXcpKSB7XG4gICAgICByYXcuZm9yRWFjaCgocikgPT4gY3JlYXRlV2F0Y2hlcihyLCBjdHgsIHB1YmxpY1RoaXMsIGtleSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBoYW5kbGVyID0gaXNGdW5jdGlvbihyYXcuaGFuZGxlcikgPyByYXcuaGFuZGxlci5iaW5kKHB1YmxpY1RoaXMpIDogY3R4W3Jhdy5oYW5kbGVyXTtcbiAgICAgIGlmIChpc0Z1bmN0aW9uKGhhbmRsZXIpKSB7XG4gICAgICAgI
15HdhdGNoKGdldHRlciwgaGFuZGxlciwgcmF3KTtcbiAgICAgIH0gZWxzZSBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSkge1xuICAgICAgICB3YXJuJDEoYEludmFsaWQgd2F0Y2ggaGFuZGxlciBzcGVjaWZpZWQgYnkga2V5IFwiJHtyYXcuaGFuZGxlcn1cImAsIGhhbmRsZXIpO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpKSB7XG4gICAgd2FybiQxKGBJbnZhbGlkIHdhdGNoIG9wdGlvbjogXCIke2tleX1cImAsIHJhdyk7XG4gIH1cbn1cbmZ1bmN0aW9uIHJlc29sdmVNZXJnZWRPcHRpb25zKGluc3RhbmNlKSB7XG4gIGNvbnN0IGJhc2UgPSBpbnN0YW5jZS50eXBlO1xuICBjb25zdCB7IG1peGlucywgZXh0ZW5kczogZXh0ZW5kc09wdGlvbnMgfSA9IGJhc2U7XG4gIGNvbnN0IHtcbiAgICBtaXhpbnM6IGdsb2JhbE1peGlucyxcbiAgICBvcHRpb25zQ2FjaGU6IGNhY2hlLFxuICAgIGNvbmZpZzogeyBvcHRpb25NZXJnZVN0cmF0ZWdpZXMgfVxuICB9ID0gaW5zdGFuY2UuYXBwQ29udGV4dDtcbiAgY29uc3QgY2FjaGVkID0gY2FjaGUuZ2V0KGJhc2UpO1xuICBsZXQgcmVzb2x2ZWQ7XG4gIGlmIChjYWNoZWQpIHtcbiAgICByZXNvbHZlZCA9IGNhY2hlZDtcbiAgfSBlbHNlIGlmICghZ2xvYmFsTWl4aW5zLmxlbmd0aCAmJiAhbWl4aW5zICYmICFleHRlbmRzT3B0aW9ucykge1xuICAgIHtcbiAgICAgIHJlc29sdmVkID0gYmFzZTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcmVzb2x2ZWQgPSB7fTtcbiAgICBpZiAoZ2xvYmFsTWl4aW5zLmxlbmd0aCkge1xuICAgICAgZ2xvYmFsTWl4aW5zLmZvckVhY2goXG4gICAgICAgIChtKSA9PiBtZXJnZU9wdGlvbnMocmVzb2x2ZWQsIG0sIG9wdGlvbk1lcmdlU3RyYXRlZ2llcywgdHJ1ZSlcbiAgICAgICk7XG4gICAgfVxuICAgIG1lcmdlT3B0aW9ucyhyZXNvbHZlZCwgYmFzZSwgb3B0aW9uTWVyZ2VTdHJhdGVnaWVzKTtcbiAgfVxuICBpZiAoaXNPYmplY3QoYmFzZSkpIHtcbiAgICBjYWNoZS5zZXQoYmFzZSwgcmVzb2x2ZWQpO1xuICB9XG4gIHJldHVybiByZXNvbHZlZDtcbn1cbmZ1bmN0aW9uIG1lcmdlT3B0aW9ucyh0bywgZnJvbSwgc3RyYXRzLCBhc01peGluID0gZmFsc2UpIHtcbiAgY29uc3QgeyBtaXhpbnMsIGV4dGVuZHM6IGV4dGVuZHNPcHRpb25zIH0gPSBmcm9tO1xuICBpZiAoZXh0ZW5kc09wdGlvbnMpIHtcbiAgICBtZXJnZU9wdGlvbnModG8sIGV4dGVuZHNPcHRpb25zLCBzdHJhdHMsIHRydWUpO1xuICB9XG4gIGlmIChtaXhpbnMpIHtcbiAgICBtaXhpbnMuZm9yRWFjaChcbiAgICAgIChtKSA9PiBtZXJnZU9wdGlvbnModG8sIG0sIHN0cmF0cywgdHJ1ZSlcbiAgICApO1xuICB9XG4gIGZvciAoY29uc3Qga2V5IGluIGZyb20pIHtcbiAgICBpZiAoYXNNaXhpbiAmJiBrZXkgPT09IFwiZXhwb3NlXCIpIHtcbiAgICAgICEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgJiYgd2FybiQxKFxuICAgICAgICBgXCJleHBvc2VcIiBvcHRpb24gaXMgaWdub3JlZCB3aGVuIGRlY2xhcmVkIGluIG1peGlucyBvciBleHRlbmRzLiBJdCBzaG91bGQgb25seSBiZSBkZWNsYXJlZCBpbiB0aGUgYmFzZSBjb21wb25lbnQgaXRzZWxmLmBcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHN0cmF0ID0gaW50ZXJuYWxPcHRpb25NZXJnZVN0cmF0c1trZXldIHx8IHN0cmF0cyAmJiBzdHJhdHNba2V5XTtcbiAgICAgIHRvW2tleV0gPSBzdHJhdCA/IHN0cmF0KHRvW2tleV0sIGZyb21ba2V5XSkgOiBmcm9tW2tleV07XG4gICAgfVxuICB9XG4gIHJldHVybiB0bztcbn1cbmNvbnN0IGludGVybmFsT3B0aW9uTWVyZ2VTdHJhdHMgPSB7XG4gIGRhdGE6IG1lcmdlRGF0YUZuLFxuICBwcm9wczogbWVyZ2VFbWl0c09yUHJvcHNPcHRpb25zLFxuICBlbWl0czogbWVyZ2VFbWl0c09yUHJvcHNPcHRpb25zLFxuICAvLyBvYmplY3RzXG4gIG1ldGhvZHM6IG1lcmdlT2JqZWN0T3B0aW9ucyxcbiAgY29tcHV0ZWQ6IG1lcmdlT2JqZWN0T3B0aW9ucyxcbiAgLy8gbGlmZWN5Y2xlXG4gIGJlZm9yZUNyZWF0ZTogbWVyZ2VBc0FycmF5LFxuICBjcmVhdGVkOiBtZXJnZUFzQXJyYXksXG4gIGJlZm9yZU1vdW50OiBtZXJnZUFzQXJyYXksXG4gIG1vdW50ZWQ6IG1lcmdlQXNBcnJheSxcbiAgYmVmb3JlVXBkYXRlOiBtZXJnZUFzQXJyYXksXG4gIHVwZGF0ZWQ6IG1lcmdlQXNBcnJheSxcbiAgYmVmb3JlRGVzdHJveTogbWVyZ2VBc0FycmF5LFxuICBiZWZvcmVVbm1vdW50OiBtZXJnZUFzQXJyYXksXG4gIGRlc3Ryb3llZDogbWVyZ2VBc0FycmF5LFxuICB1bm1vdW50ZWQ6IG1lcmdlQXNBcnJheSxcbiAgYWN0aXZhdGVkOiBtZXJnZUFzQXJyYXksXG4gIGRlYWN0aXZhdGVkOiBtZXJnZUFzQXJyYXksXG4gIGVycm9yQ2FwdHVyZWQ6IG1lcmdlQXNBcnJheSxcbiAgc2VydmVyUHJlZmV0Y2g6IG1lcmdlQXNBcnJheSxcbiAgLy8gYXNzZXRzXG4gIGNvbXBvbmVudHM6IG1lcmdlT2JqZWN0T3B0aW9ucyxcbiAgZGlyZWN0aXZlczogbWVyZ2VPYmplY3RPcHRpb25zLFxuICAvLyB3YXRjaFxuICB3YXRjaDogbWVyZ2VXYXRjaE9wdGlvbnMsXG4gIC8vIHByb3ZpZGUgLyBpbmplY3RcbiAgcHJvdmlkZTogbWVyZ2VEYXRhRm4sXG4gIGluamVjdDogbWVyZ2VJbmplY3Rcbn07XG5mdW5jdGlvbiBtZXJnZURhdGFGbih0bywgZnJvbSkge1xuICBpZiAoIWZyb20pIHtcbiAgICByZXR1cm4gdG87XG4gIH1cbiAgaWYgKCF0bykge1xuICAgIHJldHVybiBmcm9tO1xuICB9XG4gIHJldHVybiBmdW5jdGlvbiBtZXJnZWREYXRhRm4oKSB7XG4gICAgcmV0dXJuIChleHRlbmQpKFxuICAgICAgaXNGdW5jdGlvbih0bykgPyB0by5jYWxsKHRoaXMsIHR
15oaXMpIDogdG8sXG4gICAgICBpc0Z1bmN0aW9uKGZyb20pID8gZnJvbS5jYWxsKHRoaXMsIHRoaXMpIDogZnJvbVxuICAgICk7XG4gIH07XG59XG5mdW5jdGlvbiBtZXJnZUluamVjdCh0bywgZnJvbSkge1xuICByZXR1cm4gbWVyZ2VPYmplY3RPcHRpb25zKG5vcm1hbGl6ZUluamVjdCh0byksIG5vcm1hbGl6ZUluamVjdChmcm9tKSk7XG59XG5mdW5jdGlvbiBub3JtYWxpemVJbmplY3QocmF3KSB7XG4gIGlmIChpc0FycmF5KHJhdykpIHtcbiAgICBjb25zdCByZXMgPSB7fTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJhdy5sZW5ndGg7IGkrKykge1xuICAgICAgcmVzW3Jhd1tpXV0gPSByYXdbaV07XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH1cbiAgcmV0dXJuIHJhdztcbn1cbmZ1bmN0aW9uIG1lcmdlQXNBcnJheSh0bywgZnJvbSkge1xuICByZXR1cm4gdG8gPyBbLi4ubmV3IFNldChbXS5jb25jYXQodG8sIGZyb20pKV0gOiBmcm9tO1xufVxuZnVuY3Rpb24gbWVyZ2VPYmplY3RPcHRpb25zKHRvLCBmcm9tKSB7XG4gIHJldHVybiB0byA/IGV4dGVuZCgvKiBAX19QVVJFX18gKi8gT2JqZWN0LmNyZWF0ZShudWxsKSwgdG8sIGZyb20pIDogZnJvbTtcbn1cbmZ1bmN0aW9uIG1lcmdlRW1pdHNPclByb3BzT3B0aW9ucyh0bywgZnJvbSkge1xuICBpZiAodG8pIHtcbiAgICBpZiAoaXNBcnJheSh0bykgJiYgaXNBcnJheShmcm9tKSkge1xuICAgICAgcmV0dXJuIFsuLi4vKiBAX19QVVJFX18gKi8gbmV3IFNldChbLi4udG8sIC4uLmZyb21dKV07XG4gICAgfVxuICAgIHJldHVybiBleHRlbmQoXG4gICAgICAvKiBAX19QVVJFX18gKi8gT2JqZWN0LmNyZWF0ZShudWxsKSxcbiAgICAgIG5vcm1hbGl6ZVByb3BzT3JFbWl0cyh0byksXG4gICAgICBub3JtYWxpemVQcm9wc09yRW1pdHMoZnJvbSAhPSBudWxsID8gZnJvbSA6IHt9KVxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGZyb207XG4gIH1cbn1cbmZ1bmN0aW9uIG1lcmdlV2F0Y2hPcHRpb25zKHRvLCBmcm9tKSB7XG4gIGlmICghdG8pIHJldHVybiBmcm9tO1xuICBpZiAoIWZyb20pIHJldHVybiB0bztcbiAgY29uc3QgbWVyZ2VkID0gZXh0ZW5kKC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuY3JlYXRlKG51bGwpLCB0byk7XG4gIGZvciAoY29uc3Qga2V5IGluIGZyb20pIHtcbiAgICBtZXJnZWRba2V5XSA9IG1lcmdlQXNBcnJheSh0b1trZXldLCBmcm9tW2tleV0pO1xuICB9XG4gIHJldHVybiBtZXJnZWQ7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUFwcENvbnRleHQoKSB7XG4gIHJldHVybiB7XG4gICAgYXBwOiBudWxsLFxuICAgIGNvbmZpZzoge1xuICAgICAgaXNOYXRpdmVUYWc6IE5PLFxuICAgICAgcGVyZm9ybWFuY2U6IGZhbHNlLFxuICAgICAgZ2xvYmFsUHJvcGVydGllczoge30sXG4gICAgICBvcHRpb25NZXJnZVN0cmF0ZWdpZXM6IHt9LFxuICAgICAgZXJyb3JIYW5kbGVyOiB2b2lkIDAsXG4gICAgICB3YXJuSGFuZGxlcjogdm9pZCAwLFxuICAgICAgY29tcGlsZXJPcHRpb25zOiB7fVxuICAgIH0sXG4gICAgbWl4aW5zOiBbXSxcbiAgICBjb21wb25lbnRzOiB7fSxcbiAgICBkaXJlY3RpdmVzOiB7fSxcbiAgICBwcm92aWRlczogLyogQF9fUFVSRV9fICovIE9iamVjdC5jcmVhdGUobnVsbCksXG4gICAgb3B0aW9uc0NhY2hlOiAvKiBAX19QVVJFX18gKi8gbmV3IFdlYWtNYXAoKSxcbiAgICBwcm9wc0NhY2hlOiAvKiBAX19QVVJFX18gKi8gbmV3IFdlYWtNYXAoKSxcbiAgICBlbWl0c0NhY2hlOiAvKiBAX19QVVJFX18gKi8gbmV3IFdlYWtNYXAoKVxuICB9O1xufVxubGV0IHVpZCQxID0gMDtcbmZ1bmN0aW9uIGNyZWF0ZUFwcEFQSShyZW5kZXIsIGh5ZHJhdGUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGNyZWF0ZUFwcChyb290Q29tcG9uZW50LCByb290UHJvcHMgPSBudWxsKSB7XG4gICAgaWYgKCFpc0Z1bmN0aW9uKHJvb3RDb21wb25lbnQpKSB7XG4gICAgICByb290Q29tcG9uZW50ID0gZXh0ZW5kKHt9LCByb290Q29tcG9uZW50KTtcbiAgICB9XG4gICAgaWYgKHJvb3RQcm9wcyAhPSBudWxsICYmICFpc09iamVjdChyb290UHJvcHMpKSB7XG4gICAgICAhIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpICYmIHdhcm4kMShgcm9vdCBwcm9wcyBwYXNzZWQgdG8gYXBwLm1vdW50KCkgbXVzdCBiZSBhbiBvYmplY3QuYCk7XG4gICAgICByb290UHJvcHMgPSBudWxsO1xuICAgIH1cbiAgICBjb25zdCBjb250ZXh0ID0gY3JlYXRlQXBwQ29udGV4dCgpO1xuICAgIGNvbnN0IGluc3RhbGxlZFBsdWdpbnMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFdlYWtTZXQoKTtcbiAgICBsZXQgaXNNb3VudGVkID0gZmFsc2U7XG4gICAgY29uc3QgYXBwID0gY29udGV4dC5hcHAgPSB7XG4gICAgICBfdWlkOiB1aWQkMSsrLFxuICAgICAgX2NvbXBvbmVudDogcm9vdENvbXBvbmVudCxcbiAgICAgIF9wcm9wczogcm9vdFByb3BzLFxuICAgICAgX2NvbnRhaW5lcjogbnVsbCxcbiAgICAgIF9jb250ZXh0OiBjb250ZXh0LFxuICAgICAgX2luc3RhbmNlOiBudWxsLFxuICAgICAgdmVyc2lvbixcbiAgICAgIGdldCBjb25maWcoKSB7XG4gICAgICAgIHJldHVybiBjb250ZXh0LmNvbmZpZztcbiAgICAgIH0sXG4gICAgICBzZXQgY29uZmlnKHYpIHtcbiAgICAgICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikpIHtcbiAgICAgICAgICB3YXJuJDEoXG4gICAgICAgICAgICBgYXBwLmNvbmZpZyBjYW5ub3QgYmUgcmVwbGFjZWQuIE1vZGlmeSBpbmRpdmlkdWFsIG9wdGlvbnMgaW5zdGVhZC5gXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHVzZShwbHVnaW4sIC4uLm9wdGlvbnMpIHtcbiAgICAgICAgaWYgKGluc3RhbGxlZFBsdWdpbnMuaGFzKHBsdWdpbikpIHtcbiAgICAgICAgICAhIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpICYmIHdhcm4kMShgUGx1Z2luIGhhcyBhbHJlYWR5IGJlZW4gYXBwbGllZCB0byB0YXJnZXQgYXBwLmApO1xuICAgICAgICB9IGVsc2UgaWYgKHBsdWdpbiAmJiBpc0Z1bmN0aW9uKHBsdWdpbi5pbnN0YWxsKSkge1xuICAgICAgICAgIGluc3RhbGxlZFBsdWdpbnMuYWRkKHBsdWdpbik7XG4gICAgICAgICAgcGx1Z2luLmluc3RhbGwoYXBwLCAuLi5vcHRpb25zKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0Z1bmN0aW9uKHBsdWdpbikpIHtcbiAgICAgICAgICBpbnN0YWxsZWRQbHVnaW5zLmFkZChwbHVnaW4pO1xuICAgICAgICAgI
15HBsdWdpbihhcHAsIC4uLm9wdGlvbnMpO1xuICAgICAgICB9IGVsc2UgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikpIHtcbiAgICAgICAgICB3YXJuJDEoXG4gICAgICAgICAgICBgQSBwbHVnaW4gbXVzdCBlaXRoZXIgYmUgYSBmdW5jdGlvbiBvciBhbiBvYmplY3Qgd2l0aCBhbiBcImluc3RhbGxcIiBmdW5jdGlvbi5gXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXBwO1xuICAgICAgfSxcbiAgICAgIG1peGluKG1peGluKSB7XG4gICAgICAgIGlmIChfX1ZVRV9PUFRJT05TX0FQSV9fKSB7XG4gICAgICAgICAgaWYgKCFjb250ZXh0Lm1peGlucy5pbmNsdWRlcyhtaXhpbikpIHtcbiAgICAgICAgICAgIGNvbnRleHQubWl4aW5zLnB1c2gobWl4aW4pO1xuICAgICAgICAgIH0gZWxzZSBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSkge1xuICAgICAgICAgICAgd2FybiQxKFxuICAgICAgICAgICAgICBcIk1peGluIGhhcyBhbHJlYWR5IGJlZW4gYXBwbGllZCB0byB0YXJnZXQgYXBwXCIgKyAobWl4aW4ubmFtZSA/IGA6ICR7bWl4aW4ubmFtZX1gIDogXCJcIilcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikpIHtcbiAgICAgICAgICB3YXJuJDEoXCJNaXhpbnMgYXJlIG9ubHkgYXZhaWxhYmxlIGluIGJ1aWxkcyBzdXBwb3J0aW5nIE9wdGlvbnMgQVBJXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgICB9LFxuICAgICAgY29tcG9uZW50KG5hbWUsIGNvbXBvbmVudCkge1xuICAgICAgICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSkge1xuICAgICAgICAgIHZhbGlkYXRlQ29tcG9uZW50TmFtZShuYW1lLCBjb250ZXh0LmNvbmZpZyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjb21wb25lbnQpIHtcbiAgICAgICAgICByZXR1cm4gY29udGV4dC5jb21wb25lbnRzW25hbWVdO1xuICAgICAgICB9XG4gICAgICAgIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpICYmIGNvbnRleHQuY29tcG9uZW50c1tuYW1lXSkge1xuICAgICAgICAgIHdhcm4kMShgQ29tcG9uZW50IFwiJHtuYW1lfVwiIGhhcyBhbHJlYWR5IGJlZW4gcmVnaXN0ZXJlZCBpbiB0YXJnZXQgYXBwLmApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRleHQuY29tcG9uZW50c1tuYW1lXSA9IGNvbXBvbmVudDtcbiAgICAgICAgcmV0dXJuIGFwcDtcbiAgICAgIH0sXG4gICAgICBkaXJlY3RpdmUobmFtZSwgZGlyZWN0aXZlKSB7XG4gICAgICAgIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpKSB7XG4gICAgICAgICAgdmFsaWRhdGVEaXJlY3RpdmVOYW1lKG5
15hbWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghZGlyZWN0aXZlKSB7XG4gICAgICAgICAgcmV0dXJuIGNvbnRleHQuZGlyZWN0aXZlc1tuYW1lXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSAmJiBjb250ZXh0LmRpcmVjdGl2ZXNbbmFtZV0pIHtcbiAgICAgICAgICB3YXJuJDEoYERpcmVjdGl2ZSBcIiR7bmFtZX1cIiBoYXMgYWxyZWFkeSBiZWVuIHJlZ2lzdGVyZWQgaW4gdGFyZ2V0IGFwcC5gKTtcbiAgICAgICAgfVxuICAgICAgICBjb250ZXh0LmRpcmVjdGl2ZXNbbmFtZV0gPSBkaXJlY3RpdmU7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgICB9LFxuICAgICAgbW91bnQocm9vdENvbnRhaW5lciwgaXNIeWRyYXRlLCBuYW1lc3BhY2UpIHtcbiAgICAgICAgaWYgKCFpc01vdW50ZWQpIHtcbiAgICAgICAgICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSAmJiByb290Q29udGFpbmVyLl9fdnVlX2FwcF9fKSB7XG4gICAgICAgICAgICB3YXJuJDEoXG4gICAgICAgICAgICAgIGBUaGVyZSBpcyBhbHJlYWR5IGFuIGFwcCBpbnN0YW5jZSBtb3VudGVkIG9uIHRoZSBob3N0IGNvbnRhaW5lci5cbiBJZiB5b3Ugd2FudCB0byBtb3VudCBhbm90aGVyIGFwcCBvbiB0aGUgc2FtZSBob3N0IGNvbnRhaW5lciwgeW91IG5lZWQgdG8gdW5tb3VudCB0aGUgcHJldmlvdXMgYXBwIGJ5IGNhbGxpbmcgXFxgYXBwLnVubW91bnQoKVxcYCBmaXJzdC5gXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCB2bm9kZSA9IGNyZWF0ZVZOb2RlKHJvb3RDb21wb25lbnQsIHJvb3RQcm9wcyk7XG4gICAgICAgICAgdm5vZGUuYXBwQ29udGV4dCA9IGNvbnRleHQ7XG4gICAgICAgICAgaWYgKG5hbWVzcGFjZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgbmFtZXNwYWNlID0gXCJzdmdcIjtcbiAgICAgICAgICB9IGVsc2UgaWYgKG5hbWVzcGFjZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIG5hbWVzcGFjZSA9IHZvaWQgMDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikpIHtcbiAgICAgICAgICAgIGNvbnRleHQucmVsb2FkID0gKCkgPT4ge1xuICAgICAgICAgICAgICByZW5kZXIoXG4gICAgICAgICAgICAgICAgY2xvbmVWTm9kZSh2bm9kZSksXG4gICAgICAgICAgICAgICAgcm9vdENvbnRhaW5lcixcbiAgICAgICAgICAgICAgICBuYW1lc3BhY2VcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpc0h5ZHJhdGUgJiYgaHlkcmF0ZSkge1xuICAgICAgICAgICAgaHlkcmF0ZSh2bm9kZSwgcm9vdENvbnRhaW5lcik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlbmRlcih2bm9kZSwgcm9vdENvbnRhaW5lciwgbmFtZXNwYWNlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaXNNb3VudGVkID0gdHJ1ZTtcbiAgICAgICAgICBhcHAuX2NvbnRhaW5lciA9IHJvb3RDb250YWluZXI7XG4gICAgICAgICAgcm9vdENvbnRhaW5lci5fX3Z1ZV9hcHBfXyA9IGFwcDtcbiAgICAgICAgICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB8fCBfX1ZVRV9QUk9EX0RFVlRPT0xTX18pIHtcbiAgICAgICAgICAgIGFwcC5faW5zdGFuY2UgPSB2bm9kZS5jb21wb25lbnQ7XG4gICAgICAgICAgICBkZXZ0b29sc0luaXRBcHAoYXBwLCB2ZXJzaW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGdldENvbXBvbmVudFB1YmxpY0luc3RhbmNlKHZub2RlLmNvbXBvbmVudCk7XG4gICAgICAgIH0gZWxzZSBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSkge1xuICAgICAgICAgIHdhcm4kMShcbiAgICAgICAgICAgIGBBcHAgaGFzIGFscmVhZHkgYmVlbiBtb3VudGVkLlxuSWYgeW91IHdhbnQgdG8gcmVtb3VudCB0aGUgc2FtZSBhcHAsIG1vdmUgeW91ciBhcHAgY3JlYXRpb24gbG9naWMgaW50byBhIGZhY3RvcnkgZnVuY3Rpb24gYW5kIGNyZWF0ZSBmcmVzaCBhcHAgaW5zdGFuY2VzIGZvciBlYWNoIG1vdW50IC0gZS5nLiBcXGBjb25zdCBjcmVhdGVNeUFwcCA9ICgpID0+IGNyZWF0ZUFwcChBcHApXFxgYFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB1bm1vdW50KCkge1xuICAgICAgICBpZiAoaXNNb3VudGVkKSB7XG4gICAgICAgICAgcmVuZGVyKG51bGwsIGFwcC5fY29udGFpbmVyKTtcbiAgICAgICAgICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB8fCBfX1ZVRV9QUk9EX0RFVlRPT0xTX18pIHtcbiAgICAgICAgICAgIGFwcC5faW5zdGFuY2UgPSBudWxsO1xuICAgICAgICAgICAgZGV2dG9vbHNVbm1vdW50QXBwKGFwcCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGRlbGV0ZSBhcHAuX2NvbnRhaW5lci5fX3Z1ZV9hcHBfXztcbiAgICAgICAgfSBlbHNlIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpKSB7XG4gICAgICAgICAgd2FybiQxKGBDYW5ub3QgdW5tb3VudCBhbiBhcHAgdGhhdCBpcyBub3QgbW91bnRlZC5gKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHByb3ZpZGUoa2V5LCB2YWx1ZSkge1xuICAgICAgICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSAmJiBrZXkgaW4gY29udGV4dC5wcm92aWRlcykge1xuICAgICAgICAgIHdhcm4kMShcbiAgICAgICAgICAgIGBBcHAgYWxyZWFkeSBwcm92aWRlcyBwcm9wZXJ0eSB3aXRoIGtleSBcIiR7U3RyaW5nKGtleSl9XCIuIEl0IHdpbGwgYmUgb3ZlcndyaXR0ZW4gd2l0aCB0aGUgbmV3IHZhbHVlLmBcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRleHQucHJvdmlkZXNba2V5XSA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gYXBwO1xuICAgICAgfSxcbiAgICAgIHJ1bldpdGhDb250ZXh0KGZuKSB7XG4gICAgICAgIGNvbnN0IGxhc3RBcHAgPSBjdXJyZW50QXBwO1xuICAgICAgICBjdXJyZW50QXBwID0gYXBwO
151xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiBmbigpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIGN1cnJlbnRBcHAgPSBsYXN0QXBwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gYXBwO1xuICB9O1xufVxubGV0IGN1cnJlbnRBcHAgPSBudWxsO1xuXG5mdW5jdGlvbiBwcm92aWRlKGtleSwgdmFsdWUpIHtcbiAgaWYgKCFjdXJyZW50SW5zdGFuY2UpIHtcbiAgICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSkge1xuICAgICAgd2FybiQxKGBwcm92aWRlKCkgY2FuIG9ubHkgYmUgdXNlZCBpbnNpZGUgc2V0dXAoKS5gKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbGV0IHByb3ZpZGVzID0gY3VycmVudEluc3RhbmNlLnByb3ZpZGVzO1xuICAgIGNvbnN0IHBhcmVudFByb3ZpZGVzID0gY3VycmVudEluc3RhbmNlLnBhcmVudCAmJiBjdXJyZW50SW5zdGFuY2UucGFyZW50LnByb3ZpZGVzO1xuICAgIGlmIChwYXJlbnRQcm92aWRlcyA9PT0gcHJvdmlkZXMpIHtcbiAgICAgIHByb3ZpZGVzID0gY3VycmVudEluc3RhbmNlLnByb3ZpZGVzID0gT2JqZWN0LmNyZWF0ZShwYXJlbnRQcm92aWRlcyk7XG4gICAgfVxuICAgIHByb3ZpZGVzW2tleV0gPSB2YWx1ZTtcbiAgfVxufVxuZnVuY3Rpb24gaW5qZWN0KGtleSwgZGVmYXVsdFZhbHVlLCB0cmVhdERlZmF1bHRBc0ZhY3RvcnkgPSBmYWxzZSkge1xuICBjb25zdCBpbnN0YW5jZSA9IGN1cnJlbnRJbnN0YW5jZSB8fCBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2U7XG4gIGlmIChpbnN0YW5jZSB8fCBjdXJyZW50QXBwKSB7XG4gICAgY29uc3QgcHJvdmlkZXMgPSBjdXJyZW50QXBwID8gY3VycmVudEFwcC5fY29udGV4dC5wcm92aWRlcyA6IGluc3RhbmNlID8gaW5zdGFuY2UucGFyZW50ID09IG51bGwgPyBpbnN0YW5jZS52bm9kZS5hcHBDb250ZXh0ICYmIGluc3RhbmNlLnZub2RlLmFwcENvbnRleHQucHJvdmlkZXMgOiBpbnN0YW5jZS5wYXJlbnQucHJvdmlkZXMgOiB2b2lkIDA7XG4gICAgaWYgKHByb3ZpZGVzICYmIGtleSBpbiBwcm92aWRlcykge1xuICAgICAgcmV0dXJuIHByb3ZpZGVzW2tleV07XG4gICAgfSBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgcmV0dXJuIHRyZWF0RGVmYXVsdEFzRmFjdG9yeSAmJiBpc0Z1bmN0aW9uKGRlZmF1bHRWYWx1ZSkgPyBkZWZhdWx0VmFsdWUuY2FsbChpbnN0YW5jZSAmJiBpbnN0YW5jZS5wcm94eSkgOiBkZWZhdWx0VmFsdWU7XG4gICAgfSBlbHNlIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpKSB7XG4gICAgICB3YXJuJDEoYGluamVjdGlvbiBcIiR7U3RyaW5nKGtleSl9XCIgbm90IGZvdW5kLmApO1xuICAgIH1cbiAgfSBlbHNlIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpKSB7XG4gICAgd2FybiQxKGBpbmplY3QoKSBjYW4gb25seSBiZSB1c2VkIGluc2lkZSBzZXR1cCgpIG9yIGZ1bmN0aW9uYWwgY29tcG9uZW50cy5gKTtcbiAgfVxufVxuZnVuY3Rpb24gaGFzSW5qZWN0aW9uQ29udGV4dCgpIHtcbiAgcmV0dXJuICEhKGN1cnJlbnRJbnN0YW5jZSB8fCBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UgfHwgY3VycmVudEFwcCk7XG59XG5cbmNvbnN0IGludGVybmFsT2JqZWN0UHJvdG8gPSB7fTtcbmNvbnN0IGNyZWF0ZUludGVybmFsT2JqZWN0ID0gKCkgPT4gT2JqZWN0LmNyZWF0ZShpbnRlcm5hbE9iamVjdFByb3RvKTtcbmNvbnN0IGlzSW50ZXJuYWxPYmplY3QgPSAob2JqKSA9PiBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKSA9PT0gaW50ZXJuYWxPYmplY3RQcm90bztcblxuZnVuY3Rpb24gaW5pdFByb3BzKGluc3RhbmNlLCByYXdQcm9wcywgaXNTdGF0ZWZ1bCwgaXNTU1IgPSBmYWxzZSkge1xuICBjb25zdCBwcm9wcyA9IHt9O1xuICBjb25zdCBhdHRycyA9IGNyZWF0ZUludGVybmFsT2JqZWN0KCk7XG4gIGluc3RhbmNlLnByb3BzRGVmYXVsdHMgPSAvKiBAX19QVVJFX18gKi8gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgc2V0RnVsbFByb3BzKGluc3RhbmNlLCByYXdQcm9wcywgcHJvcHMsIGF0dHJzKTtcbiAgZm9yIChjb25zdCBrZXkgaW4gaW5zdGFuY2UucHJvcHNPcHRpb25zWzBdKSB7XG4gICAgaWYgKCEoa2V5IGluIHByb3BzKSkge1xuICAgICAgcHJvcHNba2V5XSA9IHZvaWQgMDtcbiAgICB9XG4gIH1cbiAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikpIHtcbiAgICB2YWxpZGF0ZVByb3BzKHJhd1Byb3BzIHx8IHt9LCBwcm9wcywgaW5zdGFuY2UpO1xuICB9XG4gIGlmIChpc1N0YXRlZnVsKSB7XG4gICAgaW5zdGFuY2UucHJvcHMgPSBpc1NTUiA/IHByb3BzIDogc2hhbGxvd1JlYWN0aXZlKHByb3BzKTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoIWluc3RhbmNlLnR5cGUucHJvcHMpIHtcbiAgICAgIGluc3RhbmNlLnByb3BzID0gYXR0cnM7XG4gICAgfSBlbHNlIHtcbiAgICAgIGluc3RhbmNlLnByb3BzID0gcHJvcHM7XG4gICAgfVxuICB9XG4gIGluc3RhbmNlLmF0dHJzID0gYXR0cnM7XG59XG5mdW5jdGlvbiBpc0luSG1yQ29udGV4dChpbnN0YW5jZSkge1xuICB3aGlsZSAoaW5zdGFuY2UpIHtcbiAgICBpZiAoaW5zdGFuY2UudHlwZS5fX2htcklkKSByZXR1cm4gdHJ1ZTtcbiAgICBpbnN0YW5jZSA9IGluc3RhbmNlLnBhcmVudDtcbiAgfVxufVxuZnVuY3Rpb24gdXBkYXRlUHJvcHMoaW5zdGFuY2UsIHJhd1Byb3BzLCByYXdQcmV2UHJvcHMsIG9wdGltaXplZCkge1xuICBjb25zdCB7XG4gICAgcHJvcHMsXG4gICAgYXR0cnMsXG4gICAgdm5vZGU6IHsgcGF0Y2hGbGFnIH1cbiAgfSA9IGluc3RhbmNlO1xuICBjb25zdCByYXdDdXJyZW50UHJvcHMgPSB0b1Jhdyhwcm9wcyk7XG4gIGNvbnN0IFtvcHRpb25zXSA9IGluc3RhbmNlLnByb3BzT3B0aW9ucztcbiAgbGV0IGhhc0F0dHJzQ2hhbmdlZCA9IGZhbHNlO1xuICBpZiAoXG4gICAgLy8gYWx3YXlzIGZvcmNlIGZ1bGwgZGlmZiBpbiBkZXZcbiAgICAvLyAtICMxOTQyIGlmIGhtciBpcyBlbmFibGVkIHdpdGggc2ZjIGNvbXBvbmVudFxuICAgIC8vIC0gdml0ZSM4NzIgbm9uLXNmYyBjb21wb25lbnQgdXNlZCBieSBzZmMgY29tcG9uZW50XG4gICAgISghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9k
15dWN0aW9uXCIpICYmIGlzSW5IbXJDb250ZXh0KGluc3RhbmNlKSkgJiYgKG9wdGltaXplZCB8fCBwYXRjaEZsYWcgPiAwKSAmJiAhKHBhdGNoRmxhZyAmIDE2KVxuICApIHtcbiAgICBpZiAocGF0Y2hGbGFnICYgOCkge1xuICAgICAgY29uc3QgcHJvcHNUb1VwZGF0ZSA9IGluc3RhbmNlLnZub2RlLmR5bmFtaWNQcm9wcztcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvcHNUb1VwZGF0ZS5sZW5ndGg7IGkrKykge1xuICAgICAgICBsZXQga2V5ID0gcHJvcHNUb1VwZGF0ZVtpXTtcbiAgICAgICAgaWYgKGlzRW1pdExpc3RlbmVyKGluc3RhbmNlLmVtaXRzT3B0aW9ucywga2V5KSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHZhbHVlID0gcmF3UHJvcHNba2V5XTtcbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICBpZiAoaGFzT3duKGF0dHJzLCBrZXkpKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUgIT09IGF0dHJzW2tleV0pIHtcbiAgICAgICAgICAgICAgYXR0cnNba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgICBoYXNBdHRyc0NoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBjYW1lbGl6ZWRLZXkgPSBjYW1lbGl6ZShrZXkpO1xuICAgICAgICAgICAgcHJvcHNbY2FtZWxpemVkS2V5XSA9IHJlc29sdmVQcm9wVmFsdWUoXG4gICAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICAgIHJhd0N1cnJlbnRQcm9wcyxcbiAgICAgICAgICAgICAgY2FtZWxpemVkS2V5LFxuICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgaW5zdGFuY2UsXG4gICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodmFsdWUgIT09IGF0dHJzW2tleV0pIHtcbiAgICAgICAgICAgIGF0dHJzW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIGhhc0F0dHJzQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChzZXRGdWxsUHJvcHMoaW5zdGFuY2UsIHJhd1Byb3BzLCBwcm9wcywgYXR0cnMpKSB7XG4gICAgICBoYXNBdHRyc0NoYW5nZWQgPSB0cnVlO1xuICAgIH1cbiAgICBsZXQga2ViYWJLZXk7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gcmF3Q3VycmVudFByb3BzKSB7XG4gICAgICBpZiAoIXJhd1Byb3BzIHx8IC8vIGZvciBjYW1lbENhc2VcbiAgICAgICFoYXNPd24ocmF3UHJvcHMsIGtleSkgJiYgLy8gaXQncyBwb3NzaWJsZSB0aGUgb3JpZ2luYWwgcHJvcHMgd2FzIHBhc3NlZCBpbiBhcyBrZWJhYi1jYXNlXG4gICAgICAvLyBhbmQgY29udmVydGVkIHRvIGNhbWVsQ2FzZSAoIzk1NSlcbiAgICAgICgoa2ViYWJLZXkgPSBoeXBoZW5hdGUoa2V5KSkgPT09IGtleSB8fCAhaGFzT3duKHJhd1Byb3BzLCBrZWJhYktleSkpKSB7XG4gICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgaWYgKHJhd1ByZXZQcm9wcyAmJiAvLyBmb3IgY2FtZWxDYXNlXG4gICAgICAgICAgKHJhd1ByZXZQcm9wc1trZXldICE9PSB2b2lkIDAgfHwgLy8gZm9yIGtlYmFiLWNhc2VcbiAgICAgICAgICByYXdQcmV2UHJvcHNba2ViYWJLZXldICE9PSB2b2lkIDApKSB7XG4gICAgICAgICAgICBwcm9wc1trZXldID0gcmVzb2x2ZVByb3BWYWx1ZShcbiAgICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgICAgcmF3Q3VycmVudFByb3BzLFxuICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgIHZvaWQgMCxcbiAgICAgICAgICAgICAgaW5zdGFuY2UsXG4gICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRlbGV0ZSBwcm9wc1trZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChhdHRycyAhPT0gcmF3Q3VycmVudFByb3BzKSB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBhdHRycykge1xuICAgICAgICBpZiAoIXJhd1Byb3BzIHx8ICFoYXNPd24ocmF3UHJvcHMsIGtleSkgJiYgdHJ1ZSkge1xuICAgICAgICAgIGRlbGV0ZSBhdHRyc1trZXldO1xuICAgICAgICAgIGhhc0F0dHJzQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKGhhc0F0dHJzQ2hhbmdlZCkge1xuICAgIHRyaWdnZXIoaW5zdGFuY2UuYXR0cnMsIFwic2V0XCIsIFwiXCIpO1xuICB9XG4gIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpKSB7XG4gICAgdmFsaWRhdGVQcm9wcyhyYXdQcm9wcyB8fCB7fSwgcHJvcHMsIGluc3RhbmNlKTtcbiAgfVxufVxuZnVuY3Rpb24gc2V0RnVsbFByb3BzKGluc3RhbmNlLCByYXdQcm9wcywgcHJvcHMsIGF0dHJzKSB7XG4gIGNvbnN0IFtvcHRpb25zLCBuZWVkQ2FzdEtleXNdID0gaW5zdGFuY2UucHJvcHNPcHRpb25zO1xuICBsZXQgaGFzQXR0cnNDaGFuZ2VkID0gZmFsc2U7XG4gIGxldCByYXdDYXN0VmFsdWVzO1xuICBpZiAocmF3UHJvcHMpIHtcbiAgICBmb3IgKGxldCBrZXkgaW4gcmF3UHJvcHMpIHtcbiAgICAgIGlmIChpc1Jlc2VydmVkUHJvcChrZXkpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgdmFsdWUgPSByYXdQcm9wc1trZXldO1xuICAgICAgbGV0IGNhbWVsS2V5O1xuICAgICAgaWYgKG9wdGlvbnMgJiYgaGFzT3duKG9wdGlvbnMsIGNhbWVsS2V5ID0gY2FtZWxpemUoa2V5KSkpIHtcbiAgICAgICAgaWYgKCFuZWVkQ2FzdEtleXMgfHwgIW5lZWRDYXN0S2V5cy5pbmNsdWRlcyhjYW1lbEtleSkpIHtcbiAgICAgICAgICBwcm9wc1tjYW1lbEtleV0gPSB2YWx1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAocmF3Q2FzdFZhbHVlcyB8fCAocmF3Q2FzdFZhbHVlcyA9IHt9KSlbY2FtZWxLZXldID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoIWlzRW1pdExpc3RlbmVyKGluc3RhbmNlLmVtaXRzT3B0aW9ucywga2V5KSkge1xuICAgICAgICBpZiAoIShrZXkgaW4gYXR0cnMpIHx8IHZhbHVlICE9PSBhdHRyc1trZXldKSB7XG4gICAgICAgICAgYXR0cnNba2V5XSA9IHZhbHVlO1xuICAgICAgICAgIGhhc0F0dHJzQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgI
15H1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKG5lZWRDYXN0S2V5cykge1xuICAgIGNvbnN0IHJhd0N1cnJlbnRQcm9wcyA9IHRvUmF3KHByb3BzKTtcbiAgICBjb25zdCBjYXN0VmFsdWVzID0gcmF3Q2FzdFZhbHVlcyB8fCBFTVBUWV9PQko7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuZWVkQ2FzdEtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGtleSA9IG5lZWRDYXN0S2V5c1tpXTtcbiAgICAgIHByb3BzW2tleV0gPSByZXNvbHZlUHJvcFZhbHVlKFxuICAgICAgICBvcHRpb25zLFxuICAgICAgICByYXdDdXJyZW50UHJvcHMsXG4gICAgICAgIGtleSxcbiAgICAgICAgY2FzdFZhbHVlc1trZXldLFxuICAgICAgICBpbnN0YW5jZSxcbiAgICAgICAgIWhhc093bihjYXN0VmFsdWVzLCBrZXkpXG4gICAgICApO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaGFzQXR0cnNDaGFuZ2VkO1xufVxuZnVuY3Rpb24gcmVzb2x2ZVByb3BWYWx1ZShvcHRpb25zLCBwcm9wcywga2V5LCB2YWx1ZSwgaW5zdGFuY2UsIGlzQWJzZW50KSB7XG4gIGNvbnN0IG9wdCA9IG9wdGlvbnNba2V5XTtcbiAgaWYgKG9wdCAhPSBudWxsKSB7XG4gICAgY29uc3QgaGFzRGVmYXVsdCA9IGhhc093bihvcHQsIFwiZGVmYXVsdFwiKTtcbiAgICBpZiAoaGFzRGVmYXVsdCAmJiB2YWx1ZSA9PT0gdm9pZCAwKSB7XG4gICAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSBvcHQuZGVmYXVsdDtcbiAgICAgIGlmIChvcHQudHlwZSAhPT0gRnVuY3Rpb24gJiYgIW9wdC5za2lwRmFjdG9yeSAmJiBpc0Z1bmN0aW9uKGRlZmF1bHRWYWx1ZSkpIHtcbiAgICAgICAgY29uc3QgeyBwcm9wc0RlZmF1bHRzIH0gPSBpbnN0YW5jZTtcbiAgICAgICAgaWYgKGtleSBpbiBwcm9wc0RlZmF1bHRzKSB7XG4gICAgICAgICAgdmFsdWUgPSBwcm9wc0RlZmF1bHRzW2tleV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgcmVzZXQgPSBzZXRDdXJyZW50SW5zdGFuY2UoaW5zdGFuY2UpO1xuICAgICAgICAgIHZhbHVlID0gcHJvcHNEZWZhdWx0c1trZXldID0gZGVmYXVsdFZhbHVlLmNhbGwoXG4gICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgcHJvcHNcbiAgICAgICAgICApO1xuICAgICAgICAgIHJlc2V0KCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhbHVlID0gZGVmYXVsdFZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAob3B0WzAgLyogc2hvdWxkQ2FzdCAqL10pIHtcbiAgICAgIGlmIChpc0Fic2VudCAmJiAhaGFzRGVmYXVsdCkge1xuICAgICAgICB2YWx1ZSA9IGZhbHNlO1xuICAgICAgfSBlbHNlIGlmIChvcHRbMSAvKiBzaG91bGRDYXN0VHJ1ZSAqL10gJiYgKHZhbHVlID09PSBcIlwiIHx8IHZhbHVlID09PSBoeXBoZW5hdGUoa2V5KSkpIHtcbiAgICAgICAgdmFsdWUgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG5jb25zdCBtaXhpblByb3BzQ2FjaGUgPSAvKiBAX19QVVJFX18gKi8gbmV3IFdlYWtNYXAoKTtcbmZ1bmN0aW9uIG5vcm1hbGl6ZVByb3BzT3B0aW9ucyhjb21wLCBhcHBDb250ZXh0LCBhc01peGluID0gZmFsc2UpIHtcbiAgY29uc3QgY2FjaGUgPSBfX1ZVRV9PUFRJT05TX0FQSV9fICYmIGFzTWl4aW4gPyBtaXhpblByb3BzQ2FjaGUgOiBhcHBDb250ZXh0LnByb3BzQ2FjaGU7XG4gIGNvbnN0IGNhY2hlZCA9IGNhY2hlLmdldChjb21wKTtcbiAgaWYgKGNhY2hlZCkge1xuICAgIHJldHVybiBjYWNoZWQ7XG4gIH1cbiAgY29uc3QgcmF3ID0gY29tcC5wcm9wcztcbiAgY29uc3Qgbm9ybWFsaXplZCA9IHt9O1xuICBjb25zdCBuZWVkQ2FzdEtleXMgPSBbXTtcbiAgbGV0IGhhc0V4dGVuZHMgPSBmYWxzZTtcbiAgaWYgKF9fVlVFX09QVElPTlNfQVBJX18gJiYgIWlzRnVuY3Rpb24oY29tcCkpIHtcbiAgICBjb25zdCBleHRlbmRQcm9wcyA9IChyYXcyKSA9PiB7XG4gICAgICBoYXNFeHRlbmRzID0gdHJ1ZTtcbiAgICAgIGNvbnN0IFtwcm9wcywga2V5c10gPSBub3JtYWxpemVQcm9wc09wdGlvbnMocmF3MiwgYXBwQ29udGV4dCwgdHJ1ZSk7XG4gICAgICBleHRlbmQobm9ybWFsaXplZCwgcHJvcHMpO1xuICAgICAgaWYgKGtleXMpIG5lZWRDYXN0S2V5cy5wdXNoKC4uLmtleXMpO1xuICAgIH07XG4gICAgaWYgKCFhc01peGluICYmIGFwcENvbnRleHQubWl4aW5zLmxlbmd0aCkge1xuICAgICAgYXBwQ29udGV4dC5taXhpbnMuZm9yRWFjaChleHRlbmRQcm9wcyk7XG4gICAgfVxuICAgIGlmIChjb21wLmV4dGVuZHMpIHtcbiAgICAgIGV4dGVuZFByb3BzKGNvbXAuZXh0ZW5kcyk7XG4gICAgfVxuICAgIGlmIChjb21wLm1peGlucykge1xuICAgICAgY29tcC5taXhpbnMuZm9yRWFjaChleHRlbmRQcm9wcyk7XG4gICAgfVxuICB9XG4gIGlmICghcmF3ICYmICFoYXNFeHRlbmRzKSB7XG4gICAgaWYgKGlzT2JqZWN0KGNvbXApKSB7XG4gICAgICBjYWNoZS5zZXQoY29tcCwgRU1QVFlfQVJSKTtcbiAgICB9XG4gICAgcmV0dXJuIEVNUFRZX0FSUjtcbiAgfVxuICBpZiAoaXNBcnJheShyYXcpKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByYXcubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpICYmICFpc1N0cmluZyhyYXdbaV0pKSB7XG4gICAgICAgIHdhcm4kMShgcHJvcHMgbXVzdCBiZSBzdHJpbmdzIHdoZW4gdXNpbmcgYXJyYXkgc3ludGF4LmAsIHJhd1tpXSk7XG4gICAgICB9XG4gICAgICBjb25zdCBub3JtYWxpemVkS2V5ID0gY2FtZWxpemUocmF3W2ldKTtcbiAgICAgIGlmICh2YWxpZGF0ZVByb3BOYW1lKG5vcm1hbGl6ZWRLZXkpKSB7XG4gICAgICAgIG5vcm1hbGl6ZWRbbm9ybWFsaXplZEtleV0gPSBFTVBUWV9PQko7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKHJhdykge1xuICAgIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpICYmICFpc09iamVjdChyYXcpKSB7XG4gICAgICB3YXJuJDEoYGludmFsaWQgcHJvcHMgb3B0aW9uc2AsIHJhdyk7XG4gICAgfVxuICAgIGZvciAoY29uc3Qga2V5IGluIHJhdykge1xuICAgICAgY29uc3Qgbm9ybWFsaXplZEtleSA9IGNhbWVsaXplKGtleSk7XG4gICAgICBpZiAodmFsaWRhdGVQcm9wTmFtZShub3JtYWxpem
15VkS2V5KSkge1xuICAgICAgICBjb25zdCBvcHQgPSByYXdba2V5XTtcbiAgICAgICAgY29uc3QgcHJvcCA9IG5vcm1hbGl6ZWRbbm9ybWFsaXplZEtleV0gPSBpc0FycmF5KG9wdCkgfHwgaXNGdW5jdGlvbihvcHQpID8geyB0eXBlOiBvcHQgfSA6IGV4dGVuZCh7fSwgb3B0KTtcbiAgICAgICAgY29uc3QgcHJvcFR5cGUgPSBwcm9wLnR5cGU7XG4gICAgICAgIGxldCBzaG91bGRDYXN0ID0gZmFsc2U7XG4gICAgICAgIGxldCBzaG91bGRDYXN0VHJ1ZSA9IHRydWU7XG4gICAgICAgIGlmIChpc0FycmF5KHByb3BUeXBlKSkge1xuICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBwcm9wVHlwZS5sZW5ndGg7ICsraW5kZXgpIHtcbiAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBwcm9wVHlwZVtpbmRleF07XG4gICAgICAgICAgICBjb25zdCB0eXBlTmFtZSA9IGlzRnVuY3Rpb24odHlwZSkgJiYgdHlwZS5uYW1lO1xuICAgICAgICAgICAgaWYgKHR5cGVOYW1lID09PSBcIkJvb2xlYW5cIikge1xuICAgICAgICAgICAgICBzaG91bGRDYXN0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVOYW1lID09PSBcIlN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgIHNob3VsZENhc3RUcnVlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNob3VsZENhc3QgPSBpc0Z1bmN0aW9uKHByb3BUeXBlKSAmJiBwcm9wVHlwZS5uYW1lID09PSBcIkJvb2xlYW5cIjtcbiAgICAgICAgfVxuICAgICAgICBwcm9wWzAgLyogc2hvdWxkQ2FzdCAqL10gPSBzaG91bGRDYXN0O1xuICAgICAgICBwcm9wWzEgLyogc2hvdWxkQ2FzdFRydWUgKi9dID0gc2hvdWxkQ2FzdFRydWU7XG4gICAgICAgIGlmIChzaG91bGRDYXN0IHx8IGhhc093bihwcm9wLCBcImRlZmF1bHRcIikpIHtcbiAgICAgICAgICBuZWVkQ2FzdEtleXMucHVzaChub3JtYWxpemVkS2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBjb25zdCByZXMgPSBbbm9ybWFsaXplZCwgbmVlZENhc3RLZXlzXTtcbiAgaWYgKGlzT2JqZWN0KGNvbXApKSB7XG4gICAgY2FjaGUuc2V0KGNvbXAsIHJlcyk7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cbmZ1bmN0aW9uIHZhbGlkYXRlUHJvcE5hbWUoa2V5KSB7XG4gIGlmIChrZXlbMF0gIT09IFwiJFwiICYmICFpc1Jlc2VydmVkUHJvcChrZXkpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gZWxzZSBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSkge1xuICAgIHdhcm4kMShgSW52YWxpZCBwcm9wIG5hbWU6IFwiJHtrZXl9XCIgaXMgYSByZXNlcnZlZCBwcm9wZXJ0eS5gKTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5mdW5jdGlvbiBnZXRUeXBlKGN0b3IpIHtcbiAgaWYgKGN0b3IgPT09IG51bGwpIHtcbiAgICByZXR1cm4gXCJudWxsXCI7XG4gIH1cbiAgaWYgKHR5cGVvZiBjdG9yID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICByZXR1cm4gY3Rvci5uYW1lIHx8IFwiXCI7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGN0b3IgPT09IFwib2JqZWN0XCIpIHtcbiAgICBjb25zdCBuYW1lID0gY3Rvci5jb25zdHJ1Y3RvciAmJiBjdG9yLmNvbnN0cnVjdG9yLm5hbWU7XG4gICAgcmV0dXJuIG5hbWUgfHwgXCJcIjtcbiAgfVxuICByZXR1cm4gXCJcIjtcbn1cbmZ1bmN0aW9uIHZhbGlkYXRlUHJvcHMocmF3UHJvcHMsIHByb3BzLCBpbnN0YW5jZSkge1xuICBjb25zdCByZXNvbHZlZFZhbHVlcyA9IHRvUmF3KHByb3BzKTtcbiAgY29uc3Qgb3B0aW9ucyA9IGluc3RhbmNlLnByb3BzT3B0aW9uc1swXTtcbiAgZm9yIChjb25zdCBrZXkgaW4gb3B0aW9ucykge1xuICAgIGxldCBvcHQgPSBvcHRpb25zW2tleV07XG4gICAgaWYgKG9wdCA9PSBudWxsKSBjb250aW51ZTtcbiAgICB2YWxpZGF0ZVByb3AoXG4gICAgICBrZXksXG4gICAgICByZXNvbHZlZFZhbHVlc1trZXldLFxuICAgICAgb3B0LFxuICAgICAgISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSA/IHNoYWxsb3dSZWFkb25seShyZXNvbHZlZFZhbHVlcykgOiByZXNvbHZlZFZhbHVlcyxcbiAgICAgICFoYXNPd24ocmF3UHJvcHMsIGtleSkgJiYgIWhhc093bihyYXdQcm9wcywgaHlwaGVuYXRlKGtleSkpXG4gICAgKTtcbiAgfVxufVxuZnVuY3Rpb24gdmFsaWRhdGVQcm9wKG5hbWUsIHZhbHVlLCBwcm9wLCBwcm9wcywgaXNBYnNlbnQpIHtcbiAgY29uc3QgeyB0eXBlLCByZXF1aXJlZCwgdmFsaWRhdG9yLCBza2lwQ2hlY2sgfSA9IHByb3A7XG4gIGlmIChyZXF1aXJlZCAmJiBpc0Fic2VudCkge1xuICAgIHdhcm4kMSgnTWlzc2luZyByZXF1aXJlZCBwcm9wOiBcIicgKyBuYW1lICsgJ1wiJyk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmICh2YWx1ZSA9PSBudWxsICYmICFyZXF1aXJlZCkge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAodHlwZSAhPSBudWxsICYmIHR5cGUgIT09IHRydWUgJiYgIXNraXBDaGVjaykge1xuICAgIGxldCBpc1ZhbGlkID0gZmFsc2U7XG4gICAgY29uc3QgdHlwZXMgPSBpc0FycmF5KHR5cGUpID8gdHlwZSA6IFt0eXBlXTtcbiAgICBjb25zdCBleHBlY3RlZFR5cGVzID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0eXBlcy5sZW5ndGggJiYgIWlzVmFsaWQ7IGkrKykge1xuICAgICAgY29uc3QgeyB2YWxpZCwgZXhwZWN0ZWRUeXBlIH0gPSBhc3NlcnRUeXBlKHZhbHVlLCB0eXBlc1tpXSk7XG4gICAgICBleHBlY3RlZFR5cGVzLnB1c2goZXhwZWN0ZWRUeXBlIHx8IFwiXCIpO1xuICAgICAgaXNWYWxpZCA9IHZhbGlkO1xuICAgIH1cbiAgICBpZiAoIWlzVmFsaWQpIHtcbiAgICAgIHdhcm4kMShnZXRJbnZhbGlkVHlwZU1lc3NhZ2UobmFtZSwgdmFsdWUsIGV4cGVjdGVkVHlwZXMpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cbiAgaWYgKHZhbGlkYXRvciAmJiAhdmFsaWRhdG9yKHZhbHVlLCBwcm9wcykpIHtcbiAgICB3YXJuJDEoJ0ludmFsaWQgcHJvcDogY3VzdG9tIHZhbGlkYXRvciBjaGVjayBmYWlsZWQgZm9yIHByb3AgXCInICsgbmFtZSArICdcIi4nKTtcbiAgfVxufVxuY29uc3QgaXNTaW1wbGVUeXBlID0gLyogQF9fUFVSRV9fICovIG1ha2VNYXAoXG4gIFwiU3RyaW5nLE51bWJlcixCb29sZWFuLEZ1bmN0aW9uLFN5bWJvbCxCaWdJbnRcIlxuKTtcbmZ1bmN0aW9uIGFzc2VydFR5cGUodmFsdWUsIHR5cGUpIHtcbiAgbGV0IHZhbGlkO1xuICBjb25zdCBleHBlY3RlZFR5cGUgPSBnZXRUeXBlKHR5cGUpO1xuICBpZiAoaXNTaW1wbGVUeXBlKGV4cGVjdGVkVHlwZSkpIHtcbiAgICBjb25zdCB0ID0gdHlwZW9mIHZhbHVlO1xuICAgIHZhbGlkID0gdCA9PT0gZXhwZWN0ZWRUeXBlLnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKCF2YWxpZCAmJi
15B0ID09PSBcIm9iamVjdFwiKSB7XG4gICAgICB2YWxpZCA9IHZhbHVlIGluc3RhbmNlb2YgdHlwZTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoZXhwZWN0ZWRUeXBlID09PSBcIk9iamVjdFwiKSB7XG4gICAgdmFsaWQgPSBpc09iamVjdCh2YWx1ZSk7XG4gIH0gZWxzZSBpZiAoZXhwZWN0ZWRUeXBlID09PSBcIkFycmF5XCIpIHtcbiAgICB2YWxpZCA9IGlzQXJyYXkodmFsdWUpO1xuICB9IGVsc2UgaWYgKGV4cGVjdGVkVHlwZSA9PT0gXCJudWxsXCIpIHtcbiAgICB2YWxpZCA9IHZhbHVlID09PSBudWxsO1xuICB9IGVsc2Uge1xuICAgIHZhbGlkID0gdmFsdWUgaW5zdGFuY2VvZiB0eXBlO1xuICB9XG4gIHJldHVybiB7XG4gICAgdmFsaWQsXG4gICAgZXhwZWN0ZWRUeXBlXG4gIH07XG59XG5mdW5jdGlvbiBnZXRJbnZhbGlkVHlwZU1lc3NhZ2UobmFtZSwgdmFsdWUsIGV4cGVjdGVkVHlwZXMpIHtcbiAgaWYgKGV4cGVjdGVkVHlwZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGBQcm9wIHR5cGUgW10gZm9yIHByb3AgXCIke25hbWV9XCIgd29uJ3QgbWF0Y2ggYW55dGhpbmcuIERpZCB5b3UgbWVhbiB0byB1c2UgdHlwZSBBcnJheSBpbnN0ZWFkP2A7XG4gIH1cbiAgbGV0IG1lc3NhZ2UgPSBgSW52YWxpZCBwcm9wOiB0eXBlIGNoZWNrIGZhaWxlZCBmb3IgcHJvcCBcIiR7bmFtZX1cIi4gRXhwZWN0ZWQgJHtleHBlY3RlZFR5cGVzLm1hcChjYXBpdGFsaXplKS5qb2luKFwiIHwgXCIpfWA7XG4gIGNvbnN0IGV4cGVjdGVkVHlwZSA9IGV4cGVjdGVkVHlwZXNbMF07XG4gIGNvbnN0IHJlY2VpdmVkVHlwZSA9IHRvUmF3VHlwZSh2YWx1ZSk7XG4gIGNvbnN0IGV4cGVjdGVkVmFsdWUgPSBzdHlsZVZhbHVlKHZhbHVlLCBleHBlY3RlZFR5cGUpO1xuICBjb25zdCByZWNlaXZlZFZhbHVlID0gc3R5bGVWYWx1ZSh2YWx1ZSwgcmVjZWl2ZWRUeXBlKTtcbiAgaWYgKGV4cGVjdGVkVHlwZXMubGVuZ3RoID09PSAxICYmIGlzRXhwbGljYWJsZShleHBlY3RlZFR5cGUpICYmICFpc0Jvb2xlYW4oZXhwZWN0ZWRUeXBlLCByZWNlaXZlZFR5cGUpKSB7XG4gICAgbWVzc2FnZSArPSBgIHdpdGggdmFsdWUgJHtleHBlY3RlZFZhbHVlfWA7XG4gIH1cbiAgbWVzc2FnZSArPSBgLCBnb3QgJHtyZWNlaXZlZFR5cGV9IGA7XG4gIGlmIChpc0V4cGxpY2FibGUocmVjZWl2ZWRUeXBlKSkge1xuICAgIG1lc3NhZ2UgKz0gYHdpdGggdmFsdWUgJHtyZWNlaXZlZFZhbHVlfS5gO1xuICB9XG4gIHJldHVybiBtZXNzYWdlO1xufVxuZnVuY3Rpb24gc3R5bGVWYWx1ZSh2YWx1ZSwgdHlwZSkge1xuICBpZiAodHlwZSA9PT0gXCJTdHJpbmdcIikge1xuICAgIHJldHVybiBgXCIke3ZhbHVlfVwiYDtcbiAgfSBlbHNlIGlmICh0eXBlID09PSBcIk51bWJlclwiKSB7XG4gICAgcmV0dXJuIGAke051bWJlcih2YWx1ZSl9YDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYCR7dmFsdWV9YDtcbiAgfVxufVxuZnVuY3Rpb24gaXNFeHBsaWNhYmxlKHR5cGUpIHtcbiAgY29uc3QgZXhwbGljaXRUeXBlcyA9IFtcInN0cmluZ1wiLCBcIm51bWJlclwiLCBcImJvb2xlYW5cIl07XG4gIHJldHVybiBleHBsaWNpdFR5cGVzLnNvbWUoKGVsZW0pID0+IHR5cGUudG9Mb3dlckNhc2UoKSA9PT0gZWxlbSk7XG59XG5mdW5jdGlvbiBpc0Jvb2xlYW4oLi4uYXJncykge1xuICByZXR1cm4gYXJncy5zb21lKChlbGVtKSA9PiBlbGVtLnRvTG93ZXJDYXNlKCkgPT09IFwiYm9vbGVhblwiKTtcbn1cblxuY29uc3QgaXNJbnRlcm5hbEtleSA9IChrZXkpID0+IGtleVswXSA9PT0gXCJfXCIgfHwga2V5ID09PSBcIiRzdGFibGVcIjtcbmNvbnN0IG5vcm1hbGl6ZVNsb3RWYWx1ZSA9ICh2YWx1ZSkgPT4gaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZS5tYXAobm9ybWFsaXplVk5vZGUpIDogW25vcm1hbGl6ZVZOb2RlKHZhbHVlKV07XG5jb25zdCBub3JtYWxpemVTbG90ID0gKGtleSwgcmF3U2xvdCwgY3R4KSA9PiB7XG4gIGlmIChyYXdTbG90Ll9uKSB7XG4gICAgcmV0dXJuIHJhd1Nsb3Q7XG4gIH1cbiAgY29uc3Qgbm9ybWFsaXplZCA9IHdpdGhDdHgoKC4uLmFyZ3MpID0+IHtcbiAgICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSAmJiBjdXJyZW50SW5zdGFuY2UgJiYgKCFjdHggfHwgY3R4LnJvb3QgPT09IGN1cnJlbnRJbnN0YW5jZS5yb290KSkge1xuICAgICAgd2FybiQxKFxuICAgICAgICBgU2xvdCBcIiR7a2V5fVwiIGludm9rZWQgb3V0c2lkZSBvZiB0aGUgcmVuZGVyIGZ1bmN0aW9uOiB0aGlzIHdpbGwgbm90IHRyYWNrIGRlcGVuZGVuY2llcyB1c2VkIGluIHRoZSBzbG90LiBJbnZva2UgdGhlIHNsb3QgZnVuY3Rpb24gaW5zaWRlIHRoZSByZW5kZXIgZnVuY3Rpb24gaW5zdGVhZC5gXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gbm9ybWFsaXplU2xvdFZhbHVlKHJhd1Nsb3QoLi4uYXJncykpO1xuICB9LCBjdHgpO1xuICBub3JtYWxpemVkLl9jID0gZmFsc2U7XG4gIHJldHVybiBub3JtYWxpemVkO1xufTtcbmNvbnN0IG5vcm1hbGl6ZU9iamVjdFNsb3RzID0gKHJhd1Nsb3RzLCBzbG90cywgaW5zdGFuY2UpID0+IHtcbiAgY29uc3QgY3R4ID0gcmF3U2xvdHMuX2N0eDtcbiAgZm9yIChjb25zdCBrZXkgaW4gcmF3U2xvdHMpIHtcbiAgICBpZiAoaXNJbnRlcm5hbEtleShrZXkpKSBjb250aW51ZTtcbiAgICBjb25zdCB2YWx1ZSA9IHJhd1Nsb3RzW2tleV07XG4gICAgaWYgKGlzRnVuY3Rpb24odmFsdWUpKSB7XG4gICAgICBzbG90c1trZXldID0gbm9ybWFsaXplU2xvdChrZXksIHZhbHVlLCBjdHgpO1xuICAgIH0gZWxzZSBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgJiYgdHJ1ZSkge1xuICAgICAgICB3YXJuJDEoXG4gICAgICAgICAgYE5vbi1mdW5jdGlvbiB2YWx1ZSBlbmNvdW50ZXJlZCBmb3Igc2xvdCBcIiR7a2V5fVwiLiBQcmVmZXIgZnVuY3Rpb24gc2xvdHMgZm9yIGJldHRlciBwZXJmb3JtYW5jZS5gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBjb25zdCBub3JtYWxpemVkID0gbm9ybWFsaXplU2xvdFZhbHVlKHZhbHVlKTtcbiAgICAgIHNsb3RzW2tleV0gPSAoKSA9PiBub3JtYWxpem
15VkO1xuICAgIH1cbiAgfVxufTtcbmNvbnN0IG5vcm1hbGl6ZVZOb2RlU2xvdHMgPSAoaW5zdGFuY2UsIGNoaWxkcmVuKSA9PiB7XG4gIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpICYmICFpc0tlZXBBbGl2ZShpbnN0YW5jZS52bm9kZSkgJiYgdHJ1ZSkge1xuICAgIHdhcm4kMShcbiAgICAgIGBOb24tZnVuY3Rpb24gdmFsdWUgZW5jb3VudGVyZWQgZm9yIGRlZmF1bHQgc2xvdC4gUHJlZmVyIGZ1bmN0aW9uIHNsb3RzIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UuYFxuICAgICk7XG4gIH1cbiAgY29uc3Qgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZVNsb3RWYWx1ZShjaGlsZHJlbik7XG4gIGluc3RhbmNlLnNsb3RzLmRlZmF1bHQgPSAoKSA9PiBub3JtYWxpemVkO1xufTtcbmNvbnN0IGFzc2lnblNsb3RzID0gKHNsb3RzLCBjaGlsZHJlbiwgb3B0aW1pemVkKSA9PiB7XG4gIGZvciAoY29uc3Qga2V5IGluIGNoaWxkcmVuKSB7XG4gICAgaWYgKG9wdGltaXplZCB8fCBrZXkgIT09IFwiX1wiKSB7XG4gICAgICBzbG90c1trZXldID0gY2hpbGRyZW5ba2V5XTtcbiAgICB9XG4gIH1cbn07XG5jb25zdCBpbml0U2xvdHMgPSAoaW5zdGFuY2UsIGNoaWxkcmVuLCBvcHRpbWl6ZWQpID0+IHtcbiAgY29uc3Qgc2xvdHMgPSBpbnN0YW5jZS5zbG90cyA9IGNyZWF0ZUludGVybmFsT2JqZWN0KCk7XG4gIGlmIChpbnN0YW5jZS52bm9kZS5zaGFwZUZsYWcgJiAzMikge1xuICAgIGNvbnN0IHR5cGUgPSBjaGlsZHJlbi5fO1xuICAgIGlmICh0eXBlKSB7XG4gICAgICBhc3NpZ25TbG90cyhzbG90cywgY2hpbGRyZW4sIG9wdGltaXplZCk7XG4gICAgICBpZiAob3B0aW1pemVkKSB7XG4gICAgICAgIGRlZihzbG90cywgXCJfXCIsIHR5cGUsIHRydWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBub3JtYWxpemVPYmplY3RTbG90cyhjaGlsZHJlbiwgc2xvdHMpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChjaGlsZHJlbikge1xuICAgIG5vcm1hbGl6ZVZOb2RlU2xvdHMoaW5zdGFuY2UsIGNoaWxkcmVuKTtcbiAgfVxufTtcbmNvbnN0IHVwZGF0ZVNsb3RzID0gKGluc3RhbmNlLCBjaGlsZHJlbiwgb3B0aW1pemVkKSA9PiB7XG4gIGNvbnN0IHsgdm5vZGUsIHNsb3RzIH0gPSBpbnN0YW5jZTtcbiAgbGV0IG5lZWREZWxldGlvbkNoZWNrID0gdHJ1ZTtcbiAgbGV0IGRlbGV0aW9uQ29tcGFyaXNvblRhcmdldCA9IEVNUFRZX09CSjtcbiAgaWYgKHZub2RlLnNoYXBlRmxhZyAmIDMyKSB7XG4gICAgY29uc3QgdHlwZSA9IGNoaWxkcmVuLl87XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpICYmIGlzSG1yVXBkYXRpbmcpIHtcbiAgICAgICAgYXNzaWduU2xvdHMoc2xvdHMsIGNoaWxkcmVuLCBvcHRpbWl6ZWQpO1xuICAgICAgICB0cmlnZ2VyKGluc3RhbmNlLCBcInNldFwiLCBcIiRzbG90c1wiKTtcbiAgICAgIH0gZWxzZSBpZiAob3B0aW1pemVkICYmIHR5cGUgPT09IDEpIHtcbiAgICAgICAgbmVlZERlbGV0aW9uQ2hlY2sgPSBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFzc2lnblNsb3RzKHNsb3RzLCBjaGlsZHJlbiwgb3B0aW1pemVkKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbmVlZERlbGV0aW9uQ2hlY2sgPSAhY2hpbGRyZW4uJHN0YWJsZTtcbiAgICAgIG5vcm1hbGl6ZU9iamVjdFNsb3RzKGNoaWxkcmVuLCBzbG90cyk7XG4gICAgfVxuICAgIGRlbGV0aW9uQ29tcGFyaXNvblRhcmdldCA9IGNoaWxkcmVuO1xuICB9IGVsc2UgaWYgKGNoaWxkcmVuKSB7XG4gICAgbm9ybWFsaXplVk5vZGVTbG90cyhpbnN0YW5jZSwgY2hpbGRyZW4pO1xuICAgIGRlbGV0aW9uQ29tcGFyaXNvblRhcmdldCA9IHsgZGVmYXVsdDogMSB9O1xuICB9XG4gIGlmIChuZWVkRGVsZXRpb25DaGVjaykge1xuICAgIGZvciAoY29uc3Qga2V5IGluIHNsb3RzKSB7XG4gICAgICBpZiAoIWlzSW50ZXJuYWxLZXkoa2V5KSAmJiBkZWxldGlvbkNvbXBhcmlzb25UYXJnZXRba2V5XSA9PSBudWxsKSB7XG4gICAgICAgIGRlbGV0ZSBzbG90c1trZXldO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuZnVuY3Rpb24gc2V0UmVmKHJhd1JlZiwgb2xkUmF3UmVmLCBwYXJlbnRTdXNwZW5zZSwgdm5vZGUsIGlzVW5tb3VudCA9IGZhbHNlKSB7XG4gIGlmIChpc0FycmF5KHJhd1JlZikpIHtcbiAgICByYXdSZWYuZm9yRWFjaChcbiAgICAgIChyLCBpKSA9PiBzZXRSZWYoXG4gICAgICAgIHIsXG4gICAgICAgIG9sZFJhd1JlZiAmJiAoaXNBcnJheShvbGRSYXdSZWYpID8gb2xkUmF3UmVmW2ldIDogb2xkUmF3UmVmKSxcbiAgICAgICAgcGFyZW50U3VzcGVuc2UsXG4gICAgICAgIHZub2RlLFxuICAgICAgICBpc1VubW91bnRcbiAgICAgIClcbiAgICApO1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoaXNBc3luY1dyYXBwZXIodm5vZGUpICYmICFpc1VubW91bnQpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgcmVmVmFsdWUgPSB2bm9kZS5zaGFwZUZsYWcgJiA0ID8gZ2V0Q29tcG9uZW50UHVibGljSW5zdGFuY2Uodm5vZGUuY29tcG9uZW50KSA6IHZub2RlLmVsO1xuICBjb25zdCB2YWx1ZSA9IGlzVW5tb3VudCA/IG51bGwgOiByZWZWYWx1ZTtcbiAgY29uc3QgeyBpOiBvd25lciwgcjogcmVmIH0gPSByYXdSZWY7XG4gIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpICYmICFvd25lcikge1xuICAgIHdhcm4kMShcbiAgICAgIGBNaXNzaW5nIHJlZiBvd25lciBjb250ZXh0LiByZWYgY2Fubm90IGJlIHVzZWQgb24gaG9pc3RlZCB2bm9kZXMuIEEgdm5vZGUgd2l0aCByZWYgbXVzdCBiZSBjcmVhdGVkIGluc2lkZSB0aGUgcmVuZGVyIGZ1bmN0aW9uLmBcbiAgICApO1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBvbGRSZWYgPSBvbGRSYXdSZWYgJiYgb2xkUmF3UmVmLnI7XG4gIGNvbnN0IHJlZnMgPSBvd25lci5yZWZzID09PSBFTVBUWV9PQkogPyBvd25lci5yZWZzID0ge30gOiBvd25lci5yZWZzO1xuICBjb25zdCBzZXR1cFN0YXRlID0gb3duZXIuc2V0dXBTdGF0ZTtcbiAgaWYgKG9sZFJlZiAhPSBudWxsICYmIG9sZFJlZiAhPT0gcmVmKSB7XG4gICAgaWYgKGlzU3RyaW5nKG9sZFJlZikpIHtcbiAgICAgIHJlZnNbb2xkUmVmXSA9IG51bGw7XG4gICAgICBpZiAoaGFzT3duKHNldHVwU3RhdGUsIG9sZFJlZikpIHtcbiAgICAgICAgc2V0dXBTdGF0ZVtvbGRSZWZdID0gbnVsbDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzUmVmKG9sZFJlZikpIHtcbiAgICAgIG9sZFJlZi52YWx1ZSA9IG51bGw7XG4gICAgfVxuICB9XG4gIGlmIChpc0Z1bmN0aW9uKHJlZikpIHtcbiAgICBjYWxsV2l0aEVycm9ySGFuZGxpbmcocmVmLCBvd25lciwgMTIsIFt2YWx1ZSwgcmVmc10pO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IF9pc1N0cmluZyA9IGlzU3RyaW5nKHJlZik7XG4gICAgY29uc3QgX2lzUmVmID0gaXNSZWYocmVmKTtcbiAgICBpZiAoX2lzU3RyaW5nIH
15x8IF9pc1JlZikge1xuICAgICAgY29uc3QgZG9TZXQgPSAoKSA9PiB7XG4gICAgICAgIGlmIChyYXdSZWYuZikge1xuICAgICAgICAgIGNvbnN0IGV4aXN0aW5nID0gX2lzU3RyaW5nID8gaGFzT3duKHNldHVwU3RhdGUsIHJlZikgPyBzZXR1cFN0YXRlW3JlZl0gOiByZWZzW3JlZl0gOiByZWYudmFsdWU7XG4gICAgICAgICAgaWYgKGlzVW5tb3VudCkge1xuICAgICAgICAgICAgaXNBcnJheShleGlzdGluZykgJiYgcmVtb3ZlKGV4aXN0aW5nLCByZWZWYWx1ZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghaXNBcnJheShleGlzdGluZykpIHtcbiAgICAgICAgICAgICAgaWYgKF9pc1N0cmluZykge1xuICAgICAgICAgICAgICAgIHJlZnNbcmVmXSA9IFtyZWZWYWx1ZV07XG4gICAgICAgICAgICAgICAgaWYgKGhhc093bihzZXR1cFN0YXRlLCByZWYpKSB7XG4gICAgICAgICAgICAgICAgICBzZXR1cFN0YXRlW3JlZl0gPSByZWZzW3JlZl07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlZi52YWx1ZSA9IFtyZWZWYWx1ZV07XG4gICAgICAgICAgICAgICAgaWYgKHJhd1JlZi5rKSByZWZzW3Jhd1JlZi5rXSA9IHJlZi52YWx1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICghZXhpc3RpbmcuaW5jbHVkZXMocmVmVmFsdWUpKSB7XG4gICAgICAgICAgICAgIGV4aXN0aW5nLnB1c2gocmVmVmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChfaXNTdHJpbmcpIHtcbiAgICAgICAgICByZWZzW3JlZl0gPSB2YWx1ZTtcbiAgICAgICAgICBpZiAoaGFzT3duKHNldHVwU3RhdGUsIHJlZikpIHtcbiAgICAgICAgICAgIHNldHVwU3RhdGVbcmVmXSA9IHZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChfaXNSZWYpIHtcbiAgICAgICAgICByZWYudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICBpZiAocmF3UmVmLmspIHJlZnNbcmF3UmVmLmtdID0gdmFsdWU7XG4gICAgICAgIH0gZWxzZSBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSkge1xuICAgICAgICAgIHdhcm4kMShcIkludmFsaWQgdGVtcGxhdGUgcmVmIHR5cGU6XCIsIHJlZiwgYCgke3R5cGVvZiByZWZ9KWApO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIGRvU2V0LmlkID0gLTE7XG4gICAgICAgIHF1ZXVlUG9zdFJlbmRlckVmZmVjdChkb1NldCwgcGFyZW50U3VzcGVuc2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZG9TZXQoKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikpIHtcbiAgICAgIHdhcm4kMShcIkludmFsaWQgdGVtcGxhdGUgcmVmIHR5cGU6XCIsIHJlZiwgYCgke3R5cGVvZiByZWZ9KWApO1xuICAgIH1cbiAgfVxufVxuXG5jb25zdCBUZWxlcG9ydEVuZEtleSA9IFN5bWJvbChcIl92dGVcIik7XG5jb25zdCBpc1RlbGVwb3J0ID0gKHR5cGUpID0+IHR5cGUuX19pc1RlbGVwb3J0O1xuY29uc3QgaXNUZWxlcG9ydERpc2FibGVkID0gKHByb3BzKSA9PiBwcm9wcyAmJiAocHJvcHMuZGlzYWJsZWQgfHwgcHJvcHMuZGlzYWJsZWQgPT09IFwiXCIpO1xuY29uc3QgaXNUYXJnZXRTVkcgPSAodGFyZ2V0KSA9PiB0eXBlb2YgU1ZHRWxlbWVudCAhPT0gXCJ1bmRlZmluZWRcIiAmJiB0YXJnZXQgaW5zdGFuY2VvZiBTVkdFbGVtZW50O1xuY29uc3QgaXNUYXJnZXRNYXRoTUwgPSAodGFyZ2V0KSA9PiB0eXBlb2YgTWF0aE1MRWxlbWVudCA9PT0gXCJmdW5jdGlvblwiICYmIHRhcmdldCBpbnN0YW5jZW9mIE1hdGhNTEVsZW1lbnQ7XG5jb25zdCByZXNvbHZlVGFyZ2V0ID0gKHByb3BzLCBzZWxlY3QpID0+IHtcbiAgY29uc3QgdGFyZ2V0U2VsZWN0b3IgPSBwcm9wcyAmJiBwcm9wcy50bztcbiAgaWYgKGlzU3RyaW5nKHRhcmdldFNlbGVjdG9yKSkge1xuICAgIGlmICghc2VsZWN0KSB7XG4gICAgICAhIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpICYmIHdhcm4kMShcbiAgICAgICAgYEN1cnJlbnQgcmVuZGVyZXIgZG9lcyBub3Qgc3VwcG9ydCBzdHJpbmcgdGFyZ2V0IGZvciBUZWxlcG9ydHMuIChtaXNzaW5nIHF1ZXJ5U2VsZWN0b3IgcmVuZGVyZXIgb3B0aW9uKWBcbiAgICAgICk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gc2VsZWN0KHRhcmdldFNlbGVjdG9yKTtcbiAgICAgIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpICYmICF0YXJnZXQgJiYgIWlzVGVsZXBvcnREaXNhYmxlZChwcm9wcykpIHtcbiAgICAgICAgd2FybiQxKFxuICAgICAgICAgIGBGYWlsZWQgdG8gbG9jYXRlIFRlbGVwb3J0IHRhcmdldCB3aXRoIHNlbGVjdG9yIFwiJHt0YXJnZXRTZWxlY3Rvcn1cIi4gTm90ZSB0aGUgdGFyZ2V0IGVsZW1lbnQgbXVzdCBleGlzdCBiZWZvcmUgdGhlIGNvbXBvbmVudCBpcyBtb3VudGVkIC0gaS5lLiB0aGUgdGFyZ2V0IGNhbm5vdCBiZSByZW5kZXJlZCBieSB0aGUgY29tcG9uZW50IGl0c2VsZiwgYW5kIGlkZWFsbHkgc2hvdWxkIGJlIG91dHNpZGUgb2YgdGhlIGVudGlyZSBWdWUgY29tcG9uZW50IHRyZWUuYFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgJiYgIXRhcmdldFNlbGVjdG9yICYmICFpc1RlbGVwb3J0RGlzYWJsZWQocHJvcHMpKSB7XG4gICAgICB3YXJuJDEoYEludmFsaWQgVGVsZXBvcnQgdGFyZ2V0OiAke3RhcmdldFNlbGVjdG9yfWApO1xuICAgIH1cbiAgICByZXR1cm4gdGFyZ2V0U2VsZWN0b3I7XG4gIH1cbn07XG5jb25zdCBUZWxlcG9ydEltcGwgPSB7XG4gIG5hbWU6IFwiVGVsZXBvcnRcIixcbiAgX19pc1RlbGVwb3J0OiB0cnVlLFxuICBwcm9jZXNzKG4xLCBuMiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIG5hbWVzcGFjZSwgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQsIGludGVybmFscykge1xuICAgIGNvbnN0IHtcbiAgICAgIG1jOiBtb3VudENoaWxkcmVuLFxuICAgICAgcGM6IHBhdGNoQ2hpbGRyZW4sXG4gICAgICBwYmM6IHBhdGNoQmxvY2tDaGlsZHJlbixcbiAgICAgIG86IHsgaW5zZXJ0LCBxdWVyeVNlbGVjdG9yLCBjcmVhdGVUZXh0LCBjcmVhdGVDb21tZW50IH1cbiAgICB9ID0gaW50ZXJuYWxzO1xuICAgIGNvbnN0IGRpc2FibGVkID0gaXNUZWxlcG9ydERpc2FibGVkKG4yLnByb3BzKTtcbiAgICBsZXQgeyBzaGFwZUZsYWcsIGNoaWxkcmVuLCBkeW5hbWljQ2hpbGRyZW4gfSA9IG4yO1xuICAgIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9k
15dWN0aW9uXCIpICYmIGlzSG1yVXBkYXRpbmcpIHtcbiAgICAgIG9wdGltaXplZCA9IGZhbHNlO1xuICAgICAgZHluYW1pY0NoaWxkcmVuID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKG4xID09IG51bGwpIHtcbiAgICAgIGNvbnN0IHBsYWNlaG9sZGVyID0gbjIuZWwgPSAhIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpID8gY3JlYXRlQ29tbWVudChcInRlbGVwb3J0IHN0YXJ0XCIpIDogY3JlYXRlVGV4dChcIlwiKTtcbiAgICAgIGNvbnN0IG1haW5BbmNob3IgPSBuMi5hbmNob3IgPSAhIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpID8gY3JlYXRlQ29tbWVudChcInRlbGVwb3J0IGVuZFwiKSA6IGNyZWF0ZVRleHQoXCJcIik7XG4gICAgICBpbnNlcnQocGxhY2Vob2xkZXIsIGNvbnRhaW5lciwgYW5jaG9yKTtcbiAgICAgIGluc2VydChtYWluQW5jaG9yLCBjb250YWluZXIsIGFuY2hvcik7XG4gICAgICBjb25zdCB0YXJnZXQgPSBuMi50YXJnZXQgPSByZXNvbHZlVGFyZ2V0KG4yLnByb3BzLCBxdWVyeVNlbGVjdG9yKTtcbiAgICAgIGNvbnN0IHRhcmdldEFuY2hvciA9IHByZXBhcmVBbmNob3IodGFyZ2V0LCBuMiwgY3JlYXRlVGV4dCwgaW5zZXJ0KTtcbiAgICAgIGlmICh0YXJnZXQpIHtcbiAgICAgICAgaWYgKG5hbWVzcGFjZSA9PT0gXCJzdmdcIiB8fCBpc1RhcmdldFNWRyh0YXJnZXQpKSB7XG4gICAgICAgICAgbmFtZXNwYWNlID0gXCJzdmdcIjtcbiAgICAgICAgfSBlbHNlIGlmIChuYW1lc3BhY2UgPT09IFwibWF0aG1sXCIgfHwgaXNUYXJnZXRNYXRoTUwodGFyZ2V0KSkge1xuICAgICAgICAgIG5hbWVzcGFjZSA9IFwibWF0aG1sXCI7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSAmJiAhZGlzYWJsZWQpIHtcbiAgICAgICAgd2FybiQxKFwiSW52YWxpZCBUZWxlcG9ydCB0YXJnZXQgb24gbW91bnQ6XCIsIHRhcmdldCwgYCgke3R5cGVvZiB0YXJnZXR9KWApO1xuICAgICAgfVxuICAgICAgY29uc3QgbW91bnQgPSAoY29udGFpbmVyMiwgYW5jaG9yMikgPT4ge1xuICAgICAgICBpZiAoc2hhcGVGbGFnICYgMTYpIHtcbiAgICAgICAgICBtb3VudENoaWxkcmVuKFxuICAgICAgICAgICAgY2hpbGRyZW4sXG4gICAgICAgICAgICBjb250YWluZXIyLFxuICAgICAgICAgICAgYW5jaG9yMixcbiAgICAgICAgICAgIHBhcmVudENvbXBvbmVudCxcbiAgICAgICAgICAgIHBhcmVudFN1c3BlbnNlLFxuICAgICAgICAgICAgbmFtZXNwYWNlLFxuICAgICAgICAgICAgc2xvdFNjb3BlSWRzLFxuICAgICAgICAgICAgb3B0aW1pemVkXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgICBtb3VudChjb250YWluZXIsIG1haW5BbmNob3IpO1xuICAgICAgfSBlbHNlIGlmICh0YXJnZXQpIHtcbiAgICAgICAgbW91bnQodGFyZ2V0LCB0YXJnZXRBbmNob3IpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBuMi5lbCA9IG4xLmVsO1xuICAgICAgbjIudGFyZ2V0U3RhcnQgPSBuMS50YXJnZXRTdGFydDtcbiAgICAgIGNvbnN0IG1haW5BbmNob3IgPSBuMi5hbmNob3IgPSBuMS5hbmNob3I7XG4gICAgICBjb25zdCB0YXJnZXQgPSBuMi50YXJnZXQgPSBuMS50YXJnZXQ7XG4gICAgICBjb25zdCB0YXJnZXRBbmNob3IgPSBuMi50YXJnZXRBbmNob3IgPSBuMS50YXJnZXRBbmNob3I7XG4gICAgICBjb25zdCB3YXNEaXNhYmxlZCA9IGlzVGVsZXBvcnREaXNhYmxlZChuMS5wcm9wcyk7XG4gICAgICBjb25zdCBjdXJyZW50Q29udGFpbmVyID0gd2FzRGlzYWJsZWQgPyBjb250YWluZXIgOiB0YXJnZXQ7XG4gICAgICBjb25zdCBjdXJyZW50QW5jaG9yID0gd2FzRGlzYWJsZWQgPyBtYWluQW5jaG9yIDogdGFyZ2V0QW5jaG9yO1xuICAgICAgaWYgKG5hbWVzcGFjZSA9PT0gXCJzdmdcIiB8fCBpc1RhcmdldFNWRyh0YXJnZXQpKSB7XG4gICAgICAgIG5hbWVzcGFjZSA9IFwic3ZnXCI7XG4gICAgICB9IGVsc2UgaWYgKG5hbWVzcGFjZSA9PT0gXCJtYXRobWxcIiB8fCBpc1RhcmdldE1hdGhNTCh0YXJnZXQpKSB7XG4gICAgICAgIG5hbWVzcGFjZSA9IFwibWF0aG1sXCI7XG4gICAgICB9XG4gICAgICBpZiAoZHluYW1pY0NoaWxkcmVuKSB7XG4gICAgICAgIHBhdGNoQmxvY2tDaGlsZHJlbihcbiAgICAgICAgICBuMS5keW5hbWljQ2hpbGRyZW4sXG4gICAgICAgICAgZHluYW1pY0NoaWxkcmVuLFxuICAgICAgICAgIGN1cnJlbnRDb250YWluZXIsXG4gICAgICAgICAgcGFyZW50Q29tcG9uZW50LFxuICAgICAgICAgIHBhcmVudFN1c3BlbnNlLFxuICAgICAgICAgIG5hbWVzcGFjZSxcbiAgICAgICAgICBzbG90U2NvcGVJZHNcbiAgICAgICAgKTtcbiAgICAgICAgdHJhdmVyc2VTdGF0aWNDaGlsZHJlbihuMSwgbjIsIHRydWUpO1xuICAgICAgfSBlbHNlIGlmICghb3B0aW1pemVkKSB7XG4gICAgICAgIHBhdGNoQ2hpbGRyZW4oXG4gICAgICAgICAgbjEsXG4gICAgICAgICAgbjIsXG4gICAgICAgICAgY3VycmVudENvbnRhaW5lcixcbiAgICAgICAgICBjdXJyZW50QW5jaG9yLFxuICAgICAgICAgIHBhcmVudENvbXBvbmVudCxcbiAgICAgICAgICBwYXJlbnRTdXNwZW5zZSxcbiAgICAgICAgICBuYW1lc3BhY2UsXG4gICAgICAgICAgc2xvdFNjb3BlSWRzLFxuICAgICAgICAgIGZhbHNlXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgICAgaWYgKCF3YXNEaXNhYmxlZCkge1xuICAgICAgICAgIG1vdmVUZWxlcG9ydChcbiAgICAgICAgICAgIG4yLFxuICAgICAgICAgICAgY29udGFpbmVyLFxuICAgICAgICAgICAgbWFpbkFuY2hvcixcbiAgICAgICAgICAgIGludGVybmFscyxcbiAgICAgICAgICAgIDFcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChuMi5wcm9wcyAmJiBuMS5wcm9wcyAmJiBuMi5wcm9wcy50byAhPT0gbjEucHJvcHMudG8pIHtcbiAgICAgICAgICAgIG4yLnByb3BzLnRvID0gbjEucHJvcHMudG87XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoKG4yLnByb3BzICYmIG4yLnByb3BzLnRvKSAhPT0gKG4xLnByb3BzICYmIG4xLnByb3BzLnRvKSkge1xuICAgICAgICAgIGNvbnN0IG5leHRUYXJnZXQgPSBuMi50YXJnZXQgPSByZXNvbHZlVGFyZ2V0KFxuICAgICAgICAgICAgbjIucHJvcHMsXG4gICAgICAgICAgICBxdWVyeVNlbGVjdG9yXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAobmV4dFRhcmdldCkge1xuICAgICAgICAgICAgbW92ZVRlbGVwb3J0KFxuICAgICAgICAgICAgICBuMixcbiAgICAgICAgICAgICAgbmV4dFRhcmdldCxcbiAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgaW50ZXJuYWxzLFxuICAgICAgICAgICAgICAwXG4gICAgICAgICAgICApO1xuICAgICAgICAgI
15H0gZWxzZSBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSkge1xuICAgICAgICAgICAgd2FybiQxKFxuICAgICAgICAgICAgICBcIkludmFsaWQgVGVsZXBvcnQgdGFyZ2V0IG9uIHVwZGF0ZTpcIixcbiAgICAgICAgICAgICAgdGFyZ2V0LFxuICAgICAgICAgICAgICBgKCR7dHlwZW9mIHRhcmdldH0pYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAod2FzRGlzYWJsZWQpIHtcbiAgICAgICAgICBtb3ZlVGVsZXBvcnQoXG4gICAgICAgICAgICBuMixcbiAgICAgICAgICAgIHRhcmdldCxcbiAgICAgICAgICAgIHRhcmdldEFuY2hvcixcbiAgICAgICAgICAgIGludGVybmFscyxcbiAgICAgICAgICAgIDFcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHVwZGF0ZUNzc1ZhcnMobjIpO1xuICB9LFxuICByZW1vdmUodm5vZGUsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHsgdW06IHVubW91bnQsIG86IHsgcmVtb3ZlOiBob3N0UmVtb3ZlIH0gfSwgZG9SZW1vdmUpIHtcbiAgICBjb25zdCB7XG4gICAgICBzaGFwZUZsYWcsXG4gICAgICBjaGlsZHJlbixcbiAgICAgIGFuY2hvcixcbiAgICAgIHRhcmdldFN0YXJ0LFxuICAgICAgdGFyZ2V0QW5jaG9yLFxuICAgICAgdGFyZ2V0LFxuICAgICAgcHJvcHNcbiAgICB9ID0gdm5vZGU7XG4gICAgaWYgKHRhcmdldCkge1xuICAgICAgaG9zdFJlbW92ZSh0YXJnZXRTdGFydCk7XG4gICAgICBob3N0UmVtb3ZlKHRhcmdldEFuY2hvcik7XG4gICAgfVxuICAgIGRvUmVtb3ZlICYmIGhvc3RSZW1vdmUoYW5jaG9yKTtcbiAgICBpZiAoc2hhcGVGbGFnICYgMTYpIHtcbiAgICAgIGNvbnN0IHNob3VsZFJlbW92ZSA9IGRvUmVtb3ZlIHx8ICFpc1RlbGVwb3J0RGlzYWJsZWQocHJvcHMpO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBjaGlsZCA9IGNoaWxkcmVuW2ldO1xuICAgICAgICB1bm1vdW50KFxuICAgICAgICAgIGNoaWxkLFxuICAgICAgICAgIHBhcmVudENvbXBvbmVudCxcbiAgICAgICAgICBwYXJlbnRTdXNwZW5zZSxcbiAgICAgICAgICBzaG91bGRSZW1vdmUsXG4gICAgICAgICAgISFjaGlsZC5keW5hbWljQ2hpbGRyZW5cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIG1vdmU6IG1vdmVUZWxlcG9ydCxcbiAgaHlkcmF0ZTogaHlkcmF0ZVRlbGVwb3J0XG59O1xuZnVuY3Rpb24gbW92ZVRlbGVwb3J0KHZub2RlLCBjb250YWluZXIsIHBhcmVudEFuY2hvciwgeyBvOiB7IGluc2VydCB9LCBtOiBtb3ZlIH0sIG1vdmVUeXBlID0gMikge1xuICBpZiAobW92ZVR5cGUgPT09IDApIHtcbiAgICBpbnNlcnQodm5vZGUudGFyZ2V0QW5jaG9yLCBjb250YWluZXIsIHBhcmVudEFuY2hvcik7XG4gIH1cbiAgY29uc3QgeyBlbCwgYW5jaG9yLCBzaGFwZUZsYWcsIGNoaWxkcmVuLCBwcm9wcyB9ID0gdm5vZGU7XG4gIGNvbnN0IGlzUmVvcmRlciA9IG1vdmVUeXBlID09PSAyO1xuICBpZiAoaXNSZW9yZGVyKSB7XG4gICAgaW5zZXJ0KGVsLCBjb250YWluZXIsIHBhcmVudEFuY2hvcik7XG4gIH1cbiAgaWYgKCFpc1Jlb3JkZXIgfHwgaXNUZWxlcG9ydERpc2FibGVkKHByb3BzKSkge1xuICAgIGlmIChzaGFwZUZsYWcgJiAxNikge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICBtb3ZlKFxuICAgICAgICAgIGNoaWxkcmVuW2ldLFxuICAgICAgICAgIGNvbnRhaW5lcixcbiAgICAgICAgICBwYXJlbnRBbmNob3IsXG4gICAgICAgICAgMlxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAoaXNSZW9yZGVyKSB7XG4gICAgaW5zZXJ0KGFuY2hvciwgY29udGFpbmVyLCBwYXJlbnRBbmNob3IpO1xuICB9XG59XG5mdW5jdGlvbiBoeWRyYXRlVGVsZXBvcnQobm9kZSwgdm5vZGUsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkLCB7XG4gIG86IHsgbmV4dFNpYmxpbmcsIHBhcmVudE5vZGUsIHF1ZXJ5U2VsZWN0b3IsIGluc2VydCwgY3JlYXRlVGV4dCB9XG59LCBoeWRyYXRlQ2hpbGRyZW4pIHtcbiAgY29uc3QgdGFyZ2V0ID0gdm5vZGUudGFyZ2V0ID0gcmVzb2x2ZVRhcmdldChcbiAgICB2bm9kZS5wcm9wcyxcbiAgICBxdWVyeVNlbGVjdG9yXG4gICk7XG4gIGlmICh0YXJnZXQpIHtcbiAgICBjb25zdCB0YXJnZXROb2RlID0gdGFyZ2V0Ll9scGEgfHwgdGFyZ2V0LmZpcnN0Q2hpbGQ7XG4gICAgaWYgKHZub2RlLnNoYXBlRmxhZyAmIDE2KSB7XG4gICAgICBpZiAoaXNUZWxlcG9ydERpc2FibGVkKHZub2RlLnByb3BzKSkge1xuICAgICAgICB2bm9kZS5hbmNob3IgPSBoeWRyYXRlQ2hpbGRyZW4oXG4gICAgICAgICAgbmV4dFNpYmxpbmcobm9kZSksXG4gICAgICAgICAgdm5vZGUsXG4gICAgICAgICAgcGFyZW50Tm9kZShub2RlKSxcbiAgICAgICAgICBwYXJlbnRDb21wb25lbnQsXG4gICAgICAgICAgcGFyZW50U3VzcGVuc2UsXG4gICAgICAgICAgc2xvdFNjb3BlSWRzLFxuICAgICAgICAgIG9wdGltaXplZFxuICAgICAgICApO1xuICAgICAgICB2bm9kZS50YXJnZXRTdGFydCA9IHRhcmdldE5vZGU7XG4gICAgICAgIHZub2RlLnRhcmdldEFuY2hvciA9IHRhcmdldE5vZGUgJiYgbmV4dFNpYmxpbmcodGFyZ2V0Tm9kZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2bm9kZS5hbmNob3IgPSBuZXh0U2libGluZyhub2RlKTtcbiAgICAgICAgbGV0IHRhcmdldEFuY2hvciA9IHRhcmdldE5vZGU7XG4gICAgICAgIHdoaWxlICh0YXJnZXRBbmNob3IpIHtcbiAgICAgICAgICBpZiAodGFyZ2V0QW5jaG9yICYmIHRhcmdldEFuY2hvci5ub2RlVHlwZSA9PT0gOCkge1xuICAgICAgICAgICAgaWYgKHRhcmdldEFuY2hvci5kYXRhID09PSBcInRlbGVwb3J0IHN0YXJ0IGFuY2hvclwiKSB7XG4gICAgICAgICAgICAgIHZub2RlLnRhcmdldFN0YXJ0ID0gdGFyZ2V0QW5jaG9yO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0YXJnZXRBbmNob3IuZGF0YSA9PT0gXCJ0ZWxlcG9ydCBhbmNob3JcIikge1xuICAgICAgICAgICAgICB2bm9kZS50YXJnZXRBbmNob3IgPSB0YXJnZXRBbmNob3I7XG4gICAgICAgICAgICAgI
15HRhcmdldC5fbHBhID0gdm5vZGUudGFyZ2V0QW5jaG9yICYmIG5leHRTaWJsaW5nKHZub2RlLnRhcmdldEFuY2hvcik7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICB0YXJnZXRBbmNob3IgPSBuZXh0U2libGluZyh0YXJnZXRBbmNob3IpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdm5vZGUudGFyZ2V0QW5jaG9yKSB7XG4gICAgICAgICAgcHJlcGFyZUFuY2hvcih0YXJnZXQsIHZub2RlLCBjcmVhdGVUZXh0LCBpbnNlcnQpO1xuICAgICAgICB9XG4gICAgICAgIGh5ZHJhdGVDaGlsZHJlbihcbiAgICAgICAgICB0YXJnZXROb2RlICYmIG5leHRTaWJsaW5nKHRhcmdldE5vZGUpLFxuICAgICAgICAgIHZub2RlLFxuICAgICAgICAgIHRhcmdldCxcbiAgICAgICAgICBwYXJlbnRDb21wb25lbnQsXG4gICAgICAgICAgcGFyZW50U3VzcGVuc2UsXG4gICAgICAgICAgc2xvdFNjb3BlSWRzLFxuICAgICAgICAgIG9wdGltaXplZFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICB1cGRhdGVDc3NWYXJzKHZub2RlKTtcbiAgfVxuICByZXR1cm4gdm5vZGUuYW5jaG9yICYmIG5leHRTaWJsaW5nKHZub2RlLmFuY2hvcik7XG59XG5jb25zdCBUZWxlcG9ydCA9IFRlbGVwb3J0SW1wbDtcbmZ1bmN0aW9uIHVwZGF0ZUNzc1ZhcnModm5vZGUpIHtcbiAgY29uc3QgY3R4ID0gdm5vZGUuY3R4O1xuICBpZiAoY3R4ICYmIGN0eC51dCkge1xuICAgIGxldCBub2RlID0gdm5vZGUuY2hpbGRyZW5bMF0uZWw7XG4gICAgd2hpbGUgKG5vZGUgJiYgbm9kZSAhPT0gdm5vZGUudGFyZ2V0QW5jaG9yKSB7XG4gICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gMSkgbm9kZS5zZXRBdHRyaWJ1dGUoXCJkYXRhLXYtb3duZXJcIiwgY3R4LnVpZCk7XG4gICAgICBub2RlID0gbm9kZS5uZXh0U2libGluZztcbiAgICB9XG4gICAgY3R4LnV0KCk7XG4gIH1cbn1cbmZ1bmN0aW9uIHByZXBhcmVBbmNob3IodGFyZ2V0LCB2bm9kZSwgY3JlYXRlVGV4dCwgaW5zZXJ0KSB7XG4gIGNvbnN0IHRhcmdldFN0YXJ0ID0gdm5vZGUudGFyZ2V0U3RhcnQgPSBjcmVhdGVUZXh0KFwiXCIpO1xuICBjb25zdCB0YXJnZXRBbmNob3IgPSB2bm9kZS50YXJnZXRBbmNob3IgPSBjcmVhdGVUZXh0KFwiXCIpO1xuICB0YXJnZXRTdGFydFtUZWxlcG9ydEVuZEtleV0gPSB0YXJnZXRBbmNob3I7XG4gIGlmICh0YXJnZXQpIHtcbiAgICBpbnNlcnQodGFyZ2V0U3RhcnQsIHRhcmdldCk7XG4gICAgaW5zZXJ0KHRhcmdldEFuY2hvciwgdGFyZ2V0KTtcbiAgfVxuICByZXR1cm4gdGFyZ2V0QW5jaG9yO1xufVxuXG5sZXQgaGFzTG9nZ2VkTWlzbWF0Y2hFcnJvciA9IGZhbHNlO1xuY29uc3QgbG9nTWlzbWF0Y2hFcnJvciA9ICgpID0+IHtcbiAgaWYgKGhhc0xvZ2dlZE1pc21hdGNoRXJyb3IpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc29sZS5lcnJvcihcIkh5ZHJhdGlvbiBjb21wbGV0ZWQgYnV0IGNvbnRhaW5zIG1pc21hdGNoZXMuXCIpO1xuICBoYXNMb2dnZWRNaXNtYXRjaEVycm9yID0gdHJ1ZTtcbn07XG5jb25zdCBpc1NWR0NvbnRhaW5lciA9IChjb250YWluZXIpID0+IGNvbnRhaW5lci5uYW1lc3BhY2VVUkkuaW5jbHVkZXMoXCJzdmdcIikgJiYgY29udGFpbmVyLnRhZ05hbWUgIT09IFwiZm9yZWlnbk9iamVjdFwiO1xuY29uc3QgaXNNYXRoTUxDb250YWluZXIgPSAoY29udGFpbmVyKSA9PiBjb250YWluZXIubmFtZXNwYWNlVVJJLmluY2x1ZGVzKFwiTWF0aE1MXCIpO1xuY29uc3QgZ2V0Q29udGFpbmVyVHlwZSA9IChjb250YWluZXIpID0+IHtcbiAgaWYgKGlzU1ZHQ29udGFpbmVyKGNvbnRhaW5lcikpIHJldHVybiBcInN2Z1wiO1xuICBpZiAoaXNNYXRoTUxDb250YWluZXIoY29udGFpbmVyKSkgcmV0dXJuIFwibWF0aG1sXCI7XG4gIHJldHVybiB2b2lkIDA7XG59O1xuY29uc3QgaXNDb21tZW50ID0gKG5vZGUpID0+IG5vZGUubm9kZVR5cGUgPT09IDggLyogQ09NTUVOVCAqLztcbmZ1bmN0aW9uIGNyZWF0ZUh5ZHJhdGlvbkZ1bmN0aW9ucyhyZW5kZXJlckludGVybmFscykge1xuICBjb25zdCB7XG4gICAgbXQ6IG1vdW50Q29tcG9uZW50LFxuICAgIHA6IHBhdGNoLFxuICAgIG86IHtcbiAgICAgIHBhdGNoUHJvcCxcbiAgICAgIGNyZWF0ZVRleHQsXG4gICAgICBuZXh0U2libGluZyxcbiAgICAgIHBhcmVudE5vZGUsXG4gICAgICByZW1vdmUsXG4gICAgICBpbnNlcnQsXG4gICAgICBjcmVhdGVDb21tZW50XG4gICAgfVxuICB9ID0gcmVuZGVyZXJJbnRlcm5hbHM7XG4gIGNvbnN0IGh5ZHJhdGUgPSAodm5vZGUsIGNvbnRhaW5lcikgPT4ge1xuICAgIGlmICghY29udGFpbmVyLmhhc0NoaWxkTm9kZXMoKSkge1xuICAgICAgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgfHwgX19WVUVfUFJPRF9IWURSQVRJT05fTUlTTUFUQ0hfREVUQUlMU19fKSAmJiB3YXJuJDEoXG4gICAgICAgIGBBdHRlbXB0aW5nIHRvIGh5ZHJhdGUgZXhpc3RpbmcgbWFya3VwIGJ1dCBjb250YWluZXIgaXMgZW1wdHkuIFBlcmZvcm1pbmcgZnVsbCBtb3VudCBpbnN0ZWFkLmBcbiAgICAgICk7XG4gICAgICBwYXRjaChudWxsLCB2bm9kZSwgY29udGFpbmVyKTtcbiAgICAgIGZsdXNoUG9zdEZsdXNoQ2JzKCk7XG4gICAgICBjb250YWluZXIuX3Zub2RlID0gdm5vZGU7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGh5ZHJhdGVOb2RlKGNvbnRhaW5lci5maXJzdENoaWxkLCB2bm9kZSwgbnVsbCwgbnVsbCwgbnVsbCk7XG4gICAgZmx1c2hQb3N0Rmx1c2hDYnMoKTtcbiAgICBjb250YWluZXIuX3Zub2RlID0gdm5vZGU7XG4gIH07XG4gIGNvbnN0IGh5ZHJhdGVOb2RlID0gKG5vZGUsIHZub2RlLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCA9IGZhbHNlKSA9PiB7XG4gICAgb3B0aW1pemVkID0gb3B0aW1pemVkIHx8ICEhdm5vZGUuZHluYW1pY0NoaWxkcmVuO1xuICAgIGNvbnN0IGlzRnJhZ21lbnRTdGFydCA9IGlzQ29tbWVudChub2RlKSAmJiBub2RlLmRhdGEgPT09IFwiW1wiO1xuICAgIGNvbnN0IG9uTWlzbWF0Y2ggPSAoKSA9PiBoYW5kbGVNaXNtYXRjaChcbiAgICAgIG5vZGUsXG4gICAgICB2bm9kZSxcbiAgICAgIHBhcmVudENvbXBvbmVudCxcbiAgICAgIHBhcmVudFN1c3BlbnNlLFxuICAgICAgc2xvdFNjb3BlSWRzLFxuICAgICAgaXNGcmFnbWVudFN0YXJ0XG4gICAgKTtcbiAgICBjb25zdCB7IHR5cGUsIHJlZiwgc2hhcGVGbGFnLCBwYXRjaEZsYWcgfSA9IHZub2RlO1xuICAgIGxldCBkb21UeXBlID0gbm9kZS5ub2RlVHlwZTtcbiAgICB2bm9kZS5lbCA9IG5vZGU7XG4gICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgfHwgX19WVUVfUFJPRF9ERVZUT09MU19fKSB7XG4gICAgICBkZWYobm9kZSwgXCJfX3Zub2RlXCIsIHZub2Rl
15LCB0cnVlKTtcbiAgICAgIGRlZihub2RlLCBcIl9fdnVlUGFyZW50Q29tcG9uZW50XCIsIHBhcmVudENvbXBvbmVudCwgdHJ1ZSk7XG4gICAgfVxuICAgIGlmIChwYXRjaEZsYWcgPT09IC0yKSB7XG4gICAgICBvcHRpbWl6ZWQgPSBmYWxzZTtcbiAgICAgIHZub2RlLmR5bmFtaWNDaGlsZHJlbiA9IG51bGw7XG4gICAgfVxuICAgIGxldCBuZXh0Tm9kZSA9IG51bGw7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIFRleHQ6XG4gICAgICAgIGlmIChkb21UeXBlICE9PSAzIC8qIFRFWFQgKi8pIHtcbiAgICAgICAgICBpZiAodm5vZGUuY2hpbGRyZW4gPT09IFwiXCIpIHtcbiAgICAgICAgICAgIGluc2VydCh2bm9kZS5lbCA9IGNyZWF0ZVRleHQoXCJcIiksIHBhcmVudE5vZGUobm9kZSksIG5vZGUpO1xuICAgICAgICAgICAgbmV4dE5vZGUgPSBub2RlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXh0Tm9kZSA9IG9uTWlzbWF0Y2goKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKG5vZGUuZGF0YSAhPT0gdm5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgICAgICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHx8IF9fVlVFX1BST0RfSFlEUkFUSU9OX01JU01BVENIX0RFVEFJTFNfXykgJiYgd2FybiQxKFxuICAgICAgICAgICAgICBgSHlkcmF0aW9uIHRleHQgbWlzbWF0Y2ggaW5gLFxuICAgICAgICAgICAgICBub2RlLnBhcmVudE5vZGUsXG4gICAgICAgICAgICAgIGBcbiAgLSByZW5kZXJlZCBvbiBzZXJ2ZXI6ICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgICAgICAgbm9kZS5kYXRhXG4gICAgICAgICAgICAgICl9XG4gIC0gZXhwZWN0ZWQgb24gY2xpZW50OiAke0pTT04uc3RyaW5naWZ5KHZub2RlLmNoaWxkcmVuKX1gXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgbG9nTWlzbWF0Y2hFcnJvcigpO1xuICAgICAgICAgICAgbm9kZS5kYXRhID0gdm5vZGUuY2hpbGRyZW47XG4gICAgICAgICAgfVxuICAgICAgICAgIG5leHROb2RlID0gbmV4dFNpYmxpbmcobm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIENvbW1lbnQ6XG4gICAgICAgIGlmIChpc1RlbXBsYXRlTm9kZShub2RlKSkge1xuICAgICAgICAgIG5leHROb2RlID0gbmV4dFNpYmxpbmcobm9kZSk7XG4gICAgICAgICAgcmVwbGFjZU5vZGUoXG4gICAgICAgICAgICB2bm9kZS5lbCA9IG5vZGUuY29udGVudC5maXJzdENoaWxkLFxuICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgIHBhcmVudENvbXBvbmVudFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAoZG9tVHlwZSAhPT0gOCAvKiBDT01NRU5UICovIHx8IGlzRnJhZ21lbnRTdGFydCkge1xuICAgICAgICAgIG5leHROb2RlID0gb25NaXNtYXRjaCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5leHROb2RlID0gbmV4dFNpYmxpbmcobm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFN0YXRpYzpcbiAgICAgICAgaWYgKGlzRnJhZ21lbnRTdGFydCkge1xuICAgICAgICAgIG5vZGUgPSBuZXh0U2libGluZyhub2RlKTtcbiAgICAgICAgICBkb21UeXBlID0gbm9kZS5ub2RlVHlwZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZG9tVHlwZSA9PT0gMSAvKiBFTEVNRU5UICovIHx8IGRvbVR5cGUgPT09IDMgLyogVEVYVCAqLykge1xuICAgICAgICAgIG5leHROb2RlID0gbm9kZTtcbiAgICAgICAgICBjb25zdCBuZWVkVG9BZG9wdENvbnRlbnQgPSAhdm5vZGUuY2hpbGRyZW4ubGVuZ3RoO1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdm5vZGUuc3RhdGljQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgaWYgKG5lZWRUb0Fkb3B0Q29udGVudClcbiAgICAgICAgICAgICAgdm5vZGUuY2hpbGRyZW4gKz0gbmV4dE5vZGUubm9kZVR5cGUgPT09IDEgLyogRUxFTUVOVCAqLyA/IG5leHROb2RlLm91dGVySFRNTCA6IG5leHROb2RlLmRhdGE7XG4gICAgICAgICAgICBpZiAoaSA9PT0gdm5vZGUuc3RhdGljQ291bnQgLSAxKSB7XG4gICAgICAgICAgICAgIHZub2RlLmFuY2hvciA9IG5leHROb2RlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbmV4dE5vZGUgPSBuZXh0U2libGluZyhuZXh0Tm9kZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBpc0ZyYWdtZW50U3RhcnQgPyBuZXh0U2libGluZyhuZXh0Tm9kZSkgOiBuZXh0Tm9kZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvbk1pc21hdGNoKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEZyYWdtZW50OlxuICAgICAgICBpZiAoIWlzRnJhZ21lbnRTdGFydCkge1xuICAgICAgICAgIG5leHROb2RlID0gb25NaXNtYXRjaCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5leHROb2RlID0gaHlkcmF0ZUZyYWdtZW50KFxuICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgIHZub2RlLFxuICAgICAgICAgICAgcGFyZW50Q29tcG9uZW50LFxuICAgICAgICAgICAgcGFyZW50U3VzcGVuc2UsXG4gICAgICAgICAgICBzbG90U2NvcGVJZHMsXG4gICAgICAgICAgICBvcHRpbWl6ZWRcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKHNoYXBlRmxhZyAmIDEpIHtcbiAgICAgICAgICBpZiAoKGRvbVR5cGUgIT09IDEgLyogRUxFTUVOVCAqLyB8fCB2bm9kZS50eXBlLnRvTG93ZXJDYXNlKCkgIT09IG5vZGUudGFnTmFtZS50b0xvd2VyQ2FzZSgpKSAmJiAhaXNUZW1wbGF0ZU5vZGUobm9kZSkpIHtcbiAgICAgICAgICAgIG5leHROb2RlID0gb25NaXNtYXRjaCgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXh0Tm9kZSA9IGh5ZHJhdGVFbGVtZW50KFxuICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICB2bm9kZSxcbiAgICAgICAgICAgICAgcGFyZW50Q29tcG9uZW50LFxuICAgICAgICAgICAgICBwYXJlbnRTdXNwZW5zZSxcbiAgICAgICAgICAgICAgc2xvdFNjb3BlSWRzLFxuICAgICAgICAgICAgICBvcHRpbWl6ZWRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHNoYXBlRmxhZyAmIDYpIHtcbiAgICAgICAgICB2bm9kZS5zbG90U2NvcGVJZHMgPSBzbG90U2NvcGVJZHM7XG4gICAgICAgICAgY29uc3QgY29udGFpbmVyID0gcGFyZW50Tm9kZShub2RlKTtcbiAgICAgICAgICBpZiAoaXNGcmFnbWVudFN0YXJ0KSB7XG4gICAgICAgICAgICBuZXh0Tm9kZSA9IGxvY2F0ZUNsb3NpbmdBbmNob3Iobm9kZSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChpc0NvbW1lbnQobm9kZSkgJiYgbm9kZS5kYXRhID09PSBcInRlbGVwb3J0IHN0YXJ0XCIpIHtcbiAgICAgICAgICAgIG5leHROb2RlID0gbG9jYXRlQ2xvc2luZ0FuY2hvcihub2RlLCBub2RlLmRhdGEsIFwidGVsZXBvcnQgZW5kXCIpO1xuICAgICAgICAgI
15H0gZWxzZSB7XG4gICAgICAgICAgICBuZXh0Tm9kZSA9IG5leHRTaWJsaW5nKG5vZGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBtb3VudENvbXBvbmVudChcbiAgICAgICAgICAgIHZub2RlLFxuICAgICAgICAgICAgY29udGFpbmVyLFxuICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgIHBhcmVudENvbXBvbmVudCxcbiAgICAgICAgICAgIHBhcmVudFN1c3BlbnNlLFxuICAgICAgICAgICAgZ2V0Q29udGFpbmVyVHlwZShjb250YWluZXIpLFxuICAgICAgICAgICAgb3B0aW1pemVkXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAoaXNBc3luY1dyYXBwZXIodm5vZGUpKSB7XG4gICAgICAgICAgICBsZXQgc3ViVHJlZTtcbiAgICAgICAgICAgIGlmIChpc0ZyYWdtZW50U3RhcnQpIHtcbiAgICAgICAgICAgICAgc3ViVHJlZSA9IGNyZWF0ZVZOb2RlKEZyYWdtZW50KTtcbiAgICAgICAgICAgICAgc3ViVHJlZS5hbmNob3IgPSBuZXh0Tm9kZSA/IG5leHROb2RlLnByZXZpb3VzU2libGluZyA6IGNvbnRhaW5lci5sYXN0Q2hpbGQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzdWJUcmVlID0gbm9kZS5ub2RlVHlwZSA9PT0gMyA/IGNyZWF0ZVRleHRWTm9kZShcIlwiKSA6IGNyZWF0ZVZOb2RlKFwiZGl2XCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3ViVHJlZS5lbCA9IG5vZGU7XG4gICAgICAgICAgICB2bm9kZS5jb21wb25lbnQuc3ViVHJlZSA9IHN1YlRyZWU7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHNoYXBlRmxhZyAmIDY0KSB7XG4gICAgICAgICAgaWYgKGRvbVR5cGUgIT09IDggLyogQ09NTUVOVCAqLykge1xuICAgICAgICAgICAgbmV4dE5vZGUgPSBvbk1pc21hdGNoKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5leHROb2RlID0gdm5vZGUudHlwZS5oeWRyYXRlKFxuICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICB2bm9kZSxcbiAgICAgICAgICAgICAgcGFyZW50Q29tcG9uZW50LFxuICAgICAgICAgICAgICBwYXJlbnRTdXNwZW5zZSxcbiAgICAgICAgICAgICAgc2xvdFNjb3BlSWRzLFxuICAgICAgICAgICAgICBvcHRpbWl6ZWQsXG4gICAgICAgICAgICAgIHJlbmRlcmVySW50ZXJuYWxzLFxuICAgICAgICAgICAgICBoeWRyYXRlQ2hpbGRyZW5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHNoYXBlRmxhZyAmIDEyOCkge1xuICAgICAgICAgIG5leHROb2RlID0gdm5vZGUudHlwZS5oeWRyYXRlKFxuICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgIHZub2RlLFxuICAgICAgICAgICAgcGFyZW50Q29tcG9uZW50LFxuICAgICAgICAgICAgcGFyZW50U3VzcGVuc2UsXG4gICAgICAgICAgICBnZXRDb250YWluZXJUeXBlKHBhcmVudE5vZGUobm9kZSkpLFxuICAgICAgICAgICAgc2xvdFNjb3BlSWRzLFxuICAgICAgICAgICAgb3B0aW1pemVkLFxuICAgICAgICAgICAgcmVuZGVyZXJJbnRlcm5hbHMsXG4gICAgICAgICAgICBoeWRyYXRlTm9kZVxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB8fCBfX1ZVRV9QUk9EX0hZRFJBVElPTl9NSVNNQVRDSF9ERVRBSUxTX18pIHtcbiAgICAgICAgICB3YXJuJDEoXCJJbnZhbGlkIEhvc3RWTm9kZSB0eXBlOlwiLCB0eXBlLCBgKCR7dHlwZW9mIHR5cGV9KWApO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChyZWYgIT0gbnVsbCkge1xuICAgICAgc2V0UmVmKHJlZiwgbnVsbCwgcGFyZW50U3VzcGVuc2UsIHZub2RlKTtcbiAgICB9XG4gICAgcmV0dXJuIG5leHROb2RlO1xuICB9O1xuICBjb25zdCBoeWRyYXRlRWxlbWVudCA9IChlbCwgdm5vZGUsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKSA9PiB7XG4gICAgb3B0aW1pemVkID0gb3B0aW1pemVkIHx8ICEhdm5vZGUuZHluYW1pY0NoaWxkcmVuO1xuICAgIGNvbnN0IHsgdHlwZSwgcHJvcHMsIHBhdGNoRmxhZywgc2hhcGVGbGFnLCBkaXJzLCB0cmFuc2l0aW9uIH0gPSB2bm9kZTtcbiAgICBjb25zdCBmb3JjZVBhdGNoID0gdHlwZSA9PT0gXCJpbnB1dFwiIHx8IHR5cGUgPT09IFwib3B0aW9uXCI7XG4gICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgfHwgZm9yY2VQYXRjaCB8fCBwYXRjaEZsYWcgIT09IC0xKSB7XG4gICAgICBpZiAoZGlycykge1xuICAgICAgICBpbnZva2VEaXJlY3RpdmVIb29rKHZub2RlLCBudWxsLCBwYXJlbnRDb21wb25lbnQsIFwiY3JlYXRlZFwiKTtcbiAgICAgIH1cbiAgICAgIGxldCBuZWVkQ2FsbFRyYW5zaXRpb25Ib29rcyA9IGZhbHNlO1xuICAgICAgaWYgKGlzVGVtcGxhdGVOb2RlKGVsKSkge1xuICAgICAgICBuZWVkQ2FsbFRyYW5zaXRpb25Ib29rcyA9IG5lZWRUcmFuc2l0aW9uKHBhcmVudFN1c3BlbnNlLCB0cmFuc2l0aW9uKSAmJiBwYXJlbnRDb21wb25lbnQgJiYgcGFyZW50Q29tcG9uZW50LnZub2RlLnByb3BzICYmIHBhcmVudENvbXBvbmVudC52bm9kZS5wcm9wcy5hcHBlYXI7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBlbC5jb250ZW50LmZpcnN0Q2hpbGQ7XG4gICAgICAgIGlmIChuZWVkQ2FsbFRyYW5zaXRpb25Ib29rcykge1xuICAgICAgICAgIHRyYW5zaXRpb24uYmVmb3JlRW50ZXIoY29udGVudCk7XG4gICAgICAgIH1cbiAgICAgICAgcmVwbGFjZU5vZGUoY29udGVudCwgZWwsIHBhcmVudENvbXBvbmVudCk7XG4gICAgICAgIHZub2RlLmVsID0gZWwgPSBjb250ZW50O1xuICAgICAgfVxuICAgICAgaWYgKHNoYXBlRmxhZyAmIDE2ICYmIC8vIHNraXAgaWYgZWxlbWVudCBoYXMgaW5uZXJIVE1MIC8gdGV4dENvbnRlbnRcbiAgICAgICEocHJvcHMgJiYgKHByb3BzLmlubmVySFRNTCB8fCBwcm9wcy50ZXh0Q29udGVudCkpKSB7XG4gICAgICAgIGxldCBuZXh0ID0gaHlkcmF0ZUNoaWxkcmVuKFxuICAgICAgICAgIGVsLmZpcnN0Q2hpbGQsXG4gICAgICAgICAgdm5vZGUsXG4gICAgICAgICAgZWwsXG4gICAgICAgICAgcGFyZW50Q29tcG9uZW50LFxuICAgICAgICAgI
15HBhcmVudFN1c3BlbnNlLFxuICAgICAgICAgIHNsb3RTY29wZUlkcyxcbiAgICAgICAgICBvcHRpbWl6ZWRcbiAgICAgICAgKTtcbiAgICAgICAgbGV0IGhhc1dhcm5lZCA9IGZhbHNlO1xuICAgICAgICB3aGlsZSAobmV4dCkge1xuICAgICAgICAgIGlmICgoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB8fCBfX1ZVRV9QUk9EX0hZRFJBVElPTl9NSVNNQVRDSF9ERVRBSUxTX18pICYmICFoYXNXYXJuZWQpIHtcbiAgICAgICAgICAgIHdhcm4kMShcbiAgICAgICAgICAgICAgYEh5ZHJhdGlvbiBjaGlsZHJlbiBtaXNtYXRjaCBvbmAsXG4gICAgICAgICAgICAgIGVsLFxuICAgICAgICAgICAgICBgXG5TZXJ2ZXIgcmVuZGVyZWQgZWxlbWVudCBjb250YWlucyBtb3JlIGNoaWxkIG5vZGVzIHRoYW4gY2xpZW50IHZkb20uYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGhhc1dhcm5lZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxvZ01pc21hdGNoRXJyb3IoKTtcbiAgICAgICAgICBjb25zdCBjdXIgPSBuZXh0O1xuICAgICAgICAgIG5leHQgPSBuZXh0Lm5leHRTaWJsaW5nO1xuICAgICAgICAgIHJlbW92ZShjdXIpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHNoYXBlRmxhZyAmIDgpIHtcbiAgICAgICAgaWYgKGVsLnRleHRDb250ZW50ICE9PSB2bm9kZS5jaGlsZHJlbikge1xuICAgICAgICAgICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHx8IF9fVlVFX1BST0RfSFlEUkFUSU9OX01JU01BVENIX0RFVEFJTFNfXykgJiYgd2FybiQxKFxuICAgICAgICAgICAgYEh5ZHJhdGlvbiB0ZXh0IGNvbnRlbnQgbWlzbWF0Y2ggb25gLFxuICAgICAgICAgICAgZWwsXG4gICAgICAgICAgICBgXG4gIC0gcmVuZGVyZWQgb24gc2VydmVyOiAke2VsLnRleHRDb250ZW50fVxuICAtIGV4cGVjdGVkIG9uIGNsaWVudDogJHt2bm9kZS5jaGlsZHJlbn1gXG4gICAgICAgICAgKTtcbiAgICAgICAgICBsb2dNaXNtYXRjaEVycm9yKCk7XG4gICAgICAgICAgZWwudGV4dENvbnRlbnQgPSB2bm9kZS5jaGlsZHJlbjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHByb3BzKSB7XG4gICAgICAgIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHx8IF9fVlVFX1BST0RfSFlEUkFUSU9OX01JU01BVENIX0RFVEFJTFNfXyB8fCBmb3JjZVBhdGNoIHx8ICFvcHRpbWl6ZWQgfHwgcGF0Y2hGbGFnICYgKDE2IHwgMzIpKSB7XG4gICAgICAgICAgY29uc3QgaXNDdXN0b21FbGVtZW50ID0gZWwudGFnTmFtZS5pbmNsdWRlcyhcIi1cIik7XG4gICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gcHJvcHMpIHtcbiAgICAgICAgICAgIGlmICgoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB8fCBfX1ZVRV9QUk9EX0hZRFJBVElPTl9NSVNNQVRDSF9ERVRBSUxTX18pICYmIC8vICMxMTE4OSBza2lwIGlmIHRoaXMgbm9kZSBoYXMgZGlyZWN0aXZlcyB0aGF0IGhhdmUgY3JlYXRlZCBob29rc1xuICAgICAgICAgICAgLy8gYXMgaXQgY291bGQgaGF2ZSBtdXRhdGVkIHRoZSBET00gaW4gYW55IHBvc3NpYmxlIHdheVxuICAgICAgICAgICAgIShkaXJzICYmIGRpcnMuc29tZSgoZCkgPT4gZC5kaXIuY3JlYXRlZCkpICYmIHByb3BIYXNNaXNtYXRjaChlbCwga2V5LCBwcm9wc1trZXldLCB2bm9kZSwgcGFyZW50Q29tcG9uZW50KSkge1xuICAgICAgICAgICAgICBsb2dNaXNtYXRjaEVycm9yKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZm9yY2VQYXRjaCAmJiAoa2V5LmVuZHNXaXRoKFwidmFsdWVcIikgfHwga2V5ID09PSBcImluZGV0ZXJtaW5hdGVcIikgfHwgaXNPbihrZXkpICYmICFpc1Jlc2VydmVkUHJvcChrZXkpIHx8IC8vIGZvcmNlIGh5ZHJhdGUgdi1iaW5kIHdpdGggLnByb3AgbW9kaWZpZXJzXG4gICAgICAgICAgICBrZXlbMF0gPT09IFwiLlwiIHx8IGlzQ3VzdG9tRWxlbWVudCkge1xuICAgICAgICAgICAgICBwYXRjaFByb3AoZWwsIGtleSwgbnVsbCwgcHJvcHNba2V5XSwgdm9pZCAwLCBwYXJlbnRDb21wb25lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChwcm9wcy5vbkNsaWNrKSB7XG4gICAgICAgICAgcGF0Y2hQcm9wKFxuICAgICAgICAgICAgZWwsXG4gICAgICAgICAgICBcIm9uQ2xpY2tcIixcbiAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICBwcm9wcy5vbkNsaWNrLFxuICAgICAgICAgICAgdm9pZCAwLFxuICAgICAgICAgICAgcGFyZW50Q29tcG9uZW50XG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChwYXRjaEZsYWcgJiA0ICYmIGlzUmVhY3RpdmUocHJvcHMuc3R5bGUpKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gcHJvcHMuc3R5bGUpIHByb3BzLnN0eWxlW2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGxldCB2bm9kZUhvb2tzO1xuICAgICAgaWYgKHZub2RlSG9va3MgPSBwcm9wcyAmJiBwcm9wcy5vblZub2RlQmVmb3JlTW91bnQpIHtcbiAgICAgICAgaW52b2tlVk5vZGVIb29rKHZub2RlSG9va3MsIHBhcmVudENvbXBvbmVudCwgdm5vZGUpO1xuICAgICAgfVxuICAgICAgaWYgKGRpcnMpIHtcbiAgICAgICAgaW52b2tlRGlyZWN0aXZlSG9vayh2bm9kZSwgbnVsbCwgcGFyZW50Q29tcG9uZW50LCBcImJlZm9yZU1vdW50XCIpO1xuICAgICAgfVxuICAgICAgaWYgKCh2bm9kZUhvb2tzID0gcHJvcHMgJiYgcHJvcHMub25Wbm9kZU1vdW50ZWQpIHx8IGRpcnMgfHwgbmVlZENhbGxUcmFuc2l0aW9uSG9va3MpIHtcbiAgICAgICAgcXVldWVFZmZlY3RXaXRoU3VzcGVuc2UoKCkgPT4ge1xuICAgICAgICAgIHZub2RlSG9va3MgJiYgaW52b2tlVk5vZGVIb29rKHZub2RlSG9va3MsIHBhcmVudENvbXBvbmVudCwgdm5vZGUpO1xuICAgICAgICAgIG5lZWRDYWxsVHJhbnNpdGlvbkhvb2tzICYmIHRyYW5zaXRpb24uZW50ZXIoZWwpO1xuICAgICAgICAgIGRpcnMgJiYgaW52b2tlRGlyZWN0aXZlSG9vayh2bm9kZSwgbnVsbCwgcGFyZW50Q29tcG9uZW50LCBcIm1vdW50ZWRcIik7XG4gICAgICAgI
15H0sIHBhcmVudFN1c3BlbnNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGVsLm5leHRTaWJsaW5nO1xuICB9O1xuICBjb25zdCBoeWRyYXRlQ2hpbGRyZW4gPSAobm9kZSwgcGFyZW50Vk5vZGUsIGNvbnRhaW5lciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpID0+IHtcbiAgICBvcHRpbWl6ZWQgPSBvcHRpbWl6ZWQgfHwgISFwYXJlbnRWTm9kZS5keW5hbWljQ2hpbGRyZW47XG4gICAgY29uc3QgY2hpbGRyZW4gPSBwYXJlbnRWTm9kZS5jaGlsZHJlbjtcbiAgICBjb25zdCBsID0gY2hpbGRyZW4ubGVuZ3RoO1xuICAgIGxldCBoYXNXYXJuZWQgPSBmYWxzZTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGw7IGkrKykge1xuICAgICAgY29uc3Qgdm5vZGUgPSBvcHRpbWl6ZWQgPyBjaGlsZHJlbltpXSA6IGNoaWxkcmVuW2ldID0gbm9ybWFsaXplVk5vZGUoY2hpbGRyZW5baV0pO1xuICAgICAgY29uc3QgaXNUZXh0ID0gdm5vZGUudHlwZSA9PT0gVGV4dDtcbiAgICAgIGlmIChub2RlKSB7XG4gICAgICAgIGlmIChpc1RleHQgJiYgIW9wdGltaXplZCkge1xuICAgICAgICAgIGxldCBuZXh0ID0gY2hpbGRyZW5baSArIDFdO1xuICAgICAgICAgIGlmIChuZXh0ICYmIChuZXh0ID0gbm9ybWFsaXplVk5vZGUobmV4dCkpLnR5cGUgPT09IFRleHQpIHtcbiAgICAgICAgICAgIGluc2VydChcbiAgICAgICAgICAgICAgY3JlYXRlVGV4dChcbiAgICAgICAgICAgICAgICBub2RlLmRhdGEuc2xpY2Uodm5vZGUuY2hpbGRyZW4ubGVuZ3RoKVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBjb250YWluZXIsXG4gICAgICAgICAgICAgIG5leHRTaWJsaW5nKG5vZGUpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgbm9kZS5kYXRhID0gdm5vZGUuY2hpbGRyZW47XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIG5vZGUgPSBoeWRyYXRlTm9kZShcbiAgICAgICAgICBub2RlLFxuICAgICAgICAgIHZub2RlLFxuICAgICAgICAgIHBhcmVudENvbXBvbmVudCxcbiAgICAgICAgICBwYXJlbnRTdXNwZW5zZSxcbiAgICAgICAgICBzbG90U2NvcGVJZHMsXG4gICAgICAgICAgb3B0aW1pemVkXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKGlzVGV4dCAmJiAhdm5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgaW5zZXJ0KHZub2RlLmVsID0gY3JlYXRlVGV4dChcIlwiKSwgY29udGFpbmVyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICgoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB8fCBfX1ZVRV9QUk9EX0hZRFJBVElPTl9NSVNNQVRDSF9ERVRBSUxTX18pICYmICFoYXNXYXJuZWQpIHtcbiAgICAgICAgICB3YXJuJDEoXG4gICAgICAgICAgICBgSHlkcmF0aW9uIGNoaWxkcmVuIG1pc21hdGNoIG9uYCxcbiAgICAgICAgICAgIGNvbnRhaW5lcixcbiAgICAgICAgICAgIGBcblNlcnZlciByZW5kZXJlZCBlbGVtZW50IGNvbnRhaW5zIGZld2VyIGNoaWxkIG5vZGVzIHRoYW4gY2xpZW50IHZkb20uYFxuICAgICAgICAgICk7XG4gICAgICAgICAgaGFzV2FybmVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBsb2dNaXNtYXRjaEVycm9yKCk7XG4gICAgICAgIHBhdGNoKFxuICAgICAgICAgIG51bGwsXG4gICAgICAgICAgdm5vZGUsXG4gICAgICAgICAgY29udGFpbmVyLFxuICAgICAgICAgIG51bGwsXG4gICAgICAgICAgcGFyZW50Q29tcG9uZW50LFxuICAgICAgICAgIHBhcmVudFN1c3BlbnNlLFxuICAgICAgICAgIGdldENvbnRhaW5lclR5cGUoY29udGFpbmVyKSxcbiAgICAgICAgICBzbG90U2NvcGVJZHNcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5vZGU7XG4gIH07XG4gIGNvbnN0IGh5ZHJhdGVGcmFnbWVudCA9IChub2RlLCB2bm9kZSwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpID0+IHtcbiAgICBjb25zdCB7IHNsb3RTY29wZUlkczogZnJhZ21lbnRTbG90U2NvcGVJZHMgfSA9IHZub2RlO1xuICAgIGlmIChmcmFnbWVudFNsb3RTY29wZUlkcykge1xuICAgICAgc2xvdFNjb3BlSWRzID0gc2xvdFNjb3BlSWRzID8gc2xvdFNjb3BlSWRzLmNvbmNhdChmcmFnbWVudFNsb3RTY29wZUlkcykgOiBmcmFnbWVudFNsb3RTY29wZUlkcztcbiAgICB9XG4gICAgY29uc3QgY29udGFpbmVyID0gcGFyZW50Tm9kZShub2RlKTtcbiAgICBjb25zdCBuZXh0ID0gaHlkcmF0ZUNoaWxkcmVuKFxuICAgICAgbmV4dFNpYmxpbmcobm9kZSksXG4gICAgICB2bm9kZSxcbiAgICAgIGNvbnRhaW5lcixcbiAgICAgIHBhcmVudENvbXBvbmVudCxcbiAgICAgIHBhcmVudFN1c3BlbnNlLFxuICAgICAgc2xvdFNjb3BlSWRzLFxuICAgICAgb3B0aW1pemVkXG4gICAgKTtcbiAgICBpZiAobmV4dCAmJiBpc0NvbW1lbnQobmV4dCkgJiYgbmV4dC5kYXRhID09PSBcIl1cIikge1xuICAgICAgcmV0dXJuIG5leHRTaWJsaW5nKHZub2RlLmFuY2hvciA9IG5leHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2dNaXNtYXRjaEVycm9yKCk7XG4gICAgICBpbnNlcnQodm5vZGUuYW5jaG9yID0gY3JlYXRlQ29tbWVudChgXWApLCBjb250YWluZXIsIG5leHQpO1xuICAgICAgcmV0dXJuIG5leHQ7XG4gICAgfVxuICB9O1xuICBjb25zdCBoYW5kbGVNaXNtYXRjaCA9IChub2RlLCB2bm9kZSwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgc2xvdFNjb3BlSWRzLCBpc0ZyYWdtZW50KSA9PiB7XG4gICAgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgfHwgX19WVUVfUFJPRF9IWURSQVRJT05fTUlTTUFUQ0hfREVUQUlMU19fKSAmJiB3YXJuJDEoXG4gICAgICBgSHlkcmF0aW9uIG5vZGUgbWlzbWF0Y2g6XG4tIHJlbmRlcmVkIG9uIHNlcnZlcjpgLFxuICAgICAgbm9kZSxcbiAgICAgIG5vZGUubm9kZVR5cGUgPT09IDMgLyogVEVYVCAqLyA/IGAodGV4dClgIDogaXNDb21tZW50KG5vZGUpICYmIG5vZGUuZGF0YSA9PT0gXCJbXCIgPyBgKHN0YXJ0IG9mIGZyYWdtZW50KWAgOiBgYCxcbiAgICAgIGBcbi0gZXhwZWN0ZWQgb24gY2xpZW50OmAsXG4gICAgICB2bm9kZS50eXBlXG4gICAgKTtcbiAgICBsb2dNaXNtYXRjaEVycm9yKCk7XG4gICAgdm5vZGUuZWwgPSBudWxsO1xuICAgIGlmIChpc0ZyYWdtZW50KSB7XG4gICAgICBjb25zdCBlbmQgPSBsb2NhdGVDbG9zaW5nQW5jaG9yKG5vZGUpO1xuICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgY29uc3QgbmV4dDIgPSBuZXh0U2libGluZyhub2RlKTtcbiAgICAgICAgaWYgKG5leHQyICYmIG5leHQyICE9PSBlbmQpIHtcbiAgICAgICAgICByZW1vdmUobmV4dDIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IG5leHQgPSBuZXh0U2libGluZyhub2RlKTtcbiAgICBjb25zdCBjb250YWluZXIgPSBwYXJlbnROb2RlKG5vZGUpO1xuICAgIHJlbW92ZShub2RlKTtcbiAgICBwYXRjaChcbiAgICAgIG51bGwsXG4gICAgICB2bm9kZSxcbiAgICAgIGNvbnRhaW5lcixcbiAgICAgIG5leHQsXG4gICAgICBwYXJlbnRDb21wb25lbnQsXG4gICAgICBwYXJlbnRTdXNwZW5zZSxcbiAgICAgIGdldENvbnRhaW5lclR5cGUoY29udGFpbmVyKSxcbiAgICAgIHNsb3RTY29wZUlkc1xuICAgICk7XG4gICAgcmV0dXJuIG5leHQ7XG4gIH07XG4gIGNvbnN0IGxvY2F0ZUNsb3NpbmdBbmNob3IgPSAobm9kZSwgb3BlbiA9IFwiW1wiLCBjbG9zZSA9IFwiXVwiKSA9PiB7XG4gICAgbGV0IG1hdGNoID0gMDtcbiAgICB3aGlsZSAobm9kZSkge1xuICAgICAgbm9kZSA9IG5leHRTaWJsaW5nKG5vZGUpO1xuICAgICAgaWYgKG5vZGUgJiYgaXNDb21tZW50KG5vZGUpKSB7XG4gICAgICAgIGlmIChub2RlLmRhdGEgPT09IG9wZW4pIG1hdGNoKys7XG4gICAgICAgIGlmIChub2RlLmRhdGEgPT09IGNsb3NlKSB7XG4gICAgICAgICAgaWYgKG1hdGNoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV4dFNpYmxpbmcobm9kZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1hdGNoLS07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybi
15Bub2RlO1xuICB9O1xuICBjb25zdCByZXBsYWNlTm9kZSA9IChuZXdOb2RlLCBvbGROb2RlLCBwYXJlbnRDb21wb25lbnQpID0+IHtcbiAgICBjb25zdCBwYXJlbnROb2RlMiA9IG9sZE5vZGUucGFyZW50Tm9kZTtcbiAgICBpZiAocGFyZW50Tm9kZTIpIHtcbiAgICAgIHBhcmVudE5vZGUyLnJlcGxhY2VDaGlsZChuZXdOb2RlLCBvbGROb2RlKTtcbiAgICB9XG4gICAgbGV0IHBhcmVudCA9IHBhcmVudENvbXBvbmVudDtcbiAgICB3aGlsZSAocGFyZW50KSB7XG4gICAgICBpZiAocGFyZW50LnZub2RlLmVsID09PSBvbGROb2RlKSB7XG4gICAgICAgIHBhcmVudC52bm9kZS5lbCA9IHBhcmVudC5zdWJUcmVlLmVsID0gbmV3Tm9kZTtcbiAgICAgIH1cbiAgICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnQ7XG4gICAgfVxuICB9O1xuICBjb25zdCBpc1RlbXBsYXRlTm9kZSA9IChub2RlKSA9PiB7XG4gICAgcmV0dXJuIG5vZGUubm9kZVR5cGUgPT09IDEgLyogRUxFTUVOVCAqLyAmJiBub2RlLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJ0ZW1wbGF0ZVwiO1xuICB9O1xuICByZXR1cm4gW2h5ZHJhdGUsIGh5ZHJhdGVOb2RlXTtcbn1cbmZ1bmN0aW9uIHByb3BIYXNNaXNtYXRjaChlbCwga2V5LCBjbGllbnRWYWx1ZSwgdm5vZGUsIGluc3RhbmNlKSB7XG4gIGxldCBtaXNtYXRjaFR5cGU7XG4gIGxldCBtaXNtYXRjaEtleTtcbiAgbGV0IGFjdHVhbDtcbiAgbGV0IGV4cGVjdGVkO1xuICBpZiAoa2V5ID09PSBcImNsYXNzXCIpIHtcbiAgICBhY3R1YWwgPSBlbC5nZXRBdHRyaWJ1dGUoXCJjbGFzc1wiKTtcbiAgICBleHBlY3RlZCA9IG5vcm1hbGl6ZUNsYXNzKGNsaWVudFZhbHVlKTtcbiAgICBpZiAoIWlzU2V0RXF1YWwodG9DbGFzc1NldChhY3R1YWwgfHwgXCJcIiksIHRvQ2xhc3NTZXQoZXhwZWN0ZWQpKSkge1xuICAgICAgbWlzbWF0Y2hUeXBlID0gbWlzbWF0Y2hLZXkgPSBgY2xhc3NgO1xuICAgIH1cbiAgfSBlbHNlIGlmIChrZXkgPT09IFwic3R5bGVcIikge1xuICAgIGFjdHVhbCA9IGVsLmdldEF0dHJpYnV0ZShcInN0eWxlXCIpIHx8IFwiXCI7XG4gICAgZXhwZWN0ZWQgPSBpc1N0cmluZyhjbGllbnRWYWx1ZSkgPyBjbGllbnRWYWx1ZSA6IHN0cmluZ2lmeVN0eWxlKG5vcm1hbGl6ZVN0eWxlKGNsaWVudFZhbHVlKSk7XG4gICAgY29uc3QgYWN0dWFsTWFwID0gdG9TdHlsZU1hcChhY3R1YWwpO1xuICAgIGNvbnN0IGV4cGVjdGVkTWFwID0gdG9TdHlsZU1hcChleHBlY3RlZCk7XG4gICAgaWYgKHZub2RlLmRpcnMpIHtcbiAgICAgIGZvciAoY29uc3QgeyBkaXIsIHZhbHVlIH0gb2Ygdm5vZGUuZGlycykge1xuICAgICAgICBpZiAoZGlyLm5hbWUgPT09IFwic2hvd1wiICYmICF2YWx1ZSkge1xuICAgICAgICAgIGV4cGVjdGVkTWFwLnNldChcImRpc3BsYXlcIiwgXCJub25lXCIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpbnN0YW5jZSkge1xuICAgICAgcmVzb2x2ZUNzc1ZhcnMoaW5zdGFuY2UsIHZub2RlLCBleHBlY3RlZE1hcCk7XG4gICAgfVxuICAgIGlmICghaXNNYXBFcXVhbChhY3R1YWxNYXAsIGV4cGVjdGVkTWFwKSkge1xuICAgICAgbWlzbWF0Y2hUeXBlID0gbWlzbWF0Y2hLZXkgPSBcInN0eWxlXCI7XG4gICAgfVxuICB9IGVsc2UgaWYgKGVsIGluc3RhbmNlb2YgU1ZHRWxlbWVudCAmJiBpc0tub3duU3ZnQXR0cihrZXkpIHx8IGVsIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgJiYgKGlzQm9vbGVhbkF0dHIoa2V5KSB8fCBpc0tub3duSHRtbEF0dHIoa2V5KSkpIHtcbiAgICBpZiAoaXNCb29sZWFuQXR0cihrZXkpKSB7XG4gICAgICBhY3R1YWwgPSBlbC5oYXNBdHRyaWJ1dGUoa2V5KTtcbiAgICAgIGV4cGVjdGVkID0gaW5jbHVkZUJvb2xlYW5BdHRyKGNsaWVudFZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKGNsaWVudFZhbHVlID09IG51bGwpIHtcbiAgICAgIGFjdHVhbCA9IGVsLmhhc0F0dHJpYnV0ZShrZXkpO1xuICAgICAgZXhwZWN0ZWQgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGVsLmhhc0F0dHJpYnV0ZShrZXkpKSB7XG4gICAgICAgIGFjdHVhbCA9IGVsLmdldEF0dHJpYnV0ZShrZXkpO1xuICAgICAgfSBlbHNlIGlmIChrZXkgPT09IFwidmFsdWVcIiAmJiBlbC50YWdOYW1lID09PSBcIlRFWFRBUkVBXCIpIHtcbiAgICAgICAgYWN0dWFsID0gZWwudmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhY3R1YWwgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGV4cGVjdGVkID0gaXNSZW5kZXJhYmxlQXR0clZhbHVlKGNsaWVudFZhbHVlKSA/IFN0cmluZyhjbGllbnRWYWx1ZSkgOiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHtcbiAgICAgIG1pc21hdGNoVHlwZSA9IGBhdHRyaWJ1dGVgO1xuICAgICAgbWlzbWF0Y2hLZXkgPSBrZXk7XG4gICAgfVxuICB9XG4gIGlmIChtaXNtYXRjaFR5cGUpIHtcbiAgICBjb25zdCBmb3JtYXQgPSAodikgPT4gdiA9PT0gZmFsc2UgPyBgKG5vdCByZW5kZXJlZClgIDogYCR7bWlzbWF0Y2hLZXl9PVwiJHt2fVwiYDtcbiAgICBjb25zdCBwcmVTZWdtZW50ID0gYEh5ZHJhdGlvbiAke21pc21hdGNoVHlwZX0gbWlzbWF0Y2ggb25gO1xuICAgIGNvbnN0IHBvc3RTZWdtZW50ID0gYFxuICAtIHJlbmRlcmVkIG9uIHNlcnZlcjogJHtmb3JtYXQoYWN0dWFsKX1cbiAgLSBleHBlY3RlZCBvbiBjbGllbnQ6ICR7Zm9ybWF0KGV4cGVjdGVkKX1cbiAgTm90ZTogdGhpcyBtaXNtYXRjaCBpcyBjaGVjay1vbmx5LiBUaGUgRE9NIHdpbGwgbm90IGJlIHJlY3RpZmllZCBpbiBwcm9kdWN0aW9uIGR1ZSB0byBwZXJmb3JtYW5jZSBvdmVyaGVhZC5cbiAgWW91IHNob3VsZCBmaXggdGhlIHNvdXJjZSBvZiB0aGUgbWlzbWF0Y2guYDtcbiAgICB7XG4gICAgICB3YXJuJDEocHJlU2VnbWVudCwgZWwsIHBvc3RTZWdtZW50KTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuZnVuY3Rpb24gdG9DbGFzc1NldChzdHIpIHtcbiAgcmV0dXJuIG5ldyBTZXQoc3RyLnRyaW0oKS5zcGxpdCgvXFxzKy8pKTtcbn1cbmZ1bmN0aW9uIGlzU2V0RXF1YWwoYSwgYikge1xuICBpZiAoYS5zaXplICE9PSBiLnNpemUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgZm9yIChjb25zdCBzIG9mIGEpIHtcbiAgICBpZiAoIWIuaGFzKHMpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gI
15HJldHVybiB0cnVlO1xufVxuZnVuY3Rpb24gdG9TdHlsZU1hcChzdHIpIHtcbiAgY29uc3Qgc3R5bGVNYXAgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuICBmb3IgKGNvbnN0IGl0ZW0gb2Ygc3RyLnNwbGl0KFwiO1wiKSkge1xuICAgIGxldCBba2V5LCB2YWx1ZV0gPSBpdGVtLnNwbGl0KFwiOlwiKTtcbiAgICBrZXkgPSBrZXkudHJpbSgpO1xuICAgIHZhbHVlID0gdmFsdWUgJiYgdmFsdWUudHJpbSgpO1xuICAgIGlmIChrZXkgJiYgdmFsdWUpIHtcbiAgICAgIHN0eWxlTWFwLnNldChrZXksIHZhbHVlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHN0eWxlTWFwO1xufVxuZnVuY3Rpb24gaXNNYXBFcXVhbChhLCBiKSB7XG4gIGlmIChhLnNpemUgIT09IGIuc2l6ZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBhKSB7XG4gICAgaWYgKHZhbHVlICE9PSBiLmdldChrZXkpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuZnVuY3Rpb24gcmVzb2x2ZUNzc1ZhcnMoaW5zdGFuY2UsIHZub2RlLCBleHBlY3RlZE1hcCkge1xuICBjb25zdCByb290ID0gaW5zdGFuY2Uuc3ViVHJlZTtcbiAgaWYgKGluc3RhbmNlLmdldENzc1ZhcnMgJiYgKHZub2RlID09PSByb290IHx8IHJvb3QgJiYgcm9vdC50eXBlID09PSBGcmFnbWVudCAmJiByb290LmNoaWxkcmVuLmluY2x1ZGVzKHZub2RlKSkpIHtcbiAgICBjb25zdCBjc3NWYXJzID0gaW5zdGFuY2UuZ2V0Q3NzVmFycygpO1xuICAgIGZvciAoY29uc3Qga2V5IGluIGNzc1ZhcnMpIHtcbiAgICAgIGV4cGVjdGVkTWFwLnNldChgLS0ke2tleX1gLCBTdHJpbmcoY3NzVmFyc1trZXldKSk7XG4gICAgfVxuICB9XG4gIGlmICh2bm9kZSA9PT0gcm9vdCAmJiBpbnN0YW5jZS5wYXJlbnQpIHtcbiAgICByZXNvbHZlQ3NzVmFycyhpbnN0YW5jZS5wYXJlbnQsIGluc3RhbmNlLnZub2RlLCBleHBlY3RlZE1hcCk7XG4gIH1cbn1cblxubGV0IHN1cHBvcnRlZDtcbmxldCBwZXJmO1xuZnVuY3Rpb24gc3RhcnRNZWFzdXJlKGluc3RhbmNlLCB0eXBlKSB7XG4gIGlmIChpbnN0YW5jZS5hcHBDb250ZXh0LmNvbmZpZy5wZXJmb3JtYW5jZSAmJiBpc1N1cHBvcnRlZCgpKSB7XG4gICAgcGVyZi5tYXJrKGB2dWUtJHt0eXBlfS0ke2luc3RhbmNlLnVpZH1gKTtcbiAgfVxuICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB8fCBfX1ZVRV9QUk9EX0RFVlRPT0xTX18pIHtcbiAgICBkZXZ0b29sc1BlcmZTdGFydChpbnN0YW5jZSwgdHlwZSwgaXNTdXBwb3J0ZWQoKSA/IHBlcmYubm93KCkgOiBEYXRlLm5vdygpKTtcbiAgfVxufVxuZnVuY3Rpb24gZW5kTWVhc3VyZShpbnN0YW5jZSwgdHlwZSkge1xuICBpZiAoaW5zdGFuY2UuYXBwQ29udGV4dC5jb25maWcucGVyZm9ybWFuY2UgJiYgaXNTdXBwb3J0ZWQoKSkge1xuICAgIGNvbnN0IHN0YXJ0VGFnID0gYHZ1ZS0ke3R5cGV9LSR7aW5zdGFuY2UudWlkfWA7XG4gICAgY29uc3QgZW5kVGFnID0gc3RhcnRUYWcgKyBgOmVuZGA7XG4gICAgcGVyZi5tYXJrKGVuZFRhZyk7XG4gICAgcGVyZi5tZWFzdXJlKFxuICAgICAgYDwke2Zvcm1hdENvbXBvbmVudE5hbWUoaW5zdGFuY2UsIGluc3RhbmNlLnR5cGUpfT4gJHt0eXBlfWAsXG4gICAgICBzdGFydFRhZyxcbiAgICAgIGVuZFRhZ1xuICAgICk7XG4gICAgcGVyZi5jbGVhck1hcmtzKHN0YXJ0VGFnKTtcbiAgICBwZXJmLmNsZWFyTWFya3MoZW5kVGFnKTtcbiAgfVxuICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB8fCBfX1ZVRV9QUk9EX0RFVlRPT0xTX18pIHtcbiAgICBkZXZ0b29sc1BlcmZFbmQoaW5zdGFuY2UsIHR5cGUsIGlzU3VwcG9ydGVkKCkgPyBwZXJmLm5vdygpIDogRGF0ZS5ub3coKSk7XG4gIH1cbn1cbmZ1bmN0aW9uIGlzU3VwcG9ydGVkKCkge1xuICBpZiAoc3VwcG9ydGVkICE9PSB2b2lkIDApIHtcbiAgICByZXR1cm4gc3VwcG9ydGVkO1xuICB9XG4gIGlmICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiICYmIHdpbmRvdy5wZXJmb3JtYW5jZSkge1xuICAgIHN1cHBvcnRlZCA9IHRydWU7XG4gICAgcGVyZiA9IHdpbmRvdy5wZXJmb3JtYW5jZTtcbiAgfSBlbHNlIHtcbiAgICBzdXBwb3J0ZWQgPSBmYWxzZTtcbiAgfVxuICByZXR1cm4gc3VwcG9ydGVkO1xufVxuXG5mdW5jdGlvbiBpbml0RmVhdHVyZUZsYWdzKCkge1xuICBjb25zdCBuZWVkV2FybiA9IFtdO1xuICBpZiAodHlwZW9mIF9fVlVFX09QVElPTlNfQVBJX18gIT09IFwiYm9vbGVhblwiKSB7XG4gICAgISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSAmJiBuZWVkV2Fybi5wdXNoKGBfX1ZVRV9PUFRJT05TX0FQSV9fYCk7XG4gICAgZ2V0R2xvYmFsVGhpcygpLl9fVlVFX09QVElPTlNfQVBJX18gPSB0cnVlO1xuICB9XG4gIGlmICh0eXBlb2YgX19WVUVfUFJPRF9ERVZUT09MU19fICE9PSBcImJvb2xlYW5cIikge1xuICAgICEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgJiYgbmVlZFdhcm4ucHVzaChgX19WVUVfUFJPRF9ERVZUT09MU19fYCk7XG4gICAgZ2V0R2xvYmFsVGhpcygpLl9fVlVFX1BST0RfREVWVE9PTFNfXyA9IGZhbHNlO1xuICB9XG4gIGlmICh0eXBlb2YgX19WVUVfUFJPRF9IWURSQVRJT05fTUlTTUFUQ0hfREVUQUlMU19fICE9PSBcImJvb2xlYW5cIikge1xuICAgICEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgJiYgbmVlZFdhcm4ucHVzaChgX19WVUVfUFJPRF9IWURSQVRJT05fTUlTTUFUQ0hfREVUQUlMU19fYCk7XG4gICAgZ2V0R2xvYmFsVGhpcygpLl9fVlVFX1BST0RfSFlEUkFUSU9OX01JU01BVENIX0RFVEFJTFNfXyA9IGZhbHNlO1xuICB9XG4gIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpICYmIG5lZWRXYXJuLmxlbmd0aCkge1xuICAgIGNvbnN0IG11bHRpID0gbmVlZFdhcm4ubGVuZ3RoID4gMTtcbiAgICBjb25zb2xlLndhcm4oXG4gICAgICBgRmVhdHVyZSBmbGFnJHttdWx0aSA/IGBzYCA6IGBgfSAke25lZWRXYXJuLmpvaW4oXCIsIFwiKX0gJHttdWx0aSA/IGBhcmVgIDogYGlzYH0gbm90IGV4cGxpY2l0bHkgZGVmaW5lZC4gWW91IGFyZSBydW5uaW5nIHRoZSBlc20tYnVuZGxlciBidWlsZCBvZiBWdWUsIHdoaWNoIGV4cGVjdHMgdGhlc2UgY29tcGlsZS10aW1lIGZlYXR1cmUgZmxhZ3MgdG8gYmUgZ2xvYmFsbHkgaW5qZWN0ZWQgdmlhIHRoZSBidW5kbGVyIGNvbmZpZyBpbiBvcmRlciB0byBnZXQgYmV0dGVyIHRyZWUtc2hha2luZyBpbiB0aGUgcHJvZHVjdGlvbiBidW5kbGUuXG5cbkZvciBtb3JlIGRldGFpbHMsIHNlZSBodHRwczovL2xpbmsudnVlanMub3JnL2ZlYXR1cmUtZmxhZ3MuYFxuICAgICk7XG4gIH1cbn1cblxuY29uc3QgcXVldWVQb3N0UmVuZGVyRWZmZWN0ID0gcXVldWVFZmZlY3RXaXRoU3VzcGVuc2UgO1xuZnVuY3Rpb24gY3JlYXRlUmVuZGVyZXIob3B0aW9ucykge1xuICByZXR1cm4gYmFzZUNyZWF0ZVJlbmRlcmVyKG9wdGlvbnMpO1xufVxuZnVuY3Rpb24gY3JlYXRlSHlkcmF0aW9uUmVuZGVyZXIob3B0aW9ucykge1xuICByZXR1cm4gYmFzZUNyZWF0ZVJlbmRlcmVyKG9wdGlvbnMsIGNyZWF0ZUh5ZHJhdGlvbkZ1bmN0aW9ucyk7XG59XG5mdW5jdGlvbiBiYXNlQ3JlYXRlUmVuZGVyZXIob3B0aW9ucywgY3JlYXRlSHlkcmF0aW9uRm5zKSB7XG4gIHtcbiAgICBpbml0RmVhdHVyZUZsYWdzKCk7XG4gIH1cbiAgY29uc3QgdGFyZ2V0ID0gZ2V0R2xvYmFsVGh
15pcygpO1xuICB0YXJnZXQuX19WVUVfXyA9IHRydWU7XG4gIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHx8IF9fVlVFX1BST0RfREVWVE9PTFNfXykge1xuICAgIHNldERldnRvb2xzSG9vayQxKHRhcmdldC5fX1ZVRV9ERVZUT09MU19HTE9CQUxfSE9PS19fLCB0YXJnZXQpO1xuICB9XG4gIGNvbnN0IHtcbiAgICBpbnNlcnQ6IGhvc3RJbnNlcnQsXG4gICAgcmVtb3ZlOiBob3N0UmVtb3ZlLFxuICAgIHBhdGNoUHJvcDogaG9zdFBhdGNoUHJvcCxcbiAgICBjcmVhdGVFbGVtZW50OiBob3N0Q3JlYXRlRWxlbWVudCxcbiAgICBjcmVhdGVUZXh0OiBob3N0Q3JlYXRlVGV4dCxcbiAgICBjcmVhdGVDb21tZW50OiBob3N0Q3JlYXRlQ29tbWVudCxcbiAgICBzZXRUZXh0OiBob3N0U2V0VGV4dCxcbiAgICBzZXRFbGVtZW50VGV4dDogaG9zdFNldEVsZW1lbnRUZXh0LFxuICAgIHBhcmVudE5vZGU6IGhvc3RQYXJlbnROb2RlLFxuICAgIG5leHRTaWJsaW5nOiBob3N0TmV4dFNpYmxpbmcsXG4gICAgc2V0U2NvcGVJZDogaG9zdFNldFNjb3BlSWQgPSBOT09QLFxuICAgIGluc2VydFN0YXRpY0NvbnRlbnQ6IGhvc3RJbnNlcnRTdGF0aWNDb250ZW50XG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBwYXRjaCA9IChuMSwgbjIsIGNvbnRhaW5lciwgYW5jaG9yID0gbnVsbCwgcGFyZW50Q29tcG9uZW50ID0gbnVsbCwgcGFyZW50U3VzcGVuc2UgPSBudWxsLCBuYW1lc3BhY2UgPSB2b2lkIDAsIHNsb3RTY29wZUlkcyA9IG51bGwsIG9wdGltaXplZCA9ICEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgJiYgaXNIbXJVcGRhdGluZyA/IGZhbHNlIDogISFuMi5keW5hbWljQ2hpbGRyZW4pID0+IHtcbiAgICBpZiAobjEgPT09IG4yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChuMSAmJiAhaXNTYW1lVk5vZGVUeXBlKG4xLCBuMikpIHtcbiAgICAgIGFuY2hvciA9IGdldE5leHRIb3N0Tm9kZShuMSk7XG4gICAgICB1bm1vdW50KG4xLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCB0cnVlKTtcbiAgICAgIG4xID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKG4yLnBhdGNoRmxhZyA9PT0gLTIpIHtcbiAgICAgIG9wdGltaXplZCA9IGZhbHNlO1xuICAgICAgbjIuZHluYW1pY0NoaWxkcmVuID0gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgeyB0eXBlLCByZWYsIHNoYXBlRmxhZyB9ID0gbjI7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIFRleHQ6XG4gICAgICAgIHByb2Nlc3NUZXh0KG4xLCBuMiwgY29udGFpbmVyLCBhbmNob3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQ29tbWVudDpcbiAgICAgICAgcHJvY2Vzc0NvbW1lbnROb2RlKG4xLCBuMiwgY29udGFpbmVyLCBhbmNob3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgU3RhdGljOlxuICAgICAgICBpZiAobjEgPT0gbnVsbCkge1xuICAgICAgICAgIG1vdW50U3RhdGljTm9kZShuMiwgY29udGFpbmVyLCBhbmNob3IsIG5hbWVzcGFjZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSkge1xuICAgICAgICAgIHBhdGNoU3RhdGljTm9kZShuMSwgbjIsIGNvbnRhaW5lciwgbmFtZXNwYWNlKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRnJhZ21lbnQ6XG4gICAgICAgIHByb2Nlc3NGcmFnbWVudChcbiAgICAgICAgICBuMSxcbiAgICAgICAgICBuMixcbiAgICAgICAgICBjb250YWluZXIsXG4gICAgICAgICAgYW5jaG9yLFxuICAgICAgICAgIHBhcmVudENvbXBvbmVudCxcbiAgICAgICAgICBwYXJlbnRTdXNwZW5zZSxcbiAgICAgICAgICBuYW1lc3BhY2UsXG4gICAgICAgICAgc2xvdFNjb3BlSWRzLFxuICAgICAgICAgIG9wdGltaXplZFxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChzaGFwZUZsYWcgJiAxKSB7XG4gICAgICAgICAgcHJvY2Vzc0VsZW1lbnQoXG4gICAgICAgICAgICBuMSxcbiAgICAgICAgICAgIG4yLFxuICAgICAgICAgICAgY29udGFpbmVyLFxuICAgICAgICAgICAgYW5jaG9yLFxuICAgICAgICAgICAgcGFyZW50Q29tcG9uZW50LFxuICAgICAgICAgICAgcGFyZW50U3VzcGVuc2UsXG4gICAgICAgICAgICBuYW1lc3BhY2UsXG4gICAgICAgICAgICBzbG90U2NvcGVJZHMsXG4gICAgICAgICAgICBvcHRpbWl6ZWRcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYgKHNoYXBlRmxhZyAmIDYpIHtcbiAgICAgICAgICBwcm9jZXNzQ29tcG9uZW50KFxuICAgICAgICAgICAgbjEsXG4gICAgICAgICAgICBuMixcbiAgICAgICAgICAgIGNvbnRhaW5lcixcbiAgICAgICAgICAgIGFuY2hvcixcbiAgICAgICAgICAgIHBhcmVudENvbXBvbmVudCxcbiAgICAgICAgICAgIHBhcmVudFN1c3BlbnNlLFxuICAgICAgICAgICAgbmFtZXNwYWNlLFxuICAgICAgICAgICAgc2xvdFNjb3BlSWRzLFxuICAgICAgICAgICAgb3B0aW1pemVkXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChzaGFwZUZsYWcgJiA2NCkge1xuICAgICAgICAgIHR5cGUucHJvY2VzcyhcbiAgICAgICAgICAgIG4xLFxuICAgICAgICAgICAgbjIsXG4gICAgICAgICAgICBjb250YWluZXIsXG4gICAgICAgICAgICBhbmNob3IsXG4gICAgICAgICAgICBwYXJlbnRDb21wb25lbnQsXG4gICAgICAgICAgICBwYXJlbnRTdXNwZW5zZSxcbiAgICAgICAgICAgIG5hbWVzcGFjZSxcbiAgICAgICAgICAgIHNsb3RTY29wZUlkcyxcbiAgICAgICAgICAgIG9wdGltaXplZCxcbiAgICAgICAgICAgIGludGVybmFsc1xuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAoc2hhcGVGbGFnICYgMTI4KSB7XG4gICAgICAgICAgdHlwZS5wcm9jZXNzKFxuICAgICAgICAgICAgbjEsXG4gICAgICAgICAgICBuMixcbiAgICAgICAgICAgIGNvbnRhaW5lcixcbiAgICAgICAgICAgIGFuY2hvcixcbiAgICAgICAgICAgIHBhcmVudENvbXBvbmVudCxcbiAgICAgICAgICAgIHBhcmVudFN1c3BlbnNlLFxuICAgICAgICAgICAgbmFtZXNwYWNlLFxuICAgICAgICAgICAgc2xvdFNjb3BlSWRzLFxuICAgICAgICAgICAgb3B0aW1pemVkLFxuICAgICAgICAgICAgaW50ZXJuYWxzXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9k
15dWN0aW9uXCIpKSB7XG4gICAgICAgICAgd2FybiQxKFwiSW52YWxpZCBWTm9kZSB0eXBlOlwiLCB0eXBlLCBgKCR7dHlwZW9mIHR5cGV9KWApO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChyZWYgIT0gbnVsbCAmJiBwYXJlbnRDb21wb25lbnQpIHtcbiAgICAgIHNldFJlZihyZWYsIG4xICYmIG4xLnJlZiwgcGFyZW50U3VzcGVuc2UsIG4yIHx8IG4xLCAhbjIpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgcHJvY2Vzc1RleHQgPSAobjEsIG4yLCBjb250YWluZXIsIGFuY2hvcikgPT4ge1xuICAgIGlmIChuMSA9PSBudWxsKSB7XG4gICAgICBob3N0SW5zZXJ0KFxuICAgICAgICBuMi5lbCA9IGhvc3RDcmVhdGVUZXh0KG4yLmNoaWxkcmVuKSxcbiAgICAgICAgY29udGFpbmVyLFxuICAgICAgICBhbmNob3JcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGVsID0gbjIuZWwgPSBuMS5lbDtcbiAgICAgIGlmIChuMi5jaGlsZHJlbiAhPT0gbjEuY2hpbGRyZW4pIHtcbiAgICAgICAgaG9zdFNldFRleHQoZWwsIG4yLmNoaWxkcmVuKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIGNvbnN0IHByb2Nlc3NDb21tZW50Tm9kZSA9IChuMSwgbjIsIGNvbnRhaW5lciwgYW5jaG9yKSA9PiB7XG4gICAgaWYgKG4xID09IG51bGwpIHtcbiAgICAgIGhvc3RJbnNlcnQoXG4gICAgICAgIG4yLmVsID0gaG9zdENyZWF0ZUNvbW1lbnQobjIuY2hpbGRyZW4gfHwgXCJcIiksXG4gICAgICAgIGNvbnRhaW5lcixcbiAgICAgICAgYW5jaG9yXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBuMi5lbCA9IG4xLmVsO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgbW91bnRTdGF0aWNOb2RlID0gKG4yLCBjb250YWluZXIsIGFuY2hvciwgbmFtZXNwYWNlKSA9PiB7XG4gICAgW24yLmVsLCBuMi5hbmNob3JdID0gaG9zdEluc2VydFN0YXRpY0NvbnRlbnQoXG4gICAgICBuMi5jaGlsZHJlbixcbiAgICAgIGNvbnRhaW5lcixcbiAgICAgIGFuY2hvcixcbiAgICAgIG5hbWVzcGFjZSxcbiAgICAgIG4yLmVsLFxuICAgICAgbjIuYW5jaG9yXG4gICAgKTtcbiAgfTtcbiAgY29uc3QgcGF0Y2hTdGF0aWNOb2RlID0gKG4xLCBuMiwgY29udGFpbmVyLCBuYW1lc3BhY2UpID0+IHtcbiAgICBpZiAobjIuY2hpbGRyZW4gIT09IG4xLmNoaWxkcmVuKSB7XG4gICAgICBjb25zdCBhbmNob3IgPSBob3N0TmV4dFNpYmxpbmcobjEuYW5jaG9yKTtcbiAgICAgIHJlbW92ZVN0YXRpY05vZGUobjEpO1xuICAgICAgW24yLmVsLCBuMi5hbmNob3JdID0gaG9zdEluc2VydFN0YXRpY0NvbnRlbnQoXG4gICAgICAgIG4yLmNoaWxkcmVuLFxuICAgICAgICBjb250YWluZXIsXG4gICAgICAgIGFuY2hvcixcbiAgICAgICAgbmFtZXNwYWNlXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBuMi5lbCA9IG4xLmVsO1xuICAgICAgbjIuYW5jaG9yID0gbjEuYW5jaG9yO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgbW92ZVN0YXRpY05vZGUgPSAoeyBlbCwgYW5jaG9yIH0sIGNvbnRhaW5lciwgbmV4dFNpYmxpbmcpID0+IHtcbiAgICBsZXQgbmV4dDtcbiAgICB3aGlsZSAoZWwgJiYgZWwgIT09IGFuY2hvcikge1xuICAgICAgbmV4dCA9IGhvc3ROZXh0U2libGluZyhlbCk7XG4gICAgICBob3N0SW5zZXJ0KGVsLCBjb250YWluZXIsIG5leHRTaWJsaW5nKTtcbiAgICAgIGVsID0gbmV4dDtcbiAgICB9XG4gICAgaG9zdEluc2VydChhbmNob3IsIGNvbnRhaW5lciwgbmV4dFNpYmxpbmcpO1xuICB9O1xuICBjb25zdCByZW1vdmVTdGF0aWNOb2RlID0gKHsgZWwsIGFuY2hvciB9KSA9PiB7XG4gICAgbGV0IG5leHQ7XG4gICAgd2hpbGUgKGVsICYmIGVsICE9PSBhbmNob3IpIHtcbiAgICAgIG5leHQgPSBob3N0TmV4dFNpYmxpbmcoZWwpO1xuICAgICAgaG9zdFJlbW92ZShlbCk7XG4gICAgICBlbCA9IG5leHQ7XG4gICAgfVxuICAgIGhvc3RSZW1vdmUoYW5jaG9yKTtcbiAgfTtcbiAgY29uc3QgcHJvY2Vzc0VsZW1lbnQgPSAobjEsIG4yLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgbmFtZXNwYWNlLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCkgPT4ge1xuICAgIGlmIChuMi50eXBlID09PSBcInN2Z1wiKSB7XG4gICAgICBuYW1lc3BhY2UgPSBcInN2Z1wiO1xuICAgIH0gZWxzZSBpZiAobjIudHlwZSA9PT0gXCJtYXRoXCIpIHtcbiAgICAgIG5hbWVzcGFjZSA9IFwibWF0aG1sXCI7XG4gICAgfVxuICAgIGlmIChuMSA9PSBudWxsKSB7XG4gICAgICBtb3VudEVsZW1lbnQoXG4gICAgICAgIG4yLFxuICAgICAgICBjb250YWluZXIsXG4gICAgICAgIGFuY2hvcixcbiAgICAgICAgcGFyZW50Q29tcG9uZW50LFxuICAgICAgICBwYXJlbnRTdXNwZW5zZSxcbiAgICAgICAgbmFtZXNwYWNlLFxuICAgICAgICBzbG90U2NvcGVJZHMsXG4gICAgICAgIG9wdGltaXplZFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGF0Y2hFbGVtZW50KFxuICAgICAgICBuMSxcbiAgICAgICAgbjIsXG4gICAgICAgIHBhcmVudENvbXBvbmVudCxcbiAgICAgICAgcGFyZW50U3VzcGVuc2UsXG4gICAgICAgIG5hbWVzcGFjZSxcbiAgICAgICAgc2xvdFNjb3BlSWRzLFxuICAgICAgICBvcHRpbWl6ZWRcbiAgICAgICk7XG4gICAgfVxuICB9O1xuICBjb25zdCBtb3VudEVsZW1lbnQgPSAodm5vZGUsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBuYW1lc3BhY2UsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKSA9PiB7XG4gICAgbGV0IGVsO1xuICAgIGxldCB2bm9kZUhvb2s7XG4gICAgY29uc3QgeyBwcm9wcywgc2hhcGVGbGFnLCB0cmFuc2l0aW9uLCBkaXJzIH0gPSB2bm9kZTtcbiAgICBlbCA9IHZub2RlLmVsID0gaG9zdENyZWF0ZUVsZW1lbnQoXG4gICAgICB2bm9kZS50eXBlLFxuICAgICAgbmFtZXNwYWNlLFxuICAgICAgcHJvcHMgJiYgcHJvcHMuaXMsXG4gICAgICBwcm9wc1xuICAgICk7XG4gICAgaWYgKHNoYXBlRmxhZyAmIDgpIHtcbiAgICAgIGhvc3RTZXRFbGVtZW50VGV4dChlbCwgdm5vZGUuY2hpbGRyZW4pO1xuICAgIH0gZWxzZSBpZiAoc2hhcGVGbGFnICYgMTYpIHtcbiAgICAgIG1vdW50Q2hpbGRyZW4oXG4gICAgICAgI
15HZub2RlLmNoaWxkcmVuLFxuICAgICAgICBlbCxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgcGFyZW50Q29tcG9uZW50LFxuICAgICAgICBwYXJlbnRTdXNwZW5zZSxcbiAgICAgICAgcmVzb2x2ZUNoaWxkcmVuTmFtZXNwYWNlKHZub2RlLCBuYW1lc3BhY2UpLFxuICAgICAgICBzbG90U2NvcGVJZHMsXG4gICAgICAgIG9wdGltaXplZFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKGRpcnMpIHtcbiAgICAgIGludm9rZURpcmVjdGl2ZUhvb2sodm5vZGUsIG51bGwsIHBhcmVudENvbXBvbmVudCwgXCJjcmVhdGVkXCIpO1xuICAgIH1cbiAgICBzZXRTY29wZUlkKGVsLCB2bm9kZSwgdm5vZGUuc2NvcGVJZCwgc2xvdFNjb3BlSWRzLCBwYXJlbnRDb21wb25lbnQpO1xuICAgIGlmIChwcm9wcykge1xuICAgICAgZm9yIChjb25zdCBrZXkgaW4gcHJvcHMpIHtcbiAgICAgICAgaWYgKGtleSAhPT0gXCJ2YWx1ZVwiICYmICFpc1Jlc2VydmVkUHJvcChrZXkpKSB7XG4gICAgICAgICAgaG9zdFBhdGNoUHJvcChlbCwga2V5LCBudWxsLCBwcm9wc1trZXldLCBuYW1lc3BhY2UsIHBhcmVudENvbXBvbmVudCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChcInZhbHVlXCIgaW4gcHJvcHMpIHtcbiAgICAgICAgaG9zdFBhdGNoUHJvcChlbCwgXCJ2YWx1ZVwiLCBudWxsLCBwcm9wcy52YWx1ZSwgbmFtZXNwYWNlKTtcbiAgICAgIH1cbiAgICAgIGlmICh2bm9kZUhvb2sgPSBwcm9wcy5vblZub2RlQmVmb3JlTW91bnQpIHtcbiAgICAgICAgaW52b2tlVk5vZGVIb29rKHZub2RlSG9vaywgcGFyZW50Q29tcG9uZW50LCB2bm9kZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHx8IF9fVlVFX1BST0RfREVWVE9PTFNfXykge1xuICAgICAgZGVmKGVsLCBcIl9fdm5vZGVcIiwgdm5vZGUsIHRydWUpO1xuICAgICAgZGVmKGVsLCBcIl9fdnVlUGFyZW50Q29tcG9uZW50XCIsIHBhcmVudENvbXBvbmVudCwgdHJ1ZSk7XG4gICAgfVxuICAgIGlmIChkaXJzKSB7XG4gICAgICBpbnZva2VEaXJlY3RpdmVIb29rKHZub2RlLCBudWxsLCBwYXJlbnRDb21wb25lbnQsIFwiYmVmb3JlTW91bnRcIik7XG4gICAgfVxuICAgIGNvbnN0IG5lZWRDYWxsVHJhbnNpdGlvbkhvb2tzID0gbmVlZFRyYW5zaXRpb24ocGFyZW50U3VzcGVuc2UsIHRyYW5zaXRpb24pO1xuICAgIGlmIChuZWVkQ2FsbFRyYW5zaXRpb25Ib29rcykge1xuICAgICAgdHJhbnNpdGlvbi5iZWZvcmVFbnRlcihlbCk7XG4gICAgfVxuICAgIGhvc3RJbnNlcnQoZWwsIGNvbnRhaW5lciwgYW5jaG9yKTtcbiAgICBpZiAoKHZub2RlSG9vayA9IHByb3BzICYmIHByb3BzLm9uVm5vZGVNb3VudGVkKSB8fCBuZWVkQ2FsbFRyYW5zaXRpb25Ib29rcyB8fCBkaXJzKSB7XG4gICAgICBxdWV1ZVBvc3RSZW5kZXJFZmZlY3QoKCkgPT4ge1xuICAgICAgICB2bm9kZUhvb2sgJiYgaW52b2tlVk5vZGVIb29rKHZub2RlSG9vaywgcGFyZW50Q29tcG9uZW50LCB2bm9kZSk7XG4gICAgICAgIG5lZWRDYWxsVHJhbnNpdGlvbkhvb2tzICYmIHRyYW5zaXRpb24uZW50ZXIoZWwpO1xuICAgICAgICBkaXJzICYmIGludm9rZURpcmVjdGl2ZUhvb2sodm5vZGUsIG51bGwsIHBhcmVudENvbXBvbmVudCwgXCJtb3VudGVkXCIpO1xuICAgICAgfSwgcGFyZW50U3VzcGVuc2UpO1xuICAgIH1cbiAgfTtcbiAgY29uc3Qgc2V0U2NvcGVJZCA9IChlbCwgdm5vZGUsIHNjb3BlSWQsIHNsb3RTY29wZUlkcywgcGFyZW50Q29tcG9uZW50KSA9PiB7XG4gICAgaWYgKHNjb3BlSWQpIHtcbiAgICAgIGhvc3RTZXRTY29wZUlkKGVsLCBzY29wZUlkKTtcbiAgICB9XG4gICAgaWYgKHNsb3RTY29wZUlkcykge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzbG90U2NvcGVJZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaG9zdFNldFNjb3BlSWQoZWwsIHNsb3RTY29wZUlkc1tpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChwYXJlbnRDb21wb25lbnQpIHtcbiAgICAgIGxldCBzdWJUcmVlID0gcGFyZW50Q29tcG9uZW50LnN1YlRyZWU7XG4gICAgICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSAmJiBzdWJUcmVlLnBhdGNoRmxhZyA+IDAgJiYgc3ViVHJlZS5wYXRjaEZsYWcgJiAyMDQ4KSB7XG4gICAgICAgIHN1YlRyZWUgPSBmaWx0ZXJTaW5nbGVSb290KHN1YlRyZWUuY2hpbGRyZW4pIHx8IHN1YlRyZWU7XG4gICAgICB9XG4gICAgICBpZiAodm5vZGUgPT09IHN1YlRyZWUpIHtcbiAgICAgICAgY29uc3QgcGFyZW50Vk5vZGUgPSBwYXJlbnRDb21wb25lbnQudm5vZGU7XG4gICAgICAgIHNldFNjb3BlSWQoXG4gICAgICAgICAgZWwsXG4gICAgICAgICAgcGFyZW50Vk5vZGUsXG4gICAgICAgICAgcGFyZW50Vk5vZGUuc2NvcGVJZCxcbiAgICAgICAgICBwYXJlbnRWTm9kZS5zbG90U2NvcGVJZHMsXG4gICAgICAgICAgcGFyZW50Q29tcG9uZW50LnBhcmVudFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgY29uc3QgbW91bnRDaGlsZHJlbiA9IChjaGlsZHJlbiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIG5hbWVzcGFjZSwgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQsIHN0YXJ0ID0gMCkgPT4ge1xuICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBjaGlsZCA9IGNoaWxkcmVuW2ldID0gb3B0aW1pemVkID8gY2xvbmVJZk1vdW50ZWQoY2hpbGRyZW5baV0pIDogbm9ybWFsaXplVk5vZGUoY2hpbGRyZW5baV0pO1xuICAgICAgcGF0Y2goXG4gICAgICAgIG51bGwsXG4gICAgICAgIGNoaWxkLFxuICAgICAgICBjb250YWluZXIsXG4gICAgICAgIGFuY2hvcixcbiAgICAgICAgcGFyZW50Q29tcG9uZW50LFxuICAgICAgICBwYXJlbnRTdXNwZW5zZSxcbiAgICAgICAgbmFtZXNwYWNlLFxuICAgICAgICBzbG90U2NvcGVJZHMsXG4gICAgICAgIG9wdGltaXplZFxuICAgICAgKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IHBhdGNoRWxlbWVudCA9IChuMSwgbjIsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIG5hbWVzcGFjZSwgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpID0+IHtcbiAgICBjb25zdCBlbCA9IG4yLmVsID0gbjEuZWw7XG4gICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgfHwgX19WVUVfUFJPRF9ERVZUT09MU19fKSB7XG4gICAgICBlbC5fX3Zub2RlID0gbjI7XG4gICAgfVxuICAgIGxldCB7IHBhdGNoRmxhZywgZHluYW1pY0NoaWxkcmVuLCBkaXJzIH0gPSBuMjtcbiAgICBwYXRjaEZsYWcgfD0gbjEucGF0Y2hGbGFnICYgMTY7XG4gICAgY29uc3Qgb2xkUHJvcHMgP
15SBuMS5wcm9wcyB8fCBFTVBUWV9PQko7XG4gICAgY29uc3QgbmV3UHJvcHMgPSBuMi5wcm9wcyB8fCBFTVBUWV9PQko7XG4gICAgbGV0IHZub2RlSG9vaztcbiAgICBwYXJlbnRDb21wb25lbnQgJiYgdG9nZ2xlUmVjdXJzZShwYXJlbnRDb21wb25lbnQsIGZhbHNlKTtcbiAgICBpZiAodm5vZGVIb29rID0gbmV3UHJvcHMub25Wbm9kZUJlZm9yZVVwZGF0ZSkge1xuICAgICAgaW52b2tlVk5vZGVIb29rKHZub2RlSG9vaywgcGFyZW50Q29tcG9uZW50LCBuMiwgbjEpO1xuICAgIH1cbiAgICBpZiAoZGlycykge1xuICAgICAgaW52b2tlRGlyZWN0aXZlSG9vayhuMiwgbjEsIHBhcmVudENvbXBvbmVudCwgXCJiZWZvcmVVcGRhdGVcIik7XG4gICAgfVxuICAgIHBhcmVudENvbXBvbmVudCAmJiB0b2dnbGVSZWN1cnNlKHBhcmVudENvbXBvbmVudCwgdHJ1ZSk7XG4gICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgJiYgaXNIbXJVcGRhdGluZykge1xuICAgICAgcGF0Y2hGbGFnID0gMDtcbiAgICAgIG9wdGltaXplZCA9IGZhbHNlO1xuICAgICAgZHluYW1pY0NoaWxkcmVuID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKG9sZFByb3BzLmlubmVySFRNTCAmJiBuZXdQcm9wcy5pbm5lckhUTUwgPT0gbnVsbCB8fCBvbGRQcm9wcy50ZXh0Q29udGVudCAmJiBuZXdQcm9wcy50ZXh0Q29udGVudCA9PSBudWxsKSB7XG4gICAgICBob3N0U2V0RWxlbWVudFRleHQoZWwsIFwiXCIpO1xuICAgIH1cbiAgICBpZiAoZHluYW1pY0NoaWxkcmVuKSB7XG4gICAgICBwYXRjaEJsb2NrQ2hpbGRyZW4oXG4gICAgICAgIG4xLmR5bmFtaWNDaGlsZHJlbixcbiAgICAgICAgZHluYW1pY0NoaWxkcmVuLFxuICAgICAgICBlbCxcbiAgICAgICAgcGFyZW50Q29tcG9uZW50LFxuICAgICAgICBwYXJlbnRTdXNwZW5zZSxcbiAgICAgICAgcmVzb2x2ZUNoaWxkcmVuTmFtZXNwYWNlKG4yLCBuYW1lc3BhY2UpLFxuICAgICAgICBzbG90U2NvcGVJZHNcbiAgICAgICk7XG4gICAgICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSkge1xuICAgICAgICB0cmF2ZXJzZVN0YXRpY0NoaWxkcmVuKG4xLCBuMik7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghb3B0aW1pemVkKSB7XG4gICAgICBwYXRjaENoaWxkcmVuKFxuICAgICAgICBuMSxcbiAgICAgICAgbjIsXG4gICAgICAgIGVsLFxuICAgICAgICBudWxsLFxuICAgICAgICBwYXJlbnRDb21wb25lbnQsXG4gICAgICAgIHBhcmVudFN1c3BlbnNlLFxuICAgICAgICByZXNvbHZlQ2hpbGRyZW5OYW1lc3BhY2UobjIsIG5hbWVzcGFjZSksXG4gICAgICAgIHNsb3RTY29wZUlkcyxcbiAgICAgICAgZmFsc2VcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChwYXRjaEZsYWcgPiAwKSB7XG4gICAgICBpZiAocGF0Y2hGbGFnICYgMTYpIHtcbiAgICAgICAgcGF0Y2hQcm9wcyhlbCwgb2xkUHJvcHMsIG5ld1Byb3BzLCBwYXJlbnRDb21wb25lbnQsIG5hbWVzcGFjZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocGF0Y2hGbGFnICYgMikge1xuICAgICAgICAgIGlmIChvbGRQcm9wcy5jbGFzcyAhPT0gbmV3UHJvcHMuY2xhc3MpIHtcbiAgICAgICAgICAgIGhvc3RQYXRjaFByb3AoZWwsIFwiY2xhc3NcIiwgbnVsbCwgbmV3UHJvcHMuY2xhc3MsIG5hbWVzcGFjZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChwYXRjaEZsYWcgJiA0KSB7XG4gICAgICAgICAgaG9zdFBhdGNoUHJvcChlbCwgXCJzdHlsZVwiLCBvbGRQcm9wcy5zdHlsZSwgbmV3UHJvcHMuc3R5bGUsIG5hbWVzcGFjZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhdGNoRmxhZyAmIDgpIHtcbiAgICAgICAgICBjb25zdCBwcm9wc1RvVXBkYXRlID0gbjIuZHluYW1pY1Byb3BzO1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvcHNUb1VwZGF0ZS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3Qga2V5ID0gcHJvcHNUb1VwZGF0ZVtpXTtcbiAgICAgICAgICAgIGNvbnN0IHByZXYgPSBvbGRQcm9wc1trZXldO1xuICAgICAgICAgICAgY29uc3QgbmV4dCA9IG5ld1Byb3BzW2tleV07XG4gICAgICAgICAgICBpZiAobmV4dCAhPT0gcHJldiB8fCBrZXkgPT09IFwidmFsdWVcIikge1xuICAgICAgICAgICAgICBob3N0UGF0Y2hQcm9wKGVsLCBrZXksIHByZXYsIG5leHQsIG5hbWVzcGFjZSwgcGFyZW50Q29tcG9uZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChwYXRjaEZsYWcgJiAxKSB7XG4gICAgICAgIGlmIChuMS5jaGlsZHJlbiAhPT0gbjIuY2hpbGRyZW4pIHtcbiAgICAgICAgICBob3N0U2V0RWxlbWVudFRleHQoZWwsIG4yLmNoaWxkcmVuKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIW9wdGltaXplZCAmJiBkeW5hbWljQ2hpbGRyZW4gPT0gbnVsbCkge1xuICAgICAgcGF0Y2hQcm9wcyhlbCwgb2xkUHJvcHMsIG5ld1Byb3BzLCBwYXJlbnRDb21wb25lbnQsIG5hbWVzcGFjZSk7XG4gICAgfVxuICAgIGlmICgodm5vZGVIb29rID0gbmV3UHJvcHMub25Wbm9kZVVwZGF0ZWQpIHx8IGRpcnMpIHtcbiAgICAgIHF1ZXVlUG9zdFJlbmRlckVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHZub2RlSG9vayAmJi
15BpbnZva2VWTm9kZUhvb2sodm5vZGVIb29rLCBwYXJlbnRDb21wb25lbnQsIG4yLCBuMSk7XG4gICAgICAgIGRpcnMgJiYgaW52b2tlRGlyZWN0aXZlSG9vayhuMiwgbjEsIHBhcmVudENvbXBvbmVudCwgXCJ1cGRhdGVkXCIpO1xuICAgICAgfSwgcGFyZW50U3VzcGVuc2UpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgcGF0Y2hCbG9ja0NoaWxkcmVuID0gKG9sZENoaWxkcmVuLCBuZXdDaGlsZHJlbiwgZmFsbGJhY2tDb250YWluZXIsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIG5hbWVzcGFjZSwgc2xvdFNjb3BlSWRzKSA9PiB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuZXdDaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3Qgb2xkVk5vZGUgPSBvbGRDaGlsZHJlbltpXTtcbiAgICAgIGNvbnN0IG5ld1ZOb2RlID0gbmV3Q2hpbGRyZW5baV07XG4gICAgICBjb25zdCBjb250YWluZXIgPSAoXG4gICAgICAgIC8vIG9sZFZOb2RlIG1heSBiZSBhbiBlcnJvcmVkIGFzeW5jIHNldHVwKCkgY29tcG9uZW50IGluc2lkZSBTdXNwZW5zZVxuICAgICAgICAvLyB3aGljaCB3aWxsIG5vdCBoYXZlIGEgbW91bnRlZCBlbGVtZW50XG4gICAgICAgIG9sZFZOb2RlLmVsICYmIC8vIC0gSW4gdGhlIGNhc2Ugb2YgYSBGcmFnbWVudCwgd2UgbmVlZCB0byBwcm92aWRlIHRoZSBhY3R1YWwgcGFyZW50XG4gICAgICAgIC8vIG9mIHRoZSBGcmFnbWVudCBpdHNlbGYgc28gaXQgY2FuIG1vdmUgaXRzIGNoaWxkcmVuLlxuICAgICAgICAob2xkVk5vZGUudHlwZSA9PT0gRnJhZ21lbnQgfHwgLy8gLSBJbiB0aGUgY2FzZSBvZiBkaWZmZXJlbnQgbm9kZXMsIHRoZXJlIGlzIGdvaW5nIHRvIGJlIGEgcmVwbGFjZW1lbnRcbiAgICAgICAgLy8gd2hpY2ggYWxzbyByZXF1aXJlcyB0aGUgY29ycmVjdCBwYXJlbnQgY29udGFpbmVyXG4gICAgICAgICFpc1NhbWVWTm9kZVR5cGUob2xkVk5vZGUsIG5ld1ZOb2RlKSB8fCAvLyAtIEluIHRoZSBjYXNlIG9mIGEgY29tcG9uZW50LCBpdCBjb3VsZCBjb250YWluIGFueXRoaW5nLlxuICAgICAgICBvbGRWTm9kZS5zaGFwZUZsYWcgJiAoNiB8IDY0KSkgPyBob3N0UGFyZW50Tm9kZShvbGRWTm9kZS5lbCkgOiAoXG4gICAgICAgICAgLy8gSW4gb3RoZXIgY2FzZXMsIHRoZSBwYXJlbnQgY29udGFpbmVyIGlzIG5vdCBhY3R1YWxseSB1c2VkIHNvIHdlXG4gICAgICAgICAgLy8ganVzdCBwYXNzIHRoZSBibG9jayBlbGVtZW50IGhlcmUgdG8gYXZvaWQgYSBET00gcGFyZW50Tm9kZSBjYWxsLlxuICAgICAgICAgIGZhbGxiYWNrQ29udGFpbmVyXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgICBwYXRjaChcbiAgICAgICAgb2xkVk5vZGUsXG4gICAgICAgIG5ld1ZOb2RlLFxuICAgICAgICBjb250YWluZXIsXG4gICAgICAgIG51bGwsXG4gICAgICAgIHBhcmVudENvbXBvbmVudCxcbiAgICAgICAgcGFyZW50U3VzcGVuc2UsXG4gICAgICAgIG5hbWVzcGFjZSxcbiAgICAgICAgc2xvdFNjb3BlSWRzLFxuICAgICAgICB0cnVlXG4gICAgICApO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgcGF0Y2hQcm9wcyA9IChlbCwgb2xkUHJvcHMsIG5ld1Byb3BzLCBwYXJlbnRDb21wb25lbnQsIG5hbWVzcGFjZSkgPT4ge1xuICAgIGlmIChvbGRQcm9wcyAhPT0gbm
15V3UHJvcHMpIHtcbiAgICAgIGlmIChvbGRQcm9wcyAhPT0gRU1QVFlfT0JKKSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIG9sZFByb3BzKSB7XG4gICAgICAgICAgaWYgKCFpc1Jlc2VydmVkUHJvcChrZXkpICYmICEoa2V5IGluIG5ld1Byb3BzKSkge1xuICAgICAgICAgICAgaG9zdFBhdGNoUHJvcChcbiAgICAgICAgICAgICAgZWwsXG4gICAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgICAgb2xkUHJvcHNba2V5XSxcbiAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgbmFtZXNwYWNlLFxuICAgICAgICAgICAgICBwYXJlbnRDb21wb25lbnRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBuZXdQcm9wcykge1xuICAgICAgICBpZiAoaXNSZXNlcnZlZFByb3Aoa2V5KSkgY29udGludWU7XG4gICAgICAgIGNvbnN0IG5leHQgPSBuZXdQcm9wc1trZXldO1xuICAgICAgICBjb25zdCBwcmV2ID0gb2xkUHJvcHNba2V5XTtcbiAgICAgICAgaWYgKG5leHQgIT09IHByZXYgJiYga2V5ICE9PSBcInZhbHVlXCIpIHtcbiAgICAgICAgICBob3N0UGF0Y2hQcm9wKGVsLCBrZXksIHByZXYsIG5leHQsIG5hbWVzcGFjZSwgcGFyZW50Q29tcG9uZW50KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKFwidmFsdWVcIiBpbiBuZXdQcm9wcykge1xuICAgICAgICBob3N0UGF0Y2hQcm9wKGVsLCBcInZhbHVlXCIsIG9sZFByb3BzLnZhbHVlLCBuZXdQcm9wcy52YWx1ZSwgbmFtZXNwYWNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIGNvbnN0IHByb2Nlc3NGcmFnbWVudCA9IChuMSwgbjIsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBuYW1lc3BhY2UsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkKSA9PiB7XG4gICAgY29uc3QgZnJhZ21lbnRTdGFydEFuY2hvciA9IG4yLmVsID0gbjEgPyBuMS5lbCA6IGhvc3RDcmVhdGVUZXh0KFwiXCIpO1xuICAgIGNvbnN0IGZyYWdtZW50RW5kQW5jaG9yID0gbjIuYW5jaG9yID0gbjEgPyBuMS5hbmNob3IgOiBob3N0Q3JlYXRlVGV4dChcIlwiKTtcbiAgICBsZXQgeyBwYXRjaEZsYWcsIGR5bmFtaWNDaGlsZHJlbiwgc2xvdFNjb3BlSWRzOiBmcmFnbWVudFNsb3RTY29wZUlkcyB9ID0gbjI7XG4gICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgJiYgLy8gIzU1MjMgZGV2IHJvb3QgZnJhZ21lbnQgbWF5IGluaGVyaXQgZGlyZWN0aXZlc1xuICAgIChpc0htclVwZGF0aW5nIHx8IHBhdGNoRmxhZyAmIDIwNDgpKSB7XG4gICAgICBwYXRjaEZsYWcgPSAwO1xuICAgICAgb3B0aW1pemVkID0gZmFsc2U7XG4gICAgICBkeW5hbWljQ2hpbGRyZW4gPSBudWxsO1xuICAgIH1cbiAgICBpZiAoZnJhZ21lbnRTbG90U2NvcGVJZHMpIHtcbiAgICAgIHNsb3RTY29wZUlkcyA9IHNsb3RTY29wZUlkcyA/IHNsb3RTY29wZUlkcy5jb25jYXQoZnJhZ21lbnRTbG90U2NvcGVJZHMpIDogZnJhZ21lbnRTbG90U2NvcGVJZHM7XG4gICAgfVxuICAgIGlmIChuMSA9PSBudWxsKSB7XG4gICAgICBob3N0SW5zZXJ0KGZyYWdtZW50U3RhcnRBbmNob3IsIGNvbnRhaW5lciwgYW5jaG9yKTtcbiAgICAgIGhvc3RJbnNlcnQoZnJhZ21lbnRFbmRBbmNob3IsIGNvbnRhaW5lciwgYW5jaG9yKTtcbiAgICAgIG1vdW50Q2hpbGRyZW4oXG4gICAgICAgIC8vICMxMDAwN1xuICAgICAgICAvLyBzdWNoIGZyYWdtZW50IGxpa2UgYDw+PC8+YCB3aWxsIGJlIGNvbXBpbGVkIGludG9cbiAgICAgICAgLy8gYSBmcmFnbWVudCB3aGljaCBkb2Vzbid0IGhhdmUgYSBjaGlsZHJlbi5cbiAgICAgICAgLy8gSW4gdGhpcyBjYXNlIGZhbGxiYWNrIHRvIGFuIGVtcHR5IGFycmF5XG4gICAgICAgIG4yLmNoaWxkcmVuIHx8IFtdLFxuICAgICAgICBjb250YWluZXIsXG4gICAgICAgIGZyYWdtZW50RW5kQW5jaG9yLFxuICAgICAgICBwYXJlbnRDb21wb25lbnQsXG4gICAgICAgIHBhcmVudFN1c3BlbnNlLFxuICAgICAgICBuYW1lc3BhY2UsXG4gICAgICAgIHNsb3RTY29wZUlkcyxcbiAgICAgICAgb3B0aW1pemVkXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocGF0Y2hGbGFnID4gMCAmJiBwYXRjaEZsYWcgJiA2NCAmJiBkeW5hbWljQ2hpbGRyZW4gJiYgLy8gIzI3MTUgdGhlIHByZXZpb3VzIGZyYWdtZW50IGNvdWxkJ3ZlIGJlZW4gYSBCQUlMZWQgb25lIGFzIGEgcmVzdWx0XG4gICAgICAvLyBvZiByZW5kZXJTbG90KCkgd2l0aCBubyB2YWxpZCBjaGlsZHJlblxuICAgICAgbjEuZHluYW1pY0NoaWxkcmVuKSB7XG4gICAgICAgIHBhdGNoQmxvY2tDaGlsZHJlbihcbiAgICAgICAgICBuMS5keW5hbWljQ2hpbGRyZW4sXG4gICAgICAgICAgZHluYW1pY0NoaWxkcmVuLFxuICAgICAgICAgIGNvbnRhaW5lcixcbiAgICAgICAgICBwYXJlbnRDb21wb25lbnQsXG4gICAgICAgICAgcGFyZW50U3VzcGVuc2UsXG4gICAgICAgICAgbmFtZXNwYWNlLFxuICAgICAgICAgIHNsb3RTY29wZUlkc1xuICAgICAgICApO1xuICAgICAgICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSkge1xuICAgICAgICAgIHRyYXZlcnNlU3RhdGljQ2hpbGRyZW4objEsIG4yKTtcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAvLyAjMjA4MCBpZiB0aGUgc3RhYmxlIGZyYWdtZW50IGhhcyBhIGtleSwgaXQncyBhIDx0ZW1wbGF0ZSB2LWZvcj4gdGhhdCBtYXlcbiAgICAgICAgICAvLyAgZ2V0IG1vdmVkIGFyb3VuZC4gTWFrZSBzdXJlIGFsbCByb290IGxldmVsIHZub2RlcyBpbmhlcml0IGVsLlxuICAgICAgICAgIC8vICMyMTM0IG9yIGlmIGl0J3MgYSBjb21wb25lbnQgcm9vdCwgaXQgbWF5IGFsc28gZ2V0IG1vdmVkIGFyb3VuZFxuICAgICAgICAgIC8vIGFzIHRoZSBjb21wb25lbnQgaXMgYmVpbmcgbW92ZWQuXG4gICAgICAgICAgbjIua2V5ICE9IG51bGwgfHwgcGFyZW50Q29tcG9uZW50ICYmIG4yID09PSBwYXJlbnRDb21wb25lbnQuc3ViVHJlZVxuICAgICAgICApIHtcbiAgICAgICAgICB0cmF2ZXJzZVN0YXRpY0NoaWxkcmVuKFxuICAgICAgICAgICAgbjEsXG4gICAgICAgICAgICBuMixcbiAgICAgICAgICAgI
15HRydWVcbiAgICAgICAgICAgIC8qIHNoYWxsb3cgKi9cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXRjaENoaWxkcmVuKFxuICAgICAgICAgIG4xLFxuICAgICAgICAgIG4yLFxuICAgICAgICAgIGNvbnRhaW5lcixcbiAgICAgICAgICBmcmFnbWVudEVuZEFuY2hvcixcbiAgICAgICAgICBwYXJlbnRDb21wb25lbnQsXG4gICAgICAgICAgcGFyZW50U3VzcGVuc2UsXG4gICAgICAgICAgbmFtZXNwYWNlLFxuICAgICAgICAgIHNsb3RTY29wZUlkcyxcbiAgICAgICAgICBvcHRpbWl6ZWRcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIGNvbnN0IHByb2Nlc3NDb21wb25lbnQgPSAobjEsIG4yLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgbmFtZXNwYWNlLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCkgPT4ge1xuICAgIG4yLnNsb3RTY29wZUlkcyA9IHNsb3RTY29wZUlkcztcbiAgICBpZiAobjEgPT0gbnVsbCkge1xuICAgICAgaWYgKG4yLnNoYXBlRmxhZyAmIDUxMikge1xuICAgICAgICBwYXJlbnRDb21wb25lbnQuY3R4LmFjdGl2YXRlKFxuICAgICAgICAgIG4yLFxuICAgICAgICAgIGNvbnRhaW5lcixcbiAgICAgICAgICBhbmNob3IsXG4gICAgICAgICAgbmFtZXNwYWNlLFxuICAgICAgICAgIG9wdGltaXplZFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbW91bnRDb21wb25lbnQoXG4gICAgICAgICAgbjIsXG4gICAgICAgICAgY29udGFpbmVyLFxuICAgICAgICAgIGFuY2hvcixcbiAgICAgICAgICBwYXJlbnRDb21wb25lbnQsXG4gICAgICAgICAgcGFyZW50U3VzcGVuc2UsXG4gICAgICAgICAgbmFtZXNwYWNlLFxuICAgICAgICAgIG9wdGltaXplZFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB1cGRhdGVDb21wb25lbnQobjEsIG4yLCBvcHRpbWl6ZWQpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgbW91bnRDb21wb25lbnQgPSAoaW5pdGlhbFZOb2RlLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgbmFtZXNwYWNlLCBvcHRpbWl6ZWQpID0+IHtcbiAgICBjb25zdCBpbnN0YW5jZSA9IChpbml0aWFsVk5vZGUuY29tcG9uZW50ID0gY3JlYXRlQ29tcG9uZW50SW5zdGFuY2UoXG4gICAgICBpbml0aWFsVk5vZGUsXG4gICAgICBwYXJlbnRDb21wb25lbnQsXG4gICAgICBwYXJlbnRTdXNwZW5zZVxuICAgICkpO1xuICAgIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpICYmIGluc3RhbmNlLnR5cGUuX19obXJJZCkge1xuICAgICAgcmVnaXN0ZXJITVIoaW5zdGFuY2UpO1xuICAgIH1cbiAgICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSkge1xuICAgICAgcHVzaFdhcm5pbmdDb250ZXh0KGluaXRpYWxWTm9kZSk7XG4gICAgICBzdGFydE1lYXN1cmUoaW5zdGFuY2UsIGBtb3VudGApO1xuICAgIH1cbiAgICBpZiAoaXNLZWVwQWxpdmUoaW5pdGlhbFZOb2RlKSkge1xuICAgICAgaW5zdGFuY2UuY3R4LnJlbmRlcmVyID0gaW50ZXJuYWxzO1xuICAgIH1cbiAgICB7XG4gICAgICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSkge1xuICAgICAgICBzdGFydE1lYXN1cmUoaW5zdGFuY2UsIGBpbml0YCk7XG4gICAgICB9XG4gICAgICBzZXR1cENvbXBvbmVudChpbnN0YW5jZSwgZmFsc2UsIG9wdGltaXplZCk7XG4gICAgICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSkge1xuICAgICAgICBlbmRNZWFzdXJlKGluc3RhbmNlLCBgaW5pdGApO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaW5zdGFuY2UuYXN5bmNEZXApIHtcbiAgICAgIHBhcmVudFN1c3BlbnNlICYmIHBhcmVudFN1c3BlbnNlLnJlZ2lzdGVyRGVwKGluc3RhbmNlLCBzZXR1cFJlbmRlckVmZmVjdCwgb3B0aW1pemVkKTtcbiAgICAgIGlmICghaW5pdGlhbFZOb2RlLmVsKSB7XG4gICAgICAgIGNvbnN0IHBsYWNlaG9sZGVyID0gaW5zdGFuY2Uuc3ViVHJlZSA9IGNyZWF0ZVZOb2RlKENvbW1lbnQpO1xuICAgICAgICBwcm9jZXNzQ29tbWVudE5vZGUobnVsbCwgcGxhY2Vob2xkZXIsIGNvbnRhaW5lciwgYW5jaG9yKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc2V0dXBSZW5kZXJFZmZlY3QoXG4gICAgICAgIGluc3RhbmNlLFxuICAgICAgICBpbml0aWFsVk5vZGUsXG4gICAgICAgIGNvbnRhaW5lcixcbiAgICAgICAgYW5jaG9yLFxuICAgICAgICBwYXJlbnRTdXNwZW5zZSxcbiAgICAgICAgbmFtZXNwYWNlLFxuICAgICAgICBvcHRpbWl6ZWRcbiAgICAgICk7XG4gICAgfVxuICAgIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpKSB7XG4gICAgICBwb3BXYXJuaW5nQ29udGV4dCgpO1xuICAgICAgZW5kTWVhc3VyZShpbnN0YW5jZSwgYG1vdW50YCk7XG4gICAgfVxuICB9O1xuICBjb25zdCB1cGRhdGVDb21wb25lbnQgPSAobjEsIG4yLCBvcHRpbWl6ZWQpID0+IHtcbiAgICBjb25zdCBpbnN0YW5jZSA9IG4yLmNvbXBvbmVudCA9IG4xLmNvbXBvbmVudDtcbiAgICBpZiAoc2hvdWxkVXBkYXRlQ29tcG9uZW50KG4xLCBuMiwgb3B0aW1pemVkKSkge1xuICAgICAgaWYgKGluc3RhbmNlLmFzeW5jRGVwICYmICFpbnN0YW5jZS5hc3luY1Jlc29sdmVkKSB7XG4gICAgICAgIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpKSB7XG4gICAgICAgICAgcHVzaFdhcm5pbmdDb250ZXh0KG4yKTtcbiAgICAgICAgfVxuICAgICAgICB1cGRhdGVDb21wb25lbnRQcmVSZW5kZXIoaW5zdGFuY2UsIG4yLCBvcHRpbWl6ZWQpO1xuICAgICAgICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSkge1xuICAgICAgICAgIHBvcFdhcm5pbmdDb250ZXh0KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW5zdGFuY2UubmV4dCA9IG4yO1xuICAgICAgICBpbnZhbGlkYXRlSm9iKGluc3RhbmNlLnVwZGF0ZSk7XG4gICAgICAgIGluc3RhbmNlLmVmZmVjdC5kaXJ0eSA9IHRydWU7XG4gICAgICAgIGluc3RhbmNlLnVwZGF0ZSgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBuMi5lbCA9IG4xLmVsO1xuICAgICAgaW5zdGFuY2Uudm5vZGUgPSBuMjtcbiAgICB9XG4gI
15H07XG4gIGNvbnN0IHNldHVwUmVuZGVyRWZmZWN0ID0gKGluc3RhbmNlLCBpbml0aWFsVk5vZGUsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRTdXNwZW5zZSwgbmFtZXNwYWNlLCBvcHRpbWl6ZWQpID0+IHtcbiAgICBjb25zdCBjb21wb25lbnRVcGRhdGVGbiA9ICgpID0+IHtcbiAgICAgIGlmICghaW5zdGFuY2UuaXNNb3VudGVkKSB7XG4gICAgICAgIGxldCB2bm9kZUhvb2s7XG4gICAgICAgIGNvbnN0IHsgZWwsIHByb3BzIH0gPSBpbml0aWFsVk5vZGU7XG4gICAgICAgIGNvbnN0IHsgYm0sIG0sIHBhcmVudCB9ID0gaW5zdGFuY2U7XG4gICAgICAgIGNvbnN0IGlzQXN5bmNXcmFwcGVyVk5vZGUgPSBpc0FzeW5jV3JhcHBlcihpbml0aWFsVk5vZGUpO1xuICAgICAgICB0b2dnbGVSZWN1cnNlKGluc3RhbmNlLCBmYWxzZSk7XG4gICAgICAgIGlmIChibSkge1xuICAgICAgICAgIGludm9rZUFycmF5Rm5zKGJtKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzQXN5bmNXcmFwcGVyVk5vZGUgJiYgKHZub2RlSG9vayA9IHByb3BzICYmIHByb3BzLm9uVm5vZGVCZWZvcmVNb3VudCkpIHtcbiAgICAgICAgICBpbnZva2VWTm9kZUhvb2sodm5vZGVIb29rLCBwYXJlbnQsIGluaXRpYWxWTm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgdG9nZ2xlUmVjdXJzZShpbnN0YW5jZSwgdHJ1ZSk7XG4gICAgICAgIGlmIChlbCAmJiBoeWRyYXRlTm9kZSkge1xuICAgICAgICAgIGNvbnN0IGh5ZHJhdGVTdWJUcmVlID0gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikpIHtcbiAgICAgICAgICAgICAgc3RhcnRNZWFzdXJlKGluc3RhbmNlLCBgcmVuZGVyYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpbnN0YW5jZS5zdWJUcmVlID0gcmVuZGVyQ29tcG9uZW50Um9vdChpbnN0YW5jZSk7XG4gICAgICAgICAgICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSkge1xuICAgICAgICAgICAgICBlbmRNZWFzdXJlKGluc3RhbmNlLCBgcmVuZGVyYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSkge1xuICAgICAgICAgICAgICBzdGFydE1lYXN1cmUoaW5zdGFuY2UsIGBoeWRyYXRlYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBoeWRyYXRlTm9kZShcbiAgICAgICAgICAgICAgZWwsXG4gICAgICAgICAgICAgIGluc3RhbmNlLnN1YlRyZWUsXG4gICAgICAgICAgICAgIGluc3RhbmNlLFxuICAgICAgICAgICAgICBwYXJlbnRTdXNwZW5zZSxcbiAgICAgICAgICAgICAgbnVsbFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpKSB7XG4gICAgICAgICAgICAgIGVuZE1lYXN1cmUoaW5zdGFuY2UsIGBoeWRyYXRlYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgICBpZiAoaXNBc3luY1dyYXBwZXJWTm9kZSkge1xuICAgICAgICAgICAgaW5pdGlhbFZOb2RlLnR5cGUuX19hc3luY0xvYWRlcigpLnRoZW4oXG4gICAgICAgICAgICAgIC8vIG5vdGU6IHdlIGFyZSBtb3ZpbmcgdGhlIHJlbmRlciBjYWxsIGludG8gYW4gYXN5bmMgY2FsbGJhY2ssXG4gICAgICAgICAgICAgIC8vIHdoaWNoIG1lYW5zIGl0IHdvbid0IHRyYWNrIGRlcGVuZGVuY2llcyAtIGJ1dCBpdCdzIG9rIGJlY2F1c2VcbiAgICAgICAgICAgICAgLy8gYSBzZXJ2ZXItcmVuZGVyZWQgYXN5bmMgd3JhcHBlciBpcyBhbHJlYWR5IGluIHJlc29sdmVkIHN0YXRlXG4gICAgICAgICAgICAgIC8vIGFuZCBpdCB3aWxsIG5ldmVyIG5lZWQgdG8gY2hhbmdlLlxuICAgICAgICAgICAgICAoKSA9PiAhaW5zdGFuY2UuaXNVbm1vdW50ZWQgJiYgaHlkcmF0ZVN1YlRyZWUoKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaHlkcmF0ZVN1YlRyZWUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikpIHtcbiAgICAgICAgICAgIHN0YXJ0TWVhc3VyZShpbnN0YW5jZSwgYHJlbmRlcmApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBzdWJUcmVlID0gaW5zdGFuY2Uuc3ViVHJlZSA9IHJlbmRlckNvbXBvbmVudFJvb3QoaW5zdGFuY2UpO1xuICAgICAgICAgIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpKSB7XG4gICAgICAgICAgICBlbmRNZWFzdXJlKGluc3RhbmNlLCBgcmVuZGVyYCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpKSB7XG4gICAgICAgICAgICBzdGFydE1lYXN1cmUoaW5zdGFuY2UsIGBwYXRjaGApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBwYXRjaChcbiAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICBzdWJUcmVlLFxuICAgICAgICAgICAgY29udGFpbmVyLFxuICAgICAgICAgICAgYW5jaG9yLFxuICAgICAgICAgICAgaW5zdGFuY2UsXG4gICAgICAgICAgICBwYXJlbnRTdXNwZW5zZSxcbiAgICAgICAgICAgIG5hbWVzcGFjZVxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikpIHtcbiAgICAgICAgICAgIGVuZE1lYXN1cmUoaW5zdGFuY2UsIGBwYXRjaGApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpbml0aWFsVk5vZGUuZWwgPSBzdWJUcmVlLmVsO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtKSB7XG4gICAgICAgICAgcXVldWVQb3N0UmVuZGVyRWZmZWN0KG0sIHBhcmVudFN1c3BlbnNlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzQXN5bmNXcmFwcGVyVk5vZGUgJiYgKHZub2RlSG9vayA9IHByb3BzICYmIHByb3BzLm9uVm5vZGVNb3VudGVkKSkge1xuICAgICAgICAgIGNvbnN0IHNjb3BlZEluaXRpYWxWTm9kZSA9IGluaXRpYWxWTm9kZTtcbiAgICAgICAgICBxdWV1ZVBvc3RSZW5kZXJFZmZlY3QoXG4gICAgICAgICAgICAoKSA9PiBpbnZva2VWTm9kZUhvb2sodm5vZGVIb29rLCBwYXJlbnQsIHNjb3BlZEluaXRpYWxWTm9kZSksXG4gICAgICAgICAgICBwYXJlbnRTdXNwZW5zZVxuICAgICAgICAgICk7XG4gICAgICAgI
15H1cbiAgICAgICAgaWYgKGluaXRpYWxWTm9kZS5zaGFwZUZsYWcgJiAyNTYgfHwgcGFyZW50ICYmIGlzQXN5bmNXcmFwcGVyKHBhcmVudC52bm9kZSkgJiYgcGFyZW50LnZub2RlLnNoYXBlRmxhZyAmIDI1Nikge1xuICAgICAgICAgIGluc3RhbmNlLmEgJiYgcXVldWVQb3N0UmVuZGVyRWZmZWN0KGluc3RhbmNlLmEsIHBhcmVudFN1c3BlbnNlKTtcbiAgICAgICAgfVxuICAgICAgICBpbnN0YW5jZS5pc01vdW50ZWQgPSB0cnVlO1xuICAgICAgICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB8fCBfX1ZVRV9QUk9EX0RFVlRPT0xTX18pIHtcbiAgICAgICAgICBkZXZ0b29sc0NvbXBvbmVudEFkZGVkKGluc3RhbmNlKTtcbiAgICAgICAgfVxuICAgICAgICBpbml0aWFsVk5vZGUgPSBjb250YWluZXIgPSBhbmNob3IgPSBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IHsgbmV4dCwgYnUsIHUsIHBhcmVudCwgdm5vZGUgfSA9IGluc3RhbmNlO1xuICAgICAgICB7XG4gICAgICAgICAgY29uc3Qgbm9uSHlkcmF0ZWRBc3luY1Jvb3QgPSBsb2NhdGVOb25IeWRyYXRlZEFzeW5jUm9vdChpbnN0YW5jZSk7XG4gICAgICAgICAgaWYgKG5vbkh5ZHJhdGVkQXN5bmNSb290KSB7XG4gICAgICAgICAgICBpZiAobmV4dCkge1xuICAgICAgICAgICAgICBuZXh0LmVsID0gdm5vZGUuZWw7XG4gICAgICAgICAgICAgIHVwZGF0ZUNvbXBvbmVudFByZVJlbmRlcihpbnN0YW5jZSwgbmV4dCwgb3B0aW1pemVkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5vbkh5ZHJhdGVkQXN5bmNSb290LmFzeW5jRGVwLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIWluc3RhbmNlLmlzVW5tb3VudGVkKSB7XG4gICAgICAgICAgICAgICAgY29tcG9uZW50VXBkYXRlRm4oKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxldCBvcmlnaW5OZXh0ID0gbmV4dDtcbiAgICAgICAgbGV0IHZub2RlSG9vaztcbiAgICAgICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikpIHtcbiAgICAgICAgICBwdXNoV2FybmluZ0NvbnRleHQobmV4dCB8fCBpbnN0YW5jZS52bm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgdG9nZ2xlUmVjdXJzZShpbnN0YW5jZSwgZmFsc2UpO1xuICAgICAgICBpZiAobmV4dCkge1xuICAgICAgICAgIG5leHQuZWwgPSB2bm9kZS5lbDtcbiAgICAgICAgICB1cGRhdGVDb21wb25lbnRQcmVSZW5kZXIoaW5zdGFuY2UsIG5leHQsIG9wdGltaXplZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmV4dCA9IHZub2RlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChidSkge1xuICAgICAgICAgIGludm9rZUFycmF5Rm5zKGJ1KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodm5vZGVIb29rID0gbmV4dC5wcm9wcyAmJiBuZXh0LnByb3BzLm9uVm5vZGVCZWZvcmVVcGRhdGUpIHtcbiAgICAgICAgICBpbnZva2VWTm9kZUhvb2sodm5vZGVIb29rLCBwYXJlbnQsIG5leHQsIHZub2RlKTtcbiAgICAgICAgfVxuICAgICAgICB0b2dnbGVSZWN1cnNlKGluc3RhbmNlLCB0cnVlKTtcbiAgICAgICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikpIHtcbiAgICAgICAgICBzdGFydE1lYXN1cmUoaW5zdGFuY2UsIGByZW5kZXJgKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuZXh0VHJlZSA9IHJlbmRlckNvbXBvbmVudFJvb3QoaW5zdGFuY2UpO1xuICAgICAgICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSkge1xuICAgICAgICAgIGVuZE1lYXN1cmUoaW5zdGFuY2UsIGByZW5kZXJgKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwcmV2VHJlZSA9IGluc3RhbmNlLnN1YlRyZWU7XG4gICAgICAgIGluc3RhbmNlLnN1YlRyZWUgPSBuZXh0VHJlZTtcbiAgICAgICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikpIHtcbiAgICAgICAgICBzdGFydE1lYXN1cmUoaW5zdGFuY2UsIGBwYXRjaGApO1xuICAgICAgICB9XG4gICAgICAgIHBhdGNoKFxuICAgICAgICAgIHByZXZUcmVlLFxuICAgICAgICAgIG5leHRUcmVlLFxuICAgICAgICAgIC8vIHBhcmVudCBtYXkgaGF2ZSBjaGFuZ2VkIGlmIGl0J3MgaW4gYSB0ZWxlcG9ydFxuICAgICAgICAgIGhvc3RQYXJlbnROb2RlKHByZXZUcmVlLmVsKSxcbiAgICAgICAgICAvLyBhbmNob3IgbWF5IGhhdmUgY2hhbmdlZCBpZiBpdCdzIGluIGEgZnJhZ21lbnRcbiAgICAgICAgICBnZXROZXh0SG9zdE5vZGUocHJldlRyZWUpLFxuICAgICAgICAgIGluc3RhbmNlLFxuICAgICAgICAgIHBhcmVudFN1c3BlbnNlLFxuICAgICAgICAgIG5hbWVzcGFjZVxuICAgICAgICApO1xuICAgICAgICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSkge1xuICAgICAgICAgIGVuZE1lYXN1cmUoaW5zdGFuY2UsIGBwYXRjaGApO1xuICAgICAgICB9XG4gICAgICAgIG5leHQuZWwgPSBuZXh0VHJlZS5lbDtcbiAgICAgICAgaWYgKG9yaWdpbk5leHQgPT09IG51bGwpIHtcbiAgICAgICAgICB1cGRhdGVIT0NIb3N0RWwoaW5zdGFuY2UsIG5leHRUcmVlLmVsKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodSkge1xuICAgICAgICAgIHF1ZXVlUG9zdFJlbmRlckVmZmVjdCh1LCBwYXJlbnRTdXNwZW5zZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZub2RlSG9vayA9IG5leHQucHJvcHMgJiYgbmV4dC5wcm9wcy5vblZub2RlVXBkYXRlZCkge1xuICAgICAgICAgIHF1ZXVlUG9zdFJlbmRlckVmZmVjdChcbiAgICAgICAgICAgICgpID0+IGludm9rZVZOb2RlSG9vayh2bm9kZUhvb2ssIHBhcmVudCwgbmV4dCwgdm5vZGUpLFxuICAgICAgICAgICAgcGFyZW50U3VzcGVuc2VcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHx8IF9fVlVFX1BST0RfREVWVE9PTFNfXykge1xuICAgICAgICAgIGRldnRvb2xzQ29tcG9uZW50VXBkYXRlZChpbnN0YW5jZSk7XG4gICAgICAgI
15H1cbiAgICAgICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikpIHtcbiAgICAgICAgICBwb3BXYXJuaW5nQ29udGV4dCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgICBjb25zdCBlZmZlY3QgPSBpbnN0YW5jZS5lZmZlY3QgPSBuZXcgUmVhY3RpdmVFZmZlY3QoXG4gICAgICBjb21wb25lbnRVcGRhdGVGbixcbiAgICAgIE5PT1AsXG4gICAgICAoKSA9PiBxdWV1ZUpvYih1cGRhdGUpLFxuICAgICAgaW5zdGFuY2Uuc2NvcGVcbiAgICAgIC8vIHRyYWNrIGl0IGluIGNvbXBvbmVudCdzIGVmZmVjdCBzY29wZVxuICAgICk7XG4gICAgY29uc3QgdXBkYXRlID0gaW5zdGFuY2UudXBkYXRlID0gKCkgPT4ge1xuICAgICAgaWYgKGVmZmVjdC5kaXJ0eSkge1xuICAgICAgICBlZmZlY3QucnVuKCk7XG4gICAgICB9XG4gICAgfTtcbiAgICB1cGRhdGUuaSA9IGluc3RhbmNlO1xuICAgIHVwZGF0ZS5pZCA9IGluc3RhbmNlLnVpZDtcbiAgICB0b2dnbGVSZWN1cnNlKGluc3RhbmNlLCB0cnVlKTtcbiAgICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSkge1xuICAgICAgZWZmZWN0Lm9uVHJhY2sgPSBpbnN0YW5jZS5ydGMgPyAoZSkgPT4gaW52b2tlQXJyYXlGbnMoaW5zdGFuY2UucnRjLCBlKSA6IHZvaWQgMDtcbiAgICAgIGVmZmVjdC5vblRyaWdnZXIgPSBpbnN0YW5jZS5ydGcgPyAoZSkgPT4gaW52b2tlQXJyYXlGbnMoaW5zdGFuY2UucnRnLCBlKSA6IHZvaWQgMDtcbiAgICB9XG4gICAgdXBkYXRlKCk7XG4gIH07XG4gIGNvbnN0IHVwZGF0ZUNvbXBvbmVudFByZVJlbmRlciA9IChpbnN0YW5jZSwgbmV4dFZOb2RlLCBvcHRpbWl6ZWQpID0+IHtcbiAgICBuZXh0Vk5vZGUuY29tcG9uZW50ID0gaW5zdGFuY2U7XG4gICAgY29uc3QgcHJldlByb3BzID0gaW5zdGFuY2Uudm5vZGUucHJvcHM7XG4gICAgaW5zdGFuY2Uudm5vZGUgPSBuZXh0Vk5vZGU7XG4gICAgaW5zdGFuY2UubmV4dCA9IG51bGw7XG4gICAgdXBkYXRlUHJvcHMoaW5zdGFuY2UsIG5leHRWTm9kZS5wcm9wcywgcHJldlByb3BzLCBvcHRpbWl6ZWQpO1xuICAgIHVwZGF0ZVNsb3RzKGluc3RhbmNlLCBuZXh0Vk5vZGUuY2hpbGRyZW4sIG9wdGltaXplZCk7XG4gICAgcGF1c2VUcmFja2luZygpO1xuICAgIGZsdXNoUHJlRmx1c2hDYnMoaW5zdGFuY2UpO1xuICAgIHJlc2V0VHJhY2tpbmcoKTtcbiAgfTtcbiAgY29uc3QgcGF0Y2hDaGlsZHJlbiA9IChuMSwgbjIsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBuYW1lc3BhY2UsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkID0gZmFsc2UpID0+IHtcbiAgICBjb25zdCBjMSA9IG4xICYmIG4xLmNoaWxkcmVuO1xuICAgIGNvbnN0IHByZXZTaGFwZUZsYWcgPSBuMSA/IG4xLnNoYXBlRmxhZyA6IDA7XG4gICAgY29uc3QgYzIgPSBuMi5jaGlsZHJlbjtcbiAgICBjb25zdCB7IHBhdGNoRmxhZywgc2hhcGVGbGFnIH0gPSBuMjtcbiAgICBpZiAocGF0Y2hGbGFnID4gMCkge1xuICAgICAgaWYgKHBhdGNoRmxhZyAmIDEyOCkge1xuICAgICAgICBwYXRjaEtleWVkQ2hpbGRyZW4oXG4gICAgICAgICAgYzEsXG4gICAgICAgICAgYzIsXG4gICAgICAgICAgY29udGFpbmVyLFxuICAgICAgICAgIGFuY2hvcixcbiAgICAgICAgICBwYXJlbnRDb21wb25lbnQsXG4gICAgICAgICAgcGFyZW50U3VzcGVuc2UsXG4gICAgICAgICAgbmFtZXNwYWNlLFxuICAgICAgICAgIHNsb3RTY29wZUlkcyxcbiAgICAgICAgICBvcHRpbWl6ZWRcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIGlmIChwYXRjaEZsYWcgJiAyNTYpIHtcbiAgICAgICAgcGF0Y2hVbmtleWVkQ2hpbGRyZW4oXG4gICAgICAgICAgYzEsXG4gICAgICAgICAgYzIsXG4gICAgICAgICAgY29udGFpbmVyLFxuICAgICAgICAgIGFuY2hvcixcbiAgICAgICAgICBwYXJlbnRDb21wb25lbnQsXG4gICAgICAgICAgcGFyZW50U3VzcGVuc2UsXG4gICAgICAgICAgbmFtZXNwYWNlLFxuICAgICAgICAgIHNsb3RTY29wZUlkcyxcbiAgICAgICAgICBvcHRpbWl6ZWRcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoc2hhcGVGbGFnICYgOCkge1xuICAgICAgaWYgKHByZXZTaGFwZUZsYWcgJiAxNikge1xuICAgICAgICB1bm1vdW50Q2hpbGRyZW4oYzEsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UpO1xuICAgICAgfVxuICAgICAgaWYgKGMyICE9PSBjMSkge1xuICAgICAgICBob3N0U2V0RWxlbWVudFRleHQoY29udGFpbmVyLCBjMik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwcmV2U2hhcGVGbGFnICYgMTYpIHtcbiAgICAgICAgaWYgKHNoYXBlRmxhZyAmIDE2KSB7XG4gICAgICAgICAgcGF0Y2hLZXllZENoaWxkcmVuKFxuICAgICAgICAgICAgYzEsXG4gICAgICAgICAgICBjMixcbiAgICAgICAgICAgIGNvbnRhaW5lcixcbiAgICAgICAgICAgIGFuY2hvcixcbiAgICAgICAgICAgIHBhcmVudENvbXBvbmVudCxcbiAgICAgICAgICAgIHBhcmVudFN1c3BlbnNlLFxuICAgICAgICAgICAgbmFtZXNwYWNlLFxuICAgICAgICAgICAgc2xvdFNjb3BlSWRzLFxuICAgICAgICAgICAgb3B0aW1pemVkXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB1bm1vdW50Q2hpbGRyZW4oYzEsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHRydWUpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocHJldlNoYXBlRmxhZyAmIDgpIHtcbiAgICAgICAgICBob3N0U2V0RWxlbWVudFRleHQoY29udGFpbmVyLCBcIlwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2hhcGVGbGFnICYgMTYpIHtcbiAgICAgICAgICBtb3VudENoaWxkcmVuKFxuICAgICAgICAgICAgYzIsXG4gICAgICAgICAgICBjb250YWluZXIsXG4gICAgICAgICAgICBhbmNob3IsXG4gICAgICAgICAgICBwYXJlbnRDb21wb25lbnQsXG4gICAgICAgICAgICBwYXJlbnRTdXNwZW5zZSxcbiAgICAgICAgICAgIG5hbWVzcGFjZSxcbiAgICAgICAgICAgI
15HNsb3RTY29wZUlkcyxcbiAgICAgICAgICAgIG9wdGltaXplZFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIGNvbnN0IHBhdGNoVW5rZXllZENoaWxkcmVuID0gKGMxLCBjMiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIG5hbWVzcGFjZSwgc2xvdFNjb3BlSWRzLCBvcHRpbWl6ZWQpID0+IHtcbiAgICBjMSA9IGMxIHx8IEVNUFRZX0FSUjtcbiAgICBjMiA9IGMyIHx8IEVNUFRZX0FSUjtcbiAgICBjb25zdCBvbGRMZW5ndGggPSBjMS5sZW5ndGg7XG4gICAgY29uc3QgbmV3TGVuZ3RoID0gYzIubGVuZ3RoO1xuICAgIGNvbnN0IGNvbW1vbkxlbmd0aCA9IE1hdGgubWluKG9sZExlbmd0aCwgbmV3TGVuZ3RoKTtcbiAgICBsZXQgaTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgY29tbW9uTGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IG5leHRDaGlsZCA9IGMyW2ldID0gb3B0aW1pemVkID8gY2xvbmVJZk1vdW50ZWQoYzJbaV0pIDogbm9ybWFsaXplVk5vZGUoYzJbaV0pO1xuICAgICAgcGF0Y2goXG4gICAgICAgIGMxW2ldLFxuICAgICAgICBuZXh0Q2hpbGQsXG4gICAgICAgIGNvbnRhaW5lcixcbiAgICAgICAgbnVsbCxcbiAgICAgICAgcGFyZW50Q29tcG9uZW50LFxuICAgICAgICBwYXJlbnRTdXNwZW5zZSxcbiAgICAgICAgbmFtZXNwYWNlLFxuICAgICAgICBzbG90U2NvcGVJZHMsXG4gICAgICAgIG9wdGltaXplZFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKG9sZExlbmd0aCA+IG5ld0xlbmd0aCkge1xuICAgICAgdW5tb3VudENoaWxkcmVuKFxuICAgICAgICBjMSxcbiAgICAgICAgcGFyZW50Q29tcG9uZW50LFxuICAgICAgICBwYXJlbnRTdXNwZW5zZSxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIGNvbW1vbkxlbmd0aFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbW91bnRDaGlsZHJlbihcbiAgICAgICAgYzIsXG4gICAgICAgIGNvbnRhaW5lcixcbiAgICAgICAgYW5jaG9yLFxuICAgICAgICBwYXJlbnRDb21wb25lbnQsXG4gICAgICAgIHBhcmVudFN1c3BlbnNlLFxuICAgICAgICBuYW1lc3BhY2UsXG4gICAgICAgIHNsb3RTY29wZUlkcyxcbiAgICAgICAgb3B0aW1pemVkLFxuICAgICAgICBjb21tb25MZW5ndGhcbiAgICAgICk7XG4gICAgfVxuICB9O1xuICBjb25zdCBwYXRjaEtleWVkQ2hpbGRyZW4gPSAoYzEsIGMyLCBjb250YWluZXIsIHBhcmVudEFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgbmFtZXNwYWNlLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCkgPT4ge1xuICAgIGxldCBpID0gMDtcbiAgICBjb25zdCBsMiA9IGMyLmxlbmd0aDtcbiAgICBsZXQgZTEgPSBjMS5sZW5ndGggLSAxO1xuICAgIGxldCBlMiA9IGwyIC0gMTtcbiAgICB3aGlsZSAoaSA8PSBlMSAmJiBpIDw9IGUyKSB7XG4gICAgICBjb25zdCBuMSA9IGMxW2ldO1xuICAgICAgY29uc3QgbjIgPSBjMltpXSA9IG9wdGltaXplZCA/IGNsb25lSWZNb3VudGVkKGMyW2ldKSA6IG5vcm1hbGl6ZVZOb2RlKGMyW2ldKTtcbiAgICAgIGlmIChpc1NhbWVWTm9kZVR5cGUobjEsIG4yKSkge1xuICAgICAgICBwYXRjaChcbiAgICAgICAgICBuMSxcbiAgICAgICAgICBuMixcbiAgICAgICAgICBjb250YWluZXIsXG4gICAgICAgICAgbnVsbCxcbiAgICAgICAgICBwYXJlbnRDb21wb25lbnQsXG4gICAgICAgICAgcGFyZW50U3VzcGVuc2UsXG4gICAgICAgICAgbmFtZXNwYWNlLFxuICAgICAgICAgIHNsb3RTY29wZUlkcyxcbiAgICAgICAgICBvcHRpbWl6ZWRcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgaSsrO1xuICAgIH1cbiAgICB3aGlsZSAoaSA8PSBlMSAmJiBpIDw9IGUyKSB7XG4gICAgICBjb25zdCBuMSA9IGMxW2UxXTtcbiAgICAgIGNvbnN0IG4yID0gYzJbZTJdID0gb3B0aW1pemVkID8gY2xvbmVJZk1vdW50ZWQoYzJbZTJdKSA6IG5vcm1hbGl6ZVZOb2RlKGMyW2UyXSk7XG4gICAgICBpZiAoaXNTYW1lVk5vZGVUeXBlKG4xLCBuMikpIHtcbiAgICAgICAgcGF0Y2goXG4gICAgICAgICAgbjEsXG4gICAgICAgICAgbjIsXG4gICAgICAgICAgY29udGFpbmVyLFxuICAgICAgICAgIG51bGwsXG4gICAgICAgICAgcGFyZW50Q29tcG9uZW50LFxuICAgICAgICAgIHBhcmVudFN1c3BlbnNlLFxuICAgICAgICAgIG5hbWVzcGFjZSxcbiAgICAgICAgICBzbG90U2NvcGVJZHMsXG4gICAgICAgICAgb3B0aW1pemVkXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGUxLS07XG4gICAgICBlMi0tO1xuICAgIH1cbiAgICBpZiAoaSA+IGUxKSB7XG4gICAgICBpZiAoaSA8PSBlMikge1xuICAgICAgICBjb25zdCBuZXh0UG9zID0gZTIgKyAxO1xuICAgICAgICBjb25zdCBhbmNob3IgPSBuZXh0UG9zIDwgbDIgPyBjMltuZXh0UG9zXS5lbCA6IHBhcmVudEFuY2hvcjtcbiAgICAgICAgd2hpbGUgKGkgPD0gZTIpIHtcbiAgICAgICAgICBwYXRjaChcbiAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICBjMltpXSA9IG9wdGltaXplZCA/IGNsb25lSWZNb3VudGVkKGMyW2ldKSA6IG5vcm1hbGl6ZVZOb2RlKGMyW2ldKSxcbiAgICAgICAgICAgIGNvbnRhaW5lcixcbiAgICAgICAgICAgIGFuY2hvcixcbiAgICAgICAgICAgIHBhcmVudENvbXBvbmVudCxcbiAgICAgICAgICAgIHBhcmVudFN1c3BlbnNlLFxuICAgICAgICAgICAgbmFtZXNwYWNlLFxuICAgICAgICAgICAgc2xvdFNjb3BlSWRzLFxuICAgICAgICAgICAgb3B0aW1pemVkXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGkgPiBlMikge1xuICAgICAgd2hpbGUgKGkgPD0gZTEpIHtcbiAgICAgICAgdW5tb3VudChjMVtpXSwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgdHJ1ZSk7XG4gICAgICAgIGkrKztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgczEgPSBpO1xuICAgICAgY29uc3QgczIgPSBpO1xuICAgICAgY29uc3Qga2V5VG9OZXdJbmRleE1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG4gICAgICBmb3IgKGkgPSBzMjsgaSA8PSBlMjsgaSsrKSB7XG4gICAgICAgIGNvbnN0IG5leHRDaGlsZCA9IGMyW2ldID0gb3B0aW1pemVkID8gY2xvbmVJZk1vdW50ZWQoYzJbaV0pIDogbm9ybWFsaXplVk5vZGUoYzJbaV0pO1xuICAgICAgICBpZiAobmV4dENoaWxkLmtleSAhPSBudWxsKSB7XG4gICAgICAgICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgJiYga2V5VG9OZXdJbmRleE1hcC5oYXMobmV4dENoaWxkLmtleSkpIHtcbiAgICAgICAgICAgI
15Hdhcm4kMShcbiAgICAgICAgICAgICAgYER1cGxpY2F0ZSBrZXlzIGZvdW5kIGR1cmluZyB1cGRhdGU6YCxcbiAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkobmV4dENoaWxkLmtleSksXG4gICAgICAgICAgICAgIGBNYWtlIHN1cmUga2V5cyBhcmUgdW5pcXVlLmBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGtleVRvTmV3SW5kZXhNYXAuc2V0KG5leHRDaGlsZC5rZXksIGkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBsZXQgajtcbiAgICAgIGxldCBwYXRjaGVkID0gMDtcbiAgICAgIGNvbnN0IHRvQmVQYXRjaGVkID0gZTIgLSBzMiArIDE7XG4gICAgICBsZXQgbW92ZWQgPSBmYWxzZTtcbiAgICAgIGxldCBtYXhOZXdJbmRleFNvRmFyID0gMDtcbiAgICAgIGNvbnN0IG5ld0luZGV4VG9PbGRJbmRleE1hcCA9IG5ldyBBcnJheSh0b0JlUGF0Y2hlZCk7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgdG9CZVBhdGNoZWQ7IGkrKykgbmV3SW5kZXhUb09sZEluZGV4TWFwW2ldID0gMDtcbiAgICAgIGZvciAoaSA9IHMxOyBpIDw9IGUxOyBpKyspIHtcbiAgICAgICAgY29uc3QgcHJldkNoaWxkID0gYzFbaV07XG4gICAgICAgIGlmIChwYXRjaGVkID49IHRvQmVQYXRjaGVkKSB7XG4gICAgICAgICAgdW5tb3VudChwcmV2Q2hpbGQsIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIHRydWUpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGxldCBuZXdJbmRleDtcbiAgICAgICAgaWYgKHByZXZDaGlsZC5rZXkgIT0gbnVsbCkge1xuICAgICAgICAgIG5ld0luZGV4ID0ga2V5VG9OZXdJbmRleE1hcC5nZXQocHJldkNoaWxkLmtleSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZm9yIChqID0gczI7IGogPD0gZTI7IGorKykge1xuICAgICAgICAgICAgaWYgKG5ld0luZGV4VG9PbGRJbmRleE1hcFtqIC0gczJdID09PSAwICYmIGlzU2FtZVZOb2RlVHlwZShwcmV2Q2hpbGQsIGMyW2pdKSkge1xuICAgICAgICAgICAgICBuZXdJbmRleCA9IGo7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobmV3SW5kZXggPT09IHZvaWQgMCkge1xuICAgICAgICAgIHVubW91bnQocHJldkNoaWxkLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCB0cnVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuZXdJbmRleFRvT2xkSW5kZXhNYXBbbmV3SW5kZXggLSBzMl0gPSBpICsgMTtcbiAgICAgICAgICBpZiAobmV3SW5kZXggPj0gbWF4TmV3SW5kZXhTb0Zhcikge1xuICAgICAgICAgICAgbWF4TmV3SW5kZXhTb0ZhciA9IG5ld0luZGV4O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBtb3ZlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHBhdGNoKFxuICAgICAgICAgICAgcHJldkNoaWxkLFxuICAgICAgICAgICAgYzJbbmV3SW5kZXhdLFxuICAgICAgICAgICAgY29udGFpbmVyLFxuICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgIHBhcmVudENvbXBvbmVudCxcbiAgICAgICAgICAgIHBhcmVudFN1c3BlbnNlLFxuICAgICAgICAgICAgbmFtZXNwYWNlLFxuICAgICAgICAgICAgc2xvdFNjb3BlSWRzLFxuICAgICAgICAgICAgb3B0aW1pemVkXG4gICAgICAgICAgKTtcbiAgICAgICAgICBwYXRjaGVkKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IGluY3JlYXNpbmdOZXdJbmRleFNlcXVlbmNlID0gbW92ZWQgPyBnZXRTZXF1ZW5jZShuZXdJbmRleFRvT2xkSW5kZXhNYXApIDogRU1QVFlfQVJSO1xuICAgICAgaiA9IGluY3JlYXNpbmdOZXdJbmRleFNlcXVlbmNlLmxlbmd0aCAtIDE7XG4gICAgICBmb3IgKGkgPSB0b0JlUGF0Y2hlZCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIGNvbnN0IG5leHRJbmRleCA9IHMyICsgaTtcbiAgICAgICAgY29uc3QgbmV4dENoaWxkID0gYzJbbmV4dEluZGV4XTtcbiAgICAgICAgY29uc3QgYW5jaG9yID0gbmV4dEluZGV4ICsgMSA8IGwyID8gYzJbbmV4dEluZGV4ICsgMV0uZWwgOiBwYXJlbnRBbmNob3I7XG4gICAgICAgIGlmIChuZXdJbmRleFRvT2xkSW5kZXhNYXBbaV0gPT09IDApIHtcbiAgICAgICAgICBwYXRjaChcbiAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICBuZXh0Q2hpbGQsXG4gICAgICAgICAgICBjb250YWluZXIsXG4gICAgICAgICAgICBhbmNob3IsXG4gICAgICAgICAgICBwYXJlbnRDb21wb25lbnQsXG4gICAgICAgICAgICBwYXJlbnRTdXNwZW5zZSxcbiAgICAgICAgICAgIG5hbWVzcGFjZSxcbiAgICAgICAgICAgIHNsb3RTY29wZUlkcyxcbiAgICAgICAgICAgIG9wdGltaXplZFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAobW92ZWQpIHtcbiAgICAgICAgICBpZiAoaiA8IDAgfHwgaSAhPT0gaW5jcmVhc2luZ05ld0luZGV4U2VxdWVuY2Vbal0pIHtcbiAgICAgICAgICAgIG1vdmUobmV4dENoaWxkLCBjb250YWluZXIsIGFuY2hvciwgMik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGotLTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIGNvbnN0IG1vdmUgPSAodm5vZGUsIGNvbnRhaW5lciwgYW5jaG9yLCBtb3ZlVHlwZSwgcGFyZW50U3VzcGVuc2UgPSBudWxsKSA9PiB7XG4gICAgY29uc3QgeyBlbCwgdHlwZSwgdHJhbnNpdGlvbiwgY2hpbGRyZW4sIHNoYXBlRmxhZyB9ID0gdm5vZGU7XG4gICAgaWYgKHNoYXBlRmxhZyAmIDYpIHtcbiAgICAgIG1vdmUodm5vZGUuY29tcG9uZW50LnN1YlRyZWUsIGNvbnRhaW5lciwgYW5jaG9yLCBtb3ZlVHlwZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChzaGFwZUZsYWcgJiAxMjgpIHtcbiAgICAgIHZub2RlLnN1c3BlbnNlLm1vdmUoY29udGFpbmVyLCBhbmNob3IsIG1vdmVUeXBlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHNoYXBlRmxhZyAmIDY0KSB7XG4gICAgICB0eXBlLm1vdmUodm5vZGUsIGNvbnRhaW5lciwgYW5jaG9yLCBpbnRlcm5hbHMpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodHlwZSA9PT0gRnJhZ21lbnQpIHtcbiAgICAgIGhvc3RJbnNlcnQoZWwsIGNvbnRhaW5lciwgYW5jaG9yKTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbW92ZShjaGlsZHJlbltpXSwgY29udGFpbmVyLCBhbmNob3IsIG1vdmVUeXBlKTtcbiAgICAgIH1cbiAgICAgIGhvc3RJbnNlcnQodm5vZGUuYW5jaG9yLCBjb250YWluZXIsIGFuY2hvcik7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0eXBlID09PSBTdGF0aWMpIHtcbiAgICAgIG1vdmVTdGF0aWNOb2RlKHZub2Rl
15LCBjb250YWluZXIsIGFuY2hvcik7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG5lZWRUcmFuc2l0aW9uMiA9IG1vdmVUeXBlICE9PSAyICYmIHNoYXBlRmxhZyAmIDEgJiYgdHJhbnNpdGlvbjtcbiAgICBpZiAobmVlZFRyYW5zaXRpb24yKSB7XG4gICAgICBpZiAobW92ZVR5cGUgPT09IDApIHtcbiAgICAgICAgdHJhbnNpdGlvbi5iZWZvcmVFbnRlcihlbCk7XG4gICAgICAgIGhvc3RJbnNlcnQoZWwsIGNvbnRhaW5lciwgYW5jaG9yKTtcbiAgICAgICAgcXVldWVQb3N0UmVuZGVyRWZmZWN0KCgpID0+IHRyYW5zaXRpb24uZW50ZXIoZWwpLCBwYXJlbnRTdXNwZW5zZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB7IGxlYXZlLCBkZWxheUxlYXZlLCBhZnRlckxlYXZlIH0gPSB0cmFuc2l0aW9uO1xuICAgICAgICBjb25zdCByZW1vdmUyID0gKCkgPT4gaG9zdEluc2VydChlbCwgY29udGFpbmVyLCBhbmNob3IpO1xuICAgICAgICBjb25zdCBwZXJmb3JtTGVhdmUgPSAoKSA9PiB7XG4gICAgICAgICAgbGVhdmUoZWwsICgpID0+IHtcbiAgICAgICAgICAgIHJlbW92ZTIoKTtcbiAgICAgICAgICAgIGFmdGVyTGVhdmUgJiYgYWZ0ZXJMZWF2ZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICBpZiAoZGVsYXlMZWF2ZSkge1xuICAgICAgICAgIGRlbGF5TGVhdmUoZWwsIHJlbW92ZTIsIHBlcmZvcm1MZWF2ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVyZm9ybUxlYXZlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaG9zdEluc2VydChlbCwgY29udGFpbmVyLCBhbmNob3IpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgdW5tb3VudCA9ICh2bm9kZSwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgZG9SZW1vdmUgPSBmYWxzZSwgb3B0aW1pemVkID0gZmFsc2UpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICB0eXBlLFxuICAgICAgcHJvcHMsXG4gICAgICByZWYsXG4gICAgICBjaGlsZHJlbixcbiAgICAgIGR5bmFtaWNDaGlsZHJlbixcbiAgICAgIHNoYXBlRmxhZyxcbiAgICAgIHBhdGNoRmxhZyxcbiAgICAgIGRpcnMsXG4gICAgICBjYWNoZUluZGV4XG4gICAgfSA9IHZub2RlO1xuICAgIGlmIChwYXRjaEZsYWcgPT09IC0yKSB7XG4gICAgICBvcHRpbWl6ZWQgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHJlZiAhPSBudWxsKSB7XG4gICAgICBzZXRSZWYocmVmLCBudWxsLCBwYXJlbnRTdXNwZW5zZSwgdm5vZGUsIHRydWUpO1xuICAgIH1cbiAgICBpZiAoY2FjaGVJbmRleCAhPSBudWxsKSB7XG4gICAgICBwYXJlbnRDb21wb25lbnQucmVuZGVyQ2FjaGVbY2FjaGVJbmRleF0gPSB2b2lkIDA7XG4gICAgfVxuICAgIGlmIChzaGFwZUZsYWcgJiAyNTYpIHtcbiAgICAgIHBhcmVudENvbXBvbmVudC5jdHguZGVhY3RpdmF0ZSh2bm9kZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHNob3VsZEludm9rZURpcnMgPSBzaGFwZUZsYWcgJiAxICYmIGRpcnM7XG4gICAgY29uc3Qgc2hvdWxkSW52b2tlVm5vZGVIb29rID0gIWlzQXN5bmNXcmFwcGVyKHZub2RlKTtcbiAgICBsZXQgdm5vZGVIb29rO1xuICAgIGlmIChzaG91bGRJbnZva2VWbm9kZUhvb2sgJiYgKHZub2RlSG9vayA9IHByb3BzICYmIHByb3BzLm9uVm5vZGVCZWZvcmVVbm1vdW50KSkge1xuICAgICAgaW52b2tlVk5vZGVIb29rKHZub2RlSG9vaywgcGFyZW50Q29tcG9uZW50LCB2bm9kZSk7XG4gICAgfVxuICAgIGlmIChzaGFwZUZsYWcgJiA2KSB7XG4gICAgICB1bm1vdW50Q29tcG9uZW50KHZub2RlLmNvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGRvUmVtb3ZlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHNoYXBlRmxhZyAmIDEyOCkge1xuICAgICAgICB2bm9kZS5zdXNwZW5zZS51bm1vdW50KHBhcmVudFN1c3BlbnNlLCBkb1JlbW92ZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChzaG91bGRJbnZva2VEaXJzKSB7XG4gICAgICAgIGludm9rZURpcmVjdGl2ZUhvb2sodm5vZGUsIG51bGwsIHBhcmVudENvbXBvbmVudCwgXCJiZWZvcmVVbm1vdW50XCIpO1xuICAgICAgfVxuICAgICAgaWYgKHNoYXBlRmxhZyAmIDY0KSB7XG4gICAgICAgIHZub2RlLnR5cGUucmVtb3ZlKFxuICAgICAgICAgIHZub2RlLFxuICAgICAgICAgIHBhcmVudENvbXBvbmVudCxcbiAgICAgICAgICBwYXJlbnRTdXNwZW5zZSxcbiAgICAgICAgICBpbnRlcm5hbHMsXG4gICAgICAgICAgZG9SZW1vdmVcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAoZHluYW1pY0NoaWxkcmVuICYmIC8vICM1MTU0XG4gICAgICAvLyB3aGVuIHYtb25jZSBpcyB1c2VkIGluc2lkZSBhIGJsb2NrLCBzZXRCbG9ja1RyYWNraW5nKC0xKSBtYXJrcyB0aGVcbiAgICAgIC8vIHBhcmVudCBibG9jayB3aXRoIGhhc09uY2U6IHRydWVcbiAgICAgIC8vIHNvIHRoYXQgaXQgZG9lc24ndCB0YWtlIHRoZSBmYXN0IHBhdGggZHVyaW5nIHVubW91bnQgLSBvdGhlcndpc2VcbiAgICAgIC8vIGNvbXBvbmVudHMgbmVzdGVkIGluIHYtb25jZSBhcmUgbmV2ZXIgdW5tb3VudGVkLlxuICAgICAgIWR5bmFtaWNDaGlsZHJlbi5oYXNPbmNlICYmIC8vICMxMTUzOiBmYXN0IHBhdGggc2hvdWxkIG5vdCBiZSB0YWtlbiBmb3Igbm9uLXN0YWJsZSAodi1mb3IpIGZyYWdtZW50c1xuICAgICAgKHR5cGUgIT09IEZyYWdtZW50IHx8IHBhdGNoRmxhZyA+IDAgJiYgcGF0Y2hGbGFnICYgNjQpKSB7XG4gICAgICAgIHVubW91bnRDaGlsZHJlbihcbiAgICAgICAgICBkeW5hbWljQ2hpbGRyZW4sXG4gICAgICAgICAgcGFyZW50Q29tcG9uZW50LFxuICAgICAgICAgIHBhcmVudFN1c3BlbnNlLFxuICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgIHRydWVcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gRnJhZ21lbnQgJiYgcGF0Y2hGbGFnICYgKDEyOCB8IDI1NikgfHwgIW9wdGltaXplZCAmJiBzaGFwZUZsYWcgJiAxNikge1xuICAgICAgICB1bm1vdW50Q2hpbGRyZW4oY2hpbGRyZW4sIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UpO1xuICAgICAgfVxuICAgICAgaWYgKGRvUmVtb3ZlKSB7XG4gICAgICAgI
15HJlbW92ZSh2bm9kZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChzaG91bGRJbnZva2VWbm9kZUhvb2sgJiYgKHZub2RlSG9vayA9IHByb3BzICYmIHByb3BzLm9uVm5vZGVVbm1vdW50ZWQpIHx8IHNob3VsZEludm9rZURpcnMpIHtcbiAgICAgIHF1ZXVlUG9zdFJlbmRlckVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHZub2RlSG9vayAmJiBpbnZva2VWTm9kZUhvb2sodm5vZGVIb29rLCBwYXJlbnRDb21wb25lbnQsIHZub2RlKTtcbiAgICAgICAgc2hvdWxkSW52b2tlRGlycyAmJiBpbnZva2VEaXJlY3RpdmVIb29rKHZub2RlLCBudWxsLCBwYXJlbnRDb21wb25lbnQsIFwidW5tb3VudGVkXCIpO1xuICAgICAgfSwgcGFyZW50U3VzcGVuc2UpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgcmVtb3ZlID0gKHZub2RlKSA9PiB7XG4gICAgY29uc3QgeyB0eXBlLCBlbCwgYW5jaG9yLCB0cmFuc2l0aW9uIH0gPSB2bm9kZTtcbiAgICBpZiAodHlwZSA9PT0gRnJhZ21lbnQpIHtcbiAgICAgIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpICYmIHZub2RlLnBhdGNoRmxhZyA+IDAgJiYgdm5vZGUucGF0Y2hGbGFnICYgMjA0OCAmJiB0cmFuc2l0aW9uICYmICF0cmFuc2l0aW9uLnBlcnNpc3RlZCkge1xuICAgICAgICB2bm9kZS5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZCkgPT4ge1xuICAgICAgICAgIGlmIChjaGlsZC50eXBlID09PSBDb21tZW50KSB7XG4gICAgICAgICAgICBob3N0UmVtb3ZlKGNoaWxkLmVsKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVtb3ZlKGNoaWxkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVtb3ZlRnJhZ21lbnQoZWwsIGFuY2hvcik7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0eXBlID09PSBTdGF0aWMpIHtcbiAgICAgIHJlbW92ZVN0YXRpY05vZGUodm5vZGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBwZXJmb3JtUmVtb3ZlID0gKCkgPT4ge1xuICAgICAgaG9zdFJlbW92ZShlbCk7XG4gICAgICBpZiAodHJhbnNpdGlvbiAmJiAhdHJhbnNpdGlvbi5wZXJzaXN0ZWQgJiYgdHJhbnNpdGlvbi5hZnRlckxlYXZlKSB7XG4gICAgICAgIHRyYW5zaXRpb24uYWZ0ZXJMZWF2ZSgpO1xuICAgICAgfVxuICAgIH07XG4gICAgaWYgKHZub2RlLnNoYXBlRmxhZyAmIDEgJiYgdHJhbnNpdGlvbiAmJiAhdHJhbnNpdGlvbi5wZXJzaXN0ZWQpIHtcbiAgICAgIGNvbnN0IHsgbGVhdmUsIGRlbGF5TGVhdmUgfSA9IHRyYW5zaXRpb247XG4gICAgICBjb25zdCBwZXJmb3JtTGVhdmUgPSAoKSA9PiBsZWF2ZShlbCwgcGVyZm9ybVJlbW92ZSk7XG4gICAgICBpZiAoZGVsYXlMZWF2ZSkge1xuICAgICAgICBkZWxheUxlYXZlKHZub2RlLmVsLCBwZXJmb3JtUmVtb3ZlLCBwZXJmb3JtTGVhdmUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVyZm9ybUxlYXZlKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlcmZvcm1SZW1vdmUoKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IHJlbW92ZUZyYWdtZW50ID0gKGN1ciwgZW5kKSA9PiB7XG4gICAgbGV0IG5leHQ7XG4gICAgd2hpbGUgKGN1ciAhPT0gZW5kKSB7XG4gICAgICBuZXh0ID0gaG9zdE5leHRTaWJsaW5nKGN1cik7XG4gICAgICBob3N0UmVtb3ZlKGN1cik7XG4gICAgICBjdXIgPSBuZXh0O1xuICAgIH1cbiAgICBob3N0UmVtb3ZlKGVuZCk7XG4gIH07XG4gIGNvbnN0IHVubW91bnRDb21wb25lbnQgPSAoaW5zdGFuY2UsIHBhcmVudFN1c3BlbnNlLCBkb1JlbW92ZSkgPT4ge1xuICAgIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpICYmIGluc3RhbmNlLnR5cGUuX19obXJJZCkge1xuICAgICAgdW5yZWdpc3RlckhNUihpbnN0YW5jZSk7XG4gICAgfVxuICAgIGNvbnN0IHsgYnVtLCBzY29wZSwgdXBkYXRlLCBzdWJUcmVlLCB1bSwgbSwgYSB9ID0gaW5zdGFuY2U7XG4gICAgaW52YWxpZGF0ZU1vdW50KG0pO1xuICAgIGludmFsaWRhdGVNb3VudChhKTtcbiAgICBpZiAoYnVtKSB7XG4gICAgICBpbnZva2VBcnJheUZucyhidW0pO1xuICAgIH1cbiAgICBzY29wZS5zdG9wKCk7XG4gICAgaWYgKHVwZGF0ZSkge1xuICAgICAgdXBkYXRlLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgdW5tb3VudChzdWJUcmVlLCBpbnN0YW5jZSwgcGFyZW50U3VzcGVuc2UsIGRvUmVtb3ZlKTtcbiAgICB9XG4gICAgaWYgKHVtKSB7XG4gICAgICBxdWV1ZVBvc3RSZW5kZXJFZmZlY3QodW0sIHBhcmVudFN1c3BlbnNlKTtcbiAgICB9XG4gICAgcXVldWVQb3N0UmVuZGVyRWZmZWN0KCgpID0+IHtcbiAgICAgIGluc3RhbmNlLmlzVW5tb3VudGVkID0gdHJ1ZTtcbiAgICB9LCBwYXJlbnRTdXNwZW5zZSk7XG4gICAgaWYgKHBhcmVudFN1c3BlbnNlICYmIHBhcmVudFN1c3BlbnNlLnBlbmRpbmdCcmFuY2ggJiYgIXBhcmVudFN1c3BlbnNlLmlzVW5tb3VudGVkICYmIGluc3RhbmNlLmFzeW5jRGVwICYmICFpbnN0YW5jZS5hc3luY1Jlc29sdmVkICYmIGluc3RhbmNlLnN1c3BlbnNlSWQgPT09IHBhcmVudFN1c3BlbnNlLnBlbmRpbmdJZCkge1xuICAgICAgcGFyZW50U3VzcGVuc2UuZGVwcy0tO1xuICAgICAgaWYgKHBhcmVudFN1c3BlbnNlLmRlcHMgPT09IDApIHtcbiAgICAgICAgcGFyZW50U3VzcGVuc2UucmVzb2x2ZSgpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB8fCBfX1ZVRV9QUk9EX0RFVlRPT0xTX18pIHtcbiAgICAgIGRldnRvb2xzQ29tcG9uZW50UmVtb3ZlZChpbnN0YW5jZSk7XG4gICAgfVxuICB9O1xuICBjb25zdCB1bm1vdW50Q2hpbGRyZW4gPSAoY2hpbGRyZW4sIHBhcmVudENvbXBvbmVudCwgcGFyZW50U3VzcGVuc2UsIGRvUmVtb3ZlID0gZmFsc2UsIG9wdGltaXplZCA9IGZhbHNlLCBzdGFydCA9IDApID0+IHtcbiAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgdW5tb3VudChjaGlsZHJlbltpXSwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgZG9SZW1vdmUsIG9wdGltaXplZCk7XG4gICAgfVxuICB9O1xuICBjb25zdCBnZXROZXh0SG9zdE5vZGUgPSAodm5vZGUpID0+IHtcbiAgICBpZiAodm5vZGUuc2hhcGVGbGFnICYgNikge1xuICAgICAgcmV0dXJuIGdldE5leHRIb3N0Tm9kZSh2bm9kZS5jb21wb25lbnQuc3ViVHJlZSk7XG4gICAgfVxuICAgIGlmICh2bm9kZS5zaGFwZUZsYWcgJiAxMjgpIHtcbiAgICAgIHJldHVybi
15B2bm9kZS5zdXNwZW5zZS5uZXh0KCk7XG4gICAgfVxuICAgIGNvbnN0IGVsID0gaG9zdE5leHRTaWJsaW5nKHZub2RlLmFuY2hvciB8fCB2bm9kZS5lbCk7XG4gICAgY29uc3QgdGVsZXBvcnRFbmQgPSBlbCAmJiBlbFtUZWxlcG9ydEVuZEtleV07XG4gICAgcmV0dXJuIHRlbGVwb3J0RW5kID8gaG9zdE5leHRTaWJsaW5nKHRlbGVwb3J0RW5kKSA6IGVsO1xuICB9O1xuICBsZXQgaXNGbHVzaGluZyA9IGZhbHNlO1xuICBjb25zdCByZW5kZXIgPSAodm5vZGUsIGNvbnRhaW5lciwgbmFtZXNwYWNlKSA9PiB7XG4gICAgaWYgKHZub2RlID09IG51bGwpIHtcbiAgICAgIGlmIChjb250YWluZXIuX3Zub2RlKSB7XG4gICAgICAgIHVubW91bnQoY29udGFpbmVyLl92bm9kZSwgbnVsbCwgbnVsbCwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhdGNoKFxuICAgICAgICBjb250YWluZXIuX3Zub2RlIHx8IG51bGwsXG4gICAgICAgIHZub2RlLFxuICAgICAgICBjb250YWluZXIsXG4gICAgICAgIG51bGwsXG4gICAgICAgIG51bGwsXG4gICAgICAgIG51bGwsXG4gICAgICAgIG5hbWVzcGFjZVxuICAgICAgKTtcbiAgICB9XG4gICAgY29udGFpbmVyLl92bm9kZSA9IHZub2RlO1xuICAgIGlmICghaXNGbHVzaGluZykge1xuICAgICAgaXNGbHVzaGluZyA9IHRydWU7XG4gICAgICBmbHVzaFByZUZsdXNoQ2JzKCk7XG4gICAgICBmbHVzaFBvc3RGbHVzaENicygpO1xuICAgICAgaXNGbHVzaGluZyA9IGZhbHNlO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgaW50ZXJuYWxzID0ge1xuICAgIHA6IHBhdGNoLFxuICAgIHVtOiB1bm1vdW50LFxuICAgIG06IG1vdmUsXG4gICAgcjogcmVtb3ZlLFxuICAgIG10OiBtb3VudENvbXBvbmVudCxcbiAgICBtYzogbW91bnRDaGlsZHJlbixcbiAgICBwYzogcGF0Y2hDaGlsZHJlbixcbiAgICBwYmM6IHBhdGNoQmxvY2tDaGlsZHJlbixcbiAgICBuOiBnZXROZXh0SG9zdE5vZGUsXG4gICAgbzogb3B0aW9uc1xuICB9O1xuICBsZXQgaHlkcmF0ZTtcbiAgbGV0IGh5ZHJhdGVOb2RlO1xuICBpZiAoY3JlYXRlSHlkcmF0aW9uRm5zKSB7XG4gICAgW2h5ZHJhdGUsIGh5ZHJhdGVOb2RlXSA9IGNyZWF0ZUh5ZHJhdGlvbkZucyhcbiAgICAgIGludGVybmFsc1xuICAgICk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICByZW5kZXIsXG4gICAgaHlkcmF0ZSxcbiAgICBjcmVhdGVBcHA6IGNyZWF0ZUFwcEFQSShyZW5kZXIsIGh5ZHJhdGUpXG4gIH07XG59XG5mdW5jdGlvbiByZXNvbHZlQ2hpbGRyZW5OYW1lc3BhY2UoeyB0eXBlLCBwcm9wcyB9LCBjdXJyZW50TmFtZXNwYWNlKSB7XG4gIHJldHVybiBjdXJyZW50TmFtZXNwYWNlID09PSBcInN2Z1wiICYmIHR5cGUgPT09IFwiZm9yZWlnbk9iamVjdFwiIHx8IGN1cnJlbnROYW1lc3BhY2UgPT09IFwibWF0aG1sXCIgJiYgdHlwZSA9PT0gXCJhbm5vdGF0aW9uLXhtbFwiICYmIHByb3BzICYmIHByb3BzLmVuY29kaW5nICYmIHByb3BzLmVuY29kaW5nLmluY2x1ZGVzKFwiaHRtbFwiKSA/IHZvaWQgMCA6IGN1cnJlbnROYW1lc3BhY2U7XG59XG5mdW5jdGlvbiB0b2dnbGVSZWN1cnNlKHsgZWZmZWN0LCB1cGRhdGUgfSwgYWxsb3dlZCkge1xuICBlZmZlY3QuYWxsb3dSZWN1cnNlID0gdXBkYXRlLmFsbG93UmVjdXJzZSA9IGFsbG93ZWQ7XG59XG5mdW5jdGlvbiBuZWVkVHJhbnNpdGlvbihwYXJlbnRTdXNwZW5zZSwgdHJhbnNpdGlvbikge1xuICByZXR1cm4gKCFwYXJlbnRTdXNwZW5zZSB8fCBwYXJlbnRTdXNwZW5zZSAmJiAhcGFyZW50U3VzcGVuc2UucGVuZGluZ0JyYW5jaCkgJiYgdHJhbnNpdGlvbiAmJiAhdHJhbnNpdGlvbi5wZXJzaXN0ZWQ7XG59XG5mdW5jdGlvbiB0cmF2ZXJzZVN0YXRpY0NoaWxkcmVuKG4xLCBuMiwgc2hhbGxvdyA9IGZhbHNlKSB7XG4gIGNvbnN0IGNoMSA9IG4xLmNoaWxkcmVuO1xuICBjb25zdCBjaDIgPSBuMi5jaGlsZHJlbjtcbiAgaWYgKGlzQXJyYXkoY2gxKSAmJiBpc0FycmF5KGNoMikpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoMS5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgYzEgPSBjaDFbaV07XG4gICAgICBsZXQgYzIgPSBjaDJbaV07XG4gICAgICBpZiAoYzIuc2hhcGVGbGFnICYgMSAmJiAhYzIuZHluYW1pY0NoaWxkcmVuKSB7XG4gICAgICAgIGlmIChjMi5wYXRjaEZsYWcgPD0gMCB8fCBjMi5wYXRjaEZsYWcgPT09IDMyKSB7XG4gICAgICAgICAgYzIgPSBjaDJbaV0gPSBjbG9uZUlmTW91bnRlZChjaDJbaV0pO1xuICAgICAgICAgIGMyLmVsID0gYzEuZWw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFzaGFsbG93ICYmIGMyLnBhdGNoRmxhZyAhPT0gLTIpXG4gICAgICAgICAgdHJhdmVyc2VTdGF0aWNDaGlsZHJlbihjMSwgYzIpO1xuICAgICAgfVxuICAgICAgaWYgKGMyLnR5cGUgPT09IFRleHQpIHtcbiAgICAgICAgYzIuZWwgPSBjMS5lbDtcbiAgICAgIH1cbiAgICAgIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpICYmIGMyLnR5cGUgPT09IENvbW1lbnQgJiYgIWMyLmVsKSB7XG4gICAgICAgIGMyLmVsID0gYzEuZWw7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5mdW5jdGlvbiBnZXRTZXF1ZW5jZShhcnIpIHtcbiAgY29uc3QgcCA9IGFyci5zbGljZSgpO1xuICBjb25zdCByZXN1bHQgPSBbMF07XG4gIGxldCBpLCBqLCB1LCB2LCBjO1xuICBjb25zdCBsZW4gPSBhcnIubGVuZ3RoO1xuICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBjb25zdCBhcnJJID0gYXJyW2ldO1xuICAgIGlmIChhcnJJICE9PSAwKSB7XG4gICAgICBqID0gcmVzdWx0W3Jlc3VsdC5sZW5ndGggLSAxXTtcbiAgICAgIGlmIChhcnJbal0gPCBhcnJJKSB7XG4gICAgICAgIHBbaV0gPSBqO1xuICAgICAgICByZXN1bHQucHVzaChpKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICB1ID0gMDtcbiAgICAgIHYgPSByZXN1bHQubGVuZ3RoIC0gMTtcbiAgICAgIHdoaWxlICh1IDwgdikge1xuICAgICAgICBjID0gdSArIHYgPj4gMTtcbiAgICAgICAgaWYgKGFycltyZXN1bHRbY11dIDwgYXJySSkge1xuICAgICAgICAgIHUgPSBjICsgMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2ID0gYztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGFyckkgPCBhcnJbcmVzdWx0W3VdXSkge1xuICAgICAgICBpZiAodSA+IDApIHtcbiAgICAgICAgICBwW2ldID0gcmVzdWx0W3UgLSAxXTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHRbdV0gPSBpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICB1ID0gcmVzdWx0Lmxlbmd0aDtcbiAgdiA9IHJlc3VsdFt1IC0gMV07XG4gIHdoaWxlICh1LS0gPiAwKSB7XG4gICAgcmVzdWx0W3VdID0gdjtcbiAgICB2ID0gcFt2XTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gbG9jYXRlTm9uSHlkcmF0ZWRBc3luY1Jvb3QoaW5zdGFuY2UpIHtcbiAgY29uc3Qgc3ViQ29tcG9uZW50ID0gaW5zdGFuY2Uuc3ViVHJlZS5jb21wb25lbnQ7XG4gIGlmIChzdWJDb21wb25lbnQpIHtcbiAgICBpZiAoc3ViQ29tcG9uZW50LmFzeW5jRGVwICYmICFzdWJDb21wb25lbnQuYXN5bmNSZXNvbHZlZCkge1xuICAgICAgcmV0dXJuIHN1YkNvbXBvbmVudDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGxvY2F0ZU5vbkh5ZHJhdGVkQXN5bmNSb290KHN1YkNvbXBvbmVudCk7XG4gICAgfVxuICB9XG59XG5mdW5jdGlvbiBpbnZhbGlkYXRlTW91bnQoaG9va3MpIHtcbiAgaWYgKGhvb2tzKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBob29rcy5sZW5ndGg7IGkrKykgaG9va3NbaV0uYWN0aXZlID0gZmFsc2U7XG4gIH1cbn1cblxuY29uc3Qgc3NyQ29udGV4dEtleSA9IFN5bWJvbC5mb3IoXCJ2LXNjeFwiKTtcbmNvbnN0IHVzZVNTUkNvbnRleHQgPSAoKSA9PiB7XG4gIHtcbiAgICBjb25zdCBjdHggPSBpbmplY3Qoc3NyQ29udGV4dEtleSk7XG4gICAgaWYgKCFjdHgpIHtcbiAgICAgICEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgJiYgd2FybiQxKFxuICAgICAgICBgU2VydmVyIHJlbmRlcmluZyBjb250ZXh0IG5vdCBwcm92aWRlZC4gTWFrZSBzdXJlIHRvIG9ubHkgY2FsbCB1c2VTU1JDb250ZXh0KCkgY29uZGl0aW9uYWxseSBpbiB0aGUgc2VydmVyIGJ1aWxkLmBcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybi
15BjdHg7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIHdhdGNoRWZmZWN0KGVmZmVjdCwgb3B0aW9ucykge1xuICByZXR1cm4gZG9XYXRjaChlZmZlY3QsIG51bGwsIG9wdGlvbnMpO1xufVxuZnVuY3Rpb24gd2F0Y2hQb3N0RWZmZWN0KGVmZmVjdCwgb3B0aW9ucykge1xuICByZXR1cm4gZG9XYXRjaChcbiAgICBlZmZlY3QsXG4gICAgbnVsbCxcbiAgICAhIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpID8gZXh0ZW5kKHt9LCBvcHRpb25zLCB7IGZsdXNoOiBcInBvc3RcIiB9KSA6IHsgZmx1c2g6IFwicG9zdFwiIH1cbiAgKTtcbn1cbmZ1bmN0aW9uIHdhdGNoU3luY0VmZmVjdChlZmZlY3QsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIGRvV2F0Y2goXG4gICAgZWZmZWN0LFxuICAgIG51bGwsXG4gICAgISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSA/IGV4dGVuZCh7fSwgb3B0aW9ucywgeyBmbHVzaDogXCJzeW5jXCIgfSkgOiB7IGZsdXNoOiBcInN5bmNcIiB9XG4gICk7XG59XG5jb25zdCBJTklUSUFMX1dBVENIRVJfVkFMVUUgPSB7fTtcbmZ1bmN0aW9uIHdhdGNoKHNvdXJjZSwgY2IsIG9wdGlvbnMpIHtcbiAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgJiYgIWlzRnVuY3Rpb24oY2IpKSB7XG4gICAgd2FybiQxKFxuICAgICAgYFxcYHdhdGNoKGZuLCBvcHRpb25zPylcXGAgc2lnbmF0dXJlIGhhcyBiZWVuIG1vdmVkIHRvIGEgc2VwYXJhdGUgQVBJLiBVc2UgXFxgd2F0Y2hFZmZlY3QoZm4sIG9wdGlvbnM/KVxcYCBpbnN0ZWFkLiBcXGB3YXRjaFxcYCBub3cgb25seSBzdXBwb3J0cyBcXGB3YXRjaChzb3VyY2UsIGNiLCBvcHRpb25zPykgc2lnbmF0dXJlLmBcbiAgICApO1xuICB9XG4gIHJldHVybiBkb1dhdGNoKHNvdXJjZSwgY2IsIG9wdGlvbnMpO1xufVxuZnVuY3Rpb24gZG9XYXRjaChzb3VyY2UsIGNiLCB7XG4gIGltbWVkaWF0ZSxcbiAgZGVlcCxcbiAgZmx1c2gsXG4gIG9uY2UsXG4gIG9uVHJhY2ssXG4gIG9uVHJpZ2dlclxufSA9IEVNUFRZX09CSikge1xuICBpZiAoY2IgJiYgb25jZSkge1xuICAgIGNvbnN0IF9jYiA9IGNiO1xuICAgIGNiID0gKC4uLmFyZ3MpID0+IHtcbiAgICAgIF9jYiguLi5hcmdzKTtcbiAgICAgIHVud2F0Y2goKTtcbiAgICB9O1xuICB9XG4gIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpICYmIGRlZXAgIT09IHZvaWQgMCAmJiB0eXBlb2YgZGVlcCA9PT0gXCJudW1iZXJcIikge1xuICAgIHdhcm4kMShcbiAgICAgIGB3YXRjaCgpIFwiZGVlcFwiIG9wdGlvbiB3aXRoIG51bWJlciB2YWx1ZSB3aWxsIGJlIHVzZWQgYXMgd2F0Y2ggZGVwdGggaW4gZnV0dXJlIHZlcnNpb25zLiBQbGVhc2UgdXNlIGEgYm9vbGVhbiBpbnN0ZWFkIHRvIGF2b2lkIHBvdGVudGlhbCBicmVha2FnZS5gXG4gICAgKTtcbiAgfVxuICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSAmJiAhY2IpIHtcbiAgICBpZiAoaW1tZWRpYXRlICE9PSB2b2lkIDApIHtcbiAgICAgIHdhcm4kMShcbiAgICAgICAgYHdhdGNoKCkgXCJpbW1lZGlhdGVcIiBvcHRpb24gaXMgb25seSByZXNwZWN0ZWQgd2hlbiB1c2luZyB0aGUgd2F0Y2goc291cmNlLCBjYWxsYmFjaywgb3B0aW9ucz8pIHNpZ25hdHVyZS5gXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoZGVlcCAhPT0gdm9pZCAwKSB7XG4gICAgICB3YXJuJDEoXG4gICAgICAgIGB3YXRjaCgpIFwiZGVlcFwiIG9wdGlvbiBpcyBvbmx5IHJlc3BlY3RlZCB3aGVuIHVzaW5nIHRoZSB3YXRjaChzb3VyY2UsIGNhbGxiYWNrLCBvcHRpb25zPykgc2lnbmF0dXJlLmBcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChvbmNlICE9PSB2b2lkIDApIHtcbiAgICAgIHdhcm4kMShcbiAgICAgICAgYHdhdGNoKCkgXCJvbmNlXCIgb3B0aW9uIGlzIG9ubHkgcmVzcGVjdGVkIHdoZW4gdXNpbmcgdGhlIHdhdGNoKHNvdXJjZSwgY2FsbGJhY2ssIG9wdGlvbnM/KSBzaWduYXR1cmUuYFxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgY29uc3Qgd2FybkludmFsaWRTb3VyY2UgPSAocykgPT4ge1xuICAgIHdhcm4kMShcbiAgICAgIGBJbnZhbGlkIHdhdGNoIHNvdXJjZTogYCxcbiAgICAgIHMsXG4gICAgICBgQSB3YXRjaCBzb3VyY2UgY2FuIG9ubHkgYmUgYSBnZXR0ZXIvZWZmZWN0IGZ1bmN0aW9uLCBhIHJlZiwgYSByZWFjdGl2ZSBvYmplY3QsIG9yIGFuIGFycmF5IG9mIHRoZXNlIHR5cGVzLmBcbiAgICApO1xuICB9O1xuICBjb25zdCBpbnN0YW5jZSA9IGN1cnJlbnRJbnN0YW5jZTtcbiAgY29uc3QgcmVhY3RpdmVHZXR0ZXIgPSAoc291cmNlMikgPT4gZGVlcCA9PT0gdHJ1ZSA/IHNvdXJjZTIgOiAoXG4gICAgLy8gZm9yIGRlZXA6IGZhbHNlLCBvbmx5IHRyYXZlcnNlIHJvb3QtbGV2ZWwgcHJv
15cGVydGllc1xuICAgIHRyYXZlcnNlKHNvdXJjZTIsIGRlZXAgPT09IGZhbHNlID8gMSA6IHZvaWQgMClcbiAgKTtcbiAgbGV0IGdldHRlcjtcbiAgbGV0IGZvcmNlVHJpZ2dlciA9IGZhbHNlO1xuICBsZXQgaXNNdWx0aVNvdXJjZSA9IGZhbHNlO1xuICBpZiAoaXNSZWYoc291cmNlKSkge1xuICAgIGdldHRlciA9ICgpID0+IHNvdXJjZS52YWx1ZTtcbiAgICBmb3JjZVRyaWdnZXIgPSBpc1NoYWxsb3coc291cmNlKTtcbiAgfSBlbHNlIGlmIChpc1JlYWN0aXZlKHNvdXJjZSkpIHtcbiAgICBnZXR0ZXIgPSAoKSA9PiByZWFjdGl2ZUdldHRlcihzb3VyY2UpO1xuICAgIGZvcmNlVHJpZ2dlciA9IHRydWU7XG4gIH0gZWxzZSBpZiAoaXNBcnJheShzb3VyY2UpKSB7XG4gICAgaXNNdWx0aVNvdXJjZSA9IHRydWU7XG4gICAgZm9yY2VUcmlnZ2VyID0gc291cmNlLnNvbWUoKHMpID0+IGlzUmVhY3RpdmUocykgfHwgaXNTaGFsbG93KHMpKTtcbiAgICBnZXR0ZXIgPSAoKSA9PiBzb3VyY2UubWFwKChzKSA9PiB7XG4gICAgICBpZiAoaXNSZWYocykpIHtcbiAgICAgICAgcmV0dXJuIHMudmFsdWU7XG4gICAgICB9IGVsc2UgaWYgKGlzUmVhY3RpdmUocykpIHtcbiAgICAgICAgcmV0dXJuIHJlYWN0aXZlR2V0dGVyKHMpO1xuICAgICAgfSBlbHNlIGlmIChpc0Z1bmN0aW9uKHMpKSB7XG4gICAgICAgIHJldHVybiBjYWxsV2l0aEVycm9ySGFuZGxpbmcocywgaW5zdGFuY2UsIDIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSAmJiB3YXJuSW52YWxpZFNvdXJjZShzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSBlbHNlIGlmIChpc0Z1bmN0aW9uKHNvdXJjZSkpIHtcbiAgICBpZiAoY2IpIHtcbiAgICAgIGdldHRlciA9ICgpID0+IGNhbGxXaXRoRXJyb3JIYW5kbGluZyhzb3VyY2UsIGluc3RhbmNlLCAyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZ2V0dGVyID0gKCkgPT4ge1xuICAgICAgICBpZiAoY2xlYW51cCkge1xuICAgICAgICAgIGNsZWFudXAoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2FsbFdpdGhBc3luY0Vycm9ySGFuZGxpbmcoXG4gICAgICAgICAgc291cmNlLFxuICAgICAgICAgIGluc3RhbmNlLFxuICAgICAgICAgIDMsXG4gICAgICAgICAgW29uQ2xlYW51cF1cbiAgICAgICAgKTtcbiAgICAgIH07XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGdldHRlciA9IE5PT1A7XG4gICAgISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSAmJiB3YXJuSW52YWxpZFNvdXJjZShzb3VyY2UpO1xuICB9XG4gIGlmIChjYiAmJiBkZWVwKSB7XG4gICAgY29uc3QgYmFzZUdldHRlciA9IGdldHRlcjtcbiAgICBnZXR0ZXIgPSAoKSA9PiB0cmF2ZXJzZShiYXNlR2V0dGVyKCkpO1xuICB9XG4gIGxldCBjbGVhbnVwO1xuICBsZXQgb25DbGVhbnVwID0gKGZuKSA9PiB7XG4gICAgY2xlYW51cCA9IGVmZmVjdC5vblN0b3AgPSAoKSA9PiB7XG4gICAgICBjYWxsV2l0aEVycm9ySGFuZGxpbmcoZm4sIGluc3RhbmNlLCA0KTtcbiAgICAgIGNsZWFudXAgPSBlZmZlY3Qub25TdG9wID0gdm9pZCAwO1xuICAgIH07XG4gIH07XG4gIGxldCBzc3JDbGVhbnVwO1xuICBpZiAoaXNJblNTUkNvbXBvbmVudFNldHVwKSB7XG4gICAgb25DbGVhbnVwID0gTk9PUDtcbiAgICBpZiAoIWNiKSB7XG4gICAgICBnZXR0ZXIoKTtcbiAgICB9IGVsc2UgaWYgKGltbWVkaWF0ZSkge1xuICAgICAgY2FsbFdpdGhBc3luY0Vycm9ySGFuZGxpbmcoY2IsIGluc3RhbmNlLCAzLCBbXG4gICAgICAgIGdldHRlcigpLFxuICAgICAgICBpc011bHRpU291cmNlID8gW10gOiB2b2lkIDAsXG4gICAgICAgIG9uQ2xlYW51cFxuICAgICAgXSk7XG4gICAgfVxuICAgIGlmIChmbHVzaCA9PT0gXCJzeW5jXCIpIHtcbiAgICAgIGNvbnN0IGN0eCA9IHVzZVNTUkNvbnRleHQoKTtcbiAgICAgIHNzckNsZWFudXAgPSBjdHguX193YXRjaGVySGFuZGxlcyB8fCAoY3R4Ll9fd2F0Y2hlckhhbmRsZXMgPSBbXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBOT09QO1xuICAgIH1cbiAgfVxuICBsZXQgb2xkVmFsdWUgPSBpc011bHRpU291cmNlID8gbmV3IEFycmF5KHNvdXJjZS5sZW5ndGgpLmZpbGwoSU5JVElBTF9XQVRDSEVSX1ZBTFVFKSA6IElOSVRJQUxfV0FUQ0hFUl9WQUxVRTtcbiAgY29uc3Qgam9iID0gKCkgPT4ge1xuICAgIGlmICghZWZmZWN0LmFjdGl2ZSB8fCAhZWZmZWN0LmRpcnR5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChjYikge1xuICAgICAgY29uc3QgbmV3VmFsdWUgPSBlZmZlY3QucnVuKCk7XG4gICAgICBpZiAoZGVlcCB8fCBmb3JjZVRyaWdnZXIgfHwgKGlzTXVsdGlTb3VyY2UgPyBuZXdWYWx1ZS5zb21lKCh2LCBpKSA9PiBoYXNDaGFuZ2VkKHYsIG9sZFZhbHVlW2ldKSkgOiBoYXNDaGFuZ2VkKG5ld1ZhbHVlLCBvbGRWYWx1ZSkpIHx8IGZhbHNlKSB7XG4gICAgICAgIGlmIChjbGVhbnVwKSB7XG4gICAgICAgICAgY2xlYW51cCgpO1xuICAgICAgICB9XG4gICAgICAgIGNhbGxXaXRoQXN5bmNFcnJvckhhbmRsaW5nKGNiLCBpbnN0YW5jZSwgMywgW1xuICAgICAgICAgIG5ld1ZhbHVlLFxuICAgICAgICAgIC8vIHBhc3MgdW5kZWZpbmVkIGFzIHRoZSBvbGQgdmFsdWUgd2hlbiBpdCdzIGNoYW5nZWQgZm9yIHRoZSBmaXJzdCB0aW1lXG4gICAgICAgICAgb2xkVmFsdWUgPT09IElOSVRJQUxfV0FUQ0hFUl9WQUxVRSA/IHZvaWQgMCA6IGlzTXVsdGlTb3VyY2UgJiYgb2xkVmFsdWVbMF0gPT09IElOSVRJQUxfV0FUQ0hFUl9WQUxVRSA/IFtdIDogb2xkVmFsdWUsXG4gICAgICAgICAgb25DbGVhbnVwXG4gICAgICAgIF0pO1xuICAgICAgICBvbGRWYWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBlZmZlY3QucnVuKCk7XG4gICAgfVxuICB9O1xuICBqb2IuYWxsb3dSZWN1cnNlID0gISFjYjtcbiAgbGV0IHNjaGVkdWxlcjtcbiAgaWYgKGZsdXNoID09PSBcInN5bmNcIikge1xuICAgIHNjaGVkdWxlciA9IGpvYjtcbiAgfSBlbHNlIGlmIChmbHVzaCA9PT0gXCJwb3N0XCIpIHtcbiAgICBzY2hlZHVsZXIgPSAoKSA9PiBxdWV1ZVBvc3RSZW5kZXJFZmZlY3Qoam9iLCBpbnN0YW5jZSAmJiBpbnN0YW5jZS5zdXNwZW5zZSk7XG4gIH0gZWxzZSB7XG4gICAgam9iLnByZSA9IHRydWU7XG4gICAgaWYgKGluc3RhbmNlKSBqb2IuaWQgPSBpbnN0YW5jZS51aWQ7XG4gICAgc2NoZWR1bGVyID0gKCkgPT4gcXVldWVKb2Ioam9iKTtcbiAgfVxuICBjb25zdCBlZmZlY3QgPSBuZXcgUmVhY3RpdmVFZmZlY3QoZ2V0dGVyLCBOT09QLCBzY2hlZHVsZXIpO1xuICBjb25zdCBzY29wZSA9IGdldEN1cnJlbnRTY29wZSgpO1xuICBjb25zdCB1bndhdGNoID0gKCkgPT4ge1xuICAgIGVmZmVjdC5zdG9wKCk7XG4gICAgaWYgKHNjb3BlKSB7XG4gICAgICByZW1vdmUoc2NvcGUuZWZmZWN0cywgZWZmZWN0KTtcbiAgICB9XG4gI
15H07XG4gIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpKSB7XG4gICAgZWZmZWN0Lm9uVHJhY2sgPSBvblRyYWNrO1xuICAgIGVmZmVjdC5vblRyaWdnZXIgPSBvblRyaWdnZXI7XG4gIH1cbiAgaWYgKGNiKSB7XG4gICAgaWYgKGltbWVkaWF0ZSkge1xuICAgICAgam9iKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9sZFZhbHVlID0gZWZmZWN0LnJ1bigpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChmbHVzaCA9PT0gXCJwb3N0XCIpIHtcbiAgICBxdWV1ZVBvc3RSZW5kZXJFZmZlY3QoXG4gICAgICBlZmZlY3QucnVuLmJpbmQoZWZmZWN0KSxcbiAgICAgIGluc3RhbmNlICYmIGluc3RhbmNlLnN1c3BlbnNlXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICBlZmZlY3QucnVuKCk7XG4gIH1cbiAgaWYgKHNzckNsZWFudXApIHNzckNsZWFudXAucHVzaCh1bndhdGNoKTtcbiAgcmV0dXJuIHVud2F0Y2g7XG59XG5mdW5jdGlvbiBpbnN0YW5jZVdhdGNoKHNvdXJjZSwgdmFsdWUsIG9wdGlvbnMpIHtcbiAgY29uc3QgcHVibGljVGhpcyA9IHRoaXMucHJveHk7XG4gIGNvbnN0IGdldHRlciA9IGlzU3RyaW5nKHNvdXJjZSkgPyBzb3VyY2UuaW5jbHVkZXMoXCIuXCIpID8gY3JlYXRlUGF0aEdldHRlcihwdWJsaWNUaGlzLCBzb3VyY2UpIDogKCkgPT4gcHVibGljVGhpc1tzb3VyY2VdIDogc291cmNlLmJpbmQocHVibGljVGhpcywgcHVibGljVGhpcyk7XG4gIGxldCBjYjtcbiAgaWYgKGlzRnVuY3Rpb24odmFsdWUpKSB7XG4gICAgY2IgPSB2YWx1ZTtcbiAgfSBlbHNlIHtcbiAgICBjYiA9IHZhbHVlLmhhbmRsZXI7XG4gICAgb3B0aW9ucyA9IHZhbHVlO1xuICB9XG4gIGNvbnN0IHJlc2V0ID0gc2V0Q3VycmVudEluc3RhbmNlKHRoaXMpO1xuICBjb25zdCByZXMgPSBkb1dhdGNoKGdldHRlciwgY2IuYmluZChwdWJsaWNUaGlzKSwgb3B0aW9ucyk7XG4gIHJlc2V0KCk7XG4gIHJldHVybiByZXM7XG59XG5mdW5jdGlvbiBjcmVhdGVQYXRoR2V0dGVyKGN0eCwgcGF0aCkge1xuICBjb25zdCBzZWdtZW50cyA9IHBhdGguc3BsaXQoXCIuXCIpO1xuICByZXR1cm4gKCkgPT4ge1xuICAgIGxldCBjdXIgPSBjdHg7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZWdtZW50cy5sZW5ndGggJiYgY3VyOyBpKyspIHtcbiAgICAgIGN1ciA9IGN1cltzZWdtZW50c1tpXV07XG4gICAgfVxuICAgIHJldHVybiBjdXI7XG4gIH07XG59XG5mdW5jdGlvbiB0cmF2ZXJzZSh2YWx1ZSwgZGVwdGggPSBJbmZpbml0eSwgc2Vlbikge1xuICBpZiAoZGVwdGggPD0gMCB8fCAhaXNPYmplY3QodmFsdWUpIHx8IHZhbHVlW1wiX192X3NraXBcIl0pIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgc2VlbiA9IHNlZW4gfHwgLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKTtcbiAgaWYgKHNlZW4uaGFzKHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBzZWVuLmFkZCh2YWx1ZSk7XG4gIGRlcHRoLS07XG4gIGlmIChpc1JlZih2YWx1ZSkpIHtcbiAgICB0cmF2ZXJzZSh2YWx1ZS52YWx1ZSwgZGVwdGgsIHNlZW4pO1xuICB9IGVsc2UgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgdHJhdmVyc2UodmFsdWVbaV0sIGRlcHRoLCBzZWVuKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoaXNTZXQodmFsdWUpIHx8IGlzTWFwKHZhbHVlKSkge1xuICAgIHZhbHVlLmZvckVhY2goKHYpID0+IHtcbiAgICAgIHRyYXZlcnNlKHYsIGRlcHRoLCBzZWVuKTtcbiAgICB9KTtcbiAgfSBlbHNlIGlmIChpc1BsYWluT2JqZWN0KHZhbHVlKSkge1xuICAgIGZvciAoY29uc3Qga2V5IGluIHZhbHVlKSB7XG4gICAgICB0cmF2ZXJzZSh2YWx1ZVtrZXldLCBkZXB0aCwgc2Vlbik7XG4gICAgfVxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModmFsdWUpKSB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHZhbHVlLCBrZXkpKSB7XG4gICAgICAgIHRyYXZlcnNlKHZhbHVlW2tleV0sIGRlcHRoLCBzZWVuKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5mdW5jdGlvbiB1c2VNb2RlbChwcm9wcywgbmFtZSwgb3B0aW9ucyA9IEVNUFRZX09CSikge1xuICBjb25zdCBpID0gZ2V0Q3VycmVudEluc3RhbmNlKCk7XG4gIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpICYmICFpKSB7XG4gICAgd2FybiQxKGB1c2VNb2RlbCgpIGNhbGxlZCB3aXRob3V0IGFjdGl2ZSBpbnN0YW5jZS5gKTtcbiAgICByZXR1cm4gcmVmKCk7XG4gIH1cbiAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgJiYgIWkucHJvcHNPcHRpb25zWzBdW25hbWVdKSB7XG4gICAgd2FybiQxKGB1c2VNb2RlbCgpIGNhbGxlZCB3aXRoIHByb3AgXCIke25hbWV9XCIgd2hpY2ggaXMgbm90IGRlY2xhcmVkLmApO1xuICAgIHJldHVybiByZWYoKTtcbiAgfVxuICBjb25zdCBjYW1lbGl6ZWROYW1lID0gY2FtZWxpemUobmFtZSk7XG4gIGNvbnN0IGh5cGhlbmF0ZWROYW1lID0gaHlwaGVuYXRlKG5hbWUpO1xuICBjb25zdCBtb2RpZmllcnMgPSBnZXRNb2RlbE1vZGlmaWVycyhwcm9wcywgbmFtZSk7XG4gIGNvbnN0IHJlcyA9IGN1c3RvbVJlZigodHJhY2ssIHRyaWdnZXIpID0+IHtcbiAgICBsZXQgbG9jYWxWYWx1ZTtcbiAgICBsZXQgcHJldlNldFZhbHVlID0gRU1QVFlfT0JKO1xuICAgIGxldCBwcmV2RW1pdHRlZFZhbHVlO1xuICAgIHdhdGNoU3luY0VmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wVmFsdWUgPSBwcm9wc1tuYW1lXTtcbiAgICAgIGlmIChoYXNDaGFuZ2VkKGxvY2FsVmFsdWUsIHByb3BWYWx1ZSkpIHtcbiAgICAgICAgbG9jYWxWYWx1ZSA9IHByb3BWYWx1ZTtcbiAgICAgICAgdHJpZ2dlcigpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICBnZXQoKSB7XG4gICAgICAgIHRyYWNrKCk7XG4gICAgICAgIHJldHVybiBvcHRpb25zLmdldCA/IG9wdGlvbnMuZ2V0KGxvY2FsVmFsdWUpIDogbG9jYWxWYWx1ZTtcbiAgICAgIH0sXG4gICAgICBzZXQodmFsdWUpIHtcbiAgICAgICAgY29uc3QgZW1pdHRlZFZhbHVlID0gb3B0aW9ucy5zZXQgPyBvcHRpb25zLnNldCh2YWx1ZSkgOiB2YWx1ZTtcbiAgICAgICAgaWYgKCFoYXNDaGFuZ2VkKGVtaXR0ZWRWYWx1ZSwgbG9jYWxWYWx1ZSkgJiYgIShwcmV2U2V0VmFsdWUgIT09IEVNUFRZX09CSiAmJiBoYXNDaGFuZ2VkKHZhbHVlLCBwcmV2U2V0VmFsdWUpKSkge1xuICAgICAgICAgI
15HJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByYXdQcm9wcyA9IGkudm5vZGUucHJvcHM7XG4gICAgICAgIGlmICghKHJhd1Byb3BzICYmIC8vIGNoZWNrIGlmIHBhcmVudCBoYXMgcGFzc2VkIHYtbW9kZWxcbiAgICAgICAgKG5hbWUgaW4gcmF3UHJvcHMgfHwgY2FtZWxpemVkTmFtZSBpbiByYXdQcm9wcyB8fCBoeXBoZW5hdGVkTmFtZSBpbiByYXdQcm9wcykgJiYgKGBvblVwZGF0ZToke25hbWV9YCBpbiByYXdQcm9wcyB8fCBgb25VcGRhdGU6JHtjYW1lbGl6ZWROYW1lfWAgaW4gcmF3UHJvcHMgfHwgYG9uVXBkYXRlOiR7aHlwaGVuYXRlZE5hbWV9YCBpbiByYXdQcm9wcykpKSB7XG4gICAgICAgICAgbG9jYWxWYWx1ZSA9IHZhbHVlO1xuICAgICAgICAgIHRyaWdnZXIoKTtcbiAgICAgICAgfVxuICAgICAgICBpLmVtaXQoYHVwZGF0ZToke25hbWV9YCwgZW1pdHRlZFZhbHVlKTtcbiAgICAgICAgaWYgKGhhc0NoYW5nZWQodmFsdWUsIGVtaXR0ZWRWYWx1ZSkgJiYgaGFzQ2hhbmdlZCh2YWx1ZSwgcHJldlNldFZhbHVlKSAmJiAhaGFzQ2hhbmdlZChlbWl0dGVkVmFsdWUsIHByZXZFbWl0dGVkVmFsdWUpKSB7XG4gICAgICAgICAgdHJpZ2dlcigpO1xuICAgICAgICB9XG4gICAgICAgIHByZXZTZXRWYWx1ZSA9IHZhbHVlO1xuICAgICAgICBwcmV2RW1pdHRlZFZhbHVlID0gZW1pdHRlZFZhbHVlO1xuICAgICAgfVxuICAgIH07XG4gIH0pO1xuICByZXNbU3ltYm9sLml0ZXJhdG9yXSA9ICgpID0+IHtcbiAgICBsZXQgaTIgPSAwO1xuICAgIHJldHVybiB7XG4gICAgICBuZXh0KCkge1xuICAgICAgICBpZiAoaTIgPCAyKSB7XG4gICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IGkyKysgPyBtb2RpZmllcnMgfHwgRU1QVFlfT0JKIDogcmVzLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB7IGRvbmU6IHRydWUgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH07XG4gIHJldHVybiByZXM7XG59XG5jb25zdCBnZXRNb2RlbE1vZGlmaWVycyA9IChwcm9wcywgbW9kZWxOYW1lKSA9PiB7XG4gIHJldHVybiBtb2RlbE5hbWUgPT09IFwibW9kZWxWYWx1ZVwiIHx8IG1vZGVsTmFtZSA9PT0gXCJtb2RlbC12YWx1ZVwiID8gcHJvcHMubW9kZWxNb2RpZmllcnMgOiBwcm9wc1tgJHttb2RlbE5hbWV9TW9kaWZpZXJzYF0gfHwgcHJvcHNbYCR7Y2FtZWxpemUobW9kZWxOYW1lKX1Nb2RpZmllcnNgXSB8fCBwcm9wc1tgJHtoeXBoZW5hdGUobW9kZWxOYW1lKX1Nb2RpZmllcnNgXTtcbn07XG5cbmZ1bmN0aW9uIGVtaXQoaW5zdGFuY2UsIGV2ZW50LCAuLi5yYXdBcmdzKSB7XG4gIGlmIChpbnN0YW5jZS5pc1VubW91bnRlZCkgcmV0dXJuO1xuICBjb25zdCBwcm9wcyA9IGluc3RhbmNlLnZub2RlLnByb3BzIHx8IEVNUFRZX09CSjtcbiAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikpIHtcbiAgICBjb25zdCB7XG4gICAgICBlbWl0c09wdGlvbnMsXG4gICAgICBwcm9wc09wdGlvbnM6IFtwcm9wc09wdGlvbnNdXG4gICAgfSA9IGluc3RhbmNlO1xuICAgIGlmIChlbWl0c09wdGlvbnMpIHtcbiAgICAgIGlmICghKGV2ZW50IGluIGVtaXRzT3B0aW9ucykgJiYgdHJ1ZSkge1xuICAgICAgICBpZiAoIXByb3BzT3B0aW9ucyB8fCAhKHRvSGFuZGxlcktleShjYW1lbGl6ZShldmVudCkpIGluIHByb3BzT3B0aW9ucykpIHtcbiAgICAgICAgICB3YXJuJDEoXG4gICAgICAgICAgICBgQ29tcG9uZW50IGVtaXR0ZWQgZXZlbnQgXCIke2V2ZW50fVwiIGJ1dCBpdCBpcyBuZWl0aGVyIGRlY2xhcmVkIGluIHRoZSBlbWl0cyBvcHRpb24gbm9yIGFzIGFuIFwiJHt0b0hhbmRsZXJLZXkoY2FtZWxpemUoZXZlbnQpKX1cIiBwcm9wLmBcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB2YWxpZGF0b3IgPSBlbWl0c09wdGlvbnNbZXZlbnRdO1xuICAgICAgICBpZiAoaXNGdW5jdGlvbih2YWxpZGF0b3IpKSB7XG4gICAgICAgICAgY29uc3QgaXNWYWxpZCA9IHZhbGlkYXRvciguLi5yYXdBcmdzKTtcbiAgICAgICAgICBpZiAoIWlzVmFsaWQpIHtcbiAgICAgICAgICAgIHdhcm4kMShcbiAgICAgICAgICAgICAgYEludmFsaWQgZXZlbnQgYXJndW1lbnRzOiBldmVudCB2YWxpZGF0aW9uIGZhaWxlZCBmb3IgZXZlbnQgXCIke2V2ZW50fVwiLmBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGxldCBhcmdzID0gcmF3QXJncztcbiAgY29uc3QgaXNNb2RlbExpc3RlbmVyID0gZXZlbnQuc3RhcnRzV2l0aChcInVwZGF0ZTpcIik7XG4gIGNvbnN0IG1vZGlmaWVycyA9IGlzTW9kZWxMaXN0ZW5lciAmJiBnZXRNb2RlbE1vZGlmaWVycyhwcm9wcywgZXZlbnQuc2xpY2UoNykpO1xuICBpZiAobW9kaWZpZXJzKSB7XG4gICAgaWYgKG1vZGlmaWVycy50cmltKSB7XG4gICAgICBhcmdzID0gcmF3QXJncy5tYXAoKGEpID0+IGlzU3RyaW5nKGEpID8gYS50cmltKCkgOiBhKTtcbiAgICB9XG4gICAgaWYgKG1vZGlmaWVycy5udW1iZXIpIHtcbiAgICAgIGFyZ3MgPSByYXdBcmdzLm1hcChsb29zZVRvTnVtYmVyKTtcbiAgICB9XG4gIH1cbiAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgfHwgX19WVUVfUFJPRF9ERVZUT09MU19fKSB7XG4gICAgZGV2dG9vbHNDb21wb25lbnRFbWl0KGluc3RhbmNlLCBldmVudCwgYXJncyk7XG4gIH1cbiAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikpIHtcbiAgICBjb25zdCBsb3dlckNhc2VFdmVudCA9IGV2ZW50LnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKGxvd2VyQ2FzZUV2ZW50ICE9PSBldmVudCAmJiBwcm9wc1t0b0hhbmRsZXJLZXkobG93ZXJDYXNlRXZlbnQpXSkge1xuICAgICAgd2FybiQxKFxuICAgICAgICBgRXZlbnQgXCIke2xvd2VyQ2FzZUV2ZW50fVwiIGlzIGVtaXR0ZWQgaW4gY29tcG9uZW50ICR7Zm9ybWF0Q29tcG9uZW50TmFtZShcbiAgICAgICAgICBpbnN0YW5jZSxcbiAgICAgICAgICBpbnN0YW5jZS50eXBlXG4gICAgICAgICl9IGJ1dCB0aGUgaGFuZGxlciBpcyByZWdpc3RlcmVkIGZvciBcIiR7ZXZlbnR9XCIuIE5vdGUgdGhhdCBIVE1MIGF0dHJpYnV0ZXMgYXJlIGNhc2UtaW5zZW5zaXRpdmUgYW5kIHlvdSBjYW5ub3QgdXNlIHYtb24gdG8gbGlzdGVuIHRvIGNhbWVsQ2FzZSBldmVudHMgd2hlbiB1c2luZyBpbi1ET00gdGVtcGxhdGVzLiBZb3Ugc2hvdWxkIHByb2JhYmx5IHVzZSBcIiR7aHlwaGVuYXRlKFxuICAgICAgICAgIGV2ZW50XG4gICAgICAgICl9XCIgaW5zdGVhZCBvZiBcIiR7ZXZlbnR9XCIuYFxuICAgICAgKTtcbiAgICB9XG4gI
15H1cbiAgbGV0IGhhbmRsZXJOYW1lO1xuICBsZXQgaGFuZGxlciA9IHByb3BzW2hhbmRsZXJOYW1lID0gdG9IYW5kbGVyS2V5KGV2ZW50KV0gfHwgLy8gYWxzbyB0cnkgY2FtZWxDYXNlIGV2ZW50IGhhbmRsZXIgKCMyMjQ5KVxuICBwcm9wc1toYW5kbGVyTmFtZSA9IHRvSGFuZGxlcktleShjYW1lbGl6ZShldmVudCkpXTtcbiAgaWYgKCFoYW5kbGVyICYmIGlzTW9kZWxMaXN0ZW5lcikge1xuICAgIGhhbmRsZXIgPSBwcm9wc1toYW5kbGVyTmFtZSA9IHRvSGFuZGxlcktleShoeXBoZW5hdGUoZXZlbnQpKV07XG4gIH1cbiAgaWYgKGhhbmRsZXIpIHtcbiAgICBjYWxsV2l0aEFzeW5jRXJyb3JIYW5kbGluZyhcbiAgICAgIGhhbmRsZXIsXG4gICAgICBpbnN0YW5jZSxcbiAgICAgIDYsXG4gICAgICBhcmdzXG4gICAgKTtcbiAgfVxuICBjb25zdCBvbmNlSGFuZGxlciA9IHByb3BzW2hhbmRsZXJOYW1lICsgYE9uY2VgXTtcbiAgaWYgKG9uY2VIYW5kbGVyKSB7XG4gICAgaWYgKCFpbnN0YW5jZS5lbWl0dGVkKSB7XG4gICAgICBpbnN0YW5jZS5lbWl0dGVkID0ge307XG4gICAgfSBlbHNlIGlmIChpbnN0YW5jZS5lbWl0dGVkW2hhbmRsZXJOYW1lXSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpbnN0YW5jZS5lbWl0dGVkW2hhbmRsZXJOYW1lXSA9IHRydWU7XG4gICAgY2FsbFdpdGhBc3luY0Vycm9ySGFuZGxpbmcoXG4gICAgICBvbmNlSGFuZGxlcixcbiAgICAgIGluc3RhbmNlLFxuICAgICAgNixcbiAgICAgIGFyZ3NcbiAgICApO1xuICB9XG59XG5mdW5jdGlvbiBub3JtYWxpemVFbWl0c09wdGlvbnMoY29tcCwgYXBwQ29udGV4dCwgYXNNaXhpbiA9IGZhbHNlKSB7XG4gIGNvbnN0IGNhY2hlID0gYXBwQ29udGV4dC5lbWl0c0NhY2hlO1xuICBjb25zdCBjYWNoZWQgPSBjYWNoZS5nZXQoY29tcCk7XG4gIGlmIChjYWNoZWQgIT09IHZvaWQgMCkge1xuICAgIHJldHVybiBjYWNoZWQ7XG4gIH1cbiAgY29uc3QgcmF3ID0gY29tcC5lbWl0cztcbiAgbGV0IG5vcm1hbGl6ZWQgPSB7fTtcbiAgbGV0IGhhc0V4dGVuZHMgPSBmYWxzZTtcbiAgaWYgKF9fVlVFX09QVElPTlNfQVBJX18gJiYgIWlzRnVuY3Rpb24oY29tcCkpIHtcbiAgICBjb25zdCBleHRlbmRFbWl0cyA9IChyYXcyKSA9PiB7XG4gICAgICBjb25zdCBub3JtYWxpemVkRnJvbUV4dGVuZCA9IG5vcm1hbGl6ZUVtaXRzT3B0aW9ucyhyYXcyLCBhcHBDb250ZXh0LCB0cnVlKTtcbiAgICAgIGlmIChub3JtYWxpemVkRnJvbUV4dGVuZCkge1xuICAgICAgICBoYXNFeHRlbmRzID0gdHJ1ZTtcbiAgICAgICAgZXh0ZW5kKG5vcm1hbGl6ZWQsIG5vcm1hbGl6ZWRGcm9tRXh0ZW5kKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGlmICghYXNNaXhpbiAmJiBhcHBDb250ZXh0Lm1peGlucy5sZW5ndGgpIHtcbiAgICAgIGFwcENvbnRleHQubWl4aW5zLmZvckVhY2goZXh0ZW5kRW1pdHMpO1xuICAgIH1cbiAgICBpZiAoY29tcC5leHRlbmRzKSB7XG4gICAgICBleHRlbmRFbWl0cyhjb21wLmV4dGVuZHMpO1xuICAgIH1cbiAgICBpZiAoY29tcC5taXhpbnMpIHtcbiAgICAgIGNvbXAubWl4aW5zLmZvckVhY2goZXh0ZW5kRW1pdHMpO1xuICAgIH1cbiAgfVxuICBpZiAoIXJhdyAmJiAhaGFzRXh0ZW5kcykge1xuICAgIGlmIChpc09iamVjdChjb21wKSkge1xuICAgICAgY2FjaGUuc2V0KGNvbXAsIG51bGwpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAoaXNBcnJheShyYXcpKSB7XG4gICAgcmF3LmZvckVhY2goKGtleSkgPT4gbm9ybWFsaXplZFtrZXldID0gbnVsbCk7XG4gIH0gZWxzZSB7XG4gICAgZXh0ZW5kKG5vcm1hbGl6ZWQsIHJhdyk7XG4gIH1cbiAgaWYgKGlzT2JqZWN0KGNvbXApKSB7XG4gICAgY2FjaGUuc2V0KGNvbXAsIG5vcm1hbGl6ZWQpO1xuICB9XG4gIHJldHVybiBub3JtYWxpemVkO1xufVxuZnVuY3Rpb24gaXNFbWl0TGlzdGVuZXIob3B0aW9ucywga2V5KSB7XG4gIGlmICghb3B0aW9ucyB8fCAhaXNPbihrZXkpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGtleSA9IGtleS5zbGljZSgyKS5yZXBsYWNlKC9PbmNlJC8sIFwiXCIpO1xuICByZXR1cm4gaGFzT3duKG9wdGlvbnMsIGtleVswXS50b0xvd2VyQ2FzZSgpICsga2V5LnNsaWNlKDEpKSB8fCBoYXNPd24ob3B0aW9ucywgaHlwaGVuYXRlKGtleSkpIHx8IGhhc093bihvcHRpb25zLCBrZXkpO1xufVxuXG5sZXQgYWNjZXNzZWRBdHRycyA9IGZhbHNlO1xuZnVuY3Rpb24gbWFya0F0dHJzQWNjZXNzZWQoKSB7XG4gIGFjY2Vzc2VkQXR0cnMgPSB0cnVlO1xufVxuZnVuY3Rpb24gcmVuZGVyQ29tcG9uZW50Um9vdChpbnN0YW5jZSkge1xuICBjb25zdCB7XG4gICAgdHlwZTogQ29tcG9uZW50LFxuICAgIHZub2RlLFxuICAgIHByb3h5LFxuICAgIHdpdGhQcm94eSxcbiAgICBwcm9wc09wdGlvbnM6IFtwcm9wc09wdGlvbnNdLFxuICAgIHNsb3RzLFxuICAgIGF0dHJzLFxuICAgIGVtaXQsXG4gICAgcmVuZGVyLFxuICAgIHJlbmRlckNhY2hlLFxuICAgIHByb3BzLFxuICAgIGRhdGEsXG4gICAgc2V0dXBTdGF0ZSxcbiAgICBjdHgsXG4gICAgaW5oZXJpdEF0dHJzXG4gIH0gPSBpbnN0YW5jZTtcbiAgY29uc3QgcHJldiA9IHNldEN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZShpbnN0YW5jZSk7XG4gIGxldCByZXN1bHQ7XG4gIGxldCBmYWxsdGhyb3VnaEF0dHJzO1xuICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSkge1xuICAgIGFjY2Vzc2VkQXR0cnMgPSBmYWxzZTtcbiAgfVxuICB0cnkge1xuICAgIGlmICh2bm9kZS5zaGFwZUZsYWcgJiA0KSB7XG4gICAgICBjb25zdCBwcm94eVRvVXNlID0gd2l0aFByb3h5IHx8IHByb3h5O1xuICAgICAgY29uc3QgdGhpc1Byb3h5ID0gISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSAmJiBzZXR1cFN0YXRlLl9faXNTY3JpcHRTZXR1cCA/IG5ldyBQcm94eShwcm94eVRvVXNlLCB7XG4gICAgICAgIGdldCh0YXJnZXQsIGtleSwgcmVjZWl2ZXIpIHtcbiAgICAgICAgICB3YXJuJDEoXG4gICAgICAgICAgICBgUHJvcGVydHkgJyR7U3RyaW5nKFxuICAgICAgICAgICAgICBrZXlcbiAgICAgICAgICAgICl9JyB3YXMgYWNjZXNzZWQgdmlhICd0aGlzJy4gQXZvaWQgdXNpbmcgJ3RoaXMnIGluIHRlbXBsYXRlcy5gXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gUmVmbGVjdC5nZXQodGFyZ2V0LCBrZXksIHJlY2VpdmVyKTtcbiAgICAgICAgfVxuICAgICAgfSkgOiBwcm94eVRvVXNlO1xuICAgICAgcmVzdWx0ID0gbm9ybWFsaXplVk5vZGUoXG4gICAgICAgI
15HJlbmRlci5jYWxsKFxuICAgICAgICAgIHRoaXNQcm94eSxcbiAgICAgICAgICBwcm94eVRvVXNlLFxuICAgICAgICAgIHJlbmRlckNhY2hlLFxuICAgICAgICAgICEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgPyBzaGFsbG93UmVhZG9ubHkocHJvcHMpIDogcHJvcHMsXG4gICAgICAgICAgc2V0dXBTdGF0ZSxcbiAgICAgICAgICBkYXRhLFxuICAgICAgICAgIGN0eFxuICAgICAgICApXG4gICAgICApO1xuICAgICAgZmFsbHRocm91Z2hBdHRycyA9IGF0dHJzO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCByZW5kZXIyID0gQ29tcG9uZW50O1xuICAgICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgJiYgYXR0cnMgPT09IHByb3BzKSB7XG4gICAgICAgIG1hcmtBdHRyc0FjY2Vzc2VkKCk7XG4gICAgICB9XG4gICAgICByZXN1bHQgPSBub3JtYWxpemVWTm9kZShcbiAgICAgICAgcmVuZGVyMi5sZW5ndGggPiAxID8gcmVuZGVyMihcbiAgICAgICAgICAhIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpID8gc2hhbGxvd1JlYWRvbmx5KHByb3BzKSA6IHByb3BzLFxuICAgICAgICAgICEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgPyB7XG4gICAgICAgICAgICBnZXQgYXR0cnMoKSB7XG4gICAgICAgICAgICAgIG1hcmtBdHRyc0FjY2Vzc2VkKCk7XG4gICAgICAgICAgICAgIHJldHVybiBzaGFsbG93UmVhZG9ubHkoYXR0cnMpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNsb3RzLFxuICAgICAgICAgICAgZW1pdFxuICAgICAgICAgIH0gOiB7IGF0dHJzLCBzbG90cywgZW1pdCB9XG4gICAgICAgICkgOiByZW5kZXIyKFxuICAgICAgICAgICEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgPyBzaGFsbG93UmVhZG9ubHkocHJvcHMpIDogcHJvcHMsXG4gICAgICAgICAgbnVsbFxuICAgICAgICApXG4gICAgICApO1xuICAgICAgZmFsbHRocm91Z2hBdHRycyA9IENvbXBvbmVudC5wcm9wcyA/IGF0dHJzIDogZ2V0RnVuY3Rpb25hbEZhbGx0aHJvdWdoKGF0dHJzKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGJsb2NrU3RhY2subGVuZ3RoID0gMDtcbiAgICBoYW5kbGVFcnJvcihlcnIsIGluc3RhbmNlLCAxKTtcbiAgICByZXN1bHQgPSBjcmVhdGVWTm9kZShDb21tZW50KTtcbiAgfVxuICBsZXQgcm9vdCA9IHJlc3VsdDtcbiAgbGV0IHNldFJvb3QgPSB2b2lkIDA7XG4gIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpICYmIHJlc3VsdC5wYXRjaEZsYWcgPiAwICYmIHJlc3VsdC5wYXRjaEZsYWcgJiAyMDQ4KSB7XG4gICAgW3Jvb3QsIHNldFJvb3RdID0gZ2V0Q2hpbGRSb290KHJlc3VsdCk7XG4gIH1cbiAgaWYgKGZhbGx0aHJvdWdoQXR0cnMgJiYgaW5oZXJpdEF0dHJzICE9PSBmYWxzZSkge1xuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhmYWxsdGhyb3VnaEF0dHJzKTtcbiAgICBjb25zdCB7IHNoYXBlRmxhZyB9ID0gcm9vdDtcbiAgICBpZiAoa2V5cy5sZW5ndGgpIHtcbiAgICAgIGlmIChzaGFwZUZsYWcgJiAoMSB8IDYpKSB7XG4gICAgICAgIGlmIChwcm9wc09wdGlvbnMgJiYga2V5cy5zb21lKGlzTW9kZWxMaXN0ZW5lcikpIHtcbiAgICAgICAgICBmYWxsdGhyb3VnaEF0dHJzID0gZmlsdGVyTW9kZWxMaXN0ZW5lcnMoXG4gICAgICAgICAgICBmYWxsdGhyb3VnaEF0dHJzLFxuICAgICAgICAgICAgcHJvcHNPcHRpb25zXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByb290ID0gY2xvbmVWTm9kZShyb290LCBmYWxsdGhyb3VnaEF0dHJzLCBmYWxzZSwgdHJ1ZSk7XG4gICAgICB9IGVsc2UgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgJiYgIWFjY2Vzc2VkQXR0cnMgJiYgcm9vdC50eXBlICE9PSBDb21tZW50KSB7XG4gICAgICAgIGNvbnN0IGFsbEF0dHJzID0gT2JqZWN0LmtleXMoYXR0cnMpO1xuICAgICAgICBjb25zdCBldmVudEF0dHJzID0gW107XG4gICAgICAgIGNvbnN0IGV4dHJhQXR0cnMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSBhbGxBdHRycy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICBjb25zdCBrZXkgPSBhbGxBdHRyc1tpXTtcbiAgICAgICAgICBpZiAoaXNPbihrZXkpKSB7XG4gICAgICAgICAgICBpZiAoIWlzTW9kZWxMaXN0ZW5lcihrZXkpKSB7XG4gICAgICAgICAgICAgIGV2ZW50QXR0cnMucHVzaChrZXlbMl0udG9Mb3dlckNhc2UoKSArIGtleS5zbGljZSgzKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGV4dHJhQXR0cnMucHVzaChrZXkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZXh0cmFBdHRycy5sZW5ndGgpIHtcbiAgICAgICAgICB3YXJuJDEoXG4gICAgICAgICAgICBgRXh0cmFuZW91cyBub24tcHJvcHMgYXR0cmlidXRlcyAoJHtleHRyYUF0dHJzLmpvaW4oXCIsIFwiKX0pIHdlcmUgcGFzc2VkIHRvIGNvbXBvbmVudCBidXQgY291bGQgbm90IGJlIGF1dG9tYXRpY2FsbHkgaW5oZXJpdGVkIGJlY2F1c2UgY29tcG9uZW50IHJlbmRlcnMgZnJhZ21lbnQgb3IgdGV4dCByb290IG5vZGVzLmBcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudEF0dHJzLmxlbmd0aCkge1xuICAgICAgICAgIHdhcm4kMShcbiAgICAgICAgICAgIGBFeHRyYW5lb3VzIG5vbi1lbWl0cyBldmVudCBsaXN0ZW5lcnMgKCR7ZXZlbnRBdHRycy5qb2luKFwiLCBcIil9KSB3ZXJlIHBhc3NlZCB0byBjb21wb25lbnQgYnV0IGNvdWxkIG5vdCBiZSBhdXRvbWF0aWNhbGx5IGluaGVyaXRlZCBiZWNhdXNlIGNvbXBvbmVudCByZW5kZXJzIGZyYWdtZW50IG9yIHRleHQgcm9vdCBub2Rlcy4gSWYgdGhlIGxpc3RlbmVyIGlzIGludGVuZGVkIHRvIGJlIGEgY29tcG9uZW50IGN1c3RvbSBldmVudCBsaXN0ZW5lciBvbmx5LCBkZWNsYXJlIGl0IHVzaW5nIHRoZSBcImVtaXRzXCIgb3B0aW9uLmBcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmICh2bm9kZS5kaXJzKSB7XG4gICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgJiYgIWlzRWxlbWVudFJvb3Qocm9vdCkpIHtcbiAgICAgIHdhcm4kMShcbiAgICAgICAgYFJ1bnRpbWUgZGlyZWN0aXZlIHVzZWQgb24gY29tcG9uZW50IHdpdGggbm9uLWVsZW1lbnQgcm9vdCBub2Rl
15LiBUaGUgZGlyZWN0aXZlcyB3aWxsIG5vdCBmdW5jdGlvbiBhcyBpbnRlbmRlZC5gXG4gICAgICApO1xuICAgIH1cbiAgICByb290ID0gY2xvbmVWTm9kZShyb290LCBudWxsLCBmYWxzZSwgdHJ1ZSk7XG4gICAgcm9vdC5kaXJzID0gcm9vdC5kaXJzID8gcm9vdC5kaXJzLmNvbmNhdCh2bm9kZS5kaXJzKSA6IHZub2RlLmRpcnM7XG4gIH1cbiAgaWYgKHZub2RlLnRyYW5zaXRpb24pIHtcbiAgICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSAmJiAhaXNFbGVtZW50Um9vdChyb290KSkge1xuICAgICAgd2FybiQxKFxuICAgICAgICBgQ29tcG9uZW50IGluc2lkZSA8VHJhbnNpdGlvbj4gcmVuZGVycyBub24tZWxlbWVudCByb290IG5vZGUgdGhhdCBjYW5ub3QgYmUgYW5pbWF0ZWQuYFxuICAgICAgKTtcbiAgICB9XG4gICAgcm9vdC50cmFuc2l0aW9uID0gdm5vZGUudHJhbnNpdGlvbjtcbiAgfVxuICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSAmJiBzZXRSb290KSB7XG4gICAgc2V0Um9vdChyb290KTtcbiAgfSBlbHNlIHtcbiAgICByZXN1bHQgPSByb290O1xuICB9XG4gIHNldEN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZShwcmV2KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cbmNvbnN0IGdldENoaWxkUm9vdCA9ICh2bm9kZSkgPT4ge1xuICBjb25zdCByYXdDaGlsZHJlbiA9IHZub2RlLmNoaWxkcmVuO1xuICBjb25zdCBkeW5hbWljQ2hpbGRyZW4gPSB2bm9kZS5keW5hbWljQ2hpbGRyZW47XG4gIGNvbnN0IGNoaWxkUm9vdCA9IGZpbHRlclNpbmdsZVJvb3QocmF3Q2hpbGRyZW4sIGZhbHNlKTtcbiAgaWYgKCFjaGlsZFJvb3QpIHtcbiAgICByZXR1cm4gW3Zub2RlLCB2b2lkIDBdO1xuICB9IGVsc2UgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgJiYgY2hpbGRSb290LnBhdGNoRmxhZyA+IDAgJiYgY2hpbGRSb290LnBhdGNoRmxhZyAmIDIwNDgpIHtcbiAgICByZXR1cm4gZ2V0Q2hpbGRSb290KGNoaWxkUm9vdCk7XG4gIH1cbiAgY29uc3QgaW5kZXggPSByYXdDaGlsZHJlbi5pbmRleE9mKGNoaWxkUm9vdCk7XG4gIGNvbnN0IGR5bmFtaWNJbmRleCA9IGR5bmFtaWNDaGlsZHJlbiA/IGR5bmFtaWNDaGlsZHJlbi5pbmRleE9mKGNoaWxkUm9vdCkgOiAtMTtcbiAgY29uc3Qgc2V0Um9vdCA9ICh1cGRhdGVkUm9vdCkgPT4ge1xuICAgIHJhd0NoaWxkcmVuW2luZGV4XSA9IHVwZGF0ZWRSb290O1xuICAgIGlmIChkeW5hbWljQ2hpbGRyZW4pIHtcbiAgICAgIGlmIChkeW5hbWljSW5kZXggPiAtMSkge1xuICAgICAgICBkeW5hbWljQ2hpbGRyZW5bZHluYW1pY0luZGV4XSA9IHVwZGF0ZWRSb290O1xuICAgICAgfSBlbHNlIGlmICh1cGRhdGVkUm9vdC5wYXRjaEZsYWcgPiAwKSB7XG4gICAgICAgIHZub2RlLmR5bmFtaWNDaGlsZHJlbiA9IFsuLi5keW5hbWljQ2hpbGRyZW4sIHVwZGF0ZWRSb290XTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIHJldHVybiBbbm9ybWFsaXplVk5vZGUoY2hpbGRSb290KSwgc2V0Um9vdF07XG59O1xuZnVuY3Rpb24gZmlsdGVyU2luZ2xlUm9vdChjaGlsZHJlbiwgcmVjdXJzZSA9IHRydWUpIHtcbiAgbGV0IHNpbmdsZVJvb3Q7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBjaGlsZCA9IGNoaWxkcmVuW2ldO1xuICAgIGlmIChpc1ZOb2RlKGNoaWxkKSkge1xuICAgICAgaWYgKGNoaWxkLnR5cGUgIT09IENvbW1lbnQgfHwgY2hpbGQuY2hpbGRyZW4gPT09IFwidi1pZlwiKSB7XG4gICAgICAgIGlmIChzaW5nbGVSb290KSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNpbmdsZVJvb3QgPSBjaGlsZDtcbiAgICAgICAgICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSAmJiByZWN1cnNlICYmIHNpbmdsZVJvb3QucGF0Y2hGbGFnID4gMCAmJiBzaW5nbGVSb290LnBhdGNoRmxhZyAmIDIwNDgpIHtcbiAgICAgICAgICAgIHJldHVybiBmaWx0ZXJTaW5nbGVSb290KHNpbmdsZVJvb3QuY2hpbGRyZW4pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG4gIHJldHVybiBzaW5nbGVSb290O1xufVxuY29uc3QgZ2V0RnVuY3Rpb25hbEZhbGx0aHJvdWdoID0gKGF0dHJzKSA9PiB7XG4gIGxldCByZXM7XG4gIGZvciAoY29uc3Qga2V5IGluIGF0dHJzKSB7XG4gICAgaWYgKGtleSA9PT0gXCJjbGFzc1wiIHx8IGtleSA9PT0gXCJzdHlsZVwiIHx8IGlzT24oa2V5KSkge1xuICAgICAgKHJlcyB8fCAocmVzID0ge30pKVtrZXldID0gYXR0cnNba2V5XTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlcztcbn07XG5jb25zdCBmaWx0ZXJNb2RlbExpc3RlbmVycyA9IChhdHRycywgcHJvcHMpID0+IHtcbiAgY29uc3QgcmVzID0ge307XG4gIGZvciAoY29uc3Qga2V5IGluIGF0dHJzKSB7XG4gICAgaWYgKCFpc01vZGVsTGlzdGVuZXIoa2V5KSB8fCAhKGtleS5zbGljZSg5KSBpbiBwcm9wcykpIHtcbiAgICAgIHJlc1trZXldID0gYXR0cnNba2V5XTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlcztcbn07XG5jb25zdCBpc0VsZW1lbnRSb290ID0gKHZub2RlKSA9PiB7XG4gIHJldHVybiB2bm9kZS5zaGFwZUZsYWcgJiAoNiB8IDEpIHx8IHZub2RlLnR5cGUgPT09IENvbW1lbnQ7XG59O1xuZnVuY3Rpb24gc2hvdWxkVXBkYXRlQ29tcG9uZW50KHByZXZWTm9kZSwgbmV4dFZOb2RlLCBvcHRpbWl6ZWQpIHtcbiAgY29uc3QgeyBwcm9wczogcHJldlByb3BzLCBjaGlsZHJlbjogcHJldkNoaWxkcmVuLCBjb21wb25lbnQgfSA9IHByZXZWTm9kZTtcbiAgY29uc3QgeyBwcm9wczogbmV4dFByb3BzLCBjaGlsZHJlbjogbmV4dENoaWxkcmVuLCBwYXRjaEZsYWcgfSA9IG5leHRWTm9kZTtcbiAgY29uc3QgZW1pdHMgPSBjb21wb25lbnQuZW1pdHNPcHRpb25zO1xuICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSAmJiAocHJldkNoaWxkcmVuIHx8IG5leHRDaGlsZHJlbikgJiYgaXNIbXJVcGRhdGluZykge1xuICAgIHJldHVybi
15B0cnVlO1xuICB9XG4gIGlmIChuZXh0Vk5vZGUuZGlycyB8fCBuZXh0Vk5vZGUudHJhbnNpdGlvbikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChvcHRpbWl6ZWQgJiYgcGF0Y2hGbGFnID49IDApIHtcbiAgICBpZiAocGF0Y2hGbGFnICYgMTAyNCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChwYXRjaEZsYWcgJiAxNikge1xuICAgICAgaWYgKCFwcmV2UHJvcHMpIHtcbiAgICAgICAgcmV0dXJuICEhbmV4dFByb3BzO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGhhc1Byb3BzQ2hhbmdlZChwcmV2UHJvcHMsIG5leHRQcm9wcywgZW1pdHMpO1xuICAgIH0gZWxzZSBpZiAocGF0Y2hGbGFnICYgOCkge1xuICAgICAgY29uc3QgZHluYW1pY1Byb3BzID0gbmV4dFZOb2RlLmR5bmFtaWNQcm9wcztcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZHluYW1pY1Byb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGtleSA9IGR5bmFtaWNQcm9wc1tpXTtcbiAgICAgICAgaWYgKG5leHRQcm9wc1trZXldICE9PSBwcmV2UHJvcHNba2V5XSAmJiAhaXNFbWl0TGlzdGVuZXIoZW1pdHMsIGtleSkpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAocHJldkNoaWxkcmVuIHx8IG5leHRDaGlsZHJlbikge1xuICAgICAgaWYgKCFuZXh0Q2hpbGRyZW4gfHwgIW5leHRDaGlsZHJlbi4kc3RhYmxlKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAocHJldlByb3BzID09PSBuZXh0UHJvcHMpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCFwcmV2UHJvcHMpIHtcbiAgICAgIHJldHVybiAhIW5leHRQcm9wcztcbiAgICB9XG4gICAgaWYgKCFuZXh0UHJvcHMpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gaGFzUHJvcHNDaGFuZ2VkKHByZXZQcm9wcywgbmV4dFByb3BzLCBlbWl0cyk7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuZnVuY3Rpb24gaGFzUHJvcHNDaGFuZ2VkKHByZXZQcm9wcywgbmV4dFByb3BzLCBlbWl0c09wdGlvbnMpIHtcbiAgY29uc3QgbmV4dEtleXMgPSBPYmplY3Qua2V5cyhuZXh0UHJvcHMpO1xuICBpZiAobmV4dEtleXMubGVuZ3RoICE9PSBPYmplY3Qua2V5cyhwcmV2UHJvcHMpLmxlbmd0aCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbmV4dEtleXMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBrZXkgPSBuZXh0S2V5c1tpXTtcbiAgICBpZiAobmV4dFByb3BzW2tleV0gIT09IHByZXZQcm9wc1trZXldICYmICFpc0VtaXRMaXN0ZW5lcihlbWl0c09wdGlvbnMsIGtleSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5mdW5jdGlvbiB1cGRhdGVIT0NIb3N0RWwoeyB2bm9kZSwgcGFyZW50IH0sIGVsKSB7XG4gIHdoaWxlIChwYXJlbnQpIHtcbiAgICBjb25zdCByb290ID0gcGFyZW50LnN1YlRyZWU7XG4gICAgaWYgKHJvb3Quc3VzcGVuc2UgJiYgcm9vdC5zdXNwZW5zZS5hY3RpdmVCcmFuY2ggPT09IHZub2RlKSB7XG4gICAgICByb290LmVsID0gdm5vZGUuZWw7XG4gICAgfVxuICAgIGlmIChyb290ID09PSB2bm9kZSkge1xuICAgICAgKHZub2RlID0gcGFyZW50LnZub2RlKS5lbCA9IGVsO1xuICAgICAgcGFyZW50ID0gcGFyZW50LnBhcmVudDtcbiAgICB9IGVsc2Uge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG59XG5cbmNvbnN0IGlzU3VzcGVuc2UgPSAodHlwZSkgPT4gdHlwZS5fX2lzU3VzcGVuc2U7XG5sZXQgc3VzcGVuc2VJZCA9IDA7XG5jb25zdCBTdXNwZW5zZUltcGwgPSB7XG4gIG5hbWU6IFwiU3VzcGVuc2VcIixcbiAgLy8gSW4gb3JkZXIgdG8gbWFrZSBTdXNwZW5zZSB0cmVlLXNoYWthYmxlLCB3ZSBuZWVkIHRvIGF2b2lkIGltcG9ydGluZyBpdFxuICAvLyBkaXJlY3RseSBpbiB0aGUgcmVuZGVyZXIuIFRoZSByZW5kZXJlciBjaGVja3MgZm9yIHRoZSBfX2lzU3VzcGVuc2UgZmxhZ1xuICAvLyBvbiBhIHZub2RlJ3MgdHlwZSBhbmQgY2FsbHMgdGhlIGBwcm9jZXNzYCBtZXRob2QsIHBhc3NpbmcgaW4gcmVuZGVyZXJcbiAgLy8gaW50ZXJuYWxzLlxuICBfX2lzU3VzcGVuc2U6IHRydWUsXG4gIHByb2Nlc3MobjEsIG4yLCBjb250YWluZXIsIGFuY2hvciwgcGFyZW50Q29tcG9uZW50LCBwYXJlbnRTdXNwZW5zZSwgbmFtZXNwYWNlLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCwgcmVuZGVyZXJJbnRlcm5hbHMpIHtcbiAgICBpZiAobjEgPT0gbnVsbCkge1xuICAgICAgbW91bnRTdXNwZW5zZShcbiAgICAgICAgbjIsXG4gICAgICAgIGNvbnRhaW5lcixcbiAgICAgICAgYW5jaG9yLFxuICAgICAgICBwYXJlbnRDb21wb25lbnQsXG4gICAgICAgIHBhcmVudFN1c3BlbnNlLFxuICAgICAgICBuYW1lc3BhY2UsXG4gICAgICAgIHNsb3RTY29wZUlkcyxcbiAgICAgICAgb3B0aW1pemVkLFxuICAgICAgICByZW5kZXJlckludGVybmFsc1xuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHBhcmVudFN1c3BlbnNlICYmIHBhcmVudFN1c3BlbnNlLmRlcHMgPiAwICYmICFuMS5zdXNwZW5zZS5pc0luRmFsbGJhY2spIHtcbiAgICAgICAgbjIuc3VzcGVuc2UgPSBuMS5zdXNwZW5zZTtcbiAgICAgICAgbjIuc3VzcGVuc2Uudm5vZGUgPSBuMjtcbiAgICAgICAgbjIuZWwgPSBuMS5lbDtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgcGF0Y2hTdXNwZW5zZShcbiAgICAgICAgbjEsXG4gICAgICAgIG4yLFxuICAgICAgICBjb250YWluZXIsXG4gICAgICAgIGFuY2hvcixcbiAgICAgICAgcGFyZW50Q29tcG9uZW50LFxuICAgICAgICBuYW1lc3BhY2UsXG4gICAgICAgIHNsb3RTY29wZUlkcyxcbiAgICAgICAgb3B0aW1pemVkLFxuICAgICAgICByZW5kZXJlckludGVybmFsc1xuICAgICAgKTtcbiAgICB9XG4gIH0sXG4gIGh5ZHJhdGU6IGh5ZHJhdGVTdXNwZW5zZSxcbiAgbm9ybWFsaXplOiBub3JtYWxpemVTdXNwZW5zZUNoaWxkcmVuXG59O1xuY29uc3QgU3VzcGVuc2UgPSBTdXNwZW5zZUltcGwgO1xuZnVuY3Rpb24gdHJpZ2dlckV2ZW50KHZub2RlLCBuYW1lKSB7XG4gIGNvbnN0IGV2ZW50TGlzdGVuZXIgPSB2bm9kZS5wcm9wcyAmJiB2bm9kZS5wcm9wc1tuYW1lXTtcbiAgaWYgKGlzRnVuY3Rpb24oZXZlbnRMaXN0ZW5lcikpIHtcbiAgICBldmVudExpc3RlbmVyKCk7XG4gIH1cbn1cbmZ1bmN0aW9uIG1vdW50U3VzcGVuc2Uodm5vZGUsIGNvbnRhaW5lciwgYW5jaG9yLCBwYXJlbnRDb21wb25lbnQsIH
15BhcmVudFN1c3BlbnNlLCBuYW1lc3BhY2UsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkLCByZW5kZXJlckludGVybmFscykge1xuICBjb25zdCB7XG4gICAgcDogcGF0Y2gsXG4gICAgbzogeyBjcmVhdGVFbGVtZW50IH1cbiAgfSA9IHJlbmRlcmVySW50ZXJuYWxzO1xuICBjb25zdCBoaWRkZW5Db250YWluZXIgPSBjcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICBjb25zdCBzdXNwZW5zZSA9IHZub2RlLnN1c3BlbnNlID0gY3JlYXRlU3VzcGVuc2VCb3VuZGFyeShcbiAgICB2bm9kZSxcbiAgICBwYXJlbnRTdXNwZW5zZSxcbiAgICBwYXJlbnRDb21wb25lbnQsXG4gICAgY29udGFpbmVyLFxuICAgIGhpZGRlbkNvbnRhaW5lcixcbiAgICBhbmNob3IsXG4gICAgbmFtZXNwYWNlLFxuICAgIHNsb3RTY29wZUlkcyxcbiAgICBvcHRpbWl6ZWQsXG4gICAgcmVuZGVyZXJJbnRlcm5hbHNcbiAgKTtcbiAgcGF0Y2goXG4gICAgbnVsbCxcbiAgICBzdXNwZW5zZS5wZW5kaW5nQnJhbmNoID0gdm5vZGUuc3NDb250ZW50LFxuICAgIGhpZGRlbkNvbnRhaW5lcixcbiAgICBudWxsLFxuICAgIHBhcmVudENvbXBvbmVudCxcbiAgICBzdXNwZW5zZSxcbiAgICBuYW1lc3BhY2UsXG4gICAgc2xvdFNjb3BlSWRzXG4gICk7XG4gIGlmIChzdXNwZW5zZS5kZXBzID4gMCkge1xuICAgIHRyaWdnZXJFdmVudCh2bm9kZSwgXCJvblBlbmRpbmdcIik7XG4gICAgdHJpZ2dlckV2ZW50KHZub2RlLCBcIm9uRmFsbGJhY2tcIik7XG4gICAgcGF0Y2goXG4gICAgICBudWxsLFxuICAgICAgdm5vZGUuc3NGYWxsYmFjayxcbiAgICAgIGNvbnRhaW5lcixcbiAgICAgIGFuY2hvcixcbiAgICAgIHBhcmVudENvbXBvbmVudCxcbiAgICAgIG51bGwsXG4gICAgICAvLyBmYWxsYmFjayB0cmVlIHdpbGwgbm90IGhhdmUgc3VzcGVuc2UgY29udGV4dFxuICAgICAgbmFtZXNwYWNlLFxuICAgICAgc2xvdFNjb3BlSWRzXG4gICAgKTtcbiAgICBzZXRBY3RpdmVCcmFuY2goc3VzcGVuc2UsIHZub2Rl
15LnNzRmFsbGJhY2spO1xuICB9IGVsc2Uge1xuICAgIHN1c3BlbnNlLnJlc29sdmUoZmFsc2UsIHRydWUpO1xuICB9XG59XG5mdW5jdGlvbiBwYXRjaFN1c3BlbnNlKG4xLCBuMiwgY29udGFpbmVyLCBhbmNob3IsIHBhcmVudENvbXBvbmVudCwgbmFtZXNwYWNlLCBzbG90U2NvcGVJZHMsIG9wdGltaXplZCwgeyBwOiBwYXRjaCwgdW06IHVubW91bnQsIG86IHsgY3JlYXRlRWxlbWVudCB9IH0pIHtcbiAgY29uc3Qgc3VzcGVuc2UgPSBuMi5zdXNwZW5zZSA9IG4xLnN1c3BlbnNlO1xuICBzdXNwZW5zZS52bm9kZSA9IG4yO1xuICBuMi5lbCA9IG4xLmVsO1xuICBjb25zdCBuZXdCcmFuY2ggPSBuMi5zc0NvbnRlbnQ7XG4gIGNvbnN0IG5ld0ZhbGxiYWNrID0gbjIuc3NGYWxsYmFjaztcbiAgY29uc3QgeyBhY3RpdmVCcmFuY2gsIHBlbmRpbmdCcmFuY2gsIGlzSW5GYWxsYmFjaywgaXNIeWRyYXRpbmcgfSA9IHN1c3BlbnNlO1xuICBpZiAocGVuZGluZ0JyYW5jaCkge1xuICAgIHN1c3BlbnNlLnBlbmRpbmdCcmFuY2ggPSBuZXdCcmFuY2g7XG4gICAgaWYgKGlzU2FtZVZOb2RlVHlwZShuZXdCcmFuY2gsIHBlbmRpbmdCcmFuY2gpKSB7XG4gICAgICBwYXRjaChcbiAgICAgICAgcGVuZGluZ0JyYW5jaCxcbiAgICAgICAgbmV3QnJhbmNoLFxuICAgICAgICBzdXNwZW5zZS5oaWRkZW5Db250YWluZXIsXG4gICAgICAgIG51bGwsXG4gICAgICAgIHBhcmVudENvbXBvbmVudCxcbiAgICAgICAgc3VzcGVuc2UsXG4gICAgICAgIG5hbWVzcGFjZSxcbiAgICAgICAgc2xvdFNjb3BlSWRzLFxuICAgICAgICBvcHRpbWl6ZWRcbiAgICAgICk7XG4gICAgICBpZiAoc3VzcGVuc2UuZGVwcyA8PSAwKSB7XG4gICAgICAgIHN1c3BlbnNlLnJlc29sdmUoKTtcbiAgICAgIH0gZWxzZSBpZiAoaXNJbkZhbGxiYWNrKSB7XG4gICAgICAgIGlmICghaXNIeWRyYXRpbmcpIHtcbiAgICAgICAgICBwYXRjaChcbiAgICAgICAgICAgIGFjdGl2ZUJyYW5jaCxcbiAgICAgICAgICAgIG5ld0ZhbGxiYWNrLFxuICAgICAgICAgICAgY29udGFpbmVyLFxuICAgICAgICAgICAgYW5jaG9yLFxuICAgICAgICAgICAgcGFyZW50Q29tcG9uZW50LFxuICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgIC8vIGZhbGxiYWNrIHRyZWUgd2lsbCBub3QgaGF2ZSBzdXNwZW5zZSBjb250ZXh0XG4gICAgICAgICAgICBuYW1lc3BhY2UsXG4gICAgICAgICAgICBzbG90U2NvcGVJZHMsXG4gICAgICAgICAgICBvcHRpbWl6ZWRcbiAgICAgICAgICApO1xuICAgICAgICAgIHNldEFjdGl2ZUJyYW5jaChzdXNwZW5zZSwgbmV3RmFsbGJhY2spO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHN1c3BlbnNlLnBlbmRpbmdJZCA9IHN1c3BlbnNlSWQrKztcbiAgICAgIGlmIChpc0h5ZHJhdGluZykge1xuICAgICAgICBzdXNwZW5zZS5pc0h5ZHJhdGluZyA9IGZhbHNlO1xuICAgICAgICBzdXNwZW5zZS5hY3RpdmVCcmFuY2ggPSBwZW5kaW5nQnJhbmNoO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdW5tb3VudChwZW5kaW5nQnJhbmNoLCBwYXJlbnRDb21wb25lbnQsIHN1c3BlbnNlKTtcbiAgICAgIH1cbiAgICAgIHN1c3BlbnNlLmRlcHMgPSAwO1xuICAgICAgc3VzcGVuc2UuZWZmZWN0cy5sZW5ndGggPSAwO1xuICAgICAgc3VzcGVuc2UuaGlkZGVuQ29udGFpbmVyID0gY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICAgIGlmIChpc0luRmFsbGJhY2spIHtcbiAgICAgICAgcGF0Y2goXG4gICAgICAgICAgbnVsbCxcbiAgICAgICAgICBuZXdCcmFuY2gsXG4gICAgICAgICAgc3VzcGVuc2UuaGlkZGVuQ29udGFpbmVyLFxuICAgICAgICAgIG51bGwsXG4gICAgICAgICAgcGFyZW50Q29tcG9uZW50LFxuICAgICAgICAgIHN1c3BlbnNlLFxuICAgICAgICAgIG5hbWVzcGFjZSxcbiAgICAgICAgICBzbG90U2NvcGVJZHMsXG4gICAgICAgICAgb3B0aW1pemVkXG4gICAgICAgICk7XG4gICAgICAgIGlmIChzdXNwZW5zZS5kZXBzIDw9IDApIHtcbiAgICAgICAgICBzdXNwZW5zZS5yZXNvbHZlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGF0Y2goXG4gICAgICAgICAgICBhY3RpdmVCcmFuY2gsXG4gICAgICAgICAgICBuZXdGYWxsYmFjayxcbiAgICAgICAgICAgIGNvbnRhaW5lcixcbiAgICAgICAgICAgIGFuY2hvcixcbiAgICAgICAgICAgIHBhcmVudENvbXBvbmVudCxcbiAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAvLyBmYWxsYmFjayB0cmVlIHdpbGwgbm90IGhhdmUgc3VzcGVuc2UgY29udGV4dFxuICAgICAgICAgICAgbmFtZXNwYWNlLFxuICAgICAgICAgICAgc2xvdFNjb3BlSWRzLFxuICAgICAgICAgICAgb3B0aW1pemVkXG4gICAgICAgICAgKTtcbiAgICAgICAgICBzZXRBY3RpdmVCcmFuY2goc3VzcGVuc2UsIG5ld0ZhbGxiYWNrKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChhY3RpdmVCcmFuY2ggJiYgaXNTYW1lVk5vZGVUeXBlKG5ld0JyYW5jaCwgYWN0aXZlQnJhbmNoKSkge1xuICAgICAgICBwYXRjaChcbiAgICAgICAgICBhY3RpdmVCcmFuY2gsXG4gICAgICAgICAgbmV3QnJhbmNoLFxuICAgICAgICAgIGNvbnRhaW5lcixcbiAgICAgICAgICBhbmNob3IsXG4gICAgICAgICAgcGFyZW50Q29tcG9uZW50LFxuICAgICAgICAgIHN1c3BlbnNlLFxuICAgICAgICAgIG5hbWVzcGFjZSxcbiAgICAgICAgICBzbG90U2NvcGVJZHMsXG4gICAgICAgICAgb3B0aW1pemVkXG4gICAgICAgICk7XG4gICAgICAgIHN1c3BlbnNlLnJlc29sdmUodHJ1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXRjaChcbiAgICAgICAgICBudWxsLFxuICAgICAgICAgIG5ld0JyYW5jaCxcbiAgICAgICAgICBzdXNwZW5zZS5oaWRkZW5Db250YWluZXIsXG4gICAgICAgICAgbnVsbCxcbiAgICAgICAgICBwYXJlbnRDb21wb25lbnQsXG4gICAgICAgICAgc3VzcGVuc2UsXG4gICAgICAgICAgbmFtZXNwYWNlLFxuICAgICAgICAgIHNsb3RTY29wZUlkcyxcbiAgICAgICAgICBvcHRpbWl6ZWRcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKHN1c3BlbnNlLmRlcHMgPD0gMCkge1xuICAgICAgICAgIHN1c3BlbnNlLnJlc29sdmUoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoYWN0aXZlQnJhbmNoICYmIGlzU2FtZVZOb2RlVHlwZShuZXdCcmFuY2gsIGFjdGl2ZUJyYW5jaCkpIHtcbiAgICAgIHBhdGNoKFxuICAgICAgICBhY3RpdmVCcmFuY2gsXG4gICAgICAgIG5ld0JyYW5jaCxcbiAgICAgICAgY29udGFpbmVyLFxuICAgICAgICBhbmNob3IsXG4gICAgICAgI
15HBhcmVudENvbXBvbmVudCxcbiAgICAgICAgc3VzcGVuc2UsXG4gICAgICAgIG5hbWVzcGFjZSxcbiAgICAgICAgc2xvdFNjb3BlSWRzLFxuICAgICAgICBvcHRpbWl6ZWRcbiAgICAgICk7XG4gICAgICBzZXRBY3RpdmVCcmFuY2goc3VzcGVuc2UsIG5ld0JyYW5jaCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRyaWdnZXJFdmVudChuMiwgXCJvblBlbmRpbmdcIik7XG4gICAgICBzdXNwZW5zZS5wZW5kaW5nQnJhbmNoID0gbmV3QnJhbmNoO1xuICAgICAgaWYgKG5ld0JyYW5jaC5zaGFwZUZsYWcgJiA1MTIpIHtcbiAgICAgICAgc3VzcGVuc2UucGVuZGluZ0lkID0gbmV3QnJhbmNoLmNvbXBvbmVudC5zdXNwZW5zZUlkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3VzcGVuc2UucGVuZGluZ0lkID0gc3VzcGVuc2VJZCsrO1xuICAgICAgfVxuICAgICAgcGF0Y2goXG4gICAgICAgIG51bGwsXG4gICAgICAgIG5ld0JyYW5jaCxcbiAgICAgICAgc3VzcGVuc2UuaGlkZGVuQ29udGFpbmVyLFxuICAgICAgICBudWxsLFxuICAgICAgICBwYXJlbnRDb21wb25lbnQsXG4gICAgICAgIHN1c3BlbnNlLFxuICAgICAgICBuYW1lc3BhY2UsXG4gICAgICAgIHNsb3RTY29wZUlkcyxcbiAgICAgICAgb3B0aW1pemVkXG4gICAgICApO1xuICAgICAgaWYgKHN1c3BlbnNlLmRlcHMgPD0gMCkge1xuICAgICAgICBzdXNwZW5zZS5yZXNvbHZlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB7IHRpbWVvdXQsIHBlbmRpbmdJZCB9ID0gc3VzcGVuc2U7XG4gICAgICAgIGlmICh0aW1lb3V0ID4gMCkge1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHN1c3BlbnNlLnBlbmRpbmdJZCA9PT0gcGVuZGluZ0lkKSB7XG4gICAgICAgICAgICAgIHN1c3BlbnNlLmZhbGxiYWNrKG5ld0ZhbGxiYWNrKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LCB0aW1lb3V0KTtcbiAgICAgICAgfSBlbHNlIGlmICh0aW1lb3V0ID09PSAwKSB7XG4gICAgICAgICAgc3VzcGVuc2UuZmFsbGJhY2sobmV3RmFsbGJhY2spO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5sZXQgaGFzV2FybmVkID0gZmFsc2U7XG5mdW5jdGlvbiBjcmVhdGVTdXNwZW5zZUJvdW5kYXJ5KHZub2RlLCBwYXJlbnRTdXNwZW5zZSwgcGFyZW50Q29tcG9uZW50LCBjb250YWluZXIsIGhpZGRlbkNvbnRhaW5lciwgYW5jaG9yLCBuYW1lc3BhY2UsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkLCByZW5kZXJlckludGVybmFscywgaXNIeWRyYXRpbmcgPSBmYWxzZSkge1xuICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSAmJiB0cnVlICYmICFoYXNXYXJuZWQpIHtcbiAgICBoYXNXYXJuZWQgPSB0cnVlO1xuICAgIGNvbnNvbGVbY29uc29sZS5pbmZvID8gXCJpbmZvXCIgOiBcImxvZ1wiXShcbiAgICAgIGA8U3VzcGVuc2U+IGlzIGFuIGV4cGVyaW1lbnRhbCBmZWF0dXJlIGFuZCBpdHMgQVBJIHdpbGwgbGlrZWx5IGNoYW5nZS5gXG4gICAgKTtcbiAgfVxuICBjb25zdCB7XG4gICAgcDogcGF0Y2gsXG4gICAgbTogbW92ZSxcbiAgICB1bTogdW5tb3VudCxcbiAgICBuOiBuZXh0LFxuICAgIG86IHsgcGFyZW50Tm9kZSwgcmVtb3ZlIH1cbiAgfSA9IHJlbmRlcmVySW50ZXJuYWxzO1xuICBsZXQgcGFyZW50U3VzcGVuc2VJZDtcbiAgY29uc3QgaXNTdXNwZW5zaWJsZSA9IGlzVk5vZGVTdXNwZW5zaWJsZSh2bm9kZSk7XG4gIGlmIChpc1N1c3BlbnNpYmxlKSB7XG4gICAgaWYgKHBhcmVudFN1c3BlbnNlICYmIHBhcmVudFN1c3BlbnNlLnBlbmRpbmdCcmFuY2gpIHtcbiAgICAgIHBhcmVudFN1c3BlbnNlSWQgPSBwYXJlbnRTdXNwZW5zZS5wZW5kaW5nSWQ7XG4gICAgICBwYXJlbnRTdXNwZW5zZS5kZXBzKys7XG4gICAgfVxuICB9XG4gIGNvbnN0IHRpbWVvdXQgPSB2bm9kZS5wcm9wcyA/IHRvTnVtYmVyKHZub2RlLnByb3BzLnRpbWVvdXQpIDogdm9pZCAwO1xuICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSkge1xuICAgIGFzc2VydE51bWJlcih0aW1lb3V0LCBgU3VzcGVuc2UgdGltZW91dGApO1xuICB9XG4gIGNvbnN0IGluaXRpYWxBbmNob3IgPSBhbmNob3I7XG4gIGNvbnN0IHN1c3BlbnNlID0ge1xuICAgIHZub2RlLFxuICAgIHBhcmVudDogcGFyZW50U3VzcGVuc2UsXG4gICAgcGFyZW50Q29tcG9uZW50LFxuICAgIG5hbWVzcGFjZSxcbiAgICBjb250YWluZXIsXG4gICAgaGlkZGVuQ29udGFpbmVyLFxuICAgIGRlcHM6IDAsXG4gICAgcGVuZGluZ0lkOiBzdXNwZW5zZUlkKyssXG4gICAgdGltZW91dDogdHlwZW9mIHRpbWVvdXQgPT09IFwibnVtYmVyXCIgPyB0aW1lb3V0IDogLTEsXG4gICAgYWN0aXZlQnJhbmNoOiBudWxsLFxuICAgIHBlbmRpbmdCcmFuY2g6IG51bGwsXG4gICAgaXNJbkZhbGxiYWNrOiAhaXNIeWRyYXRpbmcsXG4gICAgaXNIeWRyYXRpbmcsXG4gICAgaXNVbm1vdW50ZWQ6IGZhbHNlLFxuICAgIGVmZmVjdHM6IFtdLFxuICAgIHJlc29sdmUocmVzdW1lID0gZmFsc2UsIHN5bmMgPSBmYWxzZSkge1xuICAgICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikpIHtcbiAgICAgICAgaWYgKCFyZXN1bWUgJiYgIXN1c3BlbnNlLnBlbmRpbmdCcmFuY2gpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgc3VzcGVuc2UucmVzb2x2ZSgpIGlzIGNhbGxlZCB3aXRob3V0IGEgcGVuZGluZyBicmFuY2guYFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN1c3BlbnNlLmlzVW5tb3VudGVkKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYHN1c3BlbnNlLnJlc29sdmUoKSBpcyBjYWxsZWQgb24gYW4gYWxyZWFkeSB1bm1vdW50ZWQgc3VzcGVuc2UgYm91bmRhcnkuYFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IHtcbiAgICAgICAgdm5vZGU6IHZub2RlMixcbiAgICAgICAgYWN0aXZlQnJhbmNoLFxuICAgICAgICBwZW5kaW5nQnJhbmNoLFxuICAgICAgICBwZW5kaW5nSWQsXG4gICAgICAgIGVmZmVjdHMsXG4gICAgICAgI
15HBhcmVudENvbXBvbmVudDogcGFyZW50Q29tcG9uZW50MixcbiAgICAgICAgY29udGFpbmVyOiBjb250YWluZXIyXG4gICAgICB9ID0gc3VzcGVuc2U7XG4gICAgICBsZXQgZGVsYXlFbnRlciA9IGZhbHNlO1xuICAgICAgaWYgKHN1c3BlbnNlLmlzSHlkcmF0aW5nKSB7XG4gICAgICAgIHN1c3BlbnNlLmlzSHlkcmF0aW5nID0gZmFsc2U7XG4gICAgICB9IGVsc2UgaWYgKCFyZXN1bWUpIHtcbiAgICAgICAgZGVsYXlFbnRlciA9IGFjdGl2ZUJyYW5jaCAmJiBwZW5kaW5nQnJhbmNoLnRyYW5zaXRpb24gJiYgcGVuZGluZ0JyYW5jaC50cmFuc2l0aW9uLm1vZGUgPT09IFwib3V0LWluXCI7XG4gICAgICAgIGlmIChkZWxheUVudGVyKSB7XG4gICAgICAgICAgYWN0aXZlQnJhbmNoLnRyYW5zaXRpb24uYWZ0ZXJMZWF2ZSA9ICgpID0+IHtcbiAgICAgICAgICAgIGlmIChwZW5kaW5nSWQgPT09IHN1c3BlbnNlLnBlbmRpbmdJZCkge1xuICAgICAgICAgICAgICBtb3ZlKFxuICAgICAgICAgICAgICAgIHBlbmRpbmdCcmFuY2gsXG4gICAgICAgICAgICAgICAgY29udGFpbmVyMixcbiAgICAgICAgICAgICAgICBhbmNob3IgPT09IGluaXRpYWxBbmNob3IgPyBuZXh0KGFjdGl2ZUJyYW5jaCkgOiBhbmNob3IsXG4gICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBxdWV1ZVBvc3RGbHVzaENiKGVmZmVjdHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFjdGl2ZUJyYW5jaCkge1xuICAgICAgICAgIGlmIChwYXJlbnROb2RlKGFjdGl2ZUJyYW5jaC5lbCkgIT09IHN1c3BlbnNlLmhpZGRlbkNvbnRhaW5lcikge1xuICAgICAgICAgICAgYW5jaG9yID0gbmV4dChhY3RpdmVCcmFuY2gpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB1bm1vdW50KGFjdGl2ZUJyYW5jaCwgcGFyZW50Q29tcG9uZW50Miwgc3VzcGVuc2UsIHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghZGVsYXlFbnRlcikge1xuICAgICAgICAgIG1vdmUocGVuZGluZ0JyYW5jaCwgY29udGFpbmVyMiwgYW5jaG9yLCAwKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgc2V0QWN0aXZlQnJhbmNoKHN1c3BlbnNlLCBwZW5kaW5nQnJhbmNoKTtcbiAgICAgIHN1c3BlbnNlLnBlbmRpbmdCcmFuY2ggPSBudWxsO1xuICAgICAgc3VzcGVuc2UuaXNJbkZhbGxiYWNrID0gZmFsc2U7XG4gICAgICBsZXQgcGFyZW50ID0gc3VzcGVuc2UucGFyZW50O1xuICAgICAgbGV0IGhhc1VucmVzb2x2ZWRBbmNlc3RvciA9IGZhbHNlO1xuICAgICAgd2hpbGUgKHBhcmVudCkge1xuICAgICAgICBpZiAocGFyZW50LnBlbmRpbmdCcmFuY2gpIHtcbiAgICAgICAgICBwYXJlbnQuZWZmZWN0cy5wdXNoKC4uLmVmZmVjdHMpO1xuICAgICAgICAgIGhhc1VucmVzb2x2ZWRBbmNlc3RvciA9IHRydWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgcGFyZW50ID0gcGFyZW50LnBhcmVudDtcbiAgICAgIH1cbiAgICAgIGlmICghaGFzVW5yZXNvbHZlZEFuY2VzdG9yICYmICFkZWxheUVudGVyKSB7XG4gICAgICAgIHF1ZXVlUG9zdEZsdXNoQ2IoZWZmZWN0cyk7XG4gICAgICB9XG4gICAgICBzdXNwZW5zZS5lZmZlY3RzID0gW107XG4gICAgICBpZiAoaXNTdXNwZW5zaWJsZSkge1xuICAgICAgICBpZiAocGFyZW50U3VzcGVuc2UgJiYgcGFyZW50U3VzcGVuc2UucGVuZGluZ0JyYW5jaCAmJiBwYXJlbnRTdXNwZW5zZUlkID09PSBwYXJlbnRTdXNwZW5zZS5wZW5kaW5nSWQpIHtcbiAgICAgICAgICBwYXJlbnRTdXNwZW5zZS5kZXBzLS07XG4gICAgICAgICAgaWYgKHBhcmVudFN1c3BlbnNlLmRlcHMgPT09IDAgJiYgIXN5bmMpIHtcbiAgICAgICAgICAgIHBhcmVudFN1c3BlbnNlLnJlc29sdmUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRyaWdnZXJFdmVudCh2bm9kZTIsIFwib25SZXNvbHZlXCIpO1xuICAgIH0sXG4gICAgZmFsbGJhY2soZmFsbGJhY2tWTm9kZSkge1xuICAgICAgaWYgKCFzdXNwZW5zZS5wZW5kaW5nQnJhbmNoKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHsgdm5vZGU6IHZub2RlMiwgYWN0aXZlQnJhbmNoLCBwYXJlbnRDb21wb25lbnQ6IHBhcmVudENvbXBvbmVudDIsIGNvbnRhaW5lcjogY29udGFpbmVyMiwgbmFtZXNwYWNlOiBuYW1lc3BhY2UyIH0gPSBzdXNwZW5zZTtcbiAgICAgIHRyaWdnZXJFdmVudCh2bm9kZTIsIFwib25GYWxsYmFja1wiKTtcbiAgICAgIGNvbnN0IGFuY2hvcjIgPSBuZXh0KGFjdGl2ZUJyYW5jaCk7XG4gICAgICBjb25zdCBtb3VudEZhbGxiYWNrID0gKCkgPT4ge1xuICAgICAgICBpZiAoIXN1c3BlbnNlLmlzSW5GYWxsYmFjaykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBwYXRjaChcbiAgICAgICAgICBudWxsLFxuICAgICAgICAgIGZhbGxiYWNrVk5vZGUsXG4gICAgICAgICAgY29udGFpbmVyMixcbiAgICAgICAgICBhbmNob3IyLFxuICAgICAgICAgIHBhcmVudENvbXBvbmVudDIsXG4gICAgICAgICAgbnVsbCxcbiAgICAgICAgICAvLyBmYWxsYmFjayB0cmVlIHdpbGwgbm90IGhhdmUgc3VzcGVuc2UgY29udGV4dFxuICAgICAgICAgIG5hbWVzcGFjZTIsXG4gICAgICAgICAgc2xvdFNjb3BlSWRzLFxuICAgICAgICAgIG9wdGltaXplZFxuICAgICAgICApO1xuICAgICAgICBzZXRBY3RpdmVCcmFuY2goc3VzcGVuc2UsIGZhbGxiYWNrVk5vZGUpO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IGRlbGF5RW50ZXIgPSBmYWxsYmFja1ZOb2RlLnRyYW5zaXRpb24gJiYgZmFsbGJhY2tWTm9kZS50cmFuc2l0aW9uLm1vZGUgPT09IFwib3V0LWluXCI7XG4gICAgICBpZiAoZGVsYXlFbnRlcikge1xuICAgICAgICBhY3RpdmVCcmFuY2gudHJhbnNpdGlvbi5hZnRlckxlYXZlID0gbW91bnRGYWxsYmFjaztcbiAgICAgIH1cbiAgICAgIHN1c3BlbnNlLmlzSW5GYWxsYmFjayA9IHRydWU7XG4gICAgICB1bm1vdW50KFxuICAgICAgICBhY3RpdmVCcmFuY2gsXG4gICAgICAgIHBhcmVudENvbXBvbmVudDIsXG4gICAgICAgIG51bGwsXG4gICAgICAgIC8vIG5vIHN1c3BlbnNlIHNvIHVubW91bnQgaG9va3MgZmlyZSBub3dcbiAgICAgICAgdHJ1ZVxuICAgICAgICAvLyBzaG91bGRSZW1vdmVcbiAgICAgICk7XG4gICAgICBpZiAoIWRlbGF5RW50ZXIpIHtcbiAgICAgICAgbW91bnRGYWxsYmFjaygpO1xuICAgICAgfVxuICAgIH0sXG4gICAgbW92ZShjb250YWluZXIyLCBhbmNob3IyLCB0eXBlKSB7XG4gICAgICBzdXNwZW5zZS5hY3RpdmVCcmFuY2ggJiYgbW92ZShzdXNwZW5zZS5hY3RpdmVCcmFuY2gsIGNvbnRhaW5lcjIsIGFuY2hvcjIsIHR5cGUpO1xuICAgICAgc3VzcGVuc2UuY29udGFpbmVyID0gY29udGFpbmVyMjtcbiAgICB9LFxuICAgIG5leHQoKSB7XG4gICAgICByZXR1cm4gc3VzcGVuc2UuYWN0aXZlQnJhbmNoICYmIG5leHQoc3VzcGVuc2UuYWN0aXZlQnJhbmNoKTtcbiAgICB9LFxuICAgIHJlZ2lzdGVyRGVwKGluc3RhbmNlLCBzZXR1cFJlbmRlckVmZmVjdCwgb3B0aW1pemVkMikge1xuICAgICAgY29uc3QgaXNJblBlbmRpbmdTdXNwZW5zZSA9ICEhc3VzcGVuc2UucGVuZGluZ0JyYW5jaDtcbiAgICAgIGlmIChpc0luUGVuZGluZ1N1c3BlbnNlKSB7XG4gICAgICAgI
15HN1c3BlbnNlLmRlcHMrKztcbiAgICAgIH1cbiAgICAgIGNvbnN0IGh5ZHJhdGVkRWwgPSBpbnN0YW5jZS52bm9kZS5lbDtcbiAgICAgIGluc3RhbmNlLmFzeW5jRGVwLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgaGFuZGxlRXJyb3IoZXJyLCBpbnN0YW5jZSwgMCk7XG4gICAgICB9KS50aGVuKChhc3luY1NldHVwUmVzdWx0KSA9PiB7XG4gICAgICAgIGlmIChpbnN0YW5jZS5pc1VubW91bnRlZCB8fCBzdXNwZW5zZS5pc1VubW91bnRlZCB8fCBzdXNwZW5zZS5wZW5kaW5nSWQgIT09IGluc3RhbmNlLnN1c3BlbnNlSWQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaW5zdGFuY2UuYXN5bmNSZXNvbHZlZCA9IHRydWU7XG4gICAgICAgIGNvbnN0IHsgdm5vZGU6IHZub2RlMiB9ID0gaW5zdGFuY2U7XG4gICAgICAgIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpKSB7XG4gICAgICAgICAgcHVzaFdhcm5pbmdDb250ZXh0KHZub2RlMik7XG4gICAgICAgIH1cbiAgICAgICAgaGFuZGxlU2V0dXBSZXN1bHQoaW5zdGFuY2UsIGFzeW5jU2V0dXBSZXN1bHQsIGZhbHNlKTtcbiAgICAgICAgaWYgKGh5ZHJhdGVkRWwpIHtcbiAgICAgICAgICB2bm9kZTIuZWwgPSBoeWRyYXRlZEVsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBsYWNlaG9sZGVyID0gIWh5ZHJhdGVkRWwgJiYgaW5zdGFuY2Uuc3ViVHJlZS5lbDtcbiAgICAgICAgc2V0dXBSZW5kZXJFZmZlY3QoXG4gICAgICAgICAgaW5zdGFuY2UsXG4gICAgICAgICAgdm5vZGUyLFxuICAgICAgICAgIC8vIGNvbXBvbmVudCBtYXkgaGF2ZSBiZWVuIG1vdmVkIGJlZm9yZSByZXNvbHZlLlxuICAgICAgICAgIC8vIGlmIHRoaXMgaXMgbm90IGEgaHlkcmF0aW9uLCBpbnN0YW5jZS5zdWJUcmVlIHdpbGwgYmUgdGhlIGNvbW1lbnRcbiAgICAgICAgICAvLyBwbGFjZWhvbGRlci5cbiAgICAgICAgICBwYXJlbnROb2RlKGh5ZHJhdGVkRWwgfHwgaW5zdGFuY2Uuc3ViVHJlZS5lbCksXG4gICAgICAgICAgLy8gYW5jaG9yIHdpbGwgbm90IGJlIHVzZWQgaWYgdGhpcyBpcyBoeWRyYXRpb24sIHNvIG9ubHkgbmVlZCB0b1xuICAgICAgICAgIC8vIGNvbnNpZGVyIHRoZSBjb21tZW50IHBsYWNlaG9sZGVyIGNhc2UuXG4gICAgICAgICAgaHlkcmF0ZWRFbCA/IG51bGwgOiBuZXh0KGluc3RhbmNlLnN1YlRyZWUpLFxuICAgICAgICAgIHN1c3BlbnNlLFxuICAgICAgICAgIG5hbWVzcGFjZSxcbiAgICAgICAgICBvcHRpbWl6ZWQyXG4gICAgICAgICk7XG4gICAgICAgIGlmIChwbGFjZWhvbGRlcikge1xuICAgICAgICAgIHJlbW92ZShwbGFjZWhvbGRlcik7XG4gICAgICAgIH1cbiAgICAgICAgdXBkYXRlSE9DSG9zdEVsKGluc3RhbmNlLCB2bm9kZTIuZWwpO1xuICAgICAgICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSkge1xuICAgICAgICAgIHBvcFdhcm5pbmdDb250ZXh0KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzSW5QZW5kaW5nU3VzcGVuc2UgJiYgLS1zdXNwZW5zZS5kZXBzID09PSAwKSB7XG4gICAgICAgICAgc3VzcGVuc2UucmVzb2x2ZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9LFxuICAgIHVubW91bnQocGFyZW50U3VzcGVuc2UyLCBkb1JlbW92ZSkge1xuICAgICAgc3VzcGVuc2UuaXNVbm1vdW50ZWQgPSB0cnVlO1xuICAgICAgaWYgKHN1c3BlbnNlLmFjdGl2ZUJyYW5jaCkge1xuICAgICAgICB1bm1vdW50KFxuICAgICAgICAgIHN1c3BlbnNlLmFjdGl2ZUJyYW5jaCxcbiAgICAgICAgICBwYXJlbnRDb21wb25lbnQsXG4gICAgICAgICAgcGFyZW50U3VzcGVuc2UyLFxuICAgICAgICAgIGRvUmVtb3ZlXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoc3VzcGVuc2UucGVuZGluZ0JyYW5jaCkge1xuICAgICAgICB1bm1vdW50KFxuICAgICAgICAgIHN1c3BlbnNlLnBlbmRpbmdCcmFuY2gsXG4gICAgICAgICAgcGFyZW50Q29tcG9uZW50LFxuICAgICAgICAgIHBhcmVudFN1c3BlbnNlMixcbiAgICAgICAgICBkb1JlbW92ZVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgcmV0dXJuIHN1c3BlbnNlO1xufVxuZnVuY3Rpb24gaHlkcmF0ZVN1c3BlbnNlKG5vZGUsIHZub2RlLCBwYXJlbnRDb21wb25lbnQsIHBhcmVudFN1c3BlbnNlLCBuYW1lc3BhY2UsIHNsb3RTY29wZUlkcywgb3B0aW1pemVkLCByZW5kZXJlckludGVybmFscywgaHlkcmF0ZU5vZGUpIHtcbiAgY29uc3Qgc3VzcGVuc2UgPSB2bm9kZS5zdXNwZW5zZSA9IGNyZWF0ZVN1c3BlbnNlQm91bmRhcnkoXG4gICAgdm5vZGUsXG4gICAgcGFyZW50U3VzcGVuc2UsXG4gICAgcGFyZW50Q29tcG9uZW50LFxuICAgIG5vZGUucGFyZW50Tm9kZSxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1nbG9iYWxzXG4gICAgZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxcbiAgICBudWxsLFxuICAgIG5hbWVzcGFjZSxcbiAgICBzbG90U2NvcGVJZHMsXG4gICAgb3B0aW1pemVkLFxuICAgIHJlbmRlcmVySW50ZXJuYWxzLFxuICAgIHRydWVcbiAgKTtcbiAgY29uc3QgcmVzdWx0ID0gaHlkcmF0ZU5vZGUoXG4gICAgbm9kZSxcbiAgICBzdXNwZW5zZS5wZW5kaW5nQnJhbmNoID0gdm5vZGUuc3NDb250ZW50LFxuICAgIHBhcmVudENvbXBvbmVudCxcbiAgICBzdXNwZW5zZSxcbiAgICBzbG90U2NvcGVJZHMsXG4gICAgb3B0aW1pemVkXG4gICk7XG4gIGlmIChzdXNwZW5zZS5kZXBzID09PSAwKSB7XG4gICAgc3VzcGVuc2UucmVzb2x2ZShmYWxzZSwgdHJ1ZSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIG5vcm1hbGl6ZVN1c3BlbnNlQ2hpbGRyZW4odm5vZGUpIHtcbiAgY29uc3QgeyBzaGFwZUZsYWcsIGNoaWxkcmVuIH0gPSB2bm9kZTtcbiAgY29uc3QgaXNTbG90Q2hpbGRyZW4gPSBzaGFwZUZsYWcgJiAzMjtcbiAgdm5vZGUuc3NDb250ZW50ID0gbm9ybWFsaXplU3VzcGVuc2VTbG90KFxuICAgIGlzU2xvdENoaWxkcmVuID8gY2hpbGRyZW4uZGVmYXVsdCA6IGNoaWxkcmVuXG4gICk7XG4gIHZub2RlLnNzRmFsbGJhY2sgPSBpc1Nsb3RDaGlsZHJlbiA/IG5vcm1hbGl6ZVN1c3BlbnNlU2xvdChjaGlsZHJlbi5mYWxsYmFjaykgOiBjcmVhdGVWTm9kZShDb21tZW50KTtcbn1cbmZ1bmN0aW9uIG5vcm1hbGl6ZVN1c3BlbnNlU2xvdChzKSB7XG4gIGxldCBibG9jaztcbiAgaWYgKGlzRnVuY3Rpb24ocykpIHtcbiAgICBjb25zdCB0cmFja0Jsb2NrID0gaXNCbG9ja1RyZWVFbmFibGVkICYmIHMuX2M7XG4gICAgaWYgKHRyYWNrQmxvY2spIHtcbiAgICAgIHMuX2QgPSBmYWxzZTtcbiAgICAgIG9wZW5CbG9jaygpO1xuICAgIH1cbiAgICBzID0gcygpO1xuICAgIGlmICh0cmFja0Jsb2NrKSB7XG4gICAgICBzLl9kID0gdHJ1ZTtcbiAgICAgIGJsb2NrID0gY3VycmVudEJsb2NrO1xuICAgICAgY2xvc2VCbG9jaygpO1xuICAgIH1cbiAgfVxuICBpZiAoaXNBcnJheShzKSkge1xuICAgIGNvbnN0IHNpbmdsZUNoaWxkID0gZmlsdGVyU2luZ2xlUm9vdChzKTtcbiAgICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSAmJiAhc2luZ2xlQ2hpbGQgJiYgcy5maWx0ZXIoKGNoaWxkKSA9PiBjaGlsZCAhPT0gTlVMTF9EWU5BTUlDX0NPTVBPTkVOVCkubGVuZ3RoID4gMCkge1xuICAgICAgd2FybiQxKGA8U3VzcGVuc2U+IHNsb3RzIGV4cGVjdCBhIHNpbmdsZSByb290IG5vZGUuYCk7XG4gICAgfVxuICAgIHMgPSBzaW5nbGVDaGlsZDtcbiAgfVxuICBzID0gbm9ybWFsaXplVk5vZGUocyk7XG4gIGlmIChibG9jayAmJiAhcy5keW5hbWljQ2hpbGRyZW4pIHtcbiAgICBzLmR5bmFtaWNDaGlsZHJlbiA9IGJsb2NrLmZpbHRlcigoYykgPT4gYyAhPT0gcyk7XG4gIH1cbiAgcmV0dXJuIHM7XG59XG5mdW5jdGlvbiBxdWV1ZUVmZmVjdFdpdGhTdXNwZW5zZShmbiwgc3VzcGVuc2UpIHtcbiAgaWYgKHN1c3BlbnNlICYmIHN1c3BlbnNlLnBlbmRpbmdCcmFuY2gpIHtcbiAgICBpZiAoaXNBcnJheShmbikpIHtcbiAgICAgIHN1c3BlbnNlLmVmZmVjdHMucHVzaCguLi5mbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN1c3BlbnNlLmVmZmVjdHMucHVzaChmb
15ik7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHF1ZXVlUG9zdEZsdXNoQ2IoZm4pO1xuICB9XG59XG5mdW5jdGlvbiBzZXRBY3RpdmVCcmFuY2goc3VzcGVuc2UsIGJyYW5jaCkge1xuICBzdXNwZW5zZS5hY3RpdmVCcmFuY2ggPSBicmFuY2g7XG4gIGNvbnN0IHsgdm5vZGUsIHBhcmVudENvbXBvbmVudCB9ID0gc3VzcGVuc2U7XG4gIGxldCBlbCA9IGJyYW5jaC5lbDtcbiAgd2hpbGUgKCFlbCAmJiBicmFuY2guY29tcG9uZW50KSB7XG4gICAgYnJhbmNoID0gYnJhbmNoLmNvbXBvbmVudC5zdWJUcmVlO1xuICAgIGVsID0gYnJhbmNoLmVsO1xuICB9XG4gIHZub2RlLmVsID0gZWw7XG4gIGlmIChwYXJlbnRDb21wb25lbnQgJiYgcGFyZW50Q29tcG9uZW50LnN1YlRyZWUgPT09IHZub2RlKSB7XG4gICAgcGFyZW50Q29tcG9uZW50LnZub2RlLmVsID0gZWw7XG4gICAgdXBkYXRlSE9DSG9zdEVsKHBhcmVudENvbXBvbmVudCwgZWwpO1xuICB9XG59XG5mdW5jdGlvbiBpc1ZOb2RlU3VzcGVuc2libGUodm5vZGUpIHtcbiAgY29uc3Qgc3VzcGVuc2libGUgPSB2bm9kZS5wcm9wcyAmJiB2bm9kZS5wcm9wcy5zdXNwZW5zaWJsZTtcbiAgcmV0dXJuIHN1c3BlbnNpYmxlICE9IG51bGwgJiYgc3VzcGVuc2libGUgIT09IGZhbHNlO1xufVxuXG5jb25zdCBGcmFnbWVudCA9IFN5bWJvbC5mb3IoXCJ2LWZndFwiKTtcbmNvbnN0IFRleHQgPSBTeW1ib2wuZm9yKFwidi10eHRcIik7XG5jb25zdCBDb21tZW50ID0gU3ltYm9sLmZvcihcInYtY210XCIpO1xuY29uc3QgU3RhdGljID0gU3ltYm9sLmZvcihcInYtc3RjXCIpO1xuY29uc3QgYmxvY2tTdGFjayA9IFtdO1xubGV0IGN1cnJlbnRCbG9jayA9IG51bGw7XG5mdW5jdGlvbiBvcGVuQmxvY2soZGlzYWJsZVRyYWNraW5nID0gZmFsc2UpIHtcbiAgYmxvY2tTdGFjay5wdXNoKGN1cnJlbnRCbG9jayA9IGRpc2FibGVUcmFja2luZyA/IG51bGwgOiBbXSk7XG59XG5mdW5jdGlvbiBjbG9zZUJsb2NrKCkge1xuICBibG9ja1N0YWNrLnBvcCgpO1xuICBjdXJyZW50QmxvY2sgPSBibG9ja1N0YWNrW2Jsb2NrU3RhY2subGVuZ3RoIC0gMV0gfHwgbnVsbDtcbn1cbmxldCBpc0Jsb2NrVHJlZUVuYWJsZWQgPSAxO1xuZnVuY3Rpb24gc2V0QmxvY2tUcmFja2luZyh2YWx1ZSkge1xuICBpc0Jsb2NrVHJlZUVuYWJsZWQgKz0gdmFsdWU7XG4gIGlmICh2YWx1ZSA8IDAgJiYgY3VycmVudEJsb2NrKSB7XG4gICAgY3VycmVudEJsb2NrLmhhc09uY2UgPSB0cnVlO1xuICB9XG59XG5mdW5jdGlvbiBzZXR1cEJsb2NrKHZub2RlKSB7XG4gIHZub2RlLmR5bmFtaWNDaGlsZHJlbiA9IGlzQmxvY2tUcmVlRW5hYmxlZCA+IDAgPyBjdXJyZW50QmxvY2sgfHwgRU1QVFlfQVJSIDogbnVsbDtcbiAgY2xvc2VCbG9jaygpO1xuICBpZiAoaXNCbG9ja1RyZWVFbmFibGVkID4gMCAmJiBjdXJyZW50QmxvY2spIHtcbiAgICBjdXJyZW50QmxvY2sucHVzaCh2bm9kZSk7XG4gIH1cbiAgcmV0dXJuIHZub2RlO1xufVxuZnVuY3Rpb24gY3JlYXRlRWxlbWVudEJsb2NrKHR5cGUsIHByb3BzLCBjaGlsZHJlbiwgcGF0Y2hGbGFnLCBkeW5hbWljUHJvcHMsIHNoYXBlRmxhZykge1xuICByZXR1cm4gc2V0dXBCbG9jayhcbiAgICBjcmVhdGVCYXNlVk5vZGUoXG4gICAgICB0eXBlLFxuICAgICAgcHJvcHMsXG4gICAgICBjaGlsZHJlbixcbiAgICAgIHBhdGNoRmxhZyxcbiAgICAgIGR5bmFtaWNQcm9wcyxcbiAgICAgIHNoYXBlRmxhZyxcbiAgICAgIHRydWVcbiAgICApXG4gICk7XG59XG5mdW5jdGlvbiBjcmVhdGVCbG9jayh0eXBlLCBwcm9wcywgY2hpbGRyZW4sIHBhdGNoRmxhZywgZHluYW1pY1Byb3BzKSB7XG4gIHJldHVybiBzZXR1cEJsb2NrKFxuICAgIGNyZWF0ZVZOb2RlKFxuICAgICAgdHlwZSxcbiAgICAgIHByb3BzLFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBwYXRjaEZsYWcsXG4gICAgICBkeW5hbWljUHJvcHMsXG4gICAgICB0cnVlXG4gICAgKVxuICApO1xufVxuZnVuY3Rpb24gaXNWTm9kZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPyB2YWx1ZS5fX3ZfaXNWTm9kZSA9PT0gdHJ1ZSA6IGZhbHNlO1xufVxuZnVuY3Rpb24gaXNTYW1lVk5vZGVUeXBlKG4xLCBuMikge1xuICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSAmJiBuMi5zaGFwZUZsYWcgJiA2ICYmIG4xLmNvbXBvbmVudCkge1xuICAgIGNvbnN0IGRpcnR5SW5zdGFuY2VzID0gaG1yRGlydHlDb21wb25lbnRzLmdldChuMi50eXBlKTtcbiAgICBpZiAoZGlydHlJbnN0YW5jZXMgJiYgZGlydHlJbnN0YW5jZXMuaGFzKG4xLmNvbXBvbmVudCkpIHtcbiAgICAgIG4xLnNoYXBlRmxhZyAmPSB+MjU2O1xuICAgICAgbjIuc2hhcGVGbGFnICY9IH41MTI7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiBuMS50eXBlID09PSBuMi50eXBlICYmIG4xLmtleSA9PT0gbjIua2V5O1xufVxubGV0IHZub2RlQXJnc1RyYW5zZm9ybWVyO1xuZnVuY3Rpb24gdHJhbnNmb3JtVk5vZGVBcmdzKHRyYW5zZm9ybWVyKSB7XG4gIHZub2RlQXJnc1RyYW5zZm9ybWVyID0gdHJhbnNmb3JtZXI7XG59XG5jb25zdCBjcmVhdGVWTm9kZVdpdGhBcmdzVHJhbnNmb3JtID0gKC4uLmFyZ3MpID0+IHtcbiAgcmV0dXJuIF9jcmVhdGVWTm9kZShcbiAgICAuLi52bm9kZUFyZ3NUcmFuc2Zvcm1lciA/IHZub2RlQXJnc1RyYW5zZm9ybWVyKGFyZ3MsIGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZSkgOiBhcmdzXG4gICk7XG59O1xuY29uc3Qgbm9ybWFsaXplS2V5ID0gKHsga2V5IH0pID0+IGtleSAhPSBudWxsID8ga2V5IDogbnVsbDtcbmNvbnN0IG5vcm1hbGl6ZVJlZiA9ICh7XG4gIHJlZixcbiAgcmVmX2tleSxcbiAgcmVmX2ZvclxufSkgPT4ge1xuICBpZiAodHlwZW9mIHJlZiA9PT0gXCJudW1iZXJcIikge1xuICAgIHJlZiA9IFwiXCIgKyByZWY7XG4gIH1cbiAgcmV0dXJuIHJlZiAhPSBudWxsID8gaXNTdHJpbmcocmVmKSB8fCBpc1JlZihyZWYpIHx8IGlzRnVuY3Rpb24ocmVmKSA/IHsgaTogY3VycmVudFJlbmRlcmluZ0luc3RhbmNlLCByOiByZWYsIGs6IHJlZl9rZXksIGY6ICEhcmVmX2ZvciB9IDogcmVmIDogbnVsbDtcbn07XG5mdW5jdGlvbiBjcmVhdGVCYXNlVk5vZGUodHlwZSwgcHJvcHMgP
15SBudWxsLCBjaGlsZHJlbiA9IG51bGwsIHBhdGNoRmxhZyA9IDAsIGR5bmFtaWNQcm9wcyA9IG51bGwsIHNoYXBlRmxhZyA9IHR5cGUgPT09IEZyYWdtZW50ID8gMCA6IDEsIGlzQmxvY2tOb2RlID0gZmFsc2UsIG5lZWRGdWxsQ2hpbGRyZW5Ob3JtYWxpemF0aW9uID0gZmFsc2UpIHtcbiAgY29uc3Qgdm5vZGUgPSB7XG4gICAgX192X2lzVk5vZGU6IHRydWUsXG4gICAgX192X3NraXA6IHRydWUsXG4gICAgdHlwZSxcbiAgICBwcm9wcyxcbiAgICBrZXk6IHByb3BzICYmIG5vcm1hbGl6ZUtleShwcm9wcyksXG4gICAgcmVmOiBwcm9wcyAmJiBub3JtYWxpemVSZWYocHJvcHMpLFxuICAgIHNjb3BlSWQ6IGN1cnJlbnRTY29wZUlkLFxuICAgIHNsb3RTY29wZUlkczogbnVsbCxcbiAgICBjaGlsZHJlbixcbiAgICBjb21wb25lbnQ6IG51bGwsXG4gICAgc3VzcGVuc2U6IG51bGwsXG4gICAgc3NDb250ZW50OiBudWxsLFxuICAgIHNzRmFsbGJhY2s6IG51bGwsXG4gICAgZGlyczogbnVsbCxcbiAgICB0cmFuc2l0aW9uOiBudWxsLFxuICAgIGVsOiBudWxsLFxuICAgIGFuY2hvcjogbnVsbCxcbiAgICB0YXJnZXQ6IG51bGwsXG4gICAgdGFyZ2V0U3RhcnQ6IG51bGwsXG4gICAgdGFyZ2V0QW5jaG9yOiBudWxsLFxuICAgIHN0YXRpY0NvdW50OiAwLFxuICAgIHNoYXBlRmxhZyxcbiAgICBwYXRjaEZsYWcsXG4gICAgZHluYW1pY1Byb3BzLFxuICAgIGR5bmFtaWNDaGlsZHJlbjogbnVsbCxcbiAgICBhcHBDb250ZXh0OiBudWxsLFxuICAgIGN0eDogY3VycmVudFJlbmRlcmluZ0luc3RhbmNlXG4gIH07XG4gIGlmIChuZWVkRnVsbENoaWxkcmVuTm9ybWFsaXphdGlvbikge1xuICAgIG5vcm1hbGl6ZUNoaWxkcmVuKHZub2RlLCBjaGlsZHJlbik7XG4gICAgaWYgKHNoYXBlRmxhZyAmIDEyOCkge1xuICAgICAgdHlwZS5ub3JtYWxpemUodm5vZGUpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChjaGlsZHJlbikge1xuICAgIHZub2RlLnNoYXBlRmxhZyB8PSBpc1N0cmluZyhjaGlsZHJlbikgPyA4IDogMTY7XG4gIH1cbiAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgJiYgdm5vZGUua2V5ICE9PSB2bm9kZS5rZXkpIHtcbiAgICB3YXJuJDEoYFZOb2RlIGNyZWF0ZWQgd2l0aCBpbnZhbGlkIGtleSAoTmFOKS4gVk5vZGUgdHlwZTpgLCB2bm9kZS50eXBlKTtcbiAgfVxuICBpZiAoaXNCbG9ja1RyZWVFbmFibGVkID4gMCAmJiAvLyBhdm9pZCBhIGJsb2NrIG5vZGUgZnJvbSB0cmFja2luZyBpdHNlbGZcbiAgIWlzQmxvY2tOb2RlICYmIC8vIGhhcyBjdXJyZW50IHBhcmVudCBibG9ja1xuICBjdXJyZW50QmxvY2sgJiYgLy8gcHJlc2VuY2Ugb2YgYSBwYXRjaCBmbGFnIGluZGljYXRlcyB0aGlzIG5vZGUgbmVlZHMgcGF0Y2hpbmcgb24gdXBkYXRlcy5cbiAgLy8gY29tcG9uZW50IG5vZGVzIGFsc28gc2hvdWxkIGFsd2F5cyBiZSBwYXRjaGVkLCBiZWNhdXNlIGV2ZW4gaWYgdGhlXG4gIC8vIGNvbXBvbmVudCBkb2Vzbid0IG5lZWQgdG8gdXBkYXRlLCBpdCBuZWVkcyB0byBwZXJzaXN0IHRoZSBpbnN0YW5jZSBvbiB0b1xuICAvLyB0aGUgbmV4dCB2bm9kZSBzbyB0aGF0IGl0IGNhbiBiZSBwcm9wZXJseSB1bm1vdW50ZWQgbGF0ZXIuXG4gICh2bm9kZS5wYXRjaEZsYWcgPiAwIHx8IHNoYXBlRmxhZyAmIDYpICYmIC8vIHRoZSBFVkVOVFMgZmxhZyBpcyBvbmx5IGZvciBoeWRyYXRpb24gYW5kIGlmIGl0IGlzIHRoZSBvbmx5IGZsYWcsIHRoZVxuICAvLyB2bm9kZSBzaG91bGQgbm90IGJlIGNvbnNpZGVyZWQgZHluYW1pYyBkdWUgdG8gaGFuZGxlciBjYWNoaW5nLlxuICB2bm9kZS5wYXRjaEZsYWcgIT09IDMyKSB7XG4gICAgY3VycmVudEJsb2NrLnB1c2godm5vZGUpO1xuICB9XG4gIHJldHVybiB2bm9kZTtcbn1cbmNvbnN0IGNyZWF0ZVZOb2RlID0gISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSA/IGNyZWF0ZVZOb2RlV2l0aEFyZ3NUcmFuc2Zvcm0gOiBfY3JlYXRlVk5vZGU7XG5mdW5jdGlvbiBfY3JlYXRlVk5vZGUodHlwZSwgcHJvcHMgPSBudWxsLCBjaGlsZHJlbiA9IG51bGwsIHBhdGNoRmxhZyA9IDAsIGR5bmFtaWNQcm9wcyA9IG51bGwsIGlzQmxvY2tOb2RlID0gZmFsc2UpIHtcbiAgaWYgKCF0eXBlIHx8IHR5cGUgPT09IE5VTExfRFlOQU1JQ19DT01QT05FTlQpIHtcbiAgICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSAmJiAhdHlwZSkge1xuICAgICAgd2FybiQxKGBJbnZhbGlkIHZub2RlIHR5cGUgd2hlbiBjcmVhdGluZyB2bm9kZTogJHt0eXBlfS5gKTtcbiAgICB9XG4gICAgdHlwZSA9IENvbW1lbnQ7XG4gIH1cbiAgaWYgKGlzVk5vZGUodHlwZSkpIHtcbiAgICBjb25zdCBjbG9uZWQgPSBjbG9uZVZOb2RlKFxuICAgICAgdHlwZSxcbiAgICAgIHByb3BzLFxuICAgICAgdHJ1ZVxuICAgICAgLyogbWVyZ2VSZWY6IHRydWUgKi9cbiAgICApO1xuICAgIGlmIChjaGlsZHJlbikge1xuICAgICAgbm9ybWFsaXplQ2hpbGRyZW4oY2xvbmVkLCBjaGlsZHJlbik7XG4gICAgfVxuICAgIGlmIChpc0Jsb2NrVHJlZUVuYWJsZWQgPiAwICYmICFpc0Jsb2NrTm9kZSAmJiBjdXJyZW50QmxvY2spIHtcbiAgICAgIGlmIChjbG9uZWQuc2hhcGVGbGFnICYgNikge1xuICAgICAgICBjdXJyZW50QmxvY2tbY3VycmVudEJsb2NrLmluZGV4T2YodHlwZSldID0gY2xvbmVkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY3VycmVudEJsb2NrLnB1c2goY2xvbmVkKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY2xvbmVkLnBhdGNoRmxhZyA9IC0yO1xuICAgIHJldHVybiBjbG9uZWQ7XG4gIH1cbiAgaWYgKGlzQ2xhc3NDb21wb25lbnQodHlwZSkpIHtcbiAgICB0eXBlID0gdHlwZS5fX3ZjY09wdHM7XG4gIH1cbiAgaWYgKHByb3BzKSB7XG4gICAgcHJvcHMgPSBndWFyZFJlYWN0aXZlUHJvcHMocHJvcHMpO1xuICAgIGxldCB7IGNsYXNzOiBrbGFzcywgc3R5bGUgfSA9IHByb3BzO1xuICAgIGlmIChrbGFzcyAmJiAhaXNTdHJpbmcoa2xhc3MpKSB7XG4gICAgICBwcm9wcy5jbGFzcyA9IG5vcm1hbGl6ZUNsYXNzKGtsYXNzKTtcbiAgICB9XG4gICAgaWYgKGlzT2JqZWN0KHN0eWxlKSkge1xuICAgICAgaWYgKGlzUHJveHkoc3R5bGUpICYmICFpc0FycmF
155KHN0eWxlKSkge1xuICAgICAgICBzdHlsZSA9IGV4dGVuZCh7fSwgc3R5bGUpO1xuICAgICAgfVxuICAgICAgcHJvcHMuc3R5bGUgPSBub3JtYWxpemVTdHlsZShzdHlsZSk7XG4gICAgfVxuICB9XG4gIGNvbnN0IHNoYXBlRmxhZyA9IGlzU3RyaW5nKHR5cGUpID8gMSA6IGlzU3VzcGVuc2UodHlwZSkgPyAxMjggOiBpc1RlbGVwb3J0KHR5cGUpID8gNjQgOiBpc09iamVjdCh0eXBlKSA/IDQgOiBpc0Z1bmN0aW9uKHR5cGUpID8gMiA6IDA7XG4gIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpICYmIHNoYXBlRmxhZyAmIDQgJiYgaXNQcm94eSh0eXBlKSkge1xuICAgIHR5cGUgPSB0b1Jhdyh0eXBlKTtcbiAgICB3YXJuJDEoXG4gICAgICBgVnVlIHJlY2VpdmVkIGEgQ29tcG9uZW50IHRoYXQgd2FzIG1hZGUgYSByZWFjdGl2ZSBvYmplY3QuIFRoaXMgY2FuIGxlYWQgdG8gdW5uZWNlc3NhcnkgcGVyZm9ybWFuY2Ugb3ZlcmhlYWQgYW5kIHNob3VsZCBiZSBhdm9pZGVkIGJ5IG1hcmtpbmcgdGhlIGNvbXBvbmVudCB3aXRoIFxcYG1hcmtSYXdcXGAgb3IgdXNpbmcgXFxgc2hhbGxvd1JlZlxcYCBpbnN0ZWFkIG9mIFxcYHJlZlxcYC5gLFxuICAgICAgYFxuQ29tcG9uZW50IHRoYXQgd2FzIG1hZGUgcmVhY3RpdmU6IGAsXG4gICAgICB0eXBlXG4gICAgKTtcbiAgfVxuICByZXR1cm4gY3JlYXRlQmFzZVZOb2RlKFxuICAgIHR5cGUsXG4gICAgcHJvcHMsXG4gICAgY2hpbGRyZW4sXG4gICAgcGF0Y2hGbGFnLFxuICAgIGR5bmFtaWNQcm9wcyxcbiAgICBzaGFwZUZsYWcsXG4gICAgaXNCbG9ja05vZGUsXG4gICAgdHJ1ZVxuICApO1xufVxuZnVuY3Rpb24gZ3VhcmRSZWFjdGl2ZVByb3BzKHByb3BzKSB7XG4gIGlmICghcHJvcHMpIHJldHVybiBudWxsO1xuICByZXR1cm4gaXNQcm94eShwcm9wcykgfHwgaXNJbnRlcm5hbE9iamVjdChwcm9wcykgPyBleHRlbmQoe30sIHByb3BzKSA6IHByb3BzO1xufVxuZnVuY3Rpb24gY2xvbmVWTm9kZSh2bm9kZSwgZXh0cmFQcm9wcywgbWVyZ2VSZWYgPSBmYWxzZSwgY2xvbmVUcmFuc2l0aW9uID0gZmFsc2UpIHtcbiAgY29uc3QgeyBwcm9wcywgcmVmLCBwYXRjaEZsYWcsIGNoaWxkcmVuLCB0cmFuc2l0aW9uIH0gPSB2bm9kZTtcbiAgY29uc3QgbWVyZ2VkUHJvcHMgPSBleHRyYVByb3BzID8gbWVyZ2VQcm9wcyhwcm9wcyB8fCB7fSwgZXh0cmFQcm9wcykgOiBwcm9wcztcbiAgY29uc3QgY2xvbmVkID0ge1xuICAgIF9fdl9pc1ZOb2RlOiB0cnVlLFxuICAgIF9fdl9za2lwOiB0cnVlLFxuICAgIHR5cGU6IHZub2RlLnR5cGUsXG4gICAgcHJvcHM6IG1lcmdlZFByb3BzLFxuICAgIGtleTogbWVyZ2VkUHJvcHMgJiYgbm9ybWFsaXplS2V5KG1lcmdlZFByb3BzKSxcbiAgICByZWY6IGV4dHJhUHJvcHMgJiYgZXh0cmFQcm9wcy5yZWYgPyAoXG4gICAgICAvLyAjMjA3OCBpbiB0aGUgY2FzZSBvZiA8Y29tcG9uZW50IDppcz1cInZub2RlXCIgcmVmPVwiZXh0cmFcIi8+XG4gICAgICAvLyBpZiB0aGUgdm5vZGUgaXRzZWxmIGFscmVhZHkgaGFzIGEgcmVmLCBjbG9uZVZOb2RlI
15HdpbGwgbmVlZCB0byBtZXJnZVxuICAgICAgLy8gdGhlIHJlZnMgc28gdGhlIHNpbmdsZSB2bm9kZSBjYW4gYmUgc2V0IG9uIG11bHRpcGxlIHJlZnNcbiAgICAgIG1lcmdlUmVmICYmIHJlZiA/IGlzQXJyYXkocmVmKSA/IHJlZi5jb25jYXQobm9ybWFsaXplUmVmKGV4dHJhUHJvcHMpKSA6IFtyZWYsIG5vcm1hbGl6ZVJlZihleHRyYVByb3BzKV0gOiBub3JtYWxpemVSZWYoZXh0cmFQcm9wcylcbiAgICApIDogcmVmLFxuICAgIHNjb3BlSWQ6IHZub2RlLnNjb3BlSWQsXG4gICAgc2xvdFNjb3BlSWRzOiB2bm9kZS5zbG90U2NvcGVJZHMsXG4gICAgY2hpbGRyZW46ICEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgJiYgcGF0Y2hGbGFnID09PSAtMSAmJiBpc0FycmF5KGNoaWxkcmVuKSA/IGNoaWxkcmVuLm1hcChkZWVwQ2xvbmVWTm9kZSkgOiBjaGlsZHJlbixcbiAgICB0YXJnZXQ6IHZub2RlLnRhcmdldCxcbiAgICB0YXJnZXRTdGFydDogdm5vZGUudGFyZ2V0U3RhcnQsXG4gICAgdGFyZ2V0QW5jaG9yOiB2bm9kZS50YXJnZXRBbmNob3IsXG4gICAgc3RhdGljQ291bnQ6IHZub2RlLnN0YXRpY0NvdW50LFxuICAgIHNoYXBlRmxhZzogdm5vZGUuc2hhcGVGbGFnLFxuICAgIC8vIGlmIHRoZSB2bm9kZSBpcyBjbG9uZWQgd2l0aCBleHRyYSBwcm9wcywgd2UgY2FuIG5vIGxvbmdlciBhc3N1bWUgaXRzXG4gICAgLy8gZXhpc3RpbmcgcGF0Y2ggZmxhZyB0byBiZSByZWxpYWJsZSBhbmQgbmVlZCB0byBhZGQgdGhlIEZVTExfUFJPUFMgZmxhZy5cbiAgICAvLyBub3RlOiBwcmVzZXJ2ZSBmbGFnIGZvciBmcmFnbWVudHMgc2luY2UgdGhleSB1c2UgdGhlIGZsYWcgZm9yIGNoaWxkcmVuXG4gICAgLy8gZmFzdCBwYXRocyBvbmx5LlxuICAgIHBhdGNoRmxhZzogZXh0cmFQcm9wcyAmJiB2bm9kZS50eXBlICE9PSBGcmFnbWVudCA/IHBhdGNoRmxhZyA9PT0gLTEgPyAxNiA6IHBhdGNoRmxhZyB8IDE2IDogcGF0Y2hGbGFnLFxuICAgIGR5bmFtaWNQcm9wczogdm5vZGUuZHluYW1pY1Byb3BzLFxuICAgIGR5bmFtaWNDaGlsZHJlbjogdm5vZGUuZHluYW1pY0NoaWxkcmVuLFxuICAgIGFwcENvbnRleHQ6IHZub2RlLmFwcENvbnRleHQsXG4gICAgZGlyczogdm5vZGUuZGlycyxcbiAgICB0cmFuc2l0aW9uLFxuICAgIC8vIFRoZXNlIHNob3VsZCB0ZWNobmljYWxseSBvbmx5IGJlIG5vbi1udWxsIG9uIG1vdW50ZWQgVk5vZGVzLiBIb3dldmVyLFxuICAgIC8vIHRoZXkgKnNob3VsZCogYmUgY29waWVkIGZvciBrZXB0LWFsaXZlIHZub2Rlcy4gU28gd2UganVzdCBhbHdheXMgY29weVxuICAgIC8vIHRoZW0gc2luY2UgdGhlbSBiZWluZyBub24tbnVsbCBkdXJpbmcgYSBtb3VudCBkb2Vzbid0IGFmZmVjdCB0aGUgbG9naWMgYXNcbiAgICAvLyB0aGV5IHdpbGwgc2ltcGx5IGJlIG92ZXJ3cml0dGVuLlxuICAgIGNvbXBvbmVudDogdm5vZGUuY29tcG9uZW50LFxuICAgIHN1c3BlbnNlOiB2bm9kZS5zdXNwZW5zZSxcbiAgICBzc0NvbnRlbnQ6IHZub2RlLnNzQ29udGVudCAmJiBjbG9uZVZOb2RlKHZub2RlLnNzQ29udGVudCksXG4gICAgc3NGYWxsYmFjazogdm5vZGUuc3NGYWxsYmFjayAmJiBjbG9uZVZOb2RlKHZub2RlLnNzRmFsbGJhY2spLFxuICAgIGVsOiB2bm9kZS5lbCxcbiAgICBhbmNob3I6IHZub2RlLmFuY2hvcixcbiAgICBjdHg6IHZub2RlLmN0eCxcbiAgICBjZTogdm5vZGUuY2VcbiAgfTtcbiAgaWYgKHRyYW5zaXRpb24gJiYgY2xvbmVUcmFuc2l0aW9uKSB7XG4gICAgc2V0VHJhbnNpdGlvbkhvb2tzKFxuICAgICAgY2xvbmVkLFxuICAgICAgdHJhbnNpdGlvbi5jbG9uZShjbG9uZWQpXG4gICAgKTtcbiAgfVxuICByZXR1cm4gY2xvbmVkO1xufVxuZnVuY3Rpb24gZGVlcENsb25lVk5vZGUodm5vZGUpIHtcbiAgY29uc3QgY2xvbmVkID0gY2xvbmVWTm9kZSh2bm9kZSk7XG4gIGlmIChpc0FycmF5KHZub2RlLmNoaWxkcmVuKSkge1xuICAgIGNsb25lZC5jaGlsZHJlbiA9IHZub2RlLmNoaWxkcmVuLm1hcChkZWVwQ2xvbmVWTm9kZSk7XG4gIH1cbiAgcmV0dXJuIGNsb25lZDtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVRleHRWTm9kZSh0ZXh0ID0gXCIgXCIsIGZsYWcgPSAwKSB7XG4gIHJldHVybiBjcmVhdGVWTm9kZShUZXh0LCBudWxsLCB0ZXh0LCBmbGFnKTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVN0YXRpY1ZOb2RlKGNvbnRlbnQsIG51bWJlck9mTm9kZXMpIHtcbiAgY29uc3Qgdm5vZGUgPSBjcmVhdGVWTm9kZShTdGF0aWMsIG51bGwsIGNvbnRlbnQpO1xuICB2bm9kZS5zdGF0aWNDb3VudCA9IG51bWJlck9mTm9kZXM7XG4gIHJldHVybiB2bm9kZTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUNvbW1lbnRWTm9kZSh0ZXh0ID0gXCJcIiwgYXNCbG9jayA9IGZhbHNlKSB7XG4gIHJldHVybiBhc0Jsb2NrID8gKG9wZW5CbG9jaygpLCBjcmVhdGVCbG9jayhDb21tZW50LCBudWxsLCB0ZXh0KSkgOiBjcmVhdGVWTm9kZShDb21tZW50LCBudWxsLCB0ZXh0KTtcbn1cbmZ1bmN0aW9uIG5vcm1hbGl6ZVZOb2RlKGNoaWxkKSB7XG4gIGlmIChjaGlsZCA9PSBudWxsIHx8IHR5cGVvZiBjaGlsZCA9PT0gXCJib29sZWFuXCIpIHtcbiAgICByZXR1cm4gY3JlYXRlVk5vZGUoQ29tbWVudCk7XG4gIH0gZWxzZSBpZiAoaXNBcnJheShjaGlsZCkpIHtcbiAgICByZXR1cm4gY3JlYXRlVk5vZGUoXG4gICAgICBGcmFnbWVudCxcbiAgICAgIG51bGwsXG4gICAgICAvLyAjMzY2NiwgYXZvaWQgcmVmZXJlbmNlIHBvbGx1dGlvbiB3aGVuIHJldXNpbmcgdm5vZGVcbiAgICAgIGNoaWxkLnNsaWNlKClcbiAgICApO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBjaGlsZCA9PT0gXCJvYmplY3RcIikge1xuICAgIHJldHVybiBjbG9uZUlmTW91bnRlZChjaGlsZCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGNyZWF0ZVZOb2RlKFRleHQsIG51bGwsIFN0cmluZyhjaGlsZCkpO1xuICB9XG59XG5mdW5jdGlvbiBjbG9uZUlmTW91bnRlZChjaGlsZCkge1xuICByZXR1cm4gY2hpbGQuZWwgPT09IG51bGwgJiYgY2hpbGQucGF0Y2hGbGFnICE9PSAtMSB8fCBjaGlsZC5tZW1vID8gY2hpbGQgOiBjbG9uZVZOb2RlKGNoaWxkKTtcbn1cbmZ1bmN0aW9uIG5vcm1hbGl6ZUNoaWxkcmVuKHZub2Rl
15LCBjaGlsZHJlbikge1xuICBsZXQgdHlwZSA9IDA7XG4gIGNvbnN0IHsgc2hhcGVGbGFnIH0gPSB2bm9kZTtcbiAgaWYgKGNoaWxkcmVuID09IG51bGwpIHtcbiAgICBjaGlsZHJlbiA9IG51bGw7XG4gIH0gZWxzZSBpZiAoaXNBcnJheShjaGlsZHJlbikpIHtcbiAgICB0eXBlID0gMTY7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGNoaWxkcmVuID09PSBcIm9iamVjdFwiKSB7XG4gICAgaWYgKHNoYXBlRmxhZyAmICgxIHwgNjQpKSB7XG4gICAgICBjb25zdCBzbG90ID0gY2hpbGRyZW4uZGVmYXVsdDtcbiAgICAgIGlmIChzbG90KSB7XG4gICAgICAgIHNsb3QuX2MgJiYgKHNsb3QuX2QgPSBmYWxzZSk7XG4gICAgICAgIG5vcm1hbGl6ZUNoaWxkcmVuKHZub2RlLCBzbG90KCkpO1xuICAgICAgICBzbG90Ll9jICYmIChzbG90Ll9kID0gdHJ1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIHtcbiAgICAgIHR5cGUgPSAzMjtcbiAgICAgIGNvbnN0IHNsb3RGbGFnID0gY2hpbGRyZW4uXztcbiAgICAgIGlmICghc2xvdEZsYWcgJiYgIWlzSW50ZXJuYWxPYmplY3QoY2hpbGRyZW4pKSB7XG4gICAgICAgIGNoaWxkcmVuLl9jdHggPSBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2U7XG4gICAgICB9IGVsc2UgaWYgKHNsb3RGbGFnID09PSAzICYmIGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZSkge1xuICAgICAgICBpZiAoY3VycmVudFJlbmRlcmluZ0luc3RhbmNlLnNsb3RzLl8gPT09IDEpIHtcbiAgICAgICAgICBjaGlsZHJlbi5fID0gMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjaGlsZHJlbi5fID0gMjtcbiAgICAgICAgICB2bm9kZS5wYXRjaEZsYWcgfD0gMTAyNDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmIChpc0Z1bmN0aW9uKGNoaWxkcmVuKSkge1xuICAgIGNoaWxkcmVuID0geyBkZWZhdWx0OiBjaGlsZHJlbiwgX2N0eDogY3VycmVudFJlbmRlcmluZ0luc3RhbmNlIH07XG4gICAgdHlwZSA9IDMyO1xuICB9IGVsc2Uge1xuICAgIGNoaWxkcmVuID0gU3RyaW5nKGNoaWxkcmVuKTtcbiAgICBpZiAoc2hhcGVGbGFnICYgNjQpIHtcbiAgICAgIHR5cGUgPSAxNjtcbiAgICAgIGNoaWxkcmVuID0gW2NyZWF0ZVRleHRWTm9kZShjaGlsZHJlbildO1xuICAgIH0gZWxzZSB7XG4gICAgICB0eXBlID0gODtcbiAgICB9XG4gIH1cbiAgdm5vZGUuY2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgdm5vZGUuc2hhcGVGbGFnIHw9IHR5cGU7XG59XG5mdW5jdGlvbiBtZXJnZVByb3BzKC4uLmFyZ3MpIHtcbiAgY29uc3QgcmV0ID0ge307XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHRvTWVyZ2UgPSBhcmdzW2ldO
151xuICAgIGZvciAoY29uc3Qga2V5IGluIHRvTWVyZ2UpIHtcbiAgICAgIGlmIChrZXkgPT09IFwiY2xhc3NcIikge1xuICAgICAgICBpZiAocmV0LmNsYXNzICE9PSB0b01lcmdlLmNsYXNzKSB7XG4gICAgICAgICAgcmV0LmNsYXNzID0gbm9ybWFsaXplQ2xhc3MoW3JldC5jbGFzcywgdG9NZXJnZS5jbGFzc10pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGtleSA9PT0gXCJzdHlsZVwiKSB7XG4gICAgICAgIHJldC5zdHlsZSA9IG5vcm1hbGl6ZVN0eWxlKFtyZXQuc3R5bGUsIHRvTWVyZ2Uuc3R5bGVdKTtcbiAgICAgIH0gZWxzZSBpZiAoaXNPbihrZXkpKSB7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nID0gcmV0W2tleV07XG4gICAgICAgIGNvbnN0IGluY29taW5nID0gdG9NZXJnZVtrZXldO1xuICAgICAgICBpZiAoaW5jb21pbmcgJiYgZXhpc3RpbmcgIT09IGluY29taW5nICYmICEoaXNBcnJheShleGlzdGluZykgJiYgZXhpc3RpbmcuaW5jbHVkZXMoaW5jb21pbmcpKSkge1xuICAgICAgICAgIHJldFtrZXldID0gZXhpc3RpbmcgPyBbXS5jb25jYXQoZXhpc3RpbmcsIGluY29taW5nKSA6IGluY29taW5nO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGtleSAhPT0gXCJcIikge1xuICAgICAgICByZXRba2V5XSA9IHRvTWVyZ2Vba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cbmZ1bmN0aW9uIGludm9rZVZOb2RlSG9vayhob29rLCBpbnN0YW5jZSwgdm5vZGUsIHByZXZWTm9kZSA9IG51bGwpIHtcbiAgY2FsbFdpdGhBc3luY0Vycm9ySGFuZGxpbmcoaG9vaywgaW5zdGFuY2UsIDcsIFtcbiAgICB2bm9kZSxcbiAgICBwcmV2Vk5vZGVcbiAgXSk7XG59XG5cbmNvbnN0IGVtcHR5QXBwQ29udGV4dCA9IGNyZWF0ZUFwcENvbnRleHQoKTtcbmxldCB1aWQgPSAwO1xuZnVuY3Rpb24gY3JlYXRlQ29tcG9uZW50SW5zdGFuY2Uodm5vZGUsIHBhcmVudCwgc3VzcGVuc2UpIHtcbiAgY29uc3QgdHlwZSA9IHZub2RlLnR5cGU7XG4gIGNvbnN0IGFwcENvbnRleHQgPSAocGFyZW50ID8gcGFyZW50LmFwcENvbnRleHQgOiB2bm9kZS5hcHBDb250ZXh0KSB8fCBlbXB0eUFwcENvbnRleHQ7XG4gIGNvbnN0IGluc3RhbmNlID0ge1xuICAgIHVpZDogdWlkKyssXG4gICAgdm5vZGUsXG4gICAgdHlwZSxcbiAgICBwYXJlbnQsXG4gICAgYXBwQ29udGV4dCxcbiAgICByb290OiBudWxsLFxuICAgIC8vIHRvIGJlIGltbWVkaWF0ZWx5IHNldFxuICAgIG5leHQ6IG51bGwsXG4gICAgc3ViVHJlZTogbnVsbCxcbiAgICAvLyB3aWxsIGJlIHNldCBzeW5jaHJvbm91c2x5IHJpZ2h0IGFmdGVyIGNyZWF0aW9uXG4gICAgZWZmZWN0OiBudWxsLFxuICAgIHVwZGF0ZTogbnVsbCxcbiAgICAvLyB3aWxsIGJlIHNldCBzeW5jaHJvbm91c2x5IHJpZ2h0IGFmdGVyIGNyZWF0aW9uXG4gICAgc2NvcGU6IG5ldyBFZmZlY3RTY29wZShcbiAgICAgIHRydWVcbiAgICAgIC8qIGRldGFjaGVkICovXG4gICAgKSxcbiAgICByZW5kZXI6IG51bGwsXG4gICAgcHJveHk6IG51bGwsXG4gICAgZXhwb3NlZDogbnVsbCxcbiAgICBleHBvc2VQcm94eTogbnVsbCxcbiAgICB3aXRoUHJveHk6IG51bGwsXG4gICAgcHJvdmlkZXM6IHBhcmVudCA/IHBhcmVudC5wcm92aWRlcyA6IE9iamVjdC5jcmVhdGUoYXBwQ29udGV4dC5wcm92aWRlcyksXG4gICAgYWNjZXNzQ2FjaGU6IG51bGwsXG4gICAgcmVuZGVyQ2FjaGU6IFtdLFxuICAgIC8vIGxvY2FsIHJlc29sdmVkIGFzc2V0c1xuICAgIGNvbXBvbmVudHM6IG51bGwsXG4gICAgZGlyZWN0aXZlczogbnVsbCxcbiAgICAvLyByZXNvbHZlZCBwcm9wcyBhbmQgZW1pdHMgb3B0aW9uc1xuICAgIHByb3BzT3B0aW9uczogbm9ybWFsaXplUHJvcHNPcHRpb25zKHR5cGUsIGFwcENvbnRleHQpLFxuICAgIGVtaXRzT3B0aW9uczogbm9ybWFsaXplRW1pdHNPcHRpb25zKHR5cGUsIGFwcENvbnRleHQpLFxuICAgIC8vIGVtaXRcbiAgICBlbWl0OiBudWxsLFxuICAgIC8vIHRvIGJlIHNldCBpbW1lZGlhdGVseVxuICAgIGVtaXR0ZWQ6IG51bGwsXG4gICAgLy8gcHJvcHMgZGVmYXVsdCB2YWx1ZVxuICAgIHByb3BzRGVmYXVsdHM6IEVNUFRZX09CSixcbiAgICAvLyBpbmhlcml0QXR0cnNcbiAgICBpbmhlcml0QXR0cnM6IHR5cGUuaW5oZXJpdEF0dHJzLFxuICAgIC8vIHN0YXRlXG4gICAgY3R4OiBFTVBUWV9PQkosXG4gICAgZGF0YTogRU1QVFlfT0JKLFxuICAgIHByb3BzOiBFTVBUWV9PQkosXG4gICAgYXR0cnM6IEVNUFRZX09CSixcbiAgICBzbG90czogRU1QVFlfT0JKLFxuICAgIHJlZnM6IEVNUFRZX09CSixcbiAgICBzZXR1cFN0YXRlOiBFTVBUWV9PQkosXG4gICAgc2V0dXBDb250ZXh0OiBudWxsLFxuICAgIC8vIHN1c3BlbnNlIHJlbGF0ZWRcbiAgICBzdXNwZW5zZSxcbiAgICBzdXNwZW5zZUlkOiBzdXNwZW5zZSA/IHN1c3BlbnNlLnBlbmRpbmdJZCA6IDAsXG4gICAgYXN5bmNEZXA6IG51bGwsXG4gICAgYXN5bmNSZXNvbHZlZDogZmFsc2UsXG4gICAgLy8gbGlmZWN5Y2xlIGhvb2tzXG4gICAgLy8gbm90IHVzaW5nIGVudW1zIGhlcmUgYmVjYXVzZSBpdCByZXN1bHRzIGluIGNvbXB1dGVkIHByb3BlcnRpZXNcbiAgICBpc01vdW50ZWQ6IGZhbHNlLFxuICAgIGlzVW5tb3VudGVkOiBmYWxzZSxcbiAgICBpc0RlYWN0aXZhdGVkOiBmYWxzZSxcbiAgICBiYzogbnVsbCxcbiAgICBjOiBudWxsLFxuICAgIGJtOiBudWxsLFxuICAgIG06IG51bGwsXG4gICAgYnU6IG51bGwsXG4gICAgdTogbnVsbCxcbiAgICB1bTogbnVsbCxcbiAgICBidW06IG51bGwsXG4gICAgZGE6IG51bGwsXG4gICAgYTogbnVsbCxcbiAgICBydGc6IG51bGwsXG4gICAgcnRjOiBudWxsLFxuICAgIGVjOiBudWxsLFxuICAgIHNwOiBudWxsXG4gIH07XG4gIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpKSB7XG4gICAgaW5zdGFuY2UuY3R4ID0gY3JlYXRlRGV2UmVuZGVyQ29udGV4dChpbnN0YW5jZSk7XG4gIH0gZWxzZSB7XG4gICAgaW5zdGFuY2UuY3R4ID0geyBfOiBpbnN0YW5jZSB9O1xuICB9XG4gIGluc3RhbmNlLnJvb3QgPSBwYXJlbnQgPyBwYXJlbnQucm9vdCA6IGluc3RhbmNlO1xuICBpbnN0YW5jZS5lbWl0ID0gZW1pdC5iaW5kKG51bGwsIGluc3RhbmNlKTtcbiAgaWYgKHZub2Rl
15LmNlKSB7XG4gICAgdm5vZGUuY2UoaW5zdGFuY2UpO1xuICB9XG4gIHJldHVybiBpbnN0YW5jZTtcbn1cbmxldCBjdXJyZW50SW5zdGFuY2UgPSBudWxsO1xuY29uc3QgZ2V0Q3VycmVudEluc3RhbmNlID0gKCkgPT4gY3VycmVudEluc3RhbmNlIHx8IGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZTtcbmxldCBpbnRlcm5hbFNldEN1cnJlbnRJbnN0YW5jZTtcbmxldCBzZXRJblNTUlNldHVwU3RhdGU7XG57XG4gIGNvbnN0IGcgPSBnZXRHbG9iYWxUaGlzKCk7XG4gIGNvbnN0IHJlZ2lzdGVyR2xvYmFsU2V0dGVyID0gKGtleSwgc2V0dGVyKSA9PiB7XG4gICAgbGV0IHNldHRlcnM7XG4gICAgaWYgKCEoc2V0dGVycyA9IGdba2V5XSkpIHNldHRlcnMgPSBnW2tleV0gPSBbXTtcbiAgICBzZXR0ZXJzLnB1c2goc2V0dGVyKTtcbiAgICByZXR1cm4gKHYpID0+IHtcbiAgICAgIGlmIChzZXR0ZXJzLmxlbmd0aCA+IDEpIHNldHRlcnMuZm9yRWFjaCgoc2V0KSA9PiBzZXQodikpO1xuICAgICAgZWxzZSBzZXR0ZXJzWzBdKHYpO1xuICAgIH07XG4gIH07XG4gIGludGVybmFsU2V0Q3VycmVudEluc3RhbmNlID0gcmVnaXN0ZXJHbG9iYWxTZXR0ZXIoXG4gICAgYF9fVlVFX0lOU1RBTkNFX1NFVFRFUlNfX2AsXG4gICAgKHYpID0+IGN1cnJlbnRJbnN0YW5jZSA9IHZcbiAgKTtcbiAgc2V0SW5TU1JTZXR1cFN0YXRlID0gcmVnaXN0ZXJHbG9iYWxTZXR0ZXIoXG4gICAgYF9fVlVFX1NTUl9TRVRURVJTX19gLFxuICAgICh2KSA9PiBpc0luU1NSQ29tcG9uZW50U2V0dXAgPSB2XG4gICk7XG59XG5jb25zdCBzZXRDdXJyZW50SW5zdGFuY2UgPSAoaW5zdGFuY2UpID0+IHtcbiAgY29uc3QgcHJldiA9IGN1cnJlbnRJbnN0YW5jZTtcbiAgaW50ZXJuYWxTZXRDdXJyZW50SW5zdGFuY2UoaW5zdGFuY2UpO1xuICBpbnN0YW5jZS5zY29wZS5vbigpO1xuICByZXR1cm4gKCkgPT4ge1xuICAgIGluc3RhbmNlLnNjb3BlLm9mZigpO1xuICAgIGludGVybmFsU2V0Q3VycmVudEluc3RhbmNlKHByZXYpO1xuICB9O1xufTtcbmNvbnN0IHVuc2V0Q3VycmVudEluc3RhbmNlID0gKCkgPT4ge1xuICBjdXJyZW50SW5zdGFuY2UgJiYgY3VycmVudEluc3RhbmNlLnNjb3BlLm9mZigpO1xuICBpbnRlcm5hbFNldEN1cnJlbnRJbnN0YW5jZShudWxsKTtcbn07XG5jb25zdCBpc0J1aWx0SW5UYWcgPSAvKiBAX19QVVJFX18gKi8gbWFrZU1hcChcInNsb3QsY29tcG9uZW50XCIpO1xuZnVuY3Rpb24gdmFsaWRhdGVDb21wb25lbnROYW1lKG5hbWUsIHsgaXNOYXRpdmVUYWcgfSkge1xuICBpZiAoaXNCdWlsdEluVGFnKG5hbWUpIHx8IGlzTmF0aXZlVGFnKG5hbWUpKSB7XG4gICAgd2FybiQxKFxuICAgICAgXCJEbyBub3QgdXNlIGJ1aWx0LWluIG9yIHJlc2VydmVkIEhUTUwgZWxlbWVudHMgYXMgY29tcG9uZW50IGlkOiBcIiArIG5hbWVcbiAgICApO1xuICB9XG59XG5mdW5jdGlvbiBpc1N0YXRlZnVsQ29tcG9uZW50KGluc3RhbmNlKSB7XG4gIHJldHVybiBpbnN0YW5jZS52bm9kZS5zaGFwZUZsYWcgJiA0O1xufVxubGV0IGlzSW5TU1JDb21wb25lbnRTZXR1cCA9IGZhbHNlO1xuZnVuY3Rpb24gc2V0dXBDb21wb25lbnQoaW5zdGFuY2UsIGlzU1NSID0gZmFsc2UsIG9wdGltaXplZCA9IGZhbHNlKSB7XG4gIGlzU1NSICYmIHNldEluU1NSU2V0dXBTdGF0ZShpc1NTUik7XG4gIGNvbnN0IHsgcHJvcHMsIGNoaWxkcmVuIH0gPSBpbnN0YW5jZS52bm9kZTtcbiAgY29uc3QgaXNTdGF0ZWZ1bCA9IGlzU3RhdGVmdWxDb21wb25lbnQoaW5zdGFuY2UpO1xuICBpbml0UHJvcHMoaW5zdGFuY2UsIHByb3BzLCBpc1N0YXRlZnVsLCBpc1NTUik7XG4gIGluaXRTbG90cyhpbnN0YW5jZSwgY2hpbGRyZW4sIG9wdGltaXplZCk7XG4gIGNvbnN0IHNldHVwUmVzdWx0ID0gaXNTdGF0ZWZ1bCA/IHNldHVwU3RhdGVmdWxDb21wb25lbnQoaW5zdGFuY2UsIGlzU1NSKSA6IHZvaWQgMDtcbiAgaXNTU1IgJiYgc2V0SW5TU1JTZXR1cFN0YXRlKGZhbHNlKTtcbiAgcmV0dXJuIHNldHVwUmVzdWx0O1xufVxuZnVuY3Rpb24gc2V0dXBTdGF0ZWZ1bENvbXBvbmVudChpbnN0YW5jZSwgaXNTU1IpIHtcbiAgdmFyIF9hO1xuICBjb25zdCBDb21wb25lbnQgPSBpbnN0YW5jZS50eXBlO1xuICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSkge1xuICAgIGlmIChDb21wb25lbnQubmFtZSkge1xuICAgICAgdmFsaWRhdGVDb21wb25lbnROYW1lKENvbXBvbmVudC5uYW1lLCBpbnN0YW5jZS5hcHBDb250ZXh0LmNvbmZpZyk7XG4gICAgfVxuICAgIGlmIChDb21wb25lbnQuY29tcG9uZW50cykge1xuICAgICAgY29uc3QgbmFtZXMgPSBPYmplY3Qua2V5cyhDb21wb25lbnQuY29tcG9uZW50cyk7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhbGlkYXRlQ29tcG9uZW50TmFtZShuYW1lc1tpXSwgaW5zdGFuY2UuYXBwQ29udGV4dC5jb25maWcpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoQ29tcG9uZW50LmRpcmVjdGl2ZXMpIHtcbiAgICAgIGNvbnN0IG5hbWVzID0gT2JqZWN0LmtleXMoQ29tcG9uZW50LmRpcmVjdGl2ZXMpO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YWxpZGF0ZURpcmVjdGl2ZU5hbWUobmFtZXNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoQ29tcG9uZW50LmNvbXBpbGVyT3B0aW9ucyAmJiBpc1J1bnRpbWVPbmx5KCkpIHtcbiAgICAgIHdhcm4kMShcbiAgICAgICAgYFwiY29tcGlsZXJPcHRpb25zXCIgaXMgb25seSBzdXBwb3J0ZWQgd2hlbiB1c2luZyBhIGJ1aWxkIG9mIFZ1ZSB0aGF0IGluY2x1ZGVzIHRoZSBydW50aW1lIGNvbXBpbGVyLiBTaW5jZSB5b3UgYXJlIHVzaW5nIGEgcnVudGltZS1vbmx5IGJ1aWxkLCB0aGUgb3B0aW9ucyBzaG91bGQgYmUgcGFzc2VkIHZpYSB5b3VyIGJ1aWxkIHRvb2wgY29uZmlnIGluc3RlYWQuYFxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgaW5zdGFuY2UuYWNjZXNzQ2FjaGUgPSAvKiBAX19QVVJFX18gKi8gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgaW5zdGFuY2UucHJveHkgPSBuZXcgUHJveHkoaW5zdGFuY2UuY3R4LCBQdWJsaWNJbnN0YW5jZVByb3h5SGFuZGxlcnMpO1xuICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSkge1xuICAgIGV4cG9zZVByb3BzT25SZW5kZXJDb250ZXh0KGluc3RhbmNlKTtcbiAgfVxuICBjb25zdCB7IHNldHVwIH0gPSBDb21wb25lbnQ7XG4gIGlmIChzZXR1cCkge1xuICAgIGNvbnN0IHNldHVwQ29udGV4dCA9IGluc3RhbmNlLnNldHVwQ29udGV4dCA9IHNldHVwLmxlbmd0aCA+IDEgPyBjcmVhdGVTZXR1cENvbnRleHQoaW5zdGFuY2UpIDogbnVsbDtcbiAgICBjb25zdCByZXNldCA9IHNldEN1cnJlbnRJbnN0YW5jZShpbnN0YW5jZSk7XG4gICAgcGF1c2VUcmFja2luZygpO1xuICAgIGNvbnN0IHNldHVwUmVzdWx0ID0gY2FsbFdpdGhFcnJvckhhbmRsaW5nKFxuICAgICAgc2V0dXAsXG4gICAgICBpbnN0YW5jZSxcbiAgICAgIDAsXG4gICAgICBbXG4gICAgICAgICEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgPyBzaGFsbG93UmVhZG9ubHkoaW5zdGFuY2UucHJvcHMpID
15ogaW5zdGFuY2UucHJvcHMsXG4gICAgICAgIHNldHVwQ29udGV4dFxuICAgICAgXVxuICAgICk7XG4gICAgcmVzZXRUcmFja2luZygpO1xuICAgIHJlc2V0KCk7XG4gICAgaWYgKGlzUHJvbWlzZShzZXR1cFJlc3VsdCkpIHtcbiAgICAgIHNldHVwUmVzdWx0LnRoZW4odW5zZXRDdXJyZW50SW5zdGFuY2UsIHVuc2V0Q3VycmVudEluc3RhbmNlKTtcbiAgICAgIGlmIChpc1NTUikge1xuICAgICAgICByZXR1cm4gc2V0dXBSZXN1bHQudGhlbigocmVzb2x2ZWRSZXN1bHQpID0+IHtcbiAgICAgICAgICBoYW5kbGVTZXR1cFJlc3VsdChpbnN0YW5jZSwgcmVzb2x2ZWRSZXN1bHQsIGlzU1NSKTtcbiAgICAgICAgfSkuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICBoYW5kbGVFcnJvcihlLCBpbnN0YW5jZSwgMCk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW5zdGFuY2UuYXN5bmNEZXAgPSBzZXR1cFJlc3VsdDtcbiAgICAgICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgJiYgIWluc3RhbmNlLnN1c3BlbnNlKSB7XG4gICAgICAgICAgY29uc3QgbmFtZSA9IChfYSA9IENvbXBvbmVudC5uYW1lKSAhPSBudWxsID8gX2EgOiBcIkFub255bW91c1wiO1xuICAgICAgICAgIHdhcm4kMShcbiAgICAgICAgICAgIGBDb21wb25lbnQgPCR7bmFtZX0+OiBzZXR1cCBmdW5jdGlvbiByZXR1cm5lZCBhIHByb21pc2UsIGJ1dCBubyA8U3VzcGVuc2U+IGJvdW5kYXJ5IHdhcyBmb3VuZCBpbiB0aGUgcGFyZW50IGNvbXBvbmVudCB0cmVlLiBBIGNvbXBvbmVudCB3aXRoIGFzeW5jIHNldHVwKCkgbXVzdCBiZSBuZXN0ZWQgaW4gYSA8U3VzcGVuc2U+IGluIG9yZGVyIHRvIGJlIHJlbmRlcmVkLmBcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGhhbmRsZVNldHVwUmVzdWx0KGluc3RhbmNlLCBzZXR1cFJlc3VsdCwgaXNTU1IpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBmaW5pc2hDb21wb25lbnRTZXR1cChpbnN0YW5jZSwgaXNTU1IpO1xuICB9XG59XG5mdW5jdGlvbiBoYW5kbGVTZXR1cFJlc3VsdChpbnN0YW5jZSwgc2V0dXBSZXN1bHQsIGlzU1NSKSB7XG4gIGlmIChpc0Z1bmN0aW9uKHNldHVwUmVzdWx0KSkge1xuICAgIGlmIChpbnN0YW5jZS50eXBlLl9fc3NySW5saW5lUmVuZGVyKSB7XG4gICAgICBpbnN0YW5jZS5zc3JSZW5kZXIgPSBzZXR1cFJlc3VsdDtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5zdGFuY2UucmVuZGVyID0gc2V0dXBSZXN1bHQ7XG4gICAgfVxuICB9IGVsc2UgaWYgKGlzT2JqZWN0KHNldHVwUmVzdWx0KSkge1xuICAgIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpICYmIGlzVk5vZGUoc2V0dXBSZXN1bHQpKSB7XG4gICAgICB3YXJuJDEoXG4gICAgICAgIGBzZXR1cCgpIHNob3VsZCBub3QgcmV0dXJuIFZOb2RlcyBkaXJlY3RseSAtIHJldHVybiBhIHJlbmRlciBmdW5jdGlvbiBpbnN0ZWFkLmBcbiAgICAgICk7XG4gICAgfVxuICAgIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHx8IF9fVlVFX1BST0RfREVWVE9PTFNfXykge1xuICAgICAgaW5zdGFuY2UuZGV2dG9vbHNSYXdTZXR1cFN0YXRlID0gc2V0dXBSZXN1bHQ7XG4gICAgfVxuICAgIGluc3RhbmNlLnNldHVwU3RhdGUgPSBwcm94eVJlZnMoc2V0dXBSZXN1bHQpO1xuICAgIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpKSB7XG4gICAgICBleHBvc2VTZXR1cFN0YXRlT25SZW5kZXJDb250ZXh0KGluc3RhbmNlKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSAmJiBzZXR1cFJlc3VsdCAhPT0gdm9pZCAwKSB7XG4gICAgd2FybiQxKFxuICAgICAgYHNldHVwKCkgc2hvdWxkIHJldHVybiBhbiBvYmplY3QuIFJlY2VpdmVkOiAke3NldHVwUmVzdWx0ID09PSBudWxsID8gXCJudWxsXCIgOiB0eXBlb2Ygc2V0dXBSZXN1bHR9YFxuICAgICk7XG4gIH1cbiAgZmluaXNoQ29tcG9uZW50U2V0dXAoaW5zdGFuY2UsIGlzU1NSKTtcbn1cbmxldCBjb21waWxlO1xubGV0IGluc3RhbGxXaXRoUHJveHk7XG5mdW5jdGlvbiByZWdpc3RlclJ1bnRpbWVDb21waWxlcihfY29tcGlsZSkge1xuICBjb21waWxlID0gX2NvbXBpbGU7XG4gIGluc3RhbGxXaXRoUHJveHkgPSAoaSkgPT4ge1xuICAgIGlmIChpLnJlbmRlci5fcmMpIHtcbiAgICAgIGkud2l0aFByb3h5ID0gbmV3IFByb3h5KGkuY3R4LCBSdW50aW1lQ29tcGlsZWRQdWJsaWNJbnN0YW5jZVByb3h5SGFuZGxlcnMpO1xuICAgIH1cbiAgfTtcbn1cbmNvbnN0IGlzUnVudGltZU9ubHkgPSAoKSA9PiAhY29tcGlsZTtcbmZ1bmN0aW9uIGZpbmlzaENvbXBvbmVudFNldHVwKGluc3RhbmNlLCBpc1NTUiwgc2tpcE9wdGlvbnMpIHtcbiAgY29uc3QgQ29tcG9uZW50ID0gaW5zdGFuY2UudHlwZTtcbiAgaWYgKCFpbnN0YW5jZS5yZW5kZXIpIHtcbiAgICBpZiAoIWlzU1NSICYmIGNvbXBpbGUgJiYgIUNvbXBvbmVudC5yZW5kZXIpIHtcbiAgICAgIGNvbnN0IHRlbXBsYXRlID0gQ29tcG9uZW50LnRlbXBsYXRlIHx8IHJlc29sdmVNZXJnZWRPcHRpb25zKGluc3RhbmNlKS50ZW1wbGF0ZTtcbiAgICAgIGlmICh0ZW1wbGF0ZSkge1xuICAgICAgICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSkge1xuICAgICAgICAgIHN0YXJ0TWVhc3VyZShpbnN0YW5jZSwgYGNvbXBpbGVgKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IGlzQ3VzdG9tRWxlbWVudCwgY29tcGlsZXJPcHRpb25zIH0gPSBpbnN0YW5jZS5hcHBDb250ZXh0LmNvbmZpZztcbiAgICAgICAgY29uc3QgeyBkZWxpbWl0ZXJzLCBjb21waWxlck9wdGlvbnM6IGNvbXBvbmVudENvbXBpbGVyT3B0aW9ucyB9ID0gQ29tcG9uZW50O1xuICAgICAgICBjb25zdCBmaW5hbENvbXBpbGVyT3B0aW9ucyA9IGV4dGVuZChcbiAgICAgICAgICBleHRlbmQoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlzQ3VzdG9tRWxlbWVudCxcbiAgICAgICAgICAgICAgZGVsaW1pdGVyc1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbXBpbGVyT3B0aW9uc1xuICAgICAgICAgICksXG4gICAgICAgICAgY29tcG9uZW50Q29tcGlsZXJPcHRpb25zXG4gICAgICAgICk7XG4gICAgICAgIENvbXBvbmVudC5yZW5kZXIgPSBjb21waWxlKHRlbXBsYXRlLCBmaW5hbENvbXBpbGVyT3B0aW9ucyk7XG4gICAgICAgIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9k
15dWN0aW9uXCIpKSB7XG4gICAgICAgICAgZW5kTWVhc3VyZShpbnN0YW5jZSwgYGNvbXBpbGVgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpbnN0YW5jZS5yZW5kZXIgPSBDb21wb25lbnQucmVuZGVyIHx8IE5PT1A7XG4gICAgaWYgKGluc3RhbGxXaXRoUHJveHkpIHtcbiAgICAgIGluc3RhbGxXaXRoUHJveHkoaW5zdGFuY2UpO1xuICAgIH1cbiAgfVxuICBpZiAoX19WVUVfT1BUSU9OU19BUElfXyAmJiB0cnVlKSB7XG4gICAgY29uc3QgcmVzZXQgPSBzZXRDdXJyZW50SW5zdGFuY2UoaW5zdGFuY2UpO1xuICAgIHBhdXNlVHJhY2tpbmcoKTtcbiAgICB0cnkge1xuICAgICAgYXBwbHlPcHRpb25zKGluc3RhbmNlKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgcmVzZXRUcmFja2luZygpO1xuICAgICAgcmVzZXQoKTtcbiAgICB9XG4gIH1cbiAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgJiYgIUNvbXBvbmVudC5yZW5kZXIgJiYgaW5zdGFuY2UucmVuZGVyID09PSBOT09QICYmICFpc1NTUikge1xuICAgIGlmICghY29tcGlsZSAmJiBDb21wb25lbnQudGVtcGxhdGUpIHtcbiAgICAgIHdhcm4kMShcbiAgICAgICAgYENvbXBvbmVudCBwcm92aWRlZCB0ZW1wbGF0ZSBvcHRpb24gYnV0IHJ1bnRpbWUgY29tcGlsYXRpb24gaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGJ1aWxkIG9mIFZ1ZS5gICsgKGAgQ29uZmlndXJlIHlvdXIgYnVuZGxlciB0byBhbGlhcyBcInZ1ZVwiIHRvIFwidnVlL2Rpc3QvdnVlLmVzbS1idW5kbGVyLmpzXCIuYCApXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB3YXJuJDEoYENvbXBvbmVudCBpcyBtaXNzaW5nIHRlbXBsYXRlIG9yIHJlbmRlciBmdW5jdGlvbjogYCwgQ29tcG9uZW50KTtcbiAgICB9XG4gIH1cbn1cbmNvbnN0IGF0dHJzUHJveHlIYW5kbGVycyA9ICEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgPyB7XG4gIGdldCh0YXJnZXQsIGtleSkge1xuICAgIG1hcmtBdHRyc0FjY2Vzc2VkKCk7XG4gICAgdHJhY2sodGFyZ2V0LCBcImdldFwiLCBcIlwiKTtcbiAgICByZXR1cm4gdGFyZ2V0W2tleV07XG4gIH0sXG4gIHNldCgpIHtcbiAgICB3YXJuJDEoYHNldHVwQ29udGV4dC5hdHRycyBpcyByZWFkb25seS5gKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sXG4gIGRlbGV0ZVByb3BlcnR5KCkge1xuICAgIHdhcm4kMShgc2V0dXBDb250ZXh0LmF0dHJzIGlzIHJlYWRvbmx5LmApO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufSA6IHtcbiAgZ2V0KHRhcmdldCwga2V5KSB7XG4gICAgdHJhY2sodGFyZ2V0LCBcImdldFwiLCBcIlwiKTtcbiAgICByZXR1cm4gdGFyZ2V0W2tleV07XG4gIH1cbn07XG5mdW5jdGlvbiBnZXRTbG90c1Byb3h5KGluc3RhbmNlKSB7XG4gIHJldHVybiBuZXcgUHJveHkoaW5zdGFuY2Uuc2xvdHMsIHtcbiAgICBnZXQodGFyZ2V0LCBrZXkpIHtcbiAgICAgIHRyYWNrKGluc3RhbmNlLCBcImdldFwiLCBcIiRzbG90c1wiKTtcbiAgICAgIHJldHVybiB0YXJnZXRba2V5XTtcbiAgICB9XG4gIH0pO1xufVxuZnVuY3Rpb24gY3JlYXRlU2V0dXBDb250ZXh0KGluc3RhbmNlKSB7XG4gIGNvbnN0IGV4cG9zZSA9IChleHBvc2VkKSA9PiB7XG4gICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikpIHtcbiAgICAgIGlmIChpbnN0YW5jZS5leHBvc2VkKSB7XG4gICAgICAgIHdhcm4kMShgZXhwb3NlKCkgc2hvdWxkIGJlIGNhbGxlZCBvbmx5IG9uY2UgcGVyIHNldHVwKCkuYCk7XG4gICAgICB9XG4gICAgICBpZiAoZXhwb3NlZCAhPSBudWxsKSB7XG4gICAgICAgIGxldCBleHBvc2VkVHlwZSA9IHR5cGVvZiBleHBvc2VkO1xuICAgICAgICBpZiAoZXhwb3NlZFR5cGUgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICBpZiAoaXNBcnJheShleHBvc2VkKSkge1xuICAgICAgICAgICAgZXhwb3NlZFR5cGUgPSBcImFycmF5XCI7XG4gICAgICAgICAgfSBlbHNlIGlmIChpc1JlZihleHBvc2VkKSkge1xuICAgICAgICAgICAgZXhwb3NlZFR5cGUgPSBcInJlZlwiO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZXhwb3NlZFR5cGUgIT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICB3YXJuJDEoXG4gICAgICAgICAgICBgZXhwb3NlKCkgc2hvdWxkIGJlIHBhc3NlZCBhIHBsYWluIG9iamVjdCwgcmVjZWl2ZWQgJHtleHBvc2VkVHlwZX0uYFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaW5zdGFuY2UuZXhwb3NlZCA9IGV4cG9zZWQgfHwge307XG4gIH07XG4gIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpKSB7XG4gICAgbGV0IGF0dHJzUHJveHk7XG4gICAgbGV0IHNsb3RzUHJveHk7XG4gICAgcmV0dXJuIE9iamVjdC5mcmVlemUoe1xuICAgICAgZ2V0IGF0dHJzKCkge1xuICAgICAgICByZXR1cm4gYXR0cnNQcm94eSB8fCAoYXR0cnNQcm94eSA9IG5ldyBQcm94eShpbnN0YW5jZS5hdHRycywgYXR0cnNQcm94eUhhbmRsZXJzKSk7XG4gICAgICB9LFxuICAgICAgZ2V0IHNsb3RzKCkge1xuICAgICAgICByZXR1cm4gc2xvdHNQcm94eSB8fCAoc2xvdHNQcm94eSA9IGdldFNsb3RzUHJveHkoaW5zdGFuY2UpKTtcbiAgICAgIH0sXG4gICAgICBnZXQgZW1pdCgpIHtcbiAgICAgICAgcmV0dXJuIChldmVudCwgLi4uYXJncykgPT4gaW5zdGFuY2UuZW1pdChldmVudCwgLi4uYXJncyk7XG4gICAgICB9LFxuICAgICAgZXhwb3NlXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGF0dHJzOiBuZXcgUHJveHkoaW5zdGFuY2UuYXR0cnMsIGF0dHJzUHJveHlIYW5kbGVycyksXG4gICAgICBzbG90czogaW5zdGFuY2Uuc2xvdHMsXG4gICAgICBlbWl0OiBpbnN0YW5jZS5lbWl0LFxuICAgICAgZXhwb3NlXG4gICAgfTtcbiAgfVxufVxuZnVuY3Rpb24gZ2V0Q29tcG9uZW50UHVibGljSW5zdGFuY2UoaW5zdGFuY2UpIHtcbiAgaWYgKGluc3RhbmNlLmV4cG9zZWQpIHtcbiAgICByZXR1cm4gaW5zdGFuY2UuZXhwb3NlUHJveHkgfHwgKGluc3RhbmNlLmV4cG9zZVByb3h5ID0gbmV3IFByb3h5KHByb3h5UmVmcyhtYXJrUmF3KGluc3RhbmNlLmV4cG9zZWQpKSwge1xuICAgICAgZ2V0KHRhcmdldCwga2V5KSB7XG4gICAgICAgIGlmIChrZXkgaW4gdGFyZ2V0KSB7XG4gICAgICAgICAgcmV0dXJuIHRhcmdldFtrZXldO1xuICAgICAgICB9IGVsc2UgaWYgKGtleSBpbiBwdWJsaWNQcm9wZXJ0aWVzTWFwKSB7XG4gICAgICAgICAgcmV0dXJuIHB1YmxpY1Byb3BlcnRpZXNNYXBba2V5XShpbnN0YW5jZSk7XG4gICAgICAgI
15H1cbiAgICAgIH0sXG4gICAgICBoYXModGFyZ2V0LCBrZXkpIHtcbiAgICAgICAgcmV0dXJuIGtleSBpbiB0YXJnZXQgfHwga2V5IGluIHB1YmxpY1Byb3BlcnRpZXNNYXA7XG4gICAgICB9XG4gICAgfSkpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBpbnN0YW5jZS5wcm94eTtcbiAgfVxufVxuY29uc3QgY2xhc3NpZnlSRSA9IC8oPzpefFstX10pKFxcdykvZztcbmNvbnN0IGNsYXNzaWZ5ID0gKHN0cikgPT4gc3RyLnJlcGxhY2UoY2xhc3NpZnlSRSwgKGMpID0+IGMudG9VcHBlckNhc2UoKSkucmVwbGFjZSgvWy1fXS9nLCBcIlwiKTtcbmZ1bmN0aW9uIGdldENvbXBvbmVudE5hbWUoQ29tcG9uZW50LCBpbmNsdWRlSW5mZXJyZWQgPSB0cnVlKSB7XG4gIHJldHVybiBpc0Z1bmN0aW9uKENvbXBvbmVudCkgPyBDb21wb25lbnQuZGlzcGxheU5hbWUgfHwgQ29tcG9uZW50Lm5hbWUgOiBDb21wb25lbnQubmFtZSB8fCBpbmNsdWRlSW5mZXJyZWQgJiYgQ29tcG9uZW50Ll9fbmFtZTtcbn1cbmZ1bmN0aW9uIGZvcm1hdENvbXBvbmVudE5hbWUoaW5zdGFuY2UsIENvbXBvbmVudCwgaXNSb290ID0gZmFsc2UpIHtcbiAgbGV0IG5hbWUgPSBnZXRDb21wb25lbnROYW1lKENvbXBvbmVudCk7XG4gIGlmICghbmFtZSAmJiBDb21wb25lbnQuX19maWxlKSB7XG4gICAgY29uc3QgbWF0Y2ggPSBDb21wb25lbnQuX19maWxlLm1hdGNoKC8oW14vXFxcXF0rKVxcLlxcdyskLyk7XG4gICAgaWYgKG1hdGNoKSB7XG4gICAgICBuYW1lID0gbWF0Y2hbMV07XG4gICAgfVxuICB9XG4gIGlmICghbmFtZSAmJiBpbnN0YW5jZSAmJiBpbnN0YW5jZS5wYXJlbnQpIHtcbiAgICBjb25zdCBpbmZlckZyb21SZWdpc3RyeSA9IChyZWdpc3RyeSkgPT4ge1xuICAgICAgZm9yIChjb25zdCBrZXkgaW4gcmVnaXN0cnkpIHtcbiAgICAgICAgaWYgKHJlZ2lzdHJ5W2tleV0gPT09IENvbXBvbmVudCkge1xuICAgICAgICAgIHJldHVybiBrZXk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICAgIG5hbWUgPSBpbmZlckZyb21SZWdpc3RyeShcbiAgICAgIGluc3RhbmNlLmNvbXBvbmVudHMgfHwgaW5zdGFuY2UucGFyZW50LnR5cGUuY29tcG9uZW50c1xuICAgICkgfHwgaW5mZXJGcm9tUmVnaXN0cnkoaW5zdGFuY2UuYXBwQ29udGV4dC5jb21wb25lbnRzKTtcbiAgfVxuICByZXR1cm4gbmFtZSA/IGNsYXNzaWZ5KG5hbWUpIDogaXNSb290ID8gYEFwcGAgOiBgQW5vbnltb3VzYDtcbn1cbmZ1bmN0aW9uIGlzQ2xhc3NDb21wb25lbnQodmFsdWUpIHtcbiAgcmV0dXJuIGlzRnVuY3Rpb24odmFsdWUpICYmIFwiX192Y2NPcHRzXCIgaW4gdmFsdWU7XG59XG5cbmNvbnN0IGNvbXB1dGVkID0gKGdldHRlck9yT3B0aW9ucywgZGVidWdPcHRpb25zKSA9PiB7XG4gIGNvbnN0IGMgPSBjb21wdXRlZCQxKGdldHRlck9yT3B0aW9ucywgZGVidWdPcHRpb25zLCBpc0luU1NSQ29tcG9uZW50U2V0dXApO1xuICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSkge1xuICAgIGNvbnN0IGkgPSBnZXRDdXJyZW50SW5zdGFuY2UoKTtcbiAgICBpZiAoaSAmJiBpLmFwcENvbnRleHQuY29uZmlnLndhcm5SZWN1cnNpdmVDb21wdXRlZCkge1xuICAgICAgYy5fd2FyblJlY3Vyc2l2ZSA9IHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBjO1xufTtcblxuZnVuY3Rpb24gaCh0eXBlLCBwcm9wc09yQ2hpbGRyZW4sIGNoaWxkcmVuKSB7XG4gIGNvbnN0IGwgPSBhcmd1bWVudHMubGVuZ3RoO1xuICBpZiAobCA9PT0gMikge1xuICAgIGlmIChpc09iamVjdChwcm9wc09yQ2hpbGRyZW4pICYmICFpc0FycmF5KHByb3BzT3JDaGlsZHJlbikpIHtcbiAgICAgIGlmIChpc1ZOb2RlKHByb3BzT3JDaGlsZHJlbikpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVZOb2RlKHR5cGUsIG51bGwsIFtwcm9wc09yQ2hpbGRyZW5dKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjcmVhdGVWTm9kZSh0eXBlLCBwcm9wc09yQ2hpbGRyZW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gY3JlYXRlVk5vZGUodHlwZSwgbnVsbCwgcHJvcHNPckNoaWxkcmVuKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKGwgPiAzKSB7XG4gICAgICBjaGlsZHJlbiA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMik7XG4gICAgfSBlbHNlIGlmIChsID09PSAzICYmIGlzVk5vZGUoY2hpbGRyZW4pKSB7XG4gICAgICBjaGlsZHJlbiA9IFtjaGlsZHJlbl07XG4gICAgfVxuICAgIHJldHVybiBjcmVhdGVWTm9kZSh0eXBlLCBwcm9wc09yQ2hpbGRyZW4sIGNoaWxkcmVuKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpbml0Q3VzdG9tRm9ybWF0dGVyKCkge1xuICBpZiAoISEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgfHwgdHlwZW9mIHdpbmRvdyA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCB2dWVTdHlsZSA9IHsgc3R5bGU6IFwiY29sb3I6IzNiYTc3NlwiIH07XG4gIGNvbnN0IG51bWJlclN0eWxlID0geyBzdHlsZTogXCJjb2xvcjojMTY3N2ZmXCIgfTtcbiAgY29uc3Qgc3RyaW5nU3R5bGUgPSB7IHN0eWxlOiBcImNvbG9yOiNmNTIyMmRcIiB9O1xuICBjb25zdCBrZXl3b3JkU3R5bGUgPSB7IHN0eWxlOiBcImNvbG9yOiNlYjJmOTZcIiB9O1xuICBjb25zdCBmb3JtYXR0ZXIgPSB7XG4gICAgX192dWVfY3VzdG9tX2Zvcm1hdHRlcjogdHJ1ZSxcbiAgICBoZWFkZXIob2JqKSB7XG4gICAgICBpZiAoIWlzT2JqZWN0KG9iaikpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBpZiAob2JqLl9faXNWdWUpIHtcbiAgICAgICAgcmV0dXJuIFtcImRpdlwiLCB2dWVTdHlsZSwgYFZ1ZUluc3RhbmNlYF07XG4gICAgICB9IGVsc2UgaWYgKGlzUmVmKG9iaikpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgIHt9LFxuICAgICAgICAgIFtcInNwYW5cIiwgdnVlU3R5bGUsIGdlblJlZkZsYWcob2JqKV0sXG4gICAgICAgICAgXCI8XCIsXG4gICAgICAgICAgZm9ybWF0VmFsdWUob2JqLnZhbHVlKSxcbiAgICAgICAgICBgPmBcbiAgICAgICAgXTtcbiAgICAgIH0gZWxzZSBpZiAoaXNSZWFjdGl2ZShvYmopKSB7XG4gICAgICAgI
15HJldHVybiBbXG4gICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICB7fSxcbiAgICAgICAgICBbXCJzcGFuXCIsIHZ1ZVN0eWxlLCBpc1NoYWxsb3cob2JqKSA/IFwiU2hhbGxvd1JlYWN0aXZlXCIgOiBcIlJlYWN0aXZlXCJdLFxuICAgICAgICAgIFwiPFwiLFxuICAgICAgICAgIGZvcm1hdFZhbHVlKG9iaiksXG4gICAgICAgICAgYD4ke2lzUmVhZG9ubHkob2JqKSA/IGAgKHJlYWRvbmx5KWAgOiBgYH1gXG4gICAgICAgIF07XG4gICAgICB9IGVsc2UgaWYgKGlzUmVhZG9ubHkob2JqKSkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAge30sXG4gICAgICAgICAgW1wic3BhblwiLCB2dWVTdHlsZSwgaXNTaGFsbG93KG9iaikgPyBcIlNoYWxsb3dSZWFkb25seVwiIDogXCJSZWFkb25seVwiXSxcbiAgICAgICAgICBcIjxcIixcbiAgICAgICAgICBmb3JtYXRWYWx1ZShvYmopLFxuICAgICAgICAgIFwiPlwiXG4gICAgICAgIF07XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9LFxuICAgIGhhc0JvZHkob2JqKSB7XG4gICAgICByZXR1cm4gb2JqICYmIG9iai5fX2lzVnVlO1xuICAgIH0sXG4gICAgYm9keShvYmopIHtcbiAgICAgIGlmIChvYmogJiYgb2JqLl9faXNWdWUpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgIHt9LFxuICAgICAgICAgIC4uLmZvcm1hdEluc3RhbmNlKG9iai4kKVxuICAgICAgICBdO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgZnVuY3Rpb24gZm9ybWF0SW5zdGFuY2UoaW5zdGFuY2UpIHtcbiAgICBjb25zdCBibG9ja3MgPSBbXTtcbiAgICBpZiAoaW5zdGFuY2UudHlwZS5wcm9wcyAmJiBpbnN0YW5jZS5wcm9wcykge1xuICAgICAgYmxvY2tzLnB1c2goY3JlYXRlSW5zdGFuY2VCbG9jayhcInByb3BzXCIsIHRvUmF3KGluc3RhbmNlLnByb3BzKSkpO1xuICAgIH1cbiAgICBpZiAoaW5zdGFuY2Uuc2V0dXBTdGF0ZSAhPT0gRU1QVFlfT0JKKSB7XG4gICAgICBibG9ja3MucHVzaChjcmVhdGVJbnN0YW5jZUJsb2NrKFwic2V0dXBcIiwgaW5zdGFuY2Uuc2V0dXBTdGF0ZSkpO1xuICAgIH1cbiAgICBpZiAoaW5zdGFuY2UuZGF0YSAhPT0gRU1QVFlfT0JKKSB7XG4gICAgICBibG9ja3MucHVzaChjcmVhdGVJbnN0YW5jZUJsb2NrKFwiZGF0YVwiLCB0b1JhdyhpbnN0YW5jZS5kYXRhKSkpO1xuICAgIH1cbiAgICBjb25zdCBjb21wdXRlZCA9IGV4dHJhY3RLZXlzKGluc3RhbmNlLCBcImNvbXB1dGVkXCIpO1xuICAgIGlmIChjb21wdXRlZCkge1xuICAgICAgYmxvY2tzLnB1c2goY3JlYXRlSW5zdGFuY2VCbG9jayhcImNvbXB1dGVkXCIsIGNvbXB1dGVkKSk7XG4gICAgfVxuICAgIGNvbnN0IGluamVjdGVkID0gZXh0cmFjdEtleXMoaW5zdGFuY2UsIFwiaW5qZWN0XCIpO1xuICAgIGlmIChpbmplY3RlZCkge1xuICAgICAgYmxvY2tzLnB1c2goY3JlYXRlSW5zdGFuY2VCbG9jayhcImluamVjdGVkXCIsIGluamVjdGVkKSk7XG4gICAgfVxuICAgIGJsb2Nrcy5wdXNoKFtcbiAgICAgIFwiZGl2XCIsXG4gICAgICB7fSxcbiAgICAgIFtcbiAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgIHtcbiAgICAgICAgICBzdHlsZToga2V5d29yZFN0eWxlLnN0eWxlICsgXCI7b3BhY2l0eTowLjY2XCJcbiAgICAgICAgfSxcbiAgICAgICAgXCIkIChpbnRlcm5hbCk6IFwiXG4gICAgICBdLFxuICAgICAgW1wib2JqZWN0XCIsIHsgb2JqZWN0OiBpbnN0YW5jZSB9XVxuICAgIF0pO1xuICAgIHJldHVybiBibG9ja3M7XG4gIH1cbiAgZnVuY3Rpb24gY3JlYXRlSW5zdGFuY2VCbG9jayh0eXBlLCB0YXJnZXQpIHtcbiAgICB0YXJnZXQgPSBleHRlbmQoe30sIHRhcmdldCk7XG4gICAgaWYgKCFPYmplY3Qua2V5cyh0YXJnZXQpLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIFtcInNwYW5cIiwge31dO1xuICAgIH1cbiAgICByZXR1cm4gW1xuICAgICAgXCJkaXZcIixcbiAgICAgIHsgc3R5bGU6IFwibGluZS1oZWlnaHQ6MS4yNWVtO21hcmdpbi1ib3R0b206MC42ZW1cIiB9LFxuICAgICAgW1xuICAgICAgICBcImRpdlwiLFxuICAgICAgICB7XG4gICAgICAgICAgc3R5bGU6IFwiY29sb3I6IzQ3NjU4MlwiXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGVcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgIFwiZGl2XCIsXG4gICAgICAgIHtcbiAgICAgICAgICBzdHlsZTogXCJwYWRkaW5nLWxlZnQ6MS4yNWVtXCJcbiAgICAgICAgfSxcbiAgICAgICAgLi4uT2JqZWN0LmtleXModGFyZ2V0KS5tYXAoKGtleSkgPT4ge1xuICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAge30sXG4gICAgICAgICAgICBbXCJzcGFuXCIsIGtleXdvcmRTdHlsZSwga2V5ICsgXCI6IFwiXSxcbiAgICAgICAgICAgIGZvcm1hdFZhbHVlKHRhcmdldFtrZXldLCBmYWxzZSlcbiAgICAgICAgICBdO1xuICAgICAgICB9KVxuICAgICAgXVxuICAgIF07XG4gIH1cbiAgZnVuY3Rpb24gZm9ybWF0VmFsdWUodiwgYXNSYXcgPSB0cnVlKSB7XG4gICAgaWYgKHR5cGVvZiB2ID09PSBcIm51bWJlclwiKSB7XG4gICAgICByZXR1cm4gW1wic3BhblwiLCBudW1iZXJTdHlsZSwgdl07XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgcmV0dXJuIFtcInNwYW5cIiwgc3RyaW5nU3R5bGUsIEpTT04uc3RyaW5naWZ5KHYpXTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2ID09PSBcImJvb2xlYW5cIikge1xuICAgICAgcmV0dXJuIFtcInNwYW5cIiwga2V5d29yZFN0eWxlLCB2XTtcbiAgICB9IGVsc2UgaWYgKGlzT2JqZWN0KHYpKSB7XG4gICAgICByZXR1cm4gW1wib2JqZWN0XCIsIHsgb2JqZWN0OiBhc1JhdyA/IHRvUmF3KHYpIDogdiB9XTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFtcInNwYW5cIiwgc3RyaW5nU3R5bGUsIFN0cmluZyh2KV07XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIGV4dHJhY3RLZXlzKGluc3RhbmNlLCB0eXBlKSB7XG4gICAgY29uc3QgQ29tcCA9IGluc3RhbmNlLnR5cGU7XG4gICAgaWYgKGlzRnVuY3Rpb24oQ29tcCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZXh0cmFjdGVkID0ge307XG4gICAgZm9yIChjb25zdCBrZXkgaW4gaW5zdGFuY2UuY3R4KSB7XG4gICAgICBpZiAoaXNLZXlPZlR5cGUoQ29tcCwga2V5LCB0eXBlKSkge1xuICAgICAgICBleHRyYWN0
15ZWRba2V5XSA9IGluc3RhbmNlLmN0eFtrZXldO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZXh0cmFjdGVkO1xuICB9XG4gIGZ1bmN0aW9uIGlzS2V5T2ZUeXBlKENvbXAsIGtleSwgdHlwZSkge1xuICAgIGNvbnN0IG9wdHMgPSBDb21wW3R5cGVdO1xuICAgIGlmIChpc0FycmF5KG9wdHMpICYmIG9wdHMuaW5jbHVkZXMoa2V5KSB8fCBpc09iamVjdChvcHRzKSAmJiBrZXkgaW4gb3B0cykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChDb21wLmV4dGVuZHMgJiYgaXNLZXlPZlR5cGUoQ29tcC5leHRlbmRzLCBrZXksIHR5cGUpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKENvbXAubWl4aW5zICYmIENvbXAubWl4aW5zLnNvbWUoKG0pID0+IGlzS2V5T2ZUeXBlKG0sIGtleSwgdHlwZSkpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gZ2VuUmVmRmxhZyh2KSB7XG4gICAgaWYgKGlzU2hhbGxvdyh2KSkge1xuICAgICAgcmV0dXJuIGBTaGFsbG93UmVmYDtcbiAgICB9XG4gICAgaWYgKHYuZWZmZWN0KSB7XG4gICAgICByZXR1cm4gYENvbXB1dGVkUmVmYDtcbiAgICB9XG4gICAgcmV0dXJuIGBSZWZgO1xuICB9XG4gIGlmICh3aW5kb3cuZGV2dG9vbHNGb3JtYXR0ZXJzKSB7XG4gICAgd2luZG93LmRldnRvb2xzRm9ybWF0dGVycy5wdXNoKGZvcm1hdHRlcik7XG4gIH0gZWxzZSB7XG4gICAgd2luZG93LmRldnRvb2xzRm9ybWF0dGVycyA9IFtmb3JtYXR0ZXJdO1xuICB9XG59XG5cbmZ1bmN0aW9uIHdpdGhNZW1vKG1lbW8sIHJlbmRlciwgY2FjaGUsIGluZGV4KSB7XG4gIGNvbnN0IGNhY2hlZCA9IGNhY2hlW2luZGV4XTtcbiAgaWYgKGNhY2hlZCAmJiBpc01lbW9TYW1lKGNhY2hlZCwgbWVtbykpIHtcbiAgICByZXR1cm4gY2FjaGVkO1xuICB9XG4gIGNvbnN0IHJldCA9IHJlbmRlcigpO1xuICByZXQubWVtbyA9IG1lbW8uc2xpY2UoKTtcbiAgcmV0LmNhY2hlSW5kZXggPSBpbmRleDtcbiAgcmV0dXJuIGNhY2hlW2luZGV4XSA9IHJldDtcbn1cbmZ1bmN0aW9uIGlzTWVtb1NhbWUoY2FjaGVkLCBtZW1vKSB7XG4gIGNvbnN0IHByZXYgPSBjYWNoZWQubWVtbztcbiAgaWYgKHByZXYubGVuZ3RoICE9IG1lbW8ubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcHJldi5sZW5ndGg7IGkrKykge1xuICAgIGlmIChoYXNDaGFuZ2VkKHByZXZbaV0sIG1lbW9baV0pKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIGlmIChpc0Jsb2NrVHJlZUVuYWJsZWQgPiAwICYmIGN1cnJlbnRCbG9jaykge1xuICAgIGN1cnJlbnRCbG9jay5wdXNoKGNhY2hlZCk7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbmNvbnN0IHZlcnNpb24gPSBcIjMuNC4zOFwiO1xuY29uc3Qgd2FybiA9ICEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgPyB3YXJuJDEgOiBOT09QO1xuY29uc3QgRXJyb3JUeXBlU3RyaW5ncyA9IEVycm9yVHlwZVN0cmluZ3MkMSA7XG5jb25zdCBkZXZ0b29scyA9ICEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgfHwgdHJ1ZSA/IGRldnRvb2xzJDEgOiB2b2lkIDA7XG5jb25zdCBzZXREZXZ0b29sc0hvb2sgPSAhIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHx8IHRydWUgPyBzZXREZXZ0b29sc0hvb2skMSA6IE5PT1A7XG5jb25zdCBfc3NyVXRpbHMgPSB7XG4gIGNyZWF0ZUNvbXBvbmVudEluc3RhbmNlLFxuICBzZXR1cENvbXBvbmVudCxcbiAgcmVuZGVyQ29tcG9uZW50Um9vdCxcbiAgc2V0Q3VycmVudFJlbmRlcmluZ0luc3RhbmNlLFxuICBpc1ZOb2RlOiBpc1ZOb2RlLFxuICBub3JtYWxpemVWTm9kZSxcbiAgZ2V0Q29tcG9uZW50UHVibGljSW5zdGFuY2UsXG4gIGVuc3VyZVZhbGlkVk5vZGVcbn07XG5jb25zdCBzc3JVdGlscyA9IF9zc3JVdGlscyA7XG5jb25zdCByZXNvbHZlRmlsdGVyID0gbnVsbDtcbmNvbnN0IGNvbXBhdFV0aWxzID0gbnVsbDtcbmNvbnN0IERlcHJlY2F0aW9uVHlwZXMgPSBudWxsO1xuXG5leHBvcnQgeyBCYXNlVHJhbnNpdGlvbiwgQmFzZVRyYW5zaXRpb25Qcm9wc1ZhbGlkYXRvcnMsIENvbW1lbnQsIERlcHJlY2F0aW9uVHlwZXMsIEVycm9yQ29kZXMsIEVycm9yVHlwZVN0cmluZ3MsIEZyYWdtZW50LCBLZWVwQWxpdmUsIFN0YXRpYywgU3VzcGVuc2UsIFRlbGVwb3J0LCBUZXh0LCBhc3NlcnROdW1iZXIsIGNhbGxXaXRoQXN5bmNFcnJvckhhbmRsaW5nLCBjYWxsV2l0aEVycm9ySGFuZGxpbmcsIGNsb25lVk5vZGUsIGNvbXBhdFV0aWxzLCBjb21wdXRlZCwgY3JlYXRlQmxvY2ssIGNyZWF0ZUNvbW1lbnRWTm9kZSwgY3JlYXRlRWxlbWVudEJsb2NrLCBjcmVhdGVCYXNlVk5vZGUgYXMgY3JlYXRlRWxlbWVudFZOb2RlLCBjcmVhdGVIeWRyYXRpb25SZW5kZXJlciwgY3JlYXRlUHJvcHNSZXN0UHJveHksIGNyZWF0ZVJlbmRlcmVyLCBjcmVhdGVTbG90cywgY3JlYXRlU3RhdGljVk5vZGUsIGNyZWF0ZVRleHRWTm9kZSwgY3JlYXRlVk5vZGUsIGRlZmluZUFzeW5jQ29tcG9uZW50LCBkZWZpbmVDb21wb25lbnQsIGRlZmluZUVtaXRzLCBkZWZpbmVFeHBvc2UsIGRlZmluZU1vZGVsLCBkZWZpbmVPcHRpb25zLCBkZWZpbmVQcm9wcywgZGVmaW5lU2xvdHMsIGRldnRvb2xzLCBnZXRDdXJyZW50SW5zdGFuY2UsIGdldFRyYW5zaXRpb25SYXdDaGlsZHJlbiwgZ3VhcmRSZWFjdGl2ZVByb3BzLCBoLCBoYW5kbGVFcnJvciwgaGFzSW5qZWN0aW9uQ29udGV4dCwgaW5pdEN1c3RvbUZvcm1hdHRlciwgaW5qZWN0LCBpc01lbW9TYW1lLCBpc1J1bnRpbWVPbmx5LCBpc1ZOb2RlLCBtZXJnZURlZmF1bHRzLCBtZXJnZU1vZGVscywgbWVyZ2VQcm9wcywgbmV4dFRpY2ssIG9uQWN0aXZhdGVkLCBvbkJlZm9yZU1vdW50LCBvbkJlZm9yZVVubW91bnQsIG9uQmVmb3JlVXBkYXRlLCBvbkRlYWN0aXZhdGVkLCBvbkVycm9yQ2FwdHVyZWQsIG9uTW91bnRlZCwgb25SZW5kZXJUcmFja2VkLCBvblJlbmRlclRyaWdnZXJlZCwgb25TZXJ2ZXJQcmVmZXRjaCwgb25Vbm1vdW50ZWQsIG9uVXBkYXRlZCwgb3BlbkJsb2NrLCBwb3BTY29wZUlkLCBwcm92aWRlLCBwdXNoU2NvcGVJZCwgcXVldWVQb3N0Rmx1c2hDYiwgcmVnaXN0ZXJSdW50aW1lQ29tcGlsZXIsIHJlbmRlckxpc3QsIHJlbmRlclNsb3QsIHJlc29sdmVDb21wb25lbnQsIHJlc29sdmVEaXJlY3RpdmUsIHJlc29sdmVEeW5hbWljQ29tcG9uZW50LCByZXNvbHZlRmlsdGVyLCByZXNvbHZlVHJhbnNpdGlvbkhvb2tzLCBzZXRCbG9ja1RyYWNraW5nLCBzZXREZXZ0b29sc0hvb2ssIHNldFRyYW5zaXRpb25Ib29rcywgc3NyQ29udGV4dEtleSwgc3NyVXRpbHMsIHRvSGFuZGxlcnMsIHRyYW5zZm9ybVZOb2RlQXJncywgdXNlQXR0cnMsIHVzZU1vZGVsLCB1c2VTU1JDb250ZXh0LCB1c2VTbG90cywgdXNlVHJhbnNpdGlvblN0YXRlLCB2ZXJzaW9uLCB3YXJuLCB3YXRjaCwgd2F0Y2hFZmZlY3QsIHdhdGNoUG9zdEVmZmVjdCwgd2F0Y2hTeW5jRWZmZWN0LCB3aXRoQXN5bmNDb250ZXh0LCB3aXRoQ3R4LCB3aXRoRGVmYXVsdHMsIHdpdGhEaXJlY3RpdmVzLCB3aXRoTWVtbywgd2l0aFNjb3BlSWQgfTtcbiIsIi8qKlxuKiBAdnVlL3J1bnRpbWUtZG9tIHYzLjQuMzhcbiogKGMpIDIwMTgtcHJlc2VudCBZdXhpIChFdmFuKSBZb3UgYW5kIFZ1ZSBjb250cmlidXRvcnNcbiogQGxpY2Vuc2UgTUlUXG4qKi9cbmltcG9ydCB7
15IGgsIEJhc2VUcmFuc2l0aW9uLCBCYXNlVHJhbnNpdGlvblByb3BzVmFsaWRhdG9ycywgYXNzZXJ0TnVtYmVyLCBnZXRDdXJyZW50SW5zdGFuY2UsIHdhcm4sIG9uQmVmb3JlTW91bnQsIHdhdGNoUG9zdEVmZmVjdCwgb25Nb3VudGVkLCBvblVubW91bnRlZCwgRnJhZ21lbnQsIFN0YXRpYywgY2FtZWxpemUsIGNhbGxXaXRoQXN5bmNFcnJvckhhbmRsaW5nLCBkZWZpbmVDb21wb25lbnQsIG5leHRUaWNrLCBjcmVhdGVWTm9kZSwgdXNlVHJhbnNpdGlvblN0YXRlLCBvblVwZGF0ZWQsIHRvUmF3LCBnZXRUcmFuc2l0aW9uUmF3Q2hpbGRyZW4sIHNldFRyYW5zaXRpb25Ib29rcywgcmVzb2x2ZVRyYW5zaXRpb25Ib29rcywgaXNSdW50aW1lT25seSwgY3JlYXRlUmVuZGVyZXIsIGNyZWF0ZUh5ZHJhdGlvblJlbmRlcmVyIH0gZnJvbSAnQHZ1ZS9ydW50aW1lLWNvcmUnO1xuZXhwb3J0ICogZnJvbSAnQHZ1ZS9ydW50aW1lLWNvcmUnO1xuaW1wb3J0IHsgZXh0ZW5kLCBpc09iamVjdCwgdG9OdW1iZXIsIGlzQXJyYXksIGlzU3RyaW5nLCBoeXBoZW5hdGUsIGNhcGl0YWxpemUsIGluY2x1ZGVCb29sZWFuQXR0ciwgaXNTeW1ib2wsIGlzU3BlY2lhbEJvb2xlYW5BdHRyLCBpc0Z1bmN0aW9uLCBOT09QLCBpc09uLCBpc01vZGVsTGlzdGVuZXIsIGNhbWVsaXplIGFzIGNhbWVsaXplJDEsIEVNUFRZX09CSiwgbG9vc2VUb051bWJlciwgbG9vc2VJbmRleE9mLCBpc1NldCwgbG9vc2VFcXVhbCwgaW52b2tlQXJyYXlGbnMsIGlzSFRNTFRhZywgaXNTVkdUYWcsIGlzTWF0aE1MVGFnIH0gZnJvbSAnQHZ1ZS9zaGFyZWQnO1xuXG5jb25zdCBzdmdOUyA9IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIjtcbmNvbnN0IG1hdGhtbE5TID0gXCJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MXCI7XG5jb25zdCBkb2MgPSB0eXBlb2YgZG9jdW1lbnQgIT09IFwidW5kZWZpbmVkXCIgPyBkb2N1bWVudCA6IG51bGw7XG5jb25zdCB0ZW1wbGF0ZUNvbnRhaW5lciA9IGRvYyAmJiAvKiBAX19QVVJFX18gKi8gZG9jLmNyZWF0ZUVsZW1lbnQoXCJ0ZW1wbGF0ZVwiKTtcbmNvbnN0IG5vZGVPcHMgPSB7XG4gIGluc2VydDogKGNoaWxkLCBwYXJlbnQsIGFuY2hvcikgPT4ge1xuICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoY2hpbGQsIGFuY2hvciB8fCBudWxsKTtcbiAgfSxcbiAgcmVtb3ZlOiAoY2hpbGQpID0+IHtcbiAgICBjb25zdCBwYXJlbnQgPSBjaGlsZC5wYXJlbnROb2RlO1xuICAgIGlmIChwYXJlbnQpIHtcbiAgICAgIHBhcmVudC5yZW1vdmVDaGlsZChjaGlsZCk7XG4gICAgfVxuICB9LFxuICBjcmVhdGVFbGVtZW50OiAodGFnLCBuYW1lc3BhY2UsIGlzLCBwcm9wcykgPT4ge1xuICAgIGNvbnN0IGVsID0gbmFtZXNwYWNlID09PSBcInN2Z1wiID8gZG9jLmNyZWF0ZUVsZW1lbnROUyhzdmdOUywgdGFnKSA6IG5hbWVzcGFjZSA9PT0gXCJtYXRobWxcIiA/IGRvYy5jcmVhdGVFbGVtZW50TlMobWF0aG1sTlMsIHRhZykgOiBpcyA/IGRvYy5jcmVhdGVFbGVtZW50KHRhZywgeyBpcyB9KSA6IGRvYy5jcmVhdGVFbGVtZW50KHRhZyk7XG4gICAgaWYgKHRhZyA9PT0gXCJzZWxlY3RcIiAmJiBwcm9wcyAmJiBwcm9wcy5tdWx0aXBsZSAhPSBudWxsKSB7XG4gICAgICBlbC5zZXRBdHRyaWJ1dGUoXCJtdWx0aXBsZVwiLCBwcm9wcy5tdWx0aXBsZSk7XG4gICAgfVxuICAgIHJldHVybiBlbDtcbiAgfSxcbiAgY3JlYXRlVGV4dDogKHRleHQpID0+IGRvYy5jcmVhdGVUZXh0Tm9kZSh0ZXh0KSxcbiAgY3JlYXRlQ29tbWVudDogKHRleHQpID0+IGRvYy5jcmVhdGVDb21tZW50KHRleHQpLFxuICBzZXRUZXh0OiAobm9kZSwgdGV4dCkgPT4ge1xuICAgIG5vZGUubm9kZVZhbHVlID0gdGV4dDtcbiAgfSxcbiAgc2V0RWxlbWVudFRleHQ6IC
15hlbCwgdGV4dCkgPT4ge1xuICAgIGVsLnRleHRDb250ZW50ID0gdGV4dDtcbiAgfSxcbiAgcGFyZW50Tm9kZTogKG5vZGUpID0+IG5vZGUucGFyZW50Tm9kZSxcbiAgbmV4dFNpYmxpbmc6IChub2RlKSA9PiBub2RlLm5leHRTaWJsaW5nLFxuICBxdWVyeVNlbGVjdG9yOiAoc2VsZWN0b3IpID0+IGRvYy5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKSxcbiAgc2V0U2NvcGVJZChlbCwgaWQpIHtcbiAgICBlbC5zZXRBdHRyaWJ1dGUoaWQsIFwiXCIpO1xuICB9LFxuICAvLyBfX1VOU0FGRV9fXG4gIC8vIFJlYXNvbjogaW5uZXJIVE1MLlxuICAvLyBTdGF0aWMgY29udGVudCBoZXJlIGNhbiBvbmx5IGNvbWUgZnJvbSBjb21waWxlZCB0ZW1wbGF0ZXMuXG4gIC8vIEFzIGxvbmcgYXMgdGhlIHVzZXIgb25seSB1c2VzIHRydXN0ZWQgdGVtcGxhdGVzLCB0aGlzIGlzIHNhZmUuXG4gIGluc2VydFN0YXRpY0NvbnRlbnQoY29udGVudCwgcGFyZW50LCBhbmNob3IsIG5hbWVzcGFjZSwgc3RhcnQsIGVuZCkge1xuICAgIGNvbnN0IGJlZm9yZSA9IGFuY2hvciA/IGFuY2hvci5wcmV2aW91c1NpYmxpbmcgOiBwYXJlbnQubGFzdENoaWxkO1xuICAgIGlmIChzdGFydCAmJiAoc3RhcnQgPT09IGVuZCB8fCBzdGFydC5uZXh0U2libGluZykpIHtcbiAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoc3RhcnQuY2xvbmVOb2RlKHRydWUpLCBhbmNob3IpO1xuICAgICAgICBpZiAoc3RhcnQgPT09IGVuZCB8fCAhKHN0YXJ0ID0gc3RhcnQubmV4dFNpYmxpbmcpKSBicmVhaztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGVtcGxhdGVDb250YWluZXIuaW5uZXJIVE1MID0gbmFtZXNwYWNlID09PSBcInN2Z1wiID8gYDxzdmc+JHtjb250ZW50fTwvc3ZnPmAgOiBuYW1lc3BhY2UgPT09IFwibWF0aG1sXCIgPyBgPG1hdGg+JHtjb250ZW50fTwvbWF0aD5gIDogY29udGVudDtcbiAgICAgIGNvbnN0IHRlbXBsYXRlID0gdGVtcGxhdGVDb250YWluZXIuY29udGVudDtcbiAgICAgIGlmIChuYW1lc3BhY2UgPT09IFwic3ZnXCIgfHwgbmFtZXNwYWNlID09PSBcIm1hdGhtbFwiKSB7XG4gICAgICAgIGNvbnN0IHdyYXBwZXIgPSB0ZW1wbGF0ZS5maXJzdENoaWxkO1xuICAgICAgICB3aGlsZSAod3JhcHBlci5maXJzdENoaWxkKSB7XG4gICAgICAgICAgdGVtcGxhdGUuYXBwZW5kQ2hpbGQod3JhcHBlci5maXJzdENoaWxkKTtcbiAgICAgICAgfVxuICAgICAgICB0ZW1wbGF0ZS5yZW1vdmVDaGlsZCh3cmFwcGVyKTtcbiAgICAgIH1cbiAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUodGVtcGxhdGUsIGFuY2hvcik7XG4gICAgfVxuICAgIHJldHVybiBbXG4gICAgICAvLyBmaXJzdFxuICAgICAgYmVmb3JlID8gYmVmb3JlLm5leHRTaWJsaW5nIDogcGFyZW50LmZpcnN0Q2hpbGQsXG4gICAgICAvLyBsYXN0XG4gICAgICBhbmNob3IgPyBhbmNob3IucHJldmlvdXNTaWJsaW5nIDogcGFyZW50Lmxhc3RDaGlsZFxuICAgIF07XG4gIH1cbn07XG5cbmNvbnN0IFRSQU5TSVRJT04gPSBcInRyYW5zaXRpb25cIjtcbmNvbnN0IEFOSU1BVElPTiA9IFwiYW5pbWF0aW9uXCI7XG5jb25zdCB2dGNLZXkgPSBTeW1ib2woXCJfdnRjXCIpO1xuY29uc3QgVHJhbnNpdGlvbiA9IChwcm9wcywgeyBzbG90cyB9KSA9PiBoKEJhc2VUcmFuc2l0aW9uLCByZXNvbHZlVHJhbnNpdGlvblByb3BzKHByb3BzKSwgc2xvdHMpO1xuVHJhbnNpdGlvbi5kaXNwbGF5TmFtZSA9IFwiVHJhbnNpdGlvblwiO1xuY29uc3QgRE9NVHJhbnNpdGlvblByb3BzVmFsaWRhdG9ycyA9IHtcbiAgbmFtZTogU3RyaW5nLFxuICB0eXBlOiBTdHJpbmcsXG4gIGNzczoge1xuICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgZGVmYXVsdDogdHJ1ZVxuICB9LFxuICBkdXJhdGlvbjogW1N0cmluZywgTnVtYmVyLCBPYmplY3RdLFxuICBlbnRlckZyb21DbGFzczogU3RyaW5nLFxuICBlbnRlckFjdGl2ZUNsYXNzOiBTdHJpbmcsXG4gIGVudGVyVG9DbGFzczogU3RyaW5nLFxuICBhcHBlYXJGcm9tQ2xhc3M6IFN0cmluZyxcbiAgYXBwZWFyQWN0aXZlQ2xhc3M6IFN0cmluZyxcbiAgYXBwZWFyVG9DbGFzczogU3RyaW5nLFxuICBsZWF2ZUZyb21DbGFzczogU3RyaW5nLFxuICBsZWF2ZUFjdGl2ZUNsYXNzOiBTdHJpbmcsXG4gIGxlYXZlVG9DbGFzczogU3RyaW5nXG59O1xuY29uc3QgVHJhbnNpdGlvblByb3BzVmFsaWRhdG9ycyA9IFRyYW5zaXRpb24ucHJvcHMgPSAvKiBAX19QVVJFX18gKi8gZXh0ZW5kKFxuICB7fSxcbiAgQmFzZVRyYW5zaXRpb25Qcm9wc1ZhbGlkYXRvcnMsXG4gIERPTVRyYW5zaXRpb25Qcm9wc1ZhbGlkYXRvcnNcbik7XG5jb25zdCBjYWxsSG9vayA9IChob29rLCBhcmdzID0gW10pID0+IHtcbiAgaWYgKGlzQXJyYXkoaG9vaykpIHtcbiAgICBob29rLmZvckVhY2goKGgyKSA9PiBoMiguLi5hcmdzKSk7XG4gIH0gZWxzZSBpZiAoaG9vaykge1xuICAgIGhvb2soLi4uYXJncyk7XG4gIH1cbn07XG5jb25zdCBoYXNFeHBsaWNpdENhbGxiYWNrID0gKGhvb2spID0+IHtcbiAgcmV0dXJuIGhvb2sgPyBpc0FycmF5KGhvb2spID8gaG9vay5zb21lKChoMikgPT4gaDIubGVuZ3RoID4gMSkgOiBob29rLmxlbmd0aCA+IDEgOiBmYWxzZTtcbn07XG5mdW5jdGlvbiByZXNvbHZlVHJhbnNpdGlvblByb3BzKHJhd1Byb3BzKSB7XG4gIGNvbnN0IGJhc2VQcm9wcyA9IHt9O1xuICBmb3IgKGNvbnN0IGtleSBpbiByYXdQcm9wcykge1xuICAgIGlmICghKGtleSBpbiBET01UcmFuc2l0aW9uUHJvcHNWYWxpZGF0b3JzKSkge1xuICAgICAgYmFzZVByb3BzW2tleV0gPSByYXdQcm9wc1trZXldO1xuICAgIH1cbiAgfVxuICBpZiAocmF3UHJvcHMuY3NzID09PSBmYWxzZSkge1xuICAgIHJldHVybiBiYXNlUHJvcHM7XG4gIH1cbiAgY29uc3Qge1xuICAgIG5hbWUgPSBcInZcIixcbiAgICB0eXBlLFxuICAgIGR1cmF0aW9uLFxuICAgIGVudGVyRnJvbUNsYXNzID0gYCR7bmFtZX0tZW50ZXItZnJvbWAsXG4gICAgZW50ZXJBY3RpdmVDbGFzcyA9IGAke25hbWV9LWVudGVyLWFjdGl2ZWAsXG4gICAgZW50ZXJUb0NsYXNzID0gYCR7bmFtZX0tZW50ZXItdG9gLFxuICAgIGFwcGVhckZyb21DbGFzcyA9IGVudGVyRnJvbUNsYXNzLFxuICAgIGFwcGVhckFjdGl2ZUNsYXNzID0gZW50ZXJBY3RpdmVDbGFzcyxcbiAgICBhcHBlYXJUb0NsYXNzID0gZW50ZXJUb0NsYXNzLFxuICAgIGxlYXZlRnJvbUNsYXNzID0gYCR7bmFtZX0tbGVhdmUtZnJvbWAsXG4gICAgbGVhdmVBY3RpdmVDbGFzcyA9IGAke25hbWV9LWxlYXZlLWFjdGl2ZWAsXG4gICAgbGVhdmVUb0NsYXNzID0gYCR7bmFtZX0tbGVhdmUtdG9gXG4gIH0gPSByYXdQcm9wcztcbiAgY29uc3QgZHVyYXRpb25zID0gbm9ybWFsaXplRHVyYXRpb24oZHVyYXRpb24pO1xuICBjb25zdCBlbnRlckR1cmF0aW9uID0gZHVyYXRpb25zICYmIGR1cmF0aW9uc1swXTtcbiAgY29uc3QgbGVhdmVEdXJhdGlvbiA9IGR1cmF0aW9ucyAmJiBkdXJhdGlvbnNbMV07XG4gIGNvbnN0IHtcbiAgICBvbkJlZm9yZUVudGVyLFxuICAgIG9uRW50ZXIsXG4gICAgb25FbnRlckNhbmNlbGxlZCxcbiAgICBvbkxlYXZlLFxuICAgIG9uTGVhdmV
15DYW5jZWxsZWQsXG4gICAgb25CZWZvcmVBcHBlYXIgPSBvbkJlZm9yZUVudGVyLFxuICAgIG9uQXBwZWFyID0gb25FbnRlcixcbiAgICBvbkFwcGVhckNhbmNlbGxlZCA9IG9uRW50ZXJDYW5jZWxsZWRcbiAgfSA9IGJhc2VQcm9wcztcbiAgY29uc3QgZmluaXNoRW50ZXIgPSAoZWwsIGlzQXBwZWFyLCBkb25lKSA9PiB7XG4gICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBpc0FwcGVhciA/IGFwcGVhclRvQ2xhc3MgOiBlbnRlclRvQ2xhc3MpO1xuICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgaXNBcHBlYXIgPyBhcHBlYXJBY3RpdmVDbGFzcyA6IGVudGVyQWN0aXZlQ2xhc3MpO1xuICAgIGRvbmUgJiYgZG9uZSgpO1xuICB9O1xuICBjb25zdCBmaW5pc2hMZWF2ZSA9IChlbCwgZG9uZSkgPT4ge1xuICAgIGVsLl9pc0xlYXZpbmcgPSBmYWxzZTtcbiAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIGxlYXZlRnJvbUNsYXNzKTtcbiAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIGxlYXZlVG9DbGFzcyk7XG4gICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBsZWF2ZUFjdGl2ZUNsYXNzKTtcbiAgICBkb25lICYmIGRvbmUoKTtcbiAgfTtcbiAgY29uc3QgbWFrZUVudGVySG9vayA9IChpc0FwcGVhcikgPT4ge1xuICAgIHJldHVybiAoZWwsIGRvbmUpID0+IHtcbiAgICAgIGNvbnN0IGhvb2sgPSBpc0FwcGVhciA/IG9uQXBwZWFyIDogb25FbnRlcjtcbiAgICAgIGNvbnN0IHJlc29sdmUgPSAoKSA9PiBmaW5pc2hFbnRlcihlbCwgaXNBcHBlYXIsIGRvbmUpO1xuICAgICAgY2FsbEhvb2soaG9vaywgW2VsLCByZXNvbHZlXSk7XG4gICAgICBuZXh0RnJhbWUoKCkgPT4ge1xuICAgICAgICByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIGlzQXBwZWFyID8gYXBwZWFyRnJvbUNsYXNzIDogZW50ZXJGcm9tQ2xhc3MpO1xuICAgICAgICBhZGRUcmFuc2l0aW9uQ2xhc3MoZWwsIGlzQXBwZWFyID8gYXBwZWFyVG9DbGFzcyA6IGVudGVyVG9DbGFzcyk7XG4gICAgICAgIGlmICghaGFzRXhwbGljaXRDYWxsYmFjayhob29rKSkge1xuICAgICAgICAgIHdoZW5UcmFuc2l0aW9uRW5kcyhlbCwgdHlwZSwgZW50ZXJEdXJhdGlvbiwgcmVzb2x2ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH07XG4gIH07XG4gIHJldHVybiBleHRlbmQoYmFzZVByb3BzLCB7XG4gICAgb25CZWZvcmVFbnRlcihlbCkge1xuICAgICAgY2FsbEhvb2sob25CZWZvcmVFbnRlciwgW2VsXSk7XG4gICAgICBhZGRUcmFuc2l0aW9uQ2xhc3MoZWwsIGVudGVyRnJvbUNsYXNzKTtcbiAgICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgZW50ZXJBY3RpdmVDbGFzcyk7XG4gICAgfSxcbiAgICBvbkJlZm9yZUFwcGVhcihlbCkge1xuICAgICAgY2FsbEhvb2sob25CZWZvcmVBcHBlYXIsIFtlbF0pO1xuICAgICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBhcHBlYXJGcm9tQ2xhc3MpO1xuICAgICAgYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBhcHBlYXJBY3RpdmVDbGFzcyk7XG4gICAgfSxcbiAgICBvbkVudGVyOiBtYWtlRW50ZXJIb29rKGZhbHNlKSxcbiAgICBvbkFwcGVhcjogbWFrZUVudGVySG9vayh0cnVlKSxcbiAgICBvbkxlYXZlKGVsLCBkb25lKSB7XG4gICAgICBlbC5faXNMZWF2aW5nID0gdHJ1ZTtcbiAgICAgIGNvbnN0IHJlc29sdmUgPSAoKSA9PiBmaW5pc2hMZWF2ZShlbCwgZG9uZSk7XG4gICAgICBhZGRUcmFuc2l0aW9uQ2xhc3MoZWwsIGxlYXZlRnJvbUNsYXNzKTtcbiAgICAgIGFkZFRyYW5zaXRpb25DbGFzcyhlbCwgbGVhdmVBY3RpdmVDbGFzcyk7XG4gICAgICBmb3JjZVJlZmxvdygpO1xuICAgICAgbmV4dEZyYW1lKCgpID0+IHtcbiAgICAgICAgaWYgKCFlbC5faXNMZWF2aW5nKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJlbW92ZVRyYW5zaXRpb25DbGFzcyhlbCwgbGVhdmVGcm9tQ2xhc3MpO1xuICAgICAgICBhZGRUcmFuc2l0aW9uQ2xhc3MoZWwsIGxlYXZlVG9DbGFzcyk7XG4gICAgICAgIGlmICghaGFzRXhwbGljaXRDYWxsYmFjayhvbkxlYXZlKSkge1xuICAgICAgICAgIHdoZW5UcmFuc2l0aW9uRW5kcyhlbCwgdHlwZSwgbGVhdmVEdXJhdGlvbiwgcmVzb2x2ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgY2FsbEhvb2sob25MZWF2ZSwgW2VsLCByZXNvbHZlXSk7XG4gICAgfSxcbiAgICBvbkVudGVyQ2FuY2VsbGVkKGVsKSB7XG4gICAgICBmaW5pc2hFbnRlcihlbCwgZmFsc2UpO1xuICAgICAgY2FsbEhvb2sob25FbnRlckNhbmNlbGxlZCwgW2VsXSk7XG4gICAgfSxcbiAgICBvbkFwcGVhckNhbmNlbGxlZChlbCkge1xuICAgICAgZmluaXNoRW50ZXIoZWwsIHRydWUpO1xuICAgICAgY2FsbEhvb2sob25BcHBlYXJDYW5jZWxsZWQsIFtlbF0pO1xuICAgIH0sXG4gICAgb25MZWF2ZUNhbmNlbGxlZChlbCkge1xuICAgICAgZmluaXNoTGVhdmUoZWwpO1xuICAgICAgY2FsbEhvb2sob25MZWF2ZUNhbmNlbGxlZCwgW2VsXSk7XG4gICAgfVxuICB9KTtcbn1cbmZ1bmN0aW9uIG5vcm1hbGl6ZUR1cmF0aW9uKGR1cmF0aW9uKSB7XG4gIGlmIChkdXJhdGlvbiA9PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH0gZWxzZSBpZiAoaXNPYmplY3QoZHVyYXRpb24pKSB7XG4gICAgcmV0dXJuIFtOdW1iZXJPZihkdXJhdGlvbi5lbnRlciksIE51bWJlck9mKGR1cmF0aW9uLmxlYXZlKV07XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgbiA9IE51bWJlck9mKGR1cmF0aW9uKTtcbiAgICByZXR1cm4gW24sIG5dO1xuICB9XG59XG5mdW5jdGlvbiBOdW1iZXJPZih2YWwpIHtcbiAgY29uc3QgcmVzID0gdG9OdW1iZXIodmFsKTtcbiAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikpIHtcbiAgICBhc3NlcnROdW1iZXIocmVzLCBcIjx0cmFuc2l0aW9uPiBleHBsaWNpdCBkdXJhdGlvblwiKTtcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuZnVuY3Rpb24gYWRkVHJhbnNpdGlvbkNsYXNzKGVsLCBjbHMpIHtcbiAgY2xzLnNwbGl0KC9cXHMrLykuZm9yRWFjaCgoYykgPT4gYyAmJiBlbC5jbGFzc0xpc3QuYWRkKGMpKTtcbiAgKGVsW3Z0Y0tleV0gfHwgKGVsW3Z0Y0tleV0gPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldCgpKSkuYWRkKGNscyk7XG59XG5mdW5jdGlvbiByZW1vdmVUcmFuc2l0aW9uQ2xhc3MoZWwsIGNscykge1xuICBjbHMuc3BsaXQoL1xccysvKS5mb3JFYWNoKChjKSA9PiBjICYmIGVsLmNsYXNzTGlzdC5yZW1vdmUoYykpO1xuICBjb25zdCBfdnRjID0gZWxbdnRjS2V5XTtcbiAgaWYgKF92dGMpIHtcbiAgICBfdnRjLmRlbGV0ZShjbHMpO1xuICAgIGlmICghX3Z0Yy5zaXplKSB7XG4gICAgICBlbFt2dGNLZXldID0gdm9pZCAwO1xuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gbmV4dEZyYW1lKGNiKSB7XG4gIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgcmVxdW
15VzdEFuaW1hdGlvbkZyYW1lKGNiKTtcbiAgfSk7XG59XG5sZXQgZW5kSWQgPSAwO1xuZnVuY3Rpb24gd2hlblRyYW5zaXRpb25FbmRzKGVsLCBleHBlY3RlZFR5cGUsIGV4cGxpY2l0VGltZW91dCwgcmVzb2x2ZSkge1xuICBjb25zdCBpZCA9IGVsLl9lbmRJZCA9ICsrZW5kSWQ7XG4gIGNvbnN0IHJlc29sdmVJZk5vdFN0YWxlID0gKCkgPT4ge1xuICAgIGlmIChpZCA9PT0gZWwuX2VuZElkKSB7XG4gICAgICByZXNvbHZlKCk7XG4gICAgfVxuICB9O1xuICBpZiAoZXhwbGljaXRUaW1lb3V0KSB7XG4gICAgcmV0dXJuIHNldFRpbWVvdXQocmVzb2x2ZUlmTm90U3RhbGUsIGV4cGxpY2l0VGltZW91dCk7XG4gIH1cbiAgY29uc3QgeyB0eXBlLCB0aW1lb3V0LCBwcm9wQ291bnQgfSA9IGdldFRyYW5zaXRpb25JbmZvKGVsLCBleHBlY3RlZFR5cGUpO1xuICBpZiAoIXR5cGUpIHtcbiAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICB9XG4gIGNvbnN0IGVuZEV2ZW50ID0gdHlwZSArIFwiZW5kXCI7XG4gIGxldCBlbmRlZCA9IDA7XG4gIGNvbnN0IGVuZCA9ICgpID0+IHtcbiAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKGVuZEV2ZW50LCBvbkVuZCk7XG4gICAgcmVzb2x2ZUlmTm90U3RhbGUoKTtcbiAgfTtcbiAgY29uc3Qgb25FbmQgPSAoZSkgPT4ge1xuICAgIGlmIChlLnRhcmdldCA9PT0gZWwgJiYgKytlbmRlZCA+PSBwcm9wQ291bnQpIHtcbiAgICAgIGVuZCgpO1xuICAgIH1cbiAgfTtcbiAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgaWYgKGVuZGVkIDwgcHJvcENvdW50KSB7XG4gICAgICBlbmQoKTtcbiAgICB9XG4gIH0sIHRpbWVvdXQgKyAxKTtcbiAgZWwuYWRkRXZlbnRMaXN0ZW5lcihlbmRFdmVudCwgb25FbmQpO1xufVxuZnVuY3Rpb24gZ2V0VHJhbnNpdGlvbkluZm8oZWwsIGV4cGVjdGVkVHlwZSkge1xuICBjb25zdCBzdHlsZXMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbCk7XG4gIGNvbnN0IGdldFN0eWxlUHJvcGVydGllcyA9IChrZXkpID0+IChzdHlsZXNba2V5XSB8fCBcIlwiKS5zcGxpdChcIiwgXCIpO1xuICBjb25zdCB0cmFuc2l0aW9uRGVsYXlzID0gZ2V0U3R5bGVQcm9wZXJ0aWVzKGAke1RSQU5TSVRJT059RGVsYXlgKTtcbiAgY29uc3QgdHJhbnNpdGlvbkR1cmF0aW9ucyA9IGdldFN0eWxlUHJvcGVydGllcyhgJHtUUkFOU0lUSU9OfUR1cmF0aW9uYCk7XG4gIGNvbnN0IHRyYW5zaXRpb25UaW1lb3V0ID0gZ2V0VGltZW91dCh0cmFuc2l0aW9uRGVsYXlzLCB0cmFuc2l0aW9uRHVyYXRpb25zKTtcbiAgY29uc3QgYW5pbWF0aW9uRGVsYXlzID0gZ2V0U3R5bGVQcm9wZXJ0aWVzKGAke0FOSU1BVElPTn1EZWxheWApO1xuICBjb25zdCBhbmltYXRpb25EdXJhdGlvbnMgPSBnZXRTdHlsZVByb3BlcnRpZXMoYCR7QU5JTUFUSU9OfUR1cmF0aW9uYCk7XG4gIGNvbnN0IGFuaW1hdGlvblRpbWVvdXQgP
15SBnZXRUaW1lb3V0KGFuaW1hdGlvbkRlbGF5cywgYW5pbWF0aW9uRHVyYXRpb25zKTtcbiAgbGV0IHR5cGUgPSBudWxsO1xuICBsZXQgdGltZW91dCA9IDA7XG4gIGxldCBwcm9wQ291bnQgPSAwO1xuICBpZiAoZXhwZWN0ZWRUeXBlID09PSBUUkFOU0lUSU9OKSB7XG4gICAgaWYgKHRyYW5zaXRpb25UaW1lb3V0ID4gMCkge1xuICAgICAgdHlwZSA9IFRSQU5TSVRJT047XG4gICAgICB0aW1lb3V0ID0gdHJhbnNpdGlvblRpbWVvdXQ7XG4gICAgICBwcm9wQ291bnQgPSB0cmFuc2l0aW9uRHVyYXRpb25zLmxlbmd0aDtcbiAgICB9XG4gIH0gZWxzZSBpZiAoZXhwZWN0ZWRUeXBlID09PSBBTklNQVRJT04pIHtcbiAgICBpZiAoYW5pbWF0aW9uVGltZW91dCA+IDApIHtcbiAgICAgIHR5cGUgPSBBTklNQVRJT047XG4gICAgICB0aW1lb3V0ID0gYW5pbWF0aW9uVGltZW91dDtcbiAgICAgIHByb3BDb3VudCA9IGFuaW1hdGlvbkR1cmF0aW9ucy5sZW5ndGg7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRpbWVvdXQgPSBNYXRoLm1heCh0cmFuc2l0aW9uVGltZW91dCwgYW5pbWF0aW9uVGltZW91dCk7XG4gICAgdHlwZSA9IHRpbWVvdXQgPiAwID8gdHJhbnNpdGlvblRpbWVvdXQgPiBhbmltYXRpb25UaW1lb3V0ID8gVFJBTlNJVElPTiA6IEFOSU1BVElPTiA6IG51bGw7XG4gICAgcHJvcENvdW50ID0gdHlwZSA/IHR5cGUgPT09IFRSQU5TSVRJT04gPyB0cmFuc2l0aW9uRHVyYXRpb25zLmxlbmd0aCA6IGFuaW1hdGlvbkR1cmF0aW9ucy5sZW5ndGggOiAwO1xuICB9XG4gIGNvbnN0IGhhc1RyYW5zZm9ybSA9IHR5cGUgPT09IFRSQU5TSVRJT04gJiYgL1xcYih0cmFuc2Zvcm18YWxsKSgsfCQpLy50ZXN0KFxuICAgIGdldFN0eWxlUHJvcGVydGllcyhgJHtUUkFOU0lUSU9OfVByb3BlcnR5YCkudG9TdHJpbmcoKVxuICApO1xuICByZXR1cm4ge1xuICAgIHR5cGUsXG4gICAgdGltZW91dCxcbiAgICBwcm9wQ291bnQsXG4gICAgaGFzVHJhbnNmb3JtXG4gIH07XG59XG5mdW5jdGlvbiBnZXRUaW1lb3V0KGRlbGF5cywgZHVyYXRpb25zKSB7XG4gIHdoaWxlIChkZWxheXMubGVuZ3RoIDwgZHVyYXRpb25zLmxlbmd0aCkge1xuICAgIGRlbGF5cyA9IGRlbGF5cy5jb25jYXQoZGVsYXlzKTtcbiAgfVxuICByZXR1cm4gTWF0aC5tYXgoLi4uZHVyYXRpb25zLm1hcCgoZCwgaSkgPT4gdG9NcyhkKSArIHRvTXMoZGVsYXlzW2ldKSkpO1xufVxuZnVuY3Rpb24gdG9NcyhzKSB7XG4gIGlmIChzID09PSBcImF1dG9cIikgcmV0dXJuIDA7XG4gIHJldHVybiBOdW1iZXIocy5zbGljZSgwLCAtMSkucmVwbGFjZShcIixcIiwgXCIuXCIpKSAqIDFlMztcbn1cbmZ1bmN0aW9uIGZvcmNlUmVmbG93KCkge1xuICByZXR1cm4gZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQ7XG59XG5cbmZ1bmN0aW9uIHBhdGNoQ2xhc3MoZWwsIHZhbHVlLCBpc1NWRykge1xuICBjb25zdCB0cmFuc2l0aW9uQ2xhc3NlcyA9IGVsW3Z0Y0tleV07XG4gIGlmICh0cmFuc2l0aW9uQ2xhc3Nlcykge1xuICAgIHZhbHVlID0gKHZhbHVlID8gW3ZhbHVlLCAuLi50cmFuc2l0aW9uQ2xhc3Nlc10gOiBbLi4udHJhbnNpdGlvbkNsYXNzZXNdKS5qb2luKFwiIFwiKTtcbiAgfVxuICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgIGVsLnJlbW92ZUF0dHJpYnV0ZShcImNsYXNzXCIpO1xuICB9IGVsc2UgaWYgKGlzU1ZHKSB7XG4gICAgZWwuc2V0QXR0cmlidXRlKFwiY2xhc3NcIiwgdmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIGVsLmNsYXNzTmFtZSA9IHZhbHVlO1xuICB9XG59XG5cbmNvbnN0IHZTaG93T3JpZ2luYWxEaXNwbGF5ID0gU3ltYm9sKFwiX3ZvZFwiKTtcbmNvbnN0IHZTaG93SGlkZGVuID0gU3ltYm9sKFwiX3ZzaFwiKTtcbmNvbnN0IHZTaG93ID0ge1xuICBiZWZvcmVNb3VudChlbCwgeyB2YWx1ZSB9LCB7IHRyYW5zaXRpb24gfSkge1xuICAgIGVsW3ZTaG93T3JpZ2luYWxEaXNwbGF5XSA9IGVsLnN0eWxlLmRpc3BsYXkgPT09IFwibm9uZVwiID8gXCJcIiA6IGVsLnN0eWxlLmRpc3BsYXk7XG4gICAgaWYgKHRyYW5zaXRpb24gJiYgdmFsdWUpIHtcbiAgICAgIHRyYW5zaXRpb24uYmVmb3JlRW50ZXIoZWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXREaXNwbGF5KGVsLCB2YWx1ZSk7XG4gICAgfVxuICB9LFxuICBtb3VudGVkKGVsLCB7IHZhbHVlIH0sIHsgdHJhbnNpdGlvbiB9KSB7XG4gICAgaWYgKHRyYW5zaXRpb24gJiYgdmFsdWUpIHtcbiAgICAgIHRyYW5zaXRpb24uZW50ZXIoZWwpO1xuICAgIH1cbiAgfSxcbiAgdXBkYXRlZChlbCwgeyB2YWx1ZSwgb2xkVmFsdWUgfSwgeyB0cmFuc2l0aW9uIH0pIHtcbiAgICBpZiAoIXZhbHVlID09PSAhb2xkVmFsdWUpIHJldHVybjtcbiAgICBpZiAodHJhbnNpdGlvbikge1xuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIHRyYW5zaXRpb24uYmVmb3JlRW50ZXIoZWwpO1xuICAgICAgICBzZXREaXNwbGF5KGVsLCB0cnVlKTtcbiAgICAgICAgdHJhbnNpdGlvbi5lbnRlcihlbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0cmFuc2l0aW9uLmxlYXZlKGVsLCAoKSA9PiB7XG4gICAgICAgICAgc2V0RGlzcGxheShlbCwgZmFsc2UpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc2V0RGlzcGxheShlbCwgdmFsdWUpO1xuICAgIH1cbiAgfSxcbiAgYmVmb3JlVW5tb3VudChlbCwgeyB2YWx1ZSB9KSB7XG4gICAgc2V0RGlzcGxheShlbCwgdmFsdWUpO1xuICB9XG59O1xuaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikpIHtcbiAgdlNob3cubmFtZSA9IFwic2hvd1wiO1xufVxuZnVuY3Rpb24gc2V0RGlzcGxheShlbCwgdmFsdWUpIHtcbiAgZWwuc3R5bGUuZGlzcGxheSA9IHZhbHVlID8gZWxbdlNob3dPcmlnaW5hbERpc3BsYXldIDogXCJub25lXCI7XG4gIGVsW3ZTaG93SGlkZGVuXSA9ICF2YWx1ZTtcbn1cbmZ1bmN0aW9uIGluaXRWU2hvd0ZvclNTUigpIHtcbiAgdlNob3cuZ2V0U1NSUHJvcHMgPSAoeyB2YWx1ZSB9KSA9PiB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuIHsgc3R5bGU6IHsgZGlzcGxheTogXCJub25lXCIgfSB9O1xuICAgIH1cbiAgfTtcbn1cblxuY29uc3QgQ1NTX1ZBUl9URVhUID0gU3ltYm9sKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgPyBcIkNTU19WQVJfVEVYVFwiIDogXCJcIik7XG5mdW5jdGlvbiB1c2VDc3NWYXJzKGdldH
15Rlcikge1xuICBjb25zdCBpbnN0YW5jZSA9IGdldEN1cnJlbnRJbnN0YW5jZSgpO1xuICBpZiAoIWluc3RhbmNlKSB7XG4gICAgISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSAmJiB3YXJuKGB1c2VDc3NWYXJzIGlzIGNhbGxlZCB3aXRob3V0IGN1cnJlbnQgYWN0aXZlIGNvbXBvbmVudCBpbnN0YW5jZS5gKTtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgdXBkYXRlVGVsZXBvcnRzID0gaW5zdGFuY2UudXQgPSAodmFycyA9IGdldHRlcihpbnN0YW5jZS5wcm94eSkpID0+IHtcbiAgICBBcnJheS5mcm9tKFxuICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgW2RhdGEtdi1vd25lcj1cIiR7aW5zdGFuY2UudWlkfVwiXWApXG4gICAgKS5mb3JFYWNoKChub2RlKSA9PiBzZXRWYXJzT25Ob2RlKG5vZGUsIHZhcnMpKTtcbiAgfTtcbiAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikpIHtcbiAgICBpbnN0YW5jZS5nZXRDc3NWYXJzID0gKCkgPT4gZ2V0dGVyKGluc3RhbmNlLnByb3h5KTtcbiAgfVxuICBjb25zdCBzZXRWYXJzID0gKCkgPT4ge1xuICAgIGNvbnN0IHZhcnMgPSBnZXR0ZXIoaW5zdGFuY2UucHJveHkpO1xuICAgIHNldFZhcnNPblZOb2RlKGluc3RhbmNlLnN1YlRyZWUsIHZhcnMpO1xuICAgIHVwZGF0ZVRlbGVwb3J0cyh2YXJzKTtcbiAgfTtcbiAgb25CZWZvcmVNb3VudCgoKSA9PiB7XG4gICAgd2F0Y2hQb3N0RWZmZWN0KHNldFZhcnMpO1xuICB9KTtcbiAgb25Nb3VudGVkKCgpID0+IHtcbiAgICBjb25zdCBvYiA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKHNldFZhcnMpO1xuICAgIG9iLm9ic2VydmUoaW5zdGFuY2Uuc3ViVHJlZS5lbC5wYXJlbnROb2RlLCB7IGNoaWxkTGlzdDogdHJ1ZSB9KTtcbiAgICBvblVubW91bnRlZCgoKSA9PiBvYi5kaXNjb25uZWN0KCkpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIHNldFZhcnNPblZOb2RlKHZub2RlLCB2YXJzKSB7XG4gIGlmICh2bm9kZS5zaGFwZUZsYWcgJiAxMjgpIHtcbiAgICBjb25zdCBzdXNwZW5zZSA9IHZub2RlLnN1c3BlbnNlO1xuICAgIHZub2RlID0gc3VzcGVuc2UuYWN0aXZlQnJhbmNoO1xuICAgIGlmIChzdXNwZW5zZS5wZW5kaW5nQnJhbmNoICYmICFzdXNwZW5zZS5pc0h5ZHJhdGluZykge1xuICAgICAgc3VzcGVuc2UuZWZmZWN0cy5wdXNoKCgpID0+IHtcbiAgICAgICAgc2V0VmFyc09uVk5vZGUoc3VzcGVuc2UuYWN0aXZlQnJhbmNoLCB2YXJzKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICB3aGlsZSAodm5vZGUuY29tcG9uZW50KSB7XG4gICAgdm5vZGUgPSB2bm9kZS5jb21wb25lbnQuc3ViVHJlZTtcbiAgfVxuICBpZiAodm5vZGUuc2hhcGVGbGFnICYgMSAmJiB2bm9kZS5lbCkge1xuICAgIHNldFZhcnNPbk5vZGUodm5vZGUuZWwsIHZhcnMpO1xuICB9IGVsc2UgaWYgKHZub2RlLnR5cGUgPT09IEZyYWdtZW50KSB7XG4gICAgdm5vZGUuY2hpbGRyZW4uZm9yRWFjaCgoYykgPT4gc2V0VmFyc09uVk5vZGUoYywgdmFycykpO1xuICB9IGVsc2UgaWYgKHZub2RlLnR5cGUgPT09IFN0YXRpYykge1xuICAgIGxldCB7IGVsLCBhbmNob3IgfSA9IHZub2RlO1xuICAgIHdoaWxlIChlbCkge1xuICAgICAgc2V0VmFyc09uTm9kZShlbCwgdmFycyk7XG4gICAgICBpZiAoZWwgPT09IGFuY2hvcikgYnJlYWs7XG4gICAgICBlbCA9IGVsLm5leHRTaWJsaW5nO1xuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gc2V0VmFyc09uTm9kZShlbCwgdmFycykge1xuICBpZiAoZWwubm9kZVR5cGUgPT09IDEpIHtcbiAgICBjb25zdCBzdHlsZSA9IGVsLnN0eWxlO1xuICAgIGxldCBjc3NUZXh0ID0gXCJcIjtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiB2YXJzKSB7XG4gICAgICBzdHlsZS5zZXRQcm9wZXJ0eShgLS0ke2tleX1gLCB2YXJzW2tleV0pO1xuICAgICAgY3NzVGV4dCArPSBgLS0ke2tleX06ICR7dmFyc1trZXldfTtgO1xuICAgIH1cbiAgICBzdHlsZVtDU1NfVkFSX1RFWFRdID0gY3NzVGV4dDtcbiAgfVxufVxuXG5jb25zdCBkaXNwbGF5UkUgPSAvKF58OylcXHMqZGlzcGxheVxccyo6LztcbmZ1bmN0aW9uIHBhdGNoU3R5bGUoZWwsIHByZXYsIG5leHQpIHtcbiAgY29uc3Qgc3R5bGUgPSBlbC5zdHlsZTtcbiAgY29uc3QgaXNDc3NTdHJpbmcgPSBpc1N0cmluZyhuZXh0KTtcbiAgbGV0IGhhc0NvbnRyb2xsZWREaXNwbGF5ID0gZmFsc2U7XG4gIGlmIChuZXh0ICYmICFpc0Nzc1N0cmluZykge1xuICAgIGlmIChwcmV2KSB7XG4gICAgICBpZiAoIWlzU3RyaW5nKHByZXYpKSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHByZXYpIHtcbiAgICAgICAgICBpZiAobmV4dFtrZXldID09IG51bGwpIHtcbiAgICAgICAgICAgIHNldFN0eWxlKHN0eWxlLCBrZXksIFwiXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9yIChjb25zdCBwcmV2U3R5bGUgb2YgcHJldi5zcGxpdChcIjtcIikpIHtcbiAgICAgICAgICBjb25zdCBrZXkgPSBwcmV2U3R5bGUuc2xpY2UoMCwgcHJldlN0eWxlLmluZGV4T2YoXCI6XCIpKS50cmltKCk7XG4gICAgICAgICAgaWYgKG5leHRba2V5XSA9PSBudWxsKSB7XG4gICAgICAgICAgICBzZXRTdHlsZShzdHlsZSwga2V5LCBcIlwiKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChjb25zdCBrZXkgaW4gbmV4dCkge1xuICAgICAgaWYgKGtleSA9PT0gXCJkaXNwbGF5XCIpIHtcbiAgICAgICAgaGFzQ29udHJvbGxlZERpc3BsYXkgPSB0cnVlO1xuICAgICAgfVxuICAgICAgc2V0U3R5bGUoc3R5bGUsIGtleSwgbmV4dFtrZXldKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKGlzQ3NzU3RyaW5nKSB7XG4gICAgICBpZiAocHJldiAhPT0gbm
15V4dCkge1xuICAgICAgICBjb25zdCBjc3NWYXJUZXh0ID0gc3R5bGVbQ1NTX1ZBUl9URVhUXTtcbiAgICAgICAgaWYgKGNzc1ZhclRleHQpIHtcbiAgICAgICAgICBuZXh0ICs9IFwiO1wiICsgY3NzVmFyVGV4dDtcbiAgICAgICAgfVxuICAgICAgICBzdHlsZS5jc3NUZXh0ID0gbmV4dDtcbiAgICAgICAgaGFzQ29udHJvbGxlZERpc3BsYXkgPSBkaXNwbGF5UkUudGVzdChuZXh0KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHByZXYpIHtcbiAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZShcInN0eWxlXCIpO1xuICAgIH1cbiAgfVxuICBpZiAodlNob3dPcmlnaW5hbERpc3BsYXkgaW4gZWwpIHtcbiAgICBlbFt2U2hvd09yaWdpbmFsRGlzcGxheV0gPSBoYXNDb250cm9sbGVkRGlzcGxheSA/IHN0eWxlLmRpc3BsYXkgOiBcIlwiO1xuICAgIGlmIChlbFt2U2hvd0hpZGRlbl0pIHtcbiAgICAgIHN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcbiAgICB9XG4gIH1cbn1cbmNvbnN0IHNlbWljb2xvblJFID0gL1teXFxcXF07XFxzKiQvO1xuY29uc3QgaW1wb3J0YW50UkUgPSAvXFxzKiFpbXBvcnRhbnQkLztcbmZ1bmN0aW9uIHNldFN0eWxlKHN0eWxlLCBuYW1lLCB2YWwpIHtcbiAgaWYgKGlzQXJyYXkodmFsKSkge1xuICAgIHZhbC5mb3JFYWNoKCh2KSA9PiBzZXRTdHlsZShzdHlsZSwgbmFtZSwgdikpO1xuICB9IGVsc2Uge1xuICAgIGlmICh2YWwgPT0gbnVsbCkgdmFsID0gXCJcIjtcbiAgICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSkge1xuICAgICAgaWYgKHNlbWljb2xvblJFLnRlc3QodmFsKSkge1xuICAgICAgICB3YXJuKFxuICAgICAgICAgIGBVbmV4cGVjdGVkIHNlbWljb2xvbiBhdCB0aGUgZW5kIG9mICcke25hbWV9JyBzdHlsZSB2YWx1ZTogJyR7dmFsfSdgXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChuYW1lLnN0YXJ0c1dpdGgoXCItLVwiKSkge1xuICAgICAgc3R5bGUuc2V0UHJvcGVydHkobmFtZSwgdmFsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcHJlZml4ZWQgPSBhdXRvUHJlZml4KHN0eWxlLCBuYW1lKTtcbiAgICAgIGlmIChpbXBvcnRhbnRSRS50ZXN0KHZhbCkpIHtcbiAgICAgICAgc3R5bGUuc2V0UHJvcGVydHkoXG4gICAgICAgICAgaHlwaGVuYXRlKHByZWZpeGVkKSxcbiAgICAgICAgICB2YWwucmVwbGFjZShpbXBvcnRhbnRSRSwgXCJcIiksXG4gICAgICAgICAgXCJpbXBvcnRhbnRcIlxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3R5bGVbcHJlZml4ZWRdID0gdmFsO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgcHJlZml4ZXMgPSBbXCJXZWJraXRcIiwgXCJNb3pcIiwgXCJtc1wiXTtcbmNvbnN0IHByZWZpeENhY2hlID0ge307XG5mdW5jdGlvbiBhdXRvUHJlZml4KHN0eWxlLCByYXdOYW1lKSB7XG4gIGNvbnN0IGNhY2hlZCA9IHByZWZpeENhY2hlW3Jhd05hbWVdO1xuICBpZiAoY2FjaGVkKSB7XG4gICAgcmV0dXJuIGNhY2hlZDtcbiAgfVxuICBsZXQgbmFtZSA9IGNhbWVsaXplKHJhd05hbWUpO1xuICBpZiAobmFtZSAhPT0gXCJmaWx0ZXJcIiAmJiBuYW1lIGluIHN0eWxlKSB7XG4gICAgcmV0dXJuIHByZWZpeENhY2hlW3Jhd05hbWVdID0gbmFtZTtcbiAgfVxuICBuYW1lID0gY2FwaXRhbGl6ZShuYW1lKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcmVmaXhlcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHByZWZpeGVkID0gcHJlZml4ZXNbaV0gKyBuYW1lO1xuICAgIGlmIChwcmVmaXhlZCBpbiBzdHlsZSkge1xuICAgICAgcmV0dXJuIHByZWZpeENhY2hlW3Jhd05hbWVdID0gcHJlZml4ZWQ7XG4gICAgfVxuICB9XG4gIHJldHVybiByYXdOYW1lO1xufVxuXG5jb25zdCB4bGlua05TID0gXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCI7XG5mdW5jdGlvbiBwYXRjaEF0dHIoZWwsIGtleSwgdmFsdWUsIGlzU1ZHLCBpbnN0YW5jZSwgaXNCb29sZWFuID0gaXNTcGVjaWFsQm9vbGVhbkF0dHIoa2V5KSkge1xuICBpZiAoaXNTVkcgJiYga2V5LnN0YXJ0c1dpdGgoXCJ4bGluazpcIikpIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgZWwucmVtb3ZlQXR0cmlidXRlTlMoeGxpbmtOUywga2V5LnNsaWNlKDYsIGtleS5sZW5ndGgpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWwuc2V0QXR0cmlidXRlTlMoeGxpbmtOUywga2V5LCB2YWx1ZSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsIHx8IGlzQm9vbGVhbiAmJiAhaW5jbHVkZUJvb2xlYW5BdHRyKHZhbHVlKSkge1xuICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKGtleSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsLnNldEF0dHJpYnV0ZShcbiAgICAgICAga2V5LFxuICAgICAgICBpc0Jvb2xlYW4gPyBcIlwiIDogaXNTeW1ib2wodmFsdWUpID8gU3RyaW5nKHZhbHVlKSA6IHZhbHVlXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBwYXRjaERPTVByb3AoZWwsIGtleSwgdmFsdWUsIHBhcmVudENvbXBvbmVudCkge1xuICBpZiAoa2V5ID09PSBcImlubmVySFRNTFwiIHx8IGtleSA9PT0gXCJ0ZXh0Q29udGVudFwiKSB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHJldHVybjtcbiAgICBlbFtrZXldID0gdmFsdWU7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IHRhZyA9IGVsLnRhZ05hbWU7XG4gIGlmIChrZXkgPT09IFwidmFsdWVcIiAmJiB0YWcgIT09IFwiUFJPR1JFU1NcIiAmJiAvLyBjdXN0b20gZWxlbWVudHMgbWF5IHVzZSBfdmFsdWUgaW50ZXJuYWxseVxuICAhdGFnLmluY2x1ZGVzKFwiLVwiKSkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGFnID09PSBcIk9QVElPTlwiID8gZWwuZ2V0QXR0cmlidXRlKFwidmFsdWVcIikgfHwgXCJcIiA6IGVsLnZhbHVlO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gdmFsdWUgPT0gbnVsbCA/IFwiXCIgOiBTdHJpbmcodmFsdWUpO1xuICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUgfHwgIShcIl92YWx1ZVwiIGluIGVsKSkge1xuICAgICAgZWwudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICB9XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZShrZXkpO1xuICAgIH1cbiAgICBlbC5fdmFsdWUgPSB2YWx1ZTtcbiAgICByZXR1cm47XG4gIH1cbiAgbGV0IG5lZWRSZW1vdmUgPSBmYWxzZTtcbiAgaWYgKHZhbHVlID09PSBcIlwiIHx8IHZhbHVlID09IG51bGwpIHtcbiAgICBjb25zdCB0eXBlID0gdHlwZW9mIGVsW2tleV07XG4gICAgaWYgKHR5cGUgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgICB2YWx1ZSA9IGluY2x1ZGVCb29sZWFuQXR0cih2YWx1ZSk7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSA9PSBudWxsICYmIHR5cGUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHZhbHVlID0gXCJcIjtcbiAgICAgIG5lZWRSZW1vdmUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gXCJudW1iZXJcIikge1xuICAgICAgdmFsdWUgPSAwO1xuICAgICAgbmVlZFJlbW92ZSA9IHRydWU7XG4gICAgfVxuICB9XG4gI
15HRyeSB7XG4gICAgZWxba2V5XSA9IHZhbHVlO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgJiYgIW5lZWRSZW1vdmUpIHtcbiAgICAgIHdhcm4oXG4gICAgICAgIGBGYWlsZWQgc2V0dGluZyBwcm9wIFwiJHtrZXl9XCIgb24gPCR7dGFnLnRvTG93ZXJDYXNlKCl9PjogdmFsdWUgJHt2YWx1ZX0gaXMgaW52YWxpZC5gLFxuICAgICAgICBlXG4gICAgICApO1xuICAgIH1cbiAgfVxuICBuZWVkUmVtb3ZlICYmIGVsLnJlbW92ZUF0dHJpYnV0ZShrZXkpO1xufVxuXG5mdW5jdGlvbiBhZGRFdmVudExpc3RlbmVyKGVsLCBldmVudCwgaGFuZGxlciwgb3B0aW9ucykge1xuICBlbC5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCBoYW5kbGVyLCBvcHRpb25zKTtcbn1cbmZ1bmN0aW9uIHJlbW92ZUV2ZW50TGlzdGVuZXIoZWwsIGV2ZW50LCBoYW5kbGVyLCBvcHRpb25zKSB7XG4gIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQsIGhhbmRsZXIsIG9wdGlvbnMpO1xufVxuY29uc3QgdmVpS2V5ID0gU3ltYm9sKFwiX3ZlaVwiKTtcbmZ1bmN0aW9uIHBhdGNoRXZlbnQoZWwsIHJhd05hbWUsIHByZXZWYWx1ZSwgbmV4dFZhbHVlLCBpbnN0YW5jZSA9IG51bGwpIHtcbiAgY29uc3QgaW52b2tlcnMgPSBlbFt2ZWlLZXldIHx8IChlbFt2ZWlLZXldID0ge30pO1xuICBjb25zdCBleGlzdGluZ0ludm9rZXIgPSBpbnZva2Vyc1tyYXdOYW1lXTtcbiAgaWYgKG5leHRWYWx1ZSAmJiBleGlzdGluZ0ludm9rZXIpIHtcbiAgICBleGlzdGluZ0ludm9rZXIudmFsdWUgPSAhIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpID8gc2FuaXRpemVFdmVudFZhbHVlKG5leHRWYWx1ZSwgcmF3TmFtZSkgOiBuZXh0VmFsdWU7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgW25hbWUsIG9wdGlvbnNdID0gcGFyc2VOYW1lKHJhd05hbWUpO1xuICAgIGlmIChuZXh0VmFsdWUpIHtcbiAgICAgIGNvbnN0IGludm9rZXIgPSBpbnZva2Vyc1tyYXdOYW1lXSA9IGNyZWF0ZUludm9rZXIoXG4gICAgICAgICEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgPyBzYW5pdGl6ZUV2ZW50VmFsdWUobmV4dFZhbHVlLCByYXdOYW1lKSA6IG5leHRWYWx1ZSxcbiAgICAgICAgaW5zdGFuY2VcbiAgICAgICk7XG4gICAgICBhZGRFdmVudExpc3RlbmVyKGVsLCBuYW1lLCBpbnZva2VyLCBvcHRpb25zKTtcbiAgICB9IGVsc2UgaWYgKGV4aXN0aW5nSW52b2tlcikge1xuICAgICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcihlbCwgbmFtZSwgZXhpc3RpbmdJbnZva2VyLCBvcHRpb25zKTtcbiAgICAgIGludm9rZXJzW3Jhd05hbWVdID0gdm9pZCAwO1xuICAgIH1cbiAgfVxufVxuY29uc3Qgb3B0aW9uc01vZGlmaWVyUkUgPSAvKD86T25jZXxQYXNzaXZlfENhcHR1cmUpJC87XG5mdW5jdGlvbiBwYXJzZU5hbWUobmFtZSkge1xuICBsZXQgb3B0aW9ucztcbiAgaWYgKG9wdGlvbnNNb2RpZmllclJFLnRlc3QobmFtZSkpIHtcbiAgICBvcHRpb25zID0ge307XG4gICAgbGV0IG07XG4gICAgd2hpbGUgKG0gPSBuYW1lLm1hdGNoKG9wdGlvbnNNb2RpZmllclJFKSkge1xuICAgICAgbmFtZSA9IG5hbWUuc2xpY2UoMCwgbmFtZS5sZW5ndGggLSBtWzBdLmxlbmd0aCk7XG4gICAgICBvcHRpb25zW21bMF0udG9Mb3dlckNhc2UoKV0gPSB0cnVlO1xuICAgIH1cbiAgfVxuICBjb25zdCBldmVudCA9IG5hbWVbMl0gPT09IFwiOlwiID8gbmFtZS5zbGljZSgzKSA6IGh5cGhlbmF0ZShuYW1lLnNsaWNlKDIpKTtcbiAgcmV0dXJuIFtldmVudCwgb3B0aW9uc107XG59XG5sZXQgY2FjaGVkTm93ID0gMDtcbmNvbnN0IHAgPSAvKiBAX19QVVJFX18gKi8gUHJvbWlzZS5yZXNvbHZlKCk7XG5jb25zdCBnZXROb3cgPSAoKSA9PiBjYWNoZWROb3cgfHwgKHAudGhlbigoKSA9PiBjYWNoZWROb3cgPSAwKSwgY2FjaGVkTm93ID0gRGF0ZS5ub3coKSk7XG5mdW5jdGlvbiBjcmVhdGVJbnZva2VyKGluaXRpYWxWYWx1ZSwgaW5zdGFuY2UpIHtcbiAgY29uc3QgaW52b2tlciA9IChlKSA9PiB7XG4gICAgaWYgKCFlLl92dHMpIHtcbiAgICAgIGUuX3Z0cyA9IERhdGUubm93KCk7XG4gICAgfSBlbHNlIGlmIChlLl92dHMgPD0gaW52b2tlci5hdHRhY2hlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjYWxsV2l0aEFzeW5jRXJyb3JIYW5kbGluZyhcbiAgICAgIHBhdGNoU3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKGUsIGludm9rZXIudmFsdWUpLFxuICAgICAgaW5zdGFuY2UsXG4gICAgICA1LFxuICAgICAgW2VdXG4gICAgKTtcbiAgfTtcbiAgaW52b2tlci52YWx1ZSA9IGluaXRpYWxWYWx1ZTtcbiAgaW52b2tlci5hdHRhY2hlZCA9IGdldE5vdygpO1xuICByZXR1cm4gaW52b2tlcjtcbn1cbmZ1bmN0aW9uIHNhbml0aXplRXZlbnRWYWx1ZSh2YWx1ZSwgcHJvcE5hbWUpIHtcbiAgaWYgKGlzRnVuY3Rpb24odmFsdWUpIHx8IGlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHdhcm4oXG4gICAgYFdyb25nIHR5cGUgcGFzc2VkIGFzIGV2ZW50IGhhbmRsZXIgdG8gJHtwcm9wTmFtZX0gLSBkaWQgeW91IGZvcmdldCBAIG9yIDogaW4gZnJvbnQgb2YgeW91ciBwcm9wP1xuRXhwZWN0ZWQgZnVuY3Rpb24gb3IgYXJyYXkgb2YgZnVuY3Rpb25zLCByZWNlaXZlZCB0eXBlICR7dHlwZW9mIHZhbHVlfS5gXG4gICk7XG4gIHJldHVybiBOT09QO1xufVxuZnVuY3Rpb24gcGF0Y2hTdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oZSwgdmFsdWUpIHtcbiAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgY29uc3Qgb3JpZ2luYWxTdG9wID0gZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb247XG4gICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24gPSAoKSA9PiB7XG4gICAgICBvcmlnaW5hbFN0b3AuY2FsbChlKTtcbiAgICAgIGUuX3N0b3BwZWQgPSB0cnVlO1xuICAgIH07XG4gICAgcmV0dXJuIHZhbHVlLm1hcChcbiAgICAgIChmbikgPT4gKGUyKSA9PiAhZTIuX3N0b3BwZWQgJiYgZm4gJiYgZm4oZTIpXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuY29uc3QgaXNOYXRpdmVPbiA9IChrZXkpID0+IGtleS5jaGFyQ29kZUF0KDApID09PSAxMTEgJiYga2V5LmNoYXJDb2RlQXQoMSkgPT09IDExMCAmJiAvLyBsb3dlcmNhc2UgbGV0dGVyXG5rZXkuY2hhckNvZGVBdCgyKSA+IDk2ICYmIGtleS5jaGFyQ29kZUF0KDIpIDwgMTIzO1xuY29uc3QgcGF0Y2hQcm9wID0gKGVsLCBrZXksIHByZXZWYWx1ZSwgbmV4dFZhbHVlLCBuYW1lc3BhY2UsIHBhcmVudENvbXBvbmVudCkgPT4ge1xuICBjb25zdCBpc1NWRyA9IG5hbWVzcGFjZSA9PT0gXCJzdmdcIjtcbiAgaWYgKGtleSA9PT0gXCJjbGFzc1wiKSB7XG4gICAgcGF0Y2hDbGFzcyhlbCwgbmV4dFZhbHVlLCBpc1NWRyk7XG4gIH0gZWxzZSBpZiAoa2V5ID09PSBcInN0eWxlXCIpIHtcbiAgICBwYXRjaFN0eWxlKGVsLCBwcmV2VmFsdWUsIG5leHRWYWx1ZSk7XG4gIH0gZWxzZSBpZiAoaXNPbihrZXkpKSB7XG4gICAgaWYgKCFpc01vZGVsTGlzdGVuZXIoa2V5KSkge1xuICAgICAgcGF0Y2hFdmVudChlbCwga2V5LCBwcmV2VmFsdWUsIG5leHRWYWx1ZSwgcGFyZW50Q29tcG9uZW50KTtcbiAgICB9XG4gI
15H0gZWxzZSBpZiAoa2V5WzBdID09PSBcIi5cIiA/IChrZXkgPSBrZXkuc2xpY2UoMSksIHRydWUpIDoga2V5WzBdID09PSBcIl5cIiA/IChrZXkgPSBrZXkuc2xpY2UoMSksIGZhbHNlKSA6IHNob3VsZFNldEFzUHJvcChlbCwga2V5LCBuZXh0VmFsdWUsIGlzU1ZHKSkge1xuICAgIHBhdGNoRE9NUHJvcChlbCwga2V5LCBuZXh0VmFsdWUpO1xuICAgIGlmICghZWwudGFnTmFtZS5pbmNsdWRlcyhcIi1cIikgJiYgKGtleSA9PT0gXCJ2YWx1ZVwiIHx8IGtleSA9PT0gXCJjaGVja2VkXCIgfHwga2V5ID09PSBcInNlbGVjdGVkXCIpKSB7XG4gICAgICBwYXRjaEF0dHIoZWwsIGtleSwgbmV4dFZhbHVlLCBpc1NWRywgcGFyZW50Q29tcG9uZW50LCBrZXkgIT09IFwidmFsdWVcIik7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChrZXkgPT09IFwidHJ1ZS12YWx1ZVwiKSB7XG4gICAgICBlbC5fdHJ1ZVZhbHVlID0gbmV4dFZhbHVlO1xuICAgIH0gZWxzZSBpZiAoa2V5ID09PSBcImZhbHNlLXZhbHVlXCIpIHtcbiAgICAgIGVsLl9mYWxzZVZhbHVlID0gbmV4dFZhbHVlO1xuICAgIH1cbiAgICBwYXRjaEF0dHIoZWwsIGtleSwgbmV4dFZhbHVlLCBpc1NWRyk7XG4gIH1cbn07XG5mdW5jdGlvbiBzaG91bGRTZXRBc1Byb3AoZWwsIGtleSwgdmFsdWUsIGlzU1ZHKSB7XG4gIGlmIChpc1NWRykge1xuICAgIGlmIChrZXkgPT09IFwiaW5uZXJIVE1MXCIgfHwga2V5ID09PSBcInRleHRDb250ZW50XCIpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoa2V5IGluIGVsICYmIGlzTmF0aXZlT24oa2V5KSAmJiBpc0Z1bmN0aW9uKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoa2V5ID09PSBcInNwZWxsY2hlY2tcIiB8fCBrZXkgPT09IFwiZHJhZ2dhYmxlXCIgfHwga2V5ID09PSBcInRyYW5zbGF0ZVwiKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChrZXkgPT09IFwiZm9ybVwiKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChrZXkgPT09IFwibGlzdFwiICYmIGVsLnRhZ05hbWUgPT09IFwiSU5QVVRcIikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoa2V5ID09PSBcInR5cGVcIiAmJiBlbC50YWdOYW1lID09PSBcIlRFWFRBUkVBXCIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKGtleSA9PT0gXCJ3aWR0aFwiIHx8IGtleSA9PT0gXCJoZWlnaHRcIikge1xuICAgIGNvbnN0IHRhZyA9IGVsLnRhZ05hbWU7XG4gICAgaWYgKHRhZyA9PT0gXCJJTUdcIiB8fCB0YWcgPT09IFwiVklERU9cIiB8fCB0YWcgPT09IFwiQ0FOVkFTXCIgfHwgdGFnID09PSBcIlNPVVJDRVwiKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIGlmIChpc05hdGl2ZU9uKGtleSkgJiYgaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBrZXkgaW4gZWw7XG59XG5cbi8qISAjX19OT19TSURFX0VGRkVDVFNfXyAqL1xuLy8gQF9fTk9fU0lERV9FRkZFQ1RTX19cbmZ1bmN0aW9uIGRlZmluZUN1c3RvbUVsZW1lbnQob3B0aW9ucywgZXh0cmFPcHRpb25zLCBoeWRyYXRlMikge1xuICBjb25zdCBDb21wID0gZGVmaW5lQ29tcG9uZW50KG9wdGlvbnMsIGV4dHJhT3B0aW9ucyk7XG4gIGNsYXNzIFZ1ZUN1c3RvbUVsZW1lbnQgZXh0ZW5kcyBWdWVFbGVtZW50IHtcbiAgICBjb25zdHJ1Y3Rvcihpbml0aWFsUHJvcHMpIHtcbiAgICAgIHN1cGVyKENvbXAsIGluaXRpYWxQcm9wcywgaHlkcmF0ZTIpO1xuICAgIH1cbiAgfVxuICBWdWVDdXN0b21FbGVtZW50LmRlZiA9IENvbXA7XG4gIHJldHVybiBWdWVDdXN0b21FbGVtZW50O1xufVxuLyohICNfX05PX1NJREVfRUZGRUNUU19fICovXG5jb25zdCBkZWZpbmVTU1JDdXN0b21FbGVtZW50ID0gLyogQF9fTk9fU0lERV9FRkZFQ1RTX18gKi8gKG9wdGlvbnMsIGV4dHJhT3B0aW9ucykgPT4ge1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGRlZmluZUN1c3RvbUVsZW1lbnQob3B0aW9ucywgZXh0cmFPcHRpb25zLCBoeWRyYXRlKTtcbn07XG5jb25zdCBCYXNlQ2xhc3MgPSB0eXBlb2YgSFRNTEVsZW1lbnQgIT09IFwidW5kZWZpbmVkXCIgPyBIVE1MRWxlbWVudCA6IGNsYXNzIHtcbn07XG5jbGFzcyBWdWVFbGVtZW50IGV4dGVuZHMgQmFzZUNsYXNzIHtcbiAgY29uc3RydWN0b3IoX2RlZiwgX3Byb3BzID0ge30sIGh5ZHJhdGUyKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLl9kZWYgPSBfZGVmO1xuICAgIHRoaXMuX3Byb3BzID0gX3Byb3BzO1xuICAgIC8qKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHRoaXMuX2luc3RhbmNlID0gbnVsbDtcbiAgICB0aGlzLl9jb25uZWN0ZWQgPSBmYWxzZTtcbiAgICB0aGlzLl9yZXNvbHZlZCA9IGZhbHNlO1xuICAgIHRoaXMuX251bWJlclByb3BzID0gbnVsbDtcbiAgICB0aGlzLl9vYiA9IG51bGw7XG4gICAgaWYgKHRoaXMuc2hhZG93Um9vdCAmJiBoeWRyYXRlMikge1xuICAgICAgaHlkcmF0ZTIodGhpcy5fY3JlYXRlVk5vZGUoKSwgdGhpcy5zaGFkb3dSb290KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgJiYgdGhpcy5zaGFkb3dSb290KSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgYEN1c3RvbSBlbGVtZW50IGhhcyBwcmUtcmVuZGVyZWQgZGVjbGFyYXRpdmUgc2hhZG93IHJvb3QgYnV0IGlzIG5vdCBkZWZpbmVkIGFzIGh5ZHJhdGFibGUuIFVzZSBcXGBkZWZpbmVTU1JDdXN0b21FbGVtZW50XFxgLmBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuYXR0YWNoU2hhZG93KHsgbW9kZTogXCJvcGVuXCIgfSk7XG4gICAgICBpZiAoIXRoaXMuX2RlZi5fX2FzeW5jTG9hZGVyKSB7XG4gICAgICAgIHRoaXMuX3Jlc29sdmVQcm9wcyh0aGlzLl9kZWYpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBjb25uZWN0ZWRDYWxsYmFjaygpIHtcbiAgICB0aGlzLl9jb25uZWN0ZWQgPSB0cnVlO1xuICAgIGlmICghdGhpcy5faW5zdGFuY2UpIHtcbiAgICAgIGlmICh0aGlzLl9yZXNvbHZlZCkge1xuICAgICAgICB0aGlzLl91cGRhdGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgI
15HRoaXMuX3Jlc29sdmVEZWYoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgZGlzY29ubmVjdGVkQ2FsbGJhY2soKSB7XG4gICAgdGhpcy5fY29ubmVjdGVkID0gZmFsc2U7XG4gICAgbmV4dFRpY2soKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLl9jb25uZWN0ZWQpIHtcbiAgICAgICAgaWYgKHRoaXMuX29iKSB7XG4gICAgICAgICAgdGhpcy5fb2IuZGlzY29ubmVjdCgpO1xuICAgICAgICAgIHRoaXMuX29iID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZW5kZXIobnVsbCwgdGhpcy5zaGFkb3dSb290KTtcbiAgICAgICAgdGhpcy5faW5zdGFuY2UgPSBudWxsO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiByZXNvbHZlIGlubmVyIGNvbXBvbmVudCBkZWZpbml0aW9uIChoYW5kbGUgcG9zc2libGUgYXN5bmMgY29tcG9uZW50KVxuICAgKi9cbiAgX3Jlc29sdmVEZWYoKSB7XG4gICAgdGhpcy5fcmVzb2x2ZWQgPSB0cnVlO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5hdHRyaWJ1dGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLl9zZXRBdHRyKHRoaXMuYXR0cmlidXRlc1tpXS5uYW1lKTtcbiAgICB9XG4gICAgdGhpcy5fb2IgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG0gb2YgbXV0YXRpb25zKSB7XG4gICAgICAgIHRoaXMuX3NldEF0dHIobS5hdHRyaWJ1dGVOYW1lKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLl9vYi5vYnNlcnZlKHRoaXMsIHsgYXR0cmlidXRlczogdHJ1ZSB9KTtcbiAgICBjb25zdCByZXNvbHZlID0gKGRlZiwgaXNBc3luYyA9IGZhbHNlKSA9PiB7XG4gICAgICBjb25zdCB7IHByb3BzLCBzdHlsZXMgfSA9IGRlZjtcbiAgICAgIGxldCBudW1iZXJQcm9wcztcbiAgICAgIGlmIChwcm9wcyAmJiAhaXNBcnJheShwcm9wcykpIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gcHJvcHMpIHtcbiAgICAgICAgICBjb25zdCBvcHQgPSBwcm9wc1trZXldO1xuICAgICAgICAgIGlmIChvcHQgPT09IE51bWJlciB8fCBvcHQgJiYgb3B0LnR5cGUgPT09IE51bWJlcikge1xuICAgICAgICAgICAgaWYgKGtleSBpbiB0aGlzLl9wcm9wcykge1xuICAgICAgICAgICAgICB0aGlzLl9wcm9wc1trZXldID0gdG9OdW1iZXIodGhpcy5fcHJvcHNba2V5XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAobnVtYmVyUHJvcHMgfHwgKG51bWJlclByb3BzID0gLyogQF9fUFVSRV9fICovIE9iamVjdC5jcmVhdGUobnVsbCkpKVtjYW1lbGl6ZSQxKGtleSldID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuX251bWJlclByb3BzID0gbnVtYmVyUHJvcHM7XG4gICAgICBpZiAoaXNBc3luYykge1xuICAgICAgICB0aGlzLl9yZXNvbHZlUHJvcHMoZGVmKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2FwcGx5U3R5bGVzKHN0eWxlcyk7XG4gICAgICB0aGlzLl91cGRhdGUoKTtcbiAgICB9O1xuICAgIGNvbnN0IGFzeW5jRGVmID0gdGhpcy5fZGVmLl9fYXN5bmNMb2FkZXI7XG4gICAgaWYgKGFzeW5jRGVmKSB7XG4gICAgICBhc3luY0RlZigpLnRoZW4oKGRlZikgPT4gcmVzb2x2ZShkZWYsIHRydWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzb2x2ZSh0aGlzLl9kZWYpO1xuICAgIH1cbiAgfVxuICBfcmVzb2x2ZVByb3BzKGRlZikge1xuICAgIGNvbnN0IHsgcHJvcHMgfSA9IGRlZjtcbiAgICBjb25zdCBkZWNsYXJlZFByb3BLZXlzID0gaXNBcnJheShwcm9wcykgPyBwcm9wcyA6IE9iamVjdC5rZXlzKHByb3BzIHx8IHt9KTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh0aGlzKSkge1xuICAgICAgaWYgKGtleVswXSAhPT0gXCJfXCIgJiYgZGVjbGFyZWRQcm9wS2V5cy5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgIHRoaXMuX3NldFByb3Aoa2V5LCB0aGlzW2tleV0sIHRydWUsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChjb25zdCBrZXkgb2YgZGVjbGFyZWRQcm9wS2V5cy5tYXAoY2FtZWxpemUkMSkpIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBrZXksIHtcbiAgICAgICAgZ2V0KCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLl9nZXRQcm9wKGtleSk7XG4gICAgICAgIH0sXG4gICAgICAgIHNldCh2YWwpIHtcbiAgICAgICAgICB0aGlzLl9zZXRQcm9wKGtleSwgdmFsKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIF9zZXRBdHRyKGtleSkge1xuICAgIGxldCB2YWx1ZSA9IHRoaXMuaGFzQXR0cmlidXRlKGtleSkgPyB0aGlzLmdldEF0dHJpYnV0ZShrZXkpIDogdm9pZCAwO1xuICAgIGNvbnN0IGNhbWVsS2V5ID0gY2FtZWxpemUkMShrZXkpO1xuICAgIGlmICh0aGlzLl9udW1iZXJQcm9wcyAmJiB0aGlzLl9udW1iZXJQcm9wc1tjYW1lbEtleV0pIHtcbiAgICAgIHZhbHVlID0gdG9OdW1iZXIodmFsdWUpO1xuICAgIH1cbiAgICB0aGlzLl9zZXRQcm9wKGNhbWVsS2V5LCB2YWx1ZSwgZmFsc2UpO1xuICB9XG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIF9nZXRQcm9wKGtleSkge1xuICAgIHJldHVybiB0aGlzLl9wcm9wc1trZXldO1xuICB9XG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIF9zZXRQcm9wKGtleSwgdmFsLCBzaG91bGRSZWZsZWN0ID0gdHJ1ZSwgc2hvdWxkVXBkYXRlID0gdHJ1ZSkge1xuICAgIGlmICh2YWwgIT09IHRoaXMuX3Byb3BzW2tleV0pIHtcbiAgICAgIHRoaXMuX3Byb3BzW2tleV0gPSB2YWw7XG4gICAgICBpZiAoc2hvdWxkVXBkYXRlICYmIHRoaXMuX2luc3RhbmNlKSB7XG4gICAgICAgIHRoaXMuX3VwZGF0ZSgpO1xuICAgICAgfVxuICAgICAgaWYgKHNob3VsZFJlZmxlY3QpIHtcbiAgICAgICAgaWYgKHZhbCA9PT0gdHJ1ZSkge1xuICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKGh5cGhlbmF0ZShrZXkpLCBcIlwiKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsID09PSBcInN0cmluZ1wiIHx8IHR5cGVvZiB2YWwgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZShoeXBoZW5
15hdGUoa2V5KSwgdmFsICsgXCJcIik7XG4gICAgICAgIH0gZWxzZSBpZiAoIXZhbCkge1xuICAgICAgICAgIHRoaXMucmVtb3ZlQXR0cmlidXRlKGh5cGhlbmF0ZShrZXkpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBfdXBkYXRlKCkge1xuICAgIHJlbmRlcih0aGlzLl9jcmVhdGVWTm9kZSgpLCB0aGlzLnNoYWRvd1Jvb3QpO1xuICB9XG4gIF9jcmVhdGVWTm9kZSgpIHtcbiAgICBjb25zdCB2bm9kZSA9IGNyZWF0ZVZOb2RlKHRoaXMuX2RlZiwgZXh0ZW5kKHt9LCB0aGlzLl9wcm9wcykpO1xuICAgIGlmICghdGhpcy5faW5zdGFuY2UpIHtcbiAgICAgIHZub2RlLmNlID0gKGluc3RhbmNlKSA9PiB7XG4gICAgICAgIHRoaXMuX2luc3RhbmNlID0gaW5zdGFuY2U7XG4gICAgICAgIGluc3RhbmNlLmlzQ0UgPSB0cnVlO1xuICAgICAgICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSkge1xuICAgICAgICAgIGluc3RhbmNlLmNlUmVsb2FkID0gKG5ld1N0eWxlcykgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuX3N0eWxlcykge1xuICAgICAgICAgICAgICB0aGlzLl9zdHlsZXMuZm9yRWFjaCgocykgPT4gdGhpcy5zaGFkb3dSb290LnJlbW92ZUNoaWxkKHMpKTtcbiAgICAgICAgICAgICAgdGhpcy5fc3R5bGVzLmxlbmd0aCA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9hcHBseVN0eWxlcyhuZXdTdHlsZXMpO1xuICAgICAgICAgICAgdGhpcy5faW5zdGFuY2UgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5fdXBkYXRlKCk7XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkaXNwYXRjaCA9IChldmVudCwgYXJncykgPT4ge1xuICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgICAgIG5ldyBDdXN0b21FdmVudChldmVudCwge1xuICAgICAgICAgICAgICBkZXRhaWw6IGFyZ3NcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfTtcbiAgICAgICAgaW5zdGFuY2UuZW1pdCA9IChldmVudCwgLi4uYXJncykgPT4ge1xuICAgICAgICAgIGRpc3BhdGNoKGV2ZW50LCBhcmdzKTtcbiAgICAgICAgICBpZiAoaHlwaGVuYXRlKGV2ZW50KSAhPT0gZXZlbnQpIHtcbiAgICAgICAgICAgIGRpc3BhdGNoKGh5cGhlbmF0ZShldmVudCksIGFyZ3MpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgbGV0IHBhcmVudCA9IHRoaXM7XG4gICAgICAgIHdoaWxlIChwYXJlbnQgPSBwYXJlbnQgJiYgKHBhcmVudC5wYXJlbnROb2RlIHx8IHBhcmVudC5ob3N0KSkge1xuICAgICAgICAgIGlmIChwYXJlbnQgaW5zdGFuY2VvZiBWdWVFbGVtZW50KSB7XG4gICAgICAgICAgICBpbnN0YW5jZS5wYXJlbnQgPSBwYXJlbnQuX2luc3RhbmNlO1xuICAgICAgICAgICAgaW5zdGFuY2UucHJvdmlkZXMgPSBwYXJlbnQuX2luc3RhbmNlLnByb3ZpZGVzO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gdm5vZGU7XG4gIH1cbiAgX2FwcGx5U3R5bGVzKHN0eWxlcykge1xuICAgIGlmIChzdHlsZXMpIHtcbiAgICAgIHN0eWxlcy5mb3JFYWNoKChjc3MpID0+IHtcbiAgICAgICAgY29uc3QgcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcbiAgICAgICAgcy50ZXh0Q29udGVudCA9IGNzcztcbiAgICAgICAgdGhpcy5zaGFkb3dSb290LmFwcGVuZENoaWxkKHMpO1xuICAgICAgICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSkge1xuICAgICAgICAgICh0aGlzLl9zdHlsZXMgfHwgKHRoaXMuX3N0eWxlcyA9IFtdKSkucHVzaChzKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHVzZUNzc01vZHVsZShuYW1lID0gXCIkc3R5bGVcIikge1xuICB7XG4gICAgY29uc3QgaW5zdGFuY2UgPSBnZXRDdXJyZW50SW5zdGFuY2UoKTtcbiAgICBpZiAoIWluc3RhbmNlKSB7XG4gICAgICAhIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpICYmIHdhcm4oYHVzZUNzc01vZHVsZSBtdXN0IGJlIGNhbGxlZCBpbnNpZGUgc2V0dXAoKWApO1xuICAgICAgcmV0dXJuIEVNUFRZX09CSjtcbiAgICB9XG4gICAgY29uc3QgbW9kdWxlcyA9IGluc3RhbmNlLnR5cGUuX19jc3NNb2R1bGVzO1xuICAgIGlmICghbW9kdWxlcykge1xuICAgICAgISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSAmJiB3YXJuKGBDdXJyZW50IGluc3RhbmNlIGRvZXMgbm90IGhhdmUgQ1NTIG1vZHVsZXMgaW5qZWN0ZWQuYCk7XG4gICAgICByZXR1cm4gRU1QVFlfT0JKO1xuICAgIH1cbiAgICBjb25zdCBtb2QgPSBtb2R1bGVzW25hbWVdO1xuICAgIGlmICghbW9kKSB7XG4gICAgICAhIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpICYmIHdhcm4oYEN1cnJlbnQgaW5zdGFuY2UgZG9lcyBub3QgaGF2ZSBDU1MgbW9kdWxlIG5hbWVkIFwiJHtuYW1lfVwiLmApO1xuICAgICAgcmV0dXJuIEVNUFRZX09CSjtcbiAgICB9XG4gICAgcmV0dXJuIG1vZDtcbiAgfVxufVxuXG5jb25zdCBwb3NpdGlvbk1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgV2Vha01hcCgpO1xuY29uc3QgbmV3UG9zaXRpb25NYXAgPSAvKiBAX19QVVJFX18gKi8gbmV3IFdlYWtNYXAoKTtcbmNvbnN0IG1vdmVDYktleSA9IFN5bWJvbChcIl9tb3ZlQ2JcIik7XG5jb25zdCBlbnRlckNiS2V5ID0gU3ltYm9sKFwiX2VudGVyQ2JcIik7XG5jb25zdCBUcmFuc2l0aW9uR3JvdXBJbXBsID0ge1xuICBuYW1lOiBcIlRyYW5zaXRpb25Hcm91cFwiLFxuICBwcm9wczogLyogQF9fUFVSRV9fICovIGV4dGVuZCh7fSwgVHJhbnNpdGlvblByb3BzVmFsaWRhdG9ycywge1xuICAgIHRhZzogU3RyaW5nLFxuICAgIG1vdmVDbGFzczogU3RyaW5nXG4gIH0pLFxuICBzZXR1cChwcm9wcywgeyBzbG90cyB9KSB7XG4gICAgY29uc3QgaW5zdGFuY2UgPSBnZXRDdXJyZW50SW5zdGFuY2UoKTtcbiAgICBjb25zdCBzdGF0ZSA9IHVzZVRyYW5zaXRpb25TdGF0ZSgpO1xuICAgIGxldCBwcmV2Q2hpbGRyZW47XG4gICAgbGV0IGNoaWxkcmVuO1xuICAgIG9uVXBkYXRlZCgoKSA9PiB7XG4gICAgICBpZiAoIXByZXZDaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgbW92ZUNsYXNzID0gcHJvcHMubW92ZUNsYXNzIHx8IGAke3Byb3BzLm5hbWUgfHwgXCJ2XCJ9LW1vdmVgO1xuICAgICAgaWYgKCFoYXNDU1NUcmFuc2Zvcm0oXG4gICAgICAgI
15HByZXZDaGlsZHJlblswXS5lbCxcbiAgICAgICAgaW5zdGFuY2Uudm5vZGUuZWwsXG4gICAgICAgIG1vdmVDbGFzc1xuICAgICAgKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBwcmV2Q2hpbGRyZW4uZm9yRWFjaChjYWxsUGVuZGluZ0Nicyk7XG4gICAgICBwcmV2Q2hpbGRyZW4uZm9yRWFjaChyZWNvcmRQb3NpdGlvbik7XG4gICAgICBjb25zdCBtb3ZlZENoaWxkcmVuID0gcHJldkNoaWxkcmVuLmZpbHRlcihhcHBseVRyYW5zbGF0aW9uKTtcbiAgICAgIGZvcmNlUmVmbG93KCk7XG4gICAgICBtb3ZlZENoaWxkcmVuLmZvckVhY2goKGMpID0+IHtcbiAgICAgICAgY29uc3QgZWwgPSBjLmVsO1xuICAgICAgICBjb25zdCBzdHlsZSA9IGVsLnN0eWxlO1xuICAgICAgICBhZGRUcmFuc2l0aW9uQ2xhc3MoZWwsIG1vdmVDbGFzcyk7XG4gICAgICAgIHN0eWxlLnRyYW5zZm9ybSA9IHN0eWxlLndlYmtpdFRyYW5zZm9ybSA9IHN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbiA9IFwiXCI7XG4gICAgICAgIGNvbnN0IGNiID0gZWxbbW92ZUNiS2V5XSA9IChlKSA9PiB7XG4gICAgICAgICAgaWYgKGUgJiYgZS50YXJnZXQgIT09IGVsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghZSB8fCAvdHJhbnNmb3JtJC8udGVzdChlLnByb3BlcnR5TmFtZSkpIHtcbiAgICAgICAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0cmFuc2l0aW9uZW5kXCIsIGNiKTtcbiAgICAgICAgICAgIGVsW21vdmVDYktleV0gPSBudWxsO1xuICAgICAgICAgICAgcmVtb3ZlVHJhbnNpdGlvbkNsYXNzKGVsLCBtb3ZlQ2xhc3MpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcihcInRyYW5zaXRpb25lbmRcIiwgY2IpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNvbnN0IHJhd1Byb3BzID0gdG9SYXcocHJvcHMpO1xuICAgICAgY29uc3QgY3NzVHJhbnNpdGlvblByb3BzID0gcmVzb2x2ZVRyYW5zaXRpb25Qcm9wcyhyYXdQcm9wcyk7XG4gICAgICBsZXQgdGFnID0gcmF3UHJvcHMudGFnIHx8IEZyYWdtZW50O1xuICAgICAgcHJldkNoaWxkcmVuID0gW107XG4gICAgICBpZiAoY2hpbGRyZW4pIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGNvbnN0IGNoaWxkID0gY2hpbGRyZW5baV07XG4gICAgICAgICAgaWYgKGNoaWxkLmVsICYmIGNoaWxkLmVsIGluc3RhbmNlb2YgRWxlbWVudCkge1xuICAgICAgICAgICAgcHJldkNoaWxkcmVuLnB1c2goY2hpbGQpO1xuICAgICAgICAgICAgc2V0VHJhbnNpdGlvbkhvb2tzKFxuICAgICAgICAgICAgICBjaGlsZCxcbiAgICAgICAgICAgICAgcmVzb2x2ZVRyYW5zaXRpb25Ib29rcyhcbiAgICAgICAgICAgICAgICBjaGlsZCxcbiAgICAgICAgICAgICAgICBjc3NUcmFuc2l0aW9uUHJvcHMsXG4gICAgICAgICAgICAgICAgc3RhdGUsXG4gICAgICAgICAgICAgICAgaW5zdGFuY2VcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHBvc2l0aW9uTWFwLnNldChcbiAgICAgICAgICAgICAgY2hpbGQsXG4gICAgICAgICAgICAgIGNoaWxkLmVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY2hpbGRyZW4gPSBzbG90cy5kZWZh
15dWx0ID8gZ2V0VHJhbnNpdGlvblJhd0NoaWxkcmVuKHNsb3RzLmRlZmF1bHQoKSkgOiBbXTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgY2hpbGQgPSBjaGlsZHJlbltpXTtcbiAgICAgICAgaWYgKGNoaWxkLmtleSAhPSBudWxsKSB7XG4gICAgICAgICAgc2V0VHJhbnNpdGlvbkhvb2tzKFxuICAgICAgICAgICAgY2hpbGQsXG4gICAgICAgICAgICByZXNvbHZlVHJhbnNpdGlvbkhvb2tzKGNoaWxkLCBjc3NUcmFuc2l0aW9uUHJvcHMsIHN0YXRlLCBpbnN0YW5jZSlcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikpIHtcbiAgICAgICAgICB3YXJuKGA8VHJhbnNpdGlvbkdyb3VwPiBjaGlsZHJlbiBtdXN0IGJlIGtleWVkLmApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gY3JlYXRlVk5vZGUodGFnLCBudWxsLCBjaGlsZHJlbik7XG4gICAgfTtcbiAgfVxufTtcbmNvbnN0IHJlbW92ZU1vZGUgPSAocHJvcHMpID0+IGRlbGV0ZSBwcm9wcy5tb2RlO1xuLyogQF9fUFVSRV9fICovIHJlbW92ZU1vZGUoVHJhbnNpdGlvbkdyb3VwSW1wbC5wcm9wcyk7XG5jb25zdCBUcmFuc2l0aW9uR3JvdXAgPSBUcmFuc2l0aW9uR3JvdXBJbXBsO1xuZnVuY3Rpb24gY2FsbFBlbmRpbmdDYnMoYykge1xuICBjb25zdCBlbCA9IGMuZWw7XG4gIGlmIChlbFttb3ZlQ2JLZXldKSB7XG4gICAgZWxbbW92ZUNiS2V5XSgpO1xuICB9XG4gIGlmIChlbFtlbnRlckNiS2V5XSkge1xuICAgIGVsW2VudGVyQ2JLZXldKCk7XG4gIH1cbn1cbmZ1bmN0aW9uIHJlY29yZFBvc2l0aW9uKGMpIHtcbiAgbmV3UG9zaXRpb25NYXAuc2V0KGMsIGMuZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO1xufVxuZnVuY3Rpb24gYXBwbHlUcmFuc2xhdGlvbihjKSB7XG4gIGNvbnN0IG9sZFBvcyA9IHBvc2l0aW9uTWFwLmdldChjKTtcbiAgY29uc3QgbmV3UG9zID0gbmV3UG9zaXRpb25NYXAuZ2V0KGMpO1xuICBjb25zdCBkeCA9IG9sZFBvcy5sZWZ0IC0gbmV3UG9zLmxlZnQ7XG4gIGNvbnN0IGR5ID0gb2xkUG9zLnRvcCAtIG5ld1Bvcy50b3A7XG4gIGlmIChkeCB8fCBkeSkge1xuICAgIGNvbnN0IHMgPSBjLmVsLnN0eWxlO1xuICAgIHMudHJhbnNmb3JtID0gcy53ZWJraXRUcmFuc2Zvcm0gPSBgdHJhbnNsYXRlKCR7ZHh9cHgsJHtkeX1weClgO1xuICAgIHMudHJhbnNpdGlvbkR1cmF0aW9uID0gXCIwc1wiO1xuICAgIHJldHVybiBjO1xuICB9XG59XG5mdW5jdGlvbiBoYXNDU1NUcmFuc2Zvcm0oZWwsIHJvb3QsIG1vdmVDbGFzcykge1xuICBjb25zdCBjbG9uZSA9IGVsLmNsb25lTm9kZSgpO1xuICBjb25zdCBfdnRjID0gZWxbdnRjS2V5XTtcbiAgaWYgKF92dGMpIHtcbiAgICBfdnRjLmZvckVhY2goKGNscykgPT4ge1xuICAgICAgY2xzLnNwbGl0KC9cXHMrLykuZm9yRWFjaCgoYykgPT4gYyAmJiBjbG9uZS5jbGFzc0xpc3QucmVtb3ZlKGMpKTtcbiAgICB9KTtcbiAgfVxuICBtb3ZlQ2xhc3Muc3BsaXQoL1xccysvKS5mb3JFYWNoKChjKSA9PiBjICYmIGNsb25lLmNsYXNzTGlzdC5hZGQoYykpO1xuICBjbG9uZS5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XG4gIGNvbnN0IGNvbnRhaW5lciA9IHJvb3Qubm9kZVR5cGUgPT09IDEgPyByb290IDogcm9vdC5wYXJlbnROb2RlO1xuICBjb250YWluZXIuYXBwZW5kQ2hpbGQoY2xvbmUpO1xuICBjb25zdCB7IGhhc1RyYW5zZm9ybSB9ID0gZ2V0VHJhbnNpdGlvbkluZm8oY2xvbmUpO1xuICBjb250YWluZXIucmVtb3ZlQ2hpbGQoY2xvbmUpO1xuICByZXR1cm4gaGFzVHJhbnNmb3JtO1xufVxuXG5jb25zdCBnZXRNb2RlbEFzc2lnbmVyID0gKHZub2RlKSA9PiB7XG4gIGNvbnN0IGZuID0gdm5vZGUucHJvcHNbXCJvblVwZGF0ZTptb2RlbFZhbHVlXCJdIHx8IGZhbHNlO1xuICByZXR1cm4gaXNBcnJheShmbikgPyAodmFsdWUpID0+IGludm9rZUFycmF5Rm5zKGZuLCB2YWx1ZSkgOiBmbjtcbn07XG5mdW5jdGlvbiBvbkNvbXBvc2l0aW9uU3RhcnQoZSkge1xuICBlLnRhcmdldC5jb21wb3NpbmcgPSB0cnVlO1xufVxuZnVuY3Rpb24gb25Db21wb3NpdGlvbkVuZChlKSB7XG4gIGNvbnN0IHRhcmdldCA9IGUudGFyZ2V0O1xuICBpZiAodGFyZ2V0LmNvbXBvc2luZykge1xuICAgIHRhcmdldC5jb21wb3NpbmcgPSBmYWxzZTtcbiAgICB0YXJnZXQuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoXCJpbnB1dFwiKSk7XG4gIH1cbn1cbmNvbnN0IGFzc2lnbktleSA9IFN5bWJvbChcIl9hc3NpZ25cIik7XG5jb25zdCB2TW9kZWxUZXh0ID0ge1xuICBjcmVhdGVkKGVsLCB7IG1vZGlmaWVyczogeyBsYXp5LCB0cmltLCBudW1iZXIgfSB9LCB2bm9kZSkge1xuICAgIGVsW2Fzc2lnbktleV0gPSBnZXRNb2RlbEFzc2lnbmVyKHZub2RlKTtcbiAgICBjb25zdCBjYXN0VG9OdW1iZXIgPSBudW1iZXIgfHwgdm5vZGUucHJvcHMgJiYgdm5vZGUucHJvcHMudHlwZSA9PT0gXCJudW1iZXJcIjtcbiAgICBhZGRFdmVudExpc3RlbmVyKGVsLCBsYXp5ID8gXCJjaGFuZ2VcIiA6IFwiaW5wdXRcIiwgKGUpID0+IHtcbiAgICAgIGlmIChlLnRhcmdldC5jb21wb3NpbmcpIHJldHVybjtcbiAgICAgIGxldCBkb21WYWx1ZSA9IGVsLnZhbHVlO1xuICAgICAgaWYgKHRyaW0pIHtcbiAgICAgICAgZG9tVmFsdWUgPSBkb21WYWx1ZS50cmltKCk7XG4gICAgICB9XG4gICAgICBpZiAoY2FzdFRvTnVtYmVyKSB7XG4gICAgICAgIGRvbVZhbHVlID0gbG9vc2VUb051bWJlcihkb21WYWx1ZSk7XG4gICAgICB9XG4gICAgICBlbFthc3NpZ25LZXldKGRvbVZhbHVlKTtcbiAgICB9KTtcbiAgICBpZiAodHJpbSkge1xuICAgICAgYWRkRXZlbnRMaXN0ZW5lcihlbCwgXCJjaGFuZ2VcIiwgKCkgPT4ge1xuICAgICAgICBlbC52YWx1ZSA9IGVsLnZhbHVlLnRyaW0oKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoIWxhenkpIHtcbiAgICAgIGFkZEV2ZW50TGlzdGVuZXIoZWwsIFwiY29tcG9zaXRpb25zdGFydFwiLCBvbkNvbXBvc2l0aW9uU3RhcnQpO1xuICAgICAgYWRkRXZlbnRMaXN0ZW5lcihlbCwgXCJjb21wb3NpdGlvbmVuZFwiLCBvbkNvbXBvc2l0aW9uRW5kKTtcbiAgICAgIGFkZEV2ZW50TGlzdGVuZXIoZWwsIFwiY2hhbmdlXCIsIG9uQ29tcG9zaXRpb25
15FbmQpO1xuICAgIH1cbiAgfSxcbiAgLy8gc2V0IHZhbHVlIG9uIG1vdW50ZWQgc28gaXQncyBhZnRlciBtaW4vbWF4IGZvciB0eXBlPVwicmFuZ2VcIlxuICBtb3VudGVkKGVsLCB7IHZhbHVlIH0pIHtcbiAgICBlbC52YWx1ZSA9IHZhbHVlID09IG51bGwgPyBcIlwiIDogdmFsdWU7XG4gIH0sXG4gIGJlZm9yZVVwZGF0ZShlbCwgeyB2YWx1ZSwgb2xkVmFsdWUsIG1vZGlmaWVyczogeyBsYXp5LCB0cmltLCBudW1iZXIgfSB9LCB2bm9kZSkge1xuICAgIGVsW2Fzc2lnbktleV0gPSBnZXRNb2RlbEFzc2lnbmVyKHZub2RlKTtcbiAgICBpZiAoZWwuY29tcG9zaW5nKSByZXR1cm47XG4gICAgY29uc3QgZWxWYWx1ZSA9IChudW1iZXIgfHwgZWwudHlwZSA9PT0gXCJudW1iZXJcIikgJiYgIS9eMFxcZC8udGVzdChlbC52YWx1ZSkgPyBsb29zZVRvTnVtYmVyKGVsLnZhbHVlKSA6IGVsLnZhbHVlO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gdmFsdWUgPT0gbnVsbCA/IFwiXCIgOiB2YWx1ZTtcbiAgICBpZiAoZWxWYWx1ZSA9PT0gbmV3VmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGVsICYmIGVsLnR5cGUgIT09IFwicmFuZ2VcIikge1xuICAgICAgaWYgKGxhenkgJiYgdmFsdWUgPT09IG9sZFZhbHVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0cmltICYmIGVsLnZhbHVlLnRyaW0oKSA9PT0gbmV3VmFsdWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICBlbC52YWx1ZSA9IG5ld1ZhbHVlO1xuICB9XG59O1xuY29uc3Qgdk1vZGVsQ2hlY2tib3ggPSB7XG4gIC8vICM0MDk2IGFycmF5IGNoZWNrYm94ZXMgbmVlZCB0byBiZSBkZWVwIHRyYXZlcnNlZFxuICBkZWVwOiB0cnVlLFxuICBjcmVhdGVkKGVsLCBfLCB2bm9kZSkge1xuICAgIGVsW2Fzc2lnbktleV0gPSBnZXRNb2RlbEFzc2lnbmVyKHZub2RlKTtcbiAgICBhZGRFdmVudExpc3RlbmVyKGVsLCBcImNoYW5nZVwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBtb2RlbFZhbHVlID0gZWwuX21vZGVsVmFsdWU7XG4gICAgICBjb25zdCBlbGVtZW50VmFsdWUgPSBnZXRWYWx1ZShlbCk7XG4gICAgICBjb25zdCBjaGVja2VkID0gZWwuY2hlY2tlZDtcbiAgICAgIGNvbnN0IGFzc2lnbiA9IGVsW2Fzc2lnbktleV07XG4gICAgICBpZiAoaXNBcnJheShtb2RlbFZhbHVlKSkge1xuICAgICAgICBjb25zdCBpbmRleCA9IGxvb3NlSW5kZXhPZihtb2RlbFZhbHVlLCBlbGVtZW50VmFsdWUpO1xuICAgICAgICBjb25zdCBmb3VuZCA9IGluZGV4ICE9PSAtMTtcbiAgICAgICAgaWYgKGNoZWNrZWQgJiYgIWZvdW5kKSB7XG4gICAgICAgICAgYXNzaWduKG1vZGVsVmFsdWUuY29uY2F0KGVsZW1lbnRWYWx1ZSkpO1xuICAgICAgICB9IGVsc2UgaWYgKCFjaGVja2VkICYmIGZvdW5kKSB7XG4gICAgICAgICAgY29uc3QgZmlsdGVyZWQgPSBbLi4ubW9kZWxWYWx1ZV07XG4gICAgICAgICAgZmlsdGVyZWQuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICBhc3NpZ24oZmlsdGVyZWQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGlzU2V0KG1vZGVsVmFsdWUpKSB7XG4gICAgICAgIGNvbnN0IGNsb25lZCA9IG5ldyBTZXQobW9kZWxWYWx1ZSk7XG4gICAgICAgIGlmIChjaGVja2VkKSB7XG4gICAgICAgICAgY2xvbmVkLmFkZChlbGVtZW50VmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNsb25lZC5kZWxldGUoZWxlbWVudFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBhc3NpZ24oY2xvbmVkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFzc2lnbihnZXRDaGVja2JveFZhbHVlKGVsLCBjaGVja2VkKSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0sXG4gIC8vIHNldCBpbml0aWFsIGNoZWNrZWQgb24gbW91bnQgdG8gd2FpdCBmb3IgdHJ1ZS12YWx1ZS9mYWxzZS12YWx1ZVxuICBtb3VudGVkOiBzZXRDaGVja2VkLFxuICBiZWZvcmVVcGRhdGUoZWwsIGJpbmRpbmcsIHZub2RlKSB7XG4gICAgZWxbYXNzaWduS2V5XSA9IGdldE1vZGVsQXNzaWduZXIodm5vZGUpO1xuICAgIHNldENoZWNrZWQoZWwsIGJpbmRpbmcsIHZub2RlKTtcbiAgfVxufTtcbmZ1bmN0aW9uIHNldENoZWNrZWQoZWwsIHsgdmFsdWUsIG9sZFZhbHVlIH0sIHZub2RlKSB7XG4gIGVsLl9tb2RlbFZhbHVlID0gdmFsdWU7XG4gIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgIGVsLmNoZWNrZWQgPSBsb29zZUluZGV4T2YodmFsdWUsIHZub2Rl
15LnByb3BzLnZhbHVlKSA+IC0xO1xuICB9IGVsc2UgaWYgKGlzU2V0KHZhbHVlKSkge1xuICAgIGVsLmNoZWNrZWQgPSB2YWx1ZS5oYXModm5vZGUucHJvcHMudmFsdWUpO1xuICB9IGVsc2UgaWYgKHZhbHVlICE9PSBvbGRWYWx1ZSkge1xuICAgIGVsLmNoZWNrZWQgPSBsb29zZUVxdWFsKHZhbHVlLCBnZXRDaGVja2JveFZhbHVlKGVsLCB0cnVlKSk7XG4gIH1cbn1cbmNvbnN0IHZNb2RlbFJhZGlvID0ge1xuICBjcmVhdGVkKGVsLCB7IHZhbHVlIH0sIHZub2RlKSB7XG4gICAgZWwuY2hlY2tlZCA9IGxvb3NlRXF1YWwodmFsdWUsIHZub2RlLnByb3BzLnZhbHVlKTtcbiAgICBlbFthc3NpZ25LZXldID0gZ2V0TW9kZWxBc3NpZ25lcih2bm9kZSk7XG4gICAgYWRkRXZlbnRMaXN0ZW5lcihlbCwgXCJjaGFuZ2VcIiwgKCkgPT4ge1xuICAgICAgZWxbYXNzaWduS2V5XShnZXRWYWx1ZShlbCkpO1xuICAgIH0pO1xuICB9LFxuICBiZWZvcmVVcGRhdGUoZWwsIHsgdmFsdWUsIG9sZFZhbHVlIH0sIHZub2RlKSB7XG4gICAgZWxbYXNzaWduS2V5XSA9IGdldE1vZGVsQXNzaWduZXIodm5vZGUpO1xuICAgIGlmICh2YWx1ZSAhPT0gb2xkVmFsdWUpIHtcbiAgICAgIGVsLmNoZWNrZWQgPSBsb29zZUVxdWFsKHZhbHVlLCB2bm9kZS5wcm9wcy52YWx1ZSk7XG4gICAgfVxuICB9XG59O1xuY29uc3Qgdk1vZGVsU2VsZWN0ID0ge1xuICAvLyA8c2VsZWN0IG11bHRpcGxlPiB2YWx1ZSBuZWVkIHRvIGJlIGRlZXAgdHJhdmVyc2VkXG4gIGRlZXA6IHRydWUsXG4gIGNyZWF0ZWQoZWwsIHsgdmFsdWUsIG1vZGlmaWVyczogeyBudW1iZXIgfSB9LCB2bm9kZSkge1xuICAgIGNvbnN0IGlzU2V0TW9kZWwgPSBpc1NldCh2YWx1ZSk7XG4gICAgYWRkRXZlbnRMaXN0ZW5lcihlbCwgXCJjaGFuZ2VcIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRWYWwgPSBBcnJheS5wcm90b3R5cGUuZmlsdGVyLmNhbGwoZWwub3B0aW9ucywgKG8pID0+IG8uc2VsZWN0ZWQpLm1hcChcbiAgICAgICAgKG8pID0+IG51bWJlciA/IGxvb3NlVG9OdW1iZXIoZ2V0VmFsdWUobykpIDogZ2V0VmFsdWUobylcbiAgICAgICk7XG4gICAgICBlbFthc3NpZ25LZXldKFxuICAgICAgICBlbC5tdWx0aXBsZSA/IGlzU2V0TW9kZWwgPyBuZXcgU2V0KHNlbGVjdGVkVmFsKSA6IHNlbGVjdGVkVmFsIDogc2VsZWN0ZWRWYWxbMF1cbiAgICAgICk7XG4gICAgICBlbC5fYXNzaWduaW5nID0gdHJ1ZTtcbiAgICAgIG5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgZWwuX2Fzc2lnbmluZyA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgZWxbYXNzaWduS2V5XSA9IGdldE1vZGVsQXNzaWduZXIodm5vZGUpO1xuICB9LFxuICAvLyBzZXQgdmFsdWUgaW4gbW91bnRlZCAmIHVwZGF0ZWQgYmVjYXVzZSA8c2VsZWN0PiByZWxpZXMgb24gaXRzIGNoaWxkcmVuXG4gIC8vIDxvcHRpb24+cy5cbiAgbW91bnRlZChlbCwgeyB2YWx1ZSwgbW9kaWZpZXJzOiB7IG51bWJlciB9I
15H0pIHtcbiAgICBzZXRTZWxlY3RlZChlbCwgdmFsdWUpO1xuICB9LFxuICBiZWZvcmVVcGRhdGUoZWwsIF9iaW5kaW5nLCB2bm9kZSkge1xuICAgIGVsW2Fzc2lnbktleV0gPSBnZXRNb2RlbEFzc2lnbmVyKHZub2RlKTtcbiAgfSxcbiAgdXBkYXRlZChlbCwgeyB2YWx1ZSwgbW9kaWZpZXJzOiB7IG51bWJlciB9IH0pIHtcbiAgICBpZiAoIWVsLl9hc3NpZ25pbmcpIHtcbiAgICAgIHNldFNlbGVjdGVkKGVsLCB2YWx1ZSk7XG4gICAgfVxuICB9XG59O1xuZnVuY3Rpb24gc2V0U2VsZWN0ZWQoZWwsIHZhbHVlLCBudW1iZXIpIHtcbiAgY29uc3QgaXNNdWx0aXBsZSA9IGVsLm11bHRpcGxlO1xuICBjb25zdCBpc0FycmF5VmFsdWUgPSBpc0FycmF5KHZhbHVlKTtcbiAgaWYgKGlzTXVsdGlwbGUgJiYgIWlzQXJyYXlWYWx1ZSAmJiAhaXNTZXQodmFsdWUpKSB7XG4gICAgISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSAmJiB3YXJuKFxuICAgICAgYDxzZWxlY3QgbXVsdGlwbGUgdi1tb2RlbD4gZXhwZWN0cyBhbiBBcnJheSBvciBTZXQgdmFsdWUgZm9yIGl0cyBiaW5kaW5nLCBidXQgZ290ICR7T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKS5zbGljZSg4LCAtMSl9LmBcbiAgICApO1xuICAgIHJldHVybjtcbiAgfVxuICBmb3IgKGxldCBpID0gMCwgbCA9IGVsLm9wdGlvbnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgY29uc3Qgb3B0aW9uID0gZWwub3B0aW9uc1tpXTtcbiAgICBjb25zdCBvcHRpb25WYWx1ZSA9IGdldFZhbHVlKG9wdGlvbik7XG4gICAgaWYgKGlzTXVsdGlwbGUpIHtcbiAgICAgIGlmIChpc0FycmF5VmFsdWUpIHtcbiAgICAgICAgY29uc3Qgb3B0aW9uVHlwZSA9IHR5cGVvZiBvcHRpb25WYWx1ZTtcbiAgICAgICAgaWYgKG9wdGlvblR5cGUgPT09IFwic3RyaW5nXCIgfHwgb3B0aW9uVHlwZSA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgIG9wdGlvbi5zZWxlY3RlZCA9IHZhbHVlLnNvbWUoKHYpID0+IFN0cmluZyh2KSA9PT0gU3RyaW5nKG9wdGlvblZhbHVlKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3B0aW9uLnNlbGVjdGVkID0gbG9vc2VJbmRleE9mKHZhbHVlLCBvcHRpb25WYWx1ZSkgPiAtMTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3B0aW9uLnNlbGVjdGVkID0gdmFsdWUuaGFzKG9wdGlvblZhbHVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGxvb3NlRXF1YWwoZ2V0VmFsdWUob3B0aW9uKSwgdmFsdWUpKSB7XG4gICAgICBpZiAoZWwuc2VsZWN0ZWRJbmRleCAhPT0gaSkgZWwuc2VsZWN0ZWRJbmRleCA9IGk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG4gIGlmICghaXNNdWx0aXBsZSAmJiBlbC5zZWxlY3RlZEluZGV4ICE9PSAtMSkge1xuICAgIGVsLnNlbGVjdGVkSW5kZXggPSAtMTtcbiAgfVxufVxuZnVuY3Rpb24gZ2V0VmFsdWUoZWwpIHtcbiAgcmV0dXJuIFwiX3ZhbHVlXCIgaW4gZWwgPyBlbC5fdmFsdWUgOiBlbC52YWx1ZTtcbn1cbmZ1bmN0aW9uIGdldENoZWNrYm94VmFsdWUoZWwsIGNoZWNrZWQpIHtcbiAgY29uc3Qga2V5ID0gY2hlY2tlZCA/IFwiX3RydWVWYWx1ZVwiIDogXCJfZmFsc2VWYWx1ZVwiO1xuICByZXR1cm4ga2V5IGluIGVsID8gZWxba2V5XSA6IGNoZWNrZWQ7XG59XG5jb25zdCB2TW9kZWxEeW5hbWljID0ge1xuICBjcmVhdGVkKGVsLCBiaW5kaW5nLCB2bm9kZSkge1xuICAgIGNhbGxNb2RlbEhvb2soZWwsIGJpbmRpbmcsIHZub2RlLCBudWxsLCBcImNyZWF0ZWRcIik7XG4gIH0sXG4gIG1vdW50ZWQoZWwsIGJpbmRpbmcsIHZub2RlKSB7XG4gICAgY2FsbE1vZGVsSG9vayhlbCwgYmluZGluZywgdm5vZGUsIG51bGwsIFwibW91bnRlZFwiKTtcbiAgfSxcbiAgYmVmb3JlVXBkYXRlKGVsLCBiaW5kaW5nLCB2bm9kZSwgcHJldlZOb2RlKSB7XG4gICAgY2FsbE1vZGVsSG9vayhlbCwgYmluZGluZywgdm5vZGUsIHByZXZWTm9kZSwgXCJiZWZvcmVVcGRhdGVcIik7XG4gIH0sXG4gIHVwZGF0ZWQoZWwsIGJpbmRpbmcsIHZub2RlLCBwcmV2Vk5vZGUpIHtcbiAgICBjYWxsTW9kZWxIb29rKGVsLCBiaW5kaW5nLCB2bm9kZSwgcHJldlZOb2RlLCBcInVwZGF0ZWRcIik7XG4gIH1cbn07XG5mdW5jdGlvbiByZXNvbHZlRHluYW1pY01vZGVsKHRhZ05hbWUsIHR5cGUpIHtcbiAgc3dpdGNoICh0YWdOYW1lKSB7XG4gICAgY2FzZSBcIlNFTEVDVFwiOlxuICAgICAgcmV0dXJuIHZNb2RlbFNlbGVjdDtcbiAgICBjYXNlIFwiVEVYVEFSRUFcIjpcbiAgICAgIHJldHVybiB2TW9kZWxUZXh0O1xuICAgIGRlZmF1bHQ6XG4gICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSBcImNoZWNrYm94XCI6XG4gICAgICAgICAgcmV0dXJuIHZNb2RlbENoZWNrYm94O1xuICAgICAgICBjYXNlIFwicmFkaW9cIjpcbiAgICAgICAgICByZXR1cm4gdk1vZGVsUmFkaW87XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIHZNb2RlbFRleHQ7XG4gICAgICB9XG4gIH1cbn1cbmZ1bmN0aW9uIGNhbGxNb2RlbEhvb2soZWwsIGJpbmRpbmcsIHZub2RlLCBwcmV2Vk5vZGUsIGhvb2spIHtcbiAgY29uc3QgbW9kZWxUb1VzZSA9IHJlc29sdmVEeW5hbWljTW9kZWwoXG4gICAgZWwudGFnTmFtZSxcbiAgICB2bm9kZS5wcm9wcyAmJiB2bm9kZS5wcm9wcy50eXBlXG4gICk7XG4gIGNvbnN0IGZuID0gbW9kZWxUb1VzZVtob29rXTtcbiAgZm4gJiYgZm4oZWwsIGJpbmRpbmcsIHZub2RlLCBwcmV2Vk5vZGUpO1xufVxuZnVuY3Rpb24gaW5pdFZNb2RlbEZvclNTUigpIHtcbiAgdk1vZGVsVGV4dC5nZXRTU1JQcm9wcyA9ICh7IHZhbHVlIH0pID0+ICh7IHZhbHVlIH0pO1xuICB2TW9kZWxSYWRpby5nZXRTU1JQcm9wcyA9ICh7IHZhbHVlIH0sIHZub2RlKSA9PiB7XG4gICAgaWYgKHZub2RlLnByb3BzICYmIGxvb3NlRXF1YWwodm5vZGUucHJvcHMudmFsdWUsIHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHsgY2hlY2tlZDogdHJ1ZSB9O1xuICAgIH1cbiAgfTtcbiAgdk1vZGVsQ2hlY2tib3guZ2V0U1NSUHJvcHMgPSAoeyB2YWx1ZSB9LCB2bm9kZSkgPT4ge1xuICAgIGlmIChpc0FycmF
155KHZhbHVlKSkge1xuICAgICAgaWYgKHZub2RlLnByb3BzICYmIGxvb3NlSW5kZXhPZih2YWx1ZSwgdm5vZGUucHJvcHMudmFsdWUpID4gLTEpIHtcbiAgICAgICAgcmV0dXJuIHsgY2hlY2tlZDogdHJ1ZSB9O1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNTZXQodmFsdWUpKSB7XG4gICAgICBpZiAodm5vZGUucHJvcHMgJiYgdmFsdWUuaGFzKHZub2RlLnByb3BzLnZhbHVlKSkge1xuICAgICAgICByZXR1cm4geyBjaGVja2VkOiB0cnVlIH07XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHsgY2hlY2tlZDogdHJ1ZSB9O1xuICAgIH1cbiAgfTtcbiAgdk1vZGVsRHluYW1pYy5nZXRTU1JQcm9wcyA9IChiaW5kaW5nLCB2bm9kZSkgPT4ge1xuICAgIGlmICh0eXBlb2Ygdm5vZGUudHlwZSAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBtb2RlbFRvVXNlID0gcmVzb2x2ZUR5bmFtaWNNb2RlbChcbiAgICAgIC8vIHJlc29sdmVEeW5hbWljTW9kZWwgZXhwZWN0cyBhbiB1cHBlcmNhc2UgdGFnIG5hbWUsIGJ1dCB2bm9kZS50eXBlIGlzIGxvd2VyY2FzZVxuICAgICAgdm5vZGUudHlwZS50b1VwcGVyQ2FzZSgpLFxuICAgICAgdm5vZGUucHJvcHMgJiYgdm5vZGUucHJvcHMudHlwZVxuICAgICk7XG4gICAgaWYgKG1vZGVsVG9Vc2UuZ2V0U1NSUHJvcHMpIHtcbiAgICAgIHJldHVybiBtb2RlbFRvVXNlLmdldFNTUlByb3BzKGJpbmRpbmcsIHZub2RlKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IHN5c3RlbU1vZGlmaWVycyA9IFtcImN0cmxcIiwgXCJzaGlmdFwiLCBcImFsdFwiLCBcIm1ldGFcIl07XG5jb25zdCBtb2RpZmllckd1YXJkcyA9IHtcbiAgc3RvcDogKGUpID0+IGUuc3RvcFByb3BhZ2F0aW9uKCksXG4gIHByZXZlbnQ6IChlKSA9PiBlLnByZXZlbnREZWZhdWx0KCksXG4gIHNlbGY6IChlKSA9PiBlLnRhcmdldCAhPT0gZS5jdXJyZW50VGFyZ2V0LFxuICBjdHJsOiAoZSkgPT4gIWUuY3RybEtleSxcbiAgc2hpZnQ6IChlKSA9PiAhZS5zaGlmdEtleSxcbiAgYWx0OiAoZSkgPT4gIWUuYWx0S2V5LFxuICBtZXRhOiAoZSkgPT4gIWUubWV0YUtleSxcbiAgbGVmdDogKGUpID0+IFwiYnV0dG9uXCIgaW4gZSAmJiBlLmJ1dHRvbiAhPT0gMCxcbiAgbWlkZGxlOiAoZSkgPT4gXCJidXR0b25cIiBpbiBlICYmIGUuYnV0dG9uICE9PSAxLFxuICByaWdodDogKGUpID0+IFwiYnV0dG9uXCIgaW4gZSAmJiBlLmJ1dHRvbiAhPT0gMixcbiAgZXhhY3Q6IChlLCBtb2RpZmllcnMpID0+IHN5c3RlbU1vZGlmaWVycy5zb21lKChtKSA9PiBlW2Ake219S2V5YF0gJiYgIW1vZGlmaWVycy5pbmNsdWRlcyhtKSlcbn07XG5jb25zdCB3aXRoTW9kaWZpZXJzID0gKGZuLCBtb2RpZmllcnMpID0+IHtcbiAgY29uc3QgY2FjaGUgPSBmbi5fd2l0aE1vZHMgfHwgKGZuLl93aXRoTW9kcyA9IHt9KTtcbiAgY29uc3QgY2FjaGVLZXkgPSBtb2RpZmllcnMuam9pbihcIi5cIik7XG4gIHJldHVybiBjYWNoZVtjYWNoZUtleV0gfHwgKGNhY2hlW2NhY2hlS2V5XSA9IChldmVudCwgLi4uYXJncykgPT4ge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbW9kaWZpZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBndWFyZCA9IG1vZGlmaWVyR3VhcmRzW21vZGlmaWVyc1tpXV07XG4gICAgICBpZiAoZ3VhcmQgJiYgZ3VhcmQoZXZlbnQsIG1vZGlmaWVycykpIHJldHVybjtcbiAgICB9XG4gICAgcmV0dXJuIGZuKGV2ZW50LCAuLi5hcmdzKTtcbiAgfSk7XG59O1xuY29uc3Qga2V5TmFtZXMgPSB7XG4gIGVzYzogXCJlc2NhcGVcIixcbiAgc3BhY2U6IFwiIFwiLFxuICB1cDogXCJhcnJvdy11cFwiLFxuICBsZWZ0OiBcImFycm93LWxlZnRcIixcbiAgcmlnaHQ6IFwiYXJyb3ctcmlnaHRcIixcbiAgZG93bjogXCJhcnJvdy1kb3duXCIsXG4gIGRlbGV0ZTogXCJiYWNrc3BhY2VcIlxufTtcbmNvbnN0IHdpdGhLZXlzID0gKGZuLCBtb2RpZmllcnMpID0+IHtcbiAgY29uc3QgY2FjaGUgPSBmbi5fd2l0aEtleXMgfHwgKGZuLl93aXRoS2V5cyA9IHt9KTtcbiAgY29uc3QgY2FjaGVLZXkgPSBtb2RpZmllcnMuam9pbihcIi5cIik7XG4gIHJldHVybiBjYWNoZVtjYWNoZUtleV0gfHwgKGNhY2hlW2NhY2hlS2V5XSA9IChldmVudCkgPT4ge1xuICAgIGlmICghKFwia2V5XCIgaW4gZXZlbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGV2ZW50S2V5ID0gaHlwaGVuYXRlKGV2ZW50LmtleSk7XG4gICAgaWYgKG1vZGlmaWVycy5zb21lKChrKSA9PiBrID09PSBldmVudEtleSB8fCBrZXlOYW1lc1trXSA9PT0gZXZlbnRLZXkpKSB7XG4gICAgICByZXR1cm4gZm4oZXZlbnQpO1xuICAgIH1cbiAgfSk7XG59O1xuXG5jb25zdCByZW5kZXJlck9wdGlvbnMgPSAvKiBAX19QVVJFX18gKi8gZXh0ZW5kKHsgcGF0Y2hQcm9wIH0sIG5vZGVPcHMpO1xubGV0IHJlbmRlcmVyO1xubGV0IGVuYWJsZWRIeWRyYXRpb24gPSBmYWxzZTtcbmZ1bmN0aW9uIGVuc3VyZVJlbmRlcmVyKCkge1xuICByZXR1cm4gcmVuZGVyZXIgfHwgKHJlbmRlcmVyID0gY3JlYXRlUmVuZGVyZXIocmVuZGVyZXJPcHRpb25zKSk7XG59XG5mdW5jdGlvbiBlbnN1cmVIeWRyYXRpb25SZW5kZXJlcigpIHtcbiAgcmVuZGVyZXIgPSBlbmFibGVkSHlkcmF0aW9uID8gcmVuZGVyZXIgOiBjcmVhdGVIeWRyYXRpb25SZW5kZXJlcihyZW5kZXJlck9wdGlvbnMpO1xuICBlbmFibGVkSHlkcmF0aW9uID0gdHJ1ZTtcbiAgcmV0dXJuIHJlbmRlcmVyO1xufVxuY29uc3QgcmVuZGVyID0gKC4uLmFyZ3MpID0+IHtcbiAgZW5zdXJlUmVuZGVyZXIoKS5yZW5kZXIoLi4uYXJncyk7XG59O1xuY29uc3QgaHlkcmF0ZSA9ICguLi5hcmdzKSA9PiB7XG4gIGVuc3VyZUh5ZHJhdGlvblJlbmRlcmVyKCkuaHlkcmF0ZSguLi5hcmdzKTtcbn07XG5jb25zdCBjcmVhdGVBcHAgPSAoLi4uYXJncykgPT4ge1xuICBjb25zdCBhcHAgPSBlbnN1cmVSZW5kZXJlcigpLmNyZWF0ZUFwcCguLi5hcmdzKTtcbiAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikpIHtcbiAgICBpbmplY3ROYXRpdmVUYWdDaGVjayhhcHApO1xuICAgIGluamVjdENvbXBpbGVyT3B0aW9uc0NoZWNrKGFwcCk7XG4gIH1cbiAgY29uc3QgeyBtb3VudCB9ID0gYXBwO
151xuICBhcHAubW91bnQgPSAoY29udGFpbmVyT3JTZWxlY3RvcikgPT4ge1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IG5vcm1hbGl6ZUNvbnRhaW5lcihjb250YWluZXJPclNlbGVjdG9yKTtcbiAgICBpZiAoIWNvbnRhaW5lcikgcmV0dXJuO1xuICAgIGNvbnN0IGNvbXBvbmVudCA9IGFwcC5fY29tcG9uZW50O1xuICAgIGlmICghaXNGdW5jdGlvbihjb21wb25lbnQpICYmICFjb21wb25lbnQucmVuZGVyICYmICFjb21wb25lbnQudGVtcGxhdGUpIHtcbiAgICAgIGNvbXBvbmVudC50ZW1wbGF0ZSA9IGNvbnRhaW5lci5pbm5lckhUTUw7XG4gICAgfVxuICAgIGNvbnRhaW5lci5pbm5lckhUTUwgPSBcIlwiO1xuICAgIGNvbnN0IHByb3h5ID0gbW91bnQoY29udGFpbmVyLCBmYWxzZSwgcmVzb2x2ZVJvb3ROYW1lc3BhY2UoY29udGFpbmVyKSk7XG4gICAgaWYgKGNvbnRhaW5lciBpbnN0YW5jZW9mIEVsZW1lbnQpIHtcbiAgICAgIGNvbnRhaW5lci5yZW1vdmVBdHRyaWJ1dGUoXCJ2LWNsb2FrXCIpO1xuICAgICAgY29udGFpbmVyLnNldEF0dHJpYnV0ZShcImRhdGEtdi1hcHBcIiwgXCJcIik7XG4gICAgfVxuICAgIHJldHVybiBwcm94eTtcbiAgfTtcbiAgcmV0dXJuIGFwcDtcbn07XG5jb25zdCBjcmVhdGVTU1JBcHAgPSAoLi4uYXJncykgPT4ge1xuICBjb25zdCBhcHAgPSBlbnN1cmVIeWRyYXRpb25SZW5kZXJlcigpLmNyZWF0ZUFwcCguLi5hcmdzKTtcbiAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikpIHtcbiAgICBpbmplY3ROYXRpdmVUYWdDaGVjayhhcHApO1xuICAgIGluamVjdENvbXBpbGVyT3B0aW9uc0NoZWNrKGFwcCk7XG4gIH1cbiAgY29uc3QgeyBtb3VudCB9ID0gYXBwO1xuICBhcHAubW91bnQgPSAoY29udGFpbmVyT3JTZWxlY3RvcikgPT4ge1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IG5vcm1hbGl6ZUNvbnRhaW5lcihjb250YWluZXJPclNlbGVjdG9yKTtcbiAgICBpZiAoY29udGFpbmVyKSB7XG4gICAgICByZXR1cm4gbW91bnQoY29udGFpbmVyLCB0cnVlLCByZXNvbHZlUm9vdE5hbWVzcGFjZShjb250YWluZXIpKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiBhcHA7XG59O1xuZnVuY3Rpb24gcmVzb2x2ZVJvb3ROYW1lc3BhY2UoY29udGFpbmVyKSB7XG4gIGlmIChjb250YWluZXIgaW5zdGFuY2VvZiBTVkdFbGVtZW50KSB7XG4gICAgcmV0dXJuIFwic3ZnXCI7XG4gIH1cbiAgaWYgKHR5cGVvZiBNYXRoTUxFbGVtZW50ID09PSBcImZ1bmN0aW9uXCIgJiYgY29udGFpbmVyIGluc3RhbmNlb2YgTWF0aE1MRWxlbWVudCkge1xuICAgIHJldHVybiBcIm1hdGhtbFwiO1xuICB9XG59XG5mdW5jdGlvbiBpbmplY3ROYXRpdmVUYWdDaGVjayhhcHApIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGFwcC5jb25maWcsIFwiaXNOYXRpdmVUYWdcIiwge1xuICAgIHZhbHVlOiAodGFnKSA9PiBpc0hUTUxUYWcodGFnKSB8fCBpc1NWR1RhZyh0YWcpIHx8IGlzTWF0aE1MVGFnKHRhZyksXG4gICAgd3JpdGFibGU6IGZhbHNlXG4gIH0pO1xufVxuZnVuY3Rpb24gaW5qZWN0Q29tcGlsZXJPcHRpb25zQ2hlY2soYXBwKSB7XG4gIGlmIChpc1J1bnRpbWVPbmx5KCkpIHtcbiAgICBjb25zdCBpc0N1c3RvbUVsZW1lbnQgPSBhcHAuY29uZmlnLmlzQ3VzdG9tRWxlbWVudDtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYXBwLmNvbmZpZywgXCJpc0N1c3RvbUVsZW1lbnRcIiwge1xuICAgICAgZ2V0KCkge1xuICAgICAgICByZXR1cm4gaXNDdXN0b21FbGVtZW50O1xuICAgICAgfSxcbiAgICAgIHNldCgpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICBgVGhlIFxcYGlzQ3VzdG9tRWxlbWVudFxcYCBjb25maWcgb3B0aW9uIGlzIGRlcHJlY2F0ZWQuIFVzZSBcXGBjb21waWxlck9wdGlvbnMuaXNDdXN0b21FbGVtZW50XFxgIGluc3RlYWQuYFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGNvbXBpbGVyT3B0aW9ucyA9IGFwcC5jb25maWcuY29tcGlsZXJPcHRpb25zO1xuICAgIGNvbnN0IG1zZyA9IGBUaGUgXFxgY29tcGlsZXJPcHRpb25zXFxgIGNvbmZpZyBvcHRpb24gaXMgb25seSByZXNwZWN0ZWQgd2hlbiB1c2luZyBhIGJ1aWxkIG9mIFZ1ZS5qcyB0aGF0IGluY2x1ZGVzIHRoZSBydW50aW1lIGNvbXBpbGVyIChha2EgXCJmdWxsIGJ1aWxkXCIpLiBTaW5jZSB5b3UgYXJlIHVzaW5nIHRoZSBydW50aW1lLW9ubHkgYnVpbGQsIFxcYGNvbXBpbGVyT3B0aW9uc1xcYCBtdXN0IGJlIHBhc3NlZCB0byBcXGBAdnVlL2NvbXBpbGVyLWRvbVxcYCBpbiB0aGUgYnVpbGQgc2V0dXAgaW5zdGVhZC5cbi0gRm9yIHZ1ZS1sb2FkZXI6IHBhc3MgaXQgdmlhIHZ1ZS1sb2FkZXIncyBcXGBjb21waWxlck9wdGlvbnNcXGAgbG9hZGVyIG9wdGlvbi5cbi0gRm9yIHZ1ZS1jbGk6IHNlZSBodHRwczovL2NsaS52dWVqcy5vcmcvZ3VpZGUvd2VicGFjay5odG1sI21vZGlmeWluZy1vcHRpb25zLW9mLWEtbG9hZGVyXG4tIEZvciB2aXRlOiBwYXNzIGl0IHZpYSBAdml0ZWpzL3BsdWdpbi12dWUgb3B0aW9ucy4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS92aXRlanMvdml0ZS1wbHVnaW4tdnVlL3RyZWUvbWFpbi9wYWNrYWdlcy9wbHVnaW4tdnVlI2V4YW1wbGUtZm9yLXBhc3Npbmctb3B0aW9ucy10by12dWVjb21waWxlci1zZmNgO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhcHAuY29uZmlnLCBcImNvbXBpbGVyT3B0aW9uc1wiLCB7XG4gICAgICBnZXQoKSB7XG4gICAgICAgIHdhcm4obXNnKTtcbiAgICAgICAgcmV0dXJuIGNvbXBpbGVyT3B0aW9ucztcbiAgICAgIH0sXG4gICAgICBzZXQoKSB7XG4gICAgICAgIHdhcm4obXNnKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuZnVuY3Rpb24gbm9ybWFsaXplQ29udGFpbmVyKGNvbnRhaW5lcikge1xuICBpZiAoaXNTdHJpbmcoY29udGFpbmVyKSkge1xuICAgIGNvbnN0IHJlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoY29udGFpbmVyKTtcbiAgICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSAmJiAhcmVzKSB7XG4gICAgICB3YXJuKFxuICAgICAgICBgRmFpbGVkIHRvIG1vdW50IGFwcDogbW91bnQgdGFyZ2V0IHNlbGVjdG9yIFwiJHtjb250YWluZXJ9XCIgcmV0dXJuZWQgbnVsbC5gXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9XG4gIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9k
15dWN0aW9uXCIpICYmIHdpbmRvdy5TaGFkb3dSb290ICYmIGNvbnRhaW5lciBpbnN0YW5jZW9mIHdpbmRvdy5TaGFkb3dSb290ICYmIGNvbnRhaW5lci5tb2RlID09PSBcImNsb3NlZFwiKSB7XG4gICAgd2FybihcbiAgICAgIGBtb3VudGluZyBvbiBhIFNoYWRvd1Jvb3Qgd2l0aCBcXGB7bW9kZTogXCJjbG9zZWRcIn1cXGAgbWF5IGxlYWQgdG8gdW5wcmVkaWN0YWJsZSBidWdzYFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIGNvbnRhaW5lcjtcbn1cbmxldCBzc3JEaXJlY3RpdmVJbml0aWFsaXplZCA9IGZhbHNlO1xuY29uc3QgaW5pdERpcmVjdGl2ZXNGb3JTU1IgPSAoKSA9PiB7XG4gIGlmICghc3NyRGlyZWN0aXZlSW5pdGlhbGl6ZWQpIHtcbiAgICBzc3JEaXJlY3RpdmVJbml0aWFsaXplZCA9IHRydWU7XG4gICAgaW5pdFZNb2RlbEZvclNTUigpO1xuICAgIGluaXRWU2hvd0ZvclNTUigpO1xuICB9XG59IDtcblxuZXhwb3J0IHsgVHJhbnNpdGlvbiwgVHJhbnNpdGlvbkdyb3VwLCBWdWVFbGVtZW50LCBjcmVhdGVBcHAsIGNyZWF0ZVNTUkFwcCwgZGVmaW5lQ3VzdG9tRWxlbWVudCwgZGVmaW5lU1NSQ3VzdG9tRWxlbWVudCwgaHlkcmF0ZSwgaW5pdERpcmVjdGl2ZXNGb3JTU1IsIHJlbmRlciwgdXNlQ3NzTW9kdWxlLCB1c2VDc3NWYXJzLCB2TW9kZWxDaGVja2JveCwgdk1vZGVsRHluYW1pYywgdk1vZGVsUmFkaW8sIHZNb2RlbFNlbGVjdCwgdk1vZGVsVGV4dCwgdlNob3csIHdpdGhLZXlzLCB3aXRoTW9kaWZpZXJzIH07XG4iLCIvKipcbiogQHZ1ZS9jb21waWxlci1jb3JlIHYzLjQuMzhcbiogKGMpIDIwMTgtcHJlc2VudCBZdXhpIChFdmFuKSBZb3UgYW5kIFZ1ZSBjb250cmlidXRvcnNcbiogQGxpY2Vuc2UgTUlUXG4qKi9cbmltcG9ydCB7IGlzU3RyaW5nLCBOT09QLCBpc09iamVjdCwgTk8sIGV4dGVuZCwgaXNTeW1ib2wsIGlzQXJyYXksIGNhcGl0YWxpemUsIGNhbWVsaXplLCBFTVBUWV9PQkosIFBhdGNoRmxhZ05hbWVzLCBzbG90RmxhZ3NUZXh0LCBpc09uLCBpc0J1aWx0SW5EaXJlY3RpdmUsIGlzUmVzZXJ2ZWRQcm9wLCB0b0hhbmRsZXJLZXkgfSBmcm9tICdAdnVlL3NoYXJlZCc7XG5leHBvcnQgeyBnZW5lcmF0ZUNvZGVGcmFtZSB9IGZyb20gJ0B2dWUvc2hhcmVkJztcblxuY29uc3QgRlJBR01FTlQgPSBTeW1ib2woISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSA/IGBGcmFnbWVudGAgOiBgYCk7XG5jb25zdCBURUxFUE9SVCA9IFN5bWJvbCghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpID8gYFRlbGVwb3J0YCA6IGBgKTtcbmNvbnN0IFNVU1BFTlNFID0gU3ltYm9sKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgPyBgU3VzcGVuc2VgIDogYGApO1xuY29uc3QgS0VFUF9BTElWRSA9IFN5bWJvbCghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpID8gYEtlZXBBbGl2ZWAgOiBgYCk7XG5jb25zdCBCQVNFX1RSQU5TSVRJT04gPSBTeW1ib2woISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSA/IGBCYXNlVHJhbnNpdGlvbmAgOiBgYCk7XG5jb25zdCBPUEVOX0JMT0NLID0gU3ltYm9sKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgPyBgb3BlbkJsb2NrYCA6IGBgKTtcbmNvbnN0IENSRUFURV9CTE9DSyA9IFN5bWJvbCghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpID8gYGNyZWF0ZUJsb2NrYCA6IGBgKTtcbmNvbnN0IENSRUFURV9FTEVNRU5UX0JMT0NLID0gU3ltYm9sKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgPyBgY3JlYXRlRWxlbWVudEJsb2NrYCA6IGBgKTtcbmNvbnN0IENSRUFURV9WTk9ERSA9IFN5bWJvbCghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpID8gYGNyZWF0ZVZOb2RlYCA6IGBgKTtcbmNvbnN0IENSRUFURV9FTEVNRU5UX1ZOT0RFID0gU3ltYm9sKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgPyBgY3JlYXRlRWxlbWVudFZOb2RlYCA6IGBgKTtcbmNvbnN0IENSRUFURV9DT01NRU5UID0gU3ltYm9sKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgPyBgY3JlYXRlQ29tbWVudFZOb2RlYCA6IGBgKTtcbmNvbnN0IENSRUFURV9URVhUID0gU3ltYm9sKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgPyBgY3JlYXRlVGV4dFZOb2RlYCA6IGBgKTtcbmNvbnN0IENSRUFURV9TVEFUSUMgPSBTeW1ib2woISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSA/IGBjcmVhdGVTdGF0aWNWTm9kZWAgOiBgYCk7XG5jb25zdCBSRVNPTFZFX0NPTVBPTkVOVCA9IFN5bWJvbCghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpID8gYHJlc29sdmVDb21wb25lbnRgIDogYGApO1xuY29uc3QgUkVTT0xWRV9EWU5BTUlDX0NPTVBPTkVOVCA9IFN5bWJvbChcbiAgISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSA/IGByZXNvbHZlRHluYW1pY0NvbXBvbmVudGAgOiBgYFxuKTtcbmNvbnN0IFJFU09MVkVfRElSRUNUSVZFID0gU3ltYm9sKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgPyBgcmVzb2x2ZURpcmVjdGl2ZWAgOiBgYCk7XG5jb25zdCBSRVNPTFZFX0ZJTFRFUiA9IFN5bWJvbCghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpID8gYHJlc29sdmVGaWx0ZXJgIDogYGApO1xuY29uc3QgV0lUSF9ESVJFQ1RJVkVTID0gU3ltYm9sKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgPyBgd2l0aERpcmVjdGl2ZXNgIDogYGApO1xuY29uc3QgUkVOREVSX0xJU1QgPSBTeW1ib2woISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSA/IGByZW5kZXJMaXN0YCA6IGBgKTtcbmNvbnN0IFJFTkRFUl9TTE9UID0gU3ltYm9sKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgPyBgcmVuZGVyU2xvdGAgOiBgYCk7XG5jb25zdCBDUkVBVEVfU0xPVFMgPSBTeW1ib2woISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSA/IGBjcmVhdGVTbG90c2AgOiBgYCk7XG5jb25zdCBUT19ESVNQTEFZX1NUUklORyA9IFN5bWJvbCghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9k
15dWN0aW9uXCIpID8gYHRvRGlzcGxheVN0cmluZ2AgOiBgYCk7XG5jb25zdCBNRVJHRV9QUk9QUyA9IFN5bWJvbCghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpID8gYG1lcmdlUHJvcHNgIDogYGApO1xuY29uc3QgTk9STUFMSVpFX0NMQVNTID0gU3ltYm9sKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgPyBgbm9ybWFsaXplQ2xhc3NgIDogYGApO1xuY29uc3QgTk9STUFMSVpFX1NUWUxFID0gU3ltYm9sKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgPyBgbm9ybWFsaXplU3R5bGVgIDogYGApO1xuY29uc3QgTk9STUFMSVpFX1BST1BTID0gU3ltYm9sKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgPyBgbm9ybWFsaXplUHJvcHNgIDogYGApO1xuY29uc3QgR1VBUkRfUkVBQ1RJVkVfUFJPUFMgPSBTeW1ib2woISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSA/IGBndWFyZFJlYWN0aXZlUHJvcHNgIDogYGApO1xuY29uc3QgVE9fSEFORExFUlMgPSBTeW1ib2woISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSA/IGB0b0hhbmRsZXJzYCA6IGBgKTtcbmNvbnN0IENBTUVMSVpFID0gU3ltYm9sKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgPyBgY2FtZWxpemVgIDogYGApO1xuY29uc3QgQ0FQSVRBTElaRSA9IFN5bWJvbCghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpID8gYGNhcGl0YWxpemVgIDogYGApO1xuY29uc3QgVE9fSEFORExFUl9LRVkgPSBTeW1ib2woISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSA/IGB0b0hhbmRsZXJLZXlgIDogYGApO1xuY29uc3QgU0VUX0JMT0NLX1RSQUNLSU5HID0gU3ltYm9sKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgPyBgc2V0QmxvY2tUcmFja2luZ2AgOiBgYCk7XG5jb25zdCBQVVNIX1NDT1BFX0lEID0gU3ltYm9sKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgPyBgcHVzaFNjb3BlSWRgIDogYGApO1xuY29uc3QgUE9QX1NDT1BFX0lEID0gU3ltYm9sKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgPyBgcG9wU2NvcGVJZGAgOiBgYCk7XG5jb25zdCBXSVRIX0NUWCA9IFN5bWJvbCghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpID8gYHdpdGhDdHhgIDogYGApO1xuY29uc3QgVU5SRUYgPSBTeW1ib2woISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSA/IGB1bnJlZmAgOiBgYCk7XG5jb25zdCBJU19SRUYgPSBTeW1ib2woISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSA/IGBpc1JlZmAgOiBgYCk7XG5jb25zdCBXSVRIX01FTU8gPSBTeW1ib2woISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSA/IGB3aXRoTWVtb2AgOiBgYCk7XG5jb25zdCBJU19NRU1PX1NBTUUgPSBTeW1ib2woISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSA/IGBpc01lbW9TYW1lYCA6IGBgKTtcbmNvbnN0IGhlbHBlck5hbWVNYXAgPSB7XG4gIFtGUkFHTUVOVF06IGBGcmFnbWVudGAsXG4gIFtURUxFUE9SVF06IGBUZWxlcG9ydGAsXG4gIFtTVVNQRU5TRV06IGBTdXNwZW5zZWAsXG4gIFtLRUVQX0FMSVZFXTogYEtlZXBBbGl2ZWAsXG4gIFtCQVNFX1RSQU5TSVRJT05dOiBgQmFzZVRyYW5zaXRpb25gLFxuICBbT1BFTl9CTE9DS106IGBvcGVuQmxvY2tgLFxuICBbQ1JFQVRFX0JMT0NLXTogYGNyZWF0ZUJsb2NrYCxcbiAgW0NSRUFURV9FTEVNRU5UX0JMT0NLXTogYGNyZWF0ZUVsZW1lbnRCbG9ja2AsXG4gIFtDUkVBVEVfVk5PREVdOiBgY3JlYXRlVk5vZGVgLFxuICBbQ1JFQVRFX0VMRU1FTlRfVk5PREVdOiBgY3JlYXRlRWxlbWVudFZOb2RlYCxcbiAgW0NSRUFURV9DT01NRU5UXTogYGNyZWF0ZUNvbW1lbnRWTm9kZWAsXG4gIFtDUkVBVEVfVEVYVF06IGBjcmVhdGVUZXh0Vk5vZGVgLFxuICBbQ1JFQVRFX1NUQVRJQ106IGBjcmVhdGVTdGF0aWNWTm9kZWAsXG4gIFtSRVNPTFZFX0NPTVBPTkVOVF06IGByZXNvbHZlQ29tcG9uZW50YCxcbiAgW1JFU09MVkVfRFlOQU1JQ19DT01QT05FTlRdOiBgcmVzb2x2ZUR5bmFtaWNDb21wb25lbnRgLFxuICBbUkVTT0xWRV9ESVJFQ1RJVkVdOiBgcmVzb2x2ZURpcmVjdGl2ZWAsXG4gIFtSRVNPTFZFX0ZJTFRFUl06IGByZXNvbHZlRmlsdGVyYCxcbiAgW1dJVEhfRElSRUNUSVZFU106IGB3aXRoRGlyZWN0aXZlc2AsXG4gIFtSRU5ERVJfTElTVF06IGByZW5kZXJMaXN0YCxcbiAgW1JFTkRFUl9TTE9UXTogYHJlbmRlclNsb3RgLFxuICBbQ1JFQVRFX1NMT1RTXTogYGNyZWF0ZVNsb3RzYCxcbiAgW1RPX0RJU1BMQVlfU1RSSU5HXTogYHRvRGlzcGxheVN0cmluZ2AsXG4gIFtNRVJHRV9QUk9QU106IGBtZXJnZVByb3BzYCxcbiAgW05PUk1BTElaRV9DTEFTU106IGBub3JtYWxpem
15VDbGFzc2AsXG4gIFtOT1JNQUxJWkVfU1RZTEVdOiBgbm9ybWFsaXplU3R5bGVgLFxuICBbTk9STUFMSVpFX1BST1BTXTogYG5vcm1hbGl6ZVByb3BzYCxcbiAgW0dVQVJEX1JFQUNUSVZFX1BST1BTXTogYGd1YXJkUmVhY3RpdmVQcm9wc2AsXG4gIFtUT19IQU5ETEVSU106IGB0b0hhbmRsZXJzYCxcbiAgW0NBTUVMSVpFXTogYGNhbWVsaXplYCxcbiAgW0NBUElUQUxJWkVdOiBgY2FwaXRhbGl6ZWAsXG4gIFtUT19IQU5ETEVSX0tFWV06IGB0b0hhbmRsZXJLZXlgLFxuICBbU0VUX0JMT0NLX1RSQUNLSU5HXTogYHNldEJsb2NrVHJhY2tpbmdgLFxuICBbUFVTSF9TQ09QRV9JRF06IGBwdXNoU2NvcGVJZGAsXG4gIFtQT1BfU0NPUEVfSURdOiBgcG9wU2NvcGVJZGAsXG4gIFtXSVRIX0NUWF06IGB3aXRoQ3R4YCxcbiAgW1VOUkVGXTogYHVucmVmYCxcbiAgW0lTX1JFRl06IGBpc1JlZmAsXG4gIFtXSVRIX01FTU9dOiBgd2l0aE1lbW9gLFxuICBbSVNfTUVNT19TQU1FXTogYGlzTWVtb1NhbWVgXG59O1xuZnVuY3Rpb24gcmVnaXN0ZXJSdW50aW1lSGVscGVycyhoZWxwZXJzKSB7XG4gIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoaGVscGVycykuZm9yRWFjaCgocykgPT4ge1xuICAgIGhlbHBlck5hbWVNYXBbc10gPSBoZWxwZXJzW3NdO1xuICB9KTtcbn1cblxuY29uc3QgTmFtZXNwYWNlcyA9IHtcbiAgXCJIVE1MXCI6IDAsXG4gIFwiMFwiOiBcIkhUTUxcIixcbiAgXCJTVkdcIjogMSxcbiAgXCIxXCI6IFwiU1ZHXCIsXG4gIFwiTUFUSF9NTFwiOiAyLFxuICBcIjJcIjogXCJNQVRIX01MXCJcbn07XG5jb25zdCBOb2RlVHlwZXMgPSB7XG4gIFwiUk9PVFwiOiAwLFxuICBcIjBcIjogXCJST09UXCIsXG4gIFwiRUxFTUVOVFwiOiAxLFxuICBcIjFcIjogXCJFTEVNRU5UXCIsXG4gIFwiVEVYVFwiOiAyLFxuICBcIjJcIjogXCJURVhUXCIsXG4gIFwiQ09NTUVOVFwiOiAzLFxuICBcIjNcIjogXCJDT01NRU5UXCIsXG4gIFwiU0lNUExFX0VYUFJFU1NJT05cIjogNCxcbiAgXCI0XCI6IFwiU0lNUExFX0VYUFJFU1NJT05cIixcbiAgXCJJTlRFUlBPTEFUSU9OXCI6IDUsXG4gIFwiNVwiOiBcIklOVEVSUE9MQVRJT05cIixcbiAgXCJBVFRSSUJVVEVcIjogNixcbiAgXCI2XCI6IFwiQVRUUklCVVRFXCIsXG4gIFwiRElSRUNUSVZFXCI6IDcsXG4gIFwiN1wiOiBcIkRJUkVDVElWRVwiLFxuICBcIkNPTVBPVU5EX0VYUFJFU1NJT05cIjogOCxcbiAgXCI4XCI6IFwiQ09NUE9VTkRfRVhQUkVTU0lPTlwiLFxuICBcIklGXCI6IDksXG4gIFwiOVwiOiBcIklGXCIsXG4gIFwiSUZfQlJBTkNIXCI6IDEwLFxuICBcIjEwXCI6IFwiSUZfQlJBTkNIXCIsXG4gIFwiRk9SXCI6IDExLFxuICBcIjExXCI6IFwiRk9SXCIsXG4gIFwiVEVYVF9DQUxMXCI6IDEyLFxuICBcIjEyXCI6IFwiVEVYVF9DQUxMXCIsXG4gIFwiVk5PREVfQ0FMTFwiOiAxMyxcbiAgXCIxM1wiOiBcIlZOT0RFX0NBTExcIixcbiAgXCJKU19DQUxMX0VYUFJFU1NJT05cIjogMTQsXG4gIFwiMTRcIjogXCJKU19DQUxMX0VYUFJFU1NJT05cIixcbiAgXCJKU19PQkpFQ1RfRVhQUkVTU0lPTlwiOiAxNSxcbiAgXCIxNVwiOiBcIkpTX09CSkVDVF9FWFBSRVNTSU9OXCIsXG4gIFwiSlNfUFJPUEVSVFlcIjogMTYsXG4gIFwiMTZcIjogXCJKU19QUk9QRVJUWVwiLFxuICBcIkpTX0FSUkFZX0VYUFJFU1NJT05cIjogMTcsXG4gIFwiMTdcIjogXCJKU19BUlJBWV9FWFBSRVNTSU9OXCIsXG4gIFwiSlNfRlVOQ1RJT05fRVhQUkVTU0lPTlwiOiAxOCxcbiAgXCIxOFwiOiBcIkpTX0ZVTkNUSU9OX0VYUFJFU1NJT05cIixcbiAgXCJKU19DT05ESVRJT05BTF9FWFBSRVNTSU9OXCI6IDE5LFxuICBcIjE5XCI6IFwiSlNfQ09ORElUSU9OQUxfRVhQUkVTU0lPTlwiLFxuICBcIkpTX0NBQ0hFX0VYUFJFU1NJT05cIjogMjAsXG4gIFwiMjBcIjogXCJKU19DQUNIRV9FWFBSRVNTSU9OXCIsXG4gIFwiSlNfQkxPQ0tfU1RBVEVNRU5UXCI6IDIxLFxuICBcIjIxXCI6IFwiSlNfQkxPQ0tfU1RBVEVNRU5UXCIsXG4gIFwiSlNfVEVNUExBVEVfTElURVJBTFwiOiAyMixcbiAgXCIyMlwiOiBcIkpTX1RFTVBMQVRFX0xJVEVSQUxcIixcbiAgXCJKU19JRl9TVEFURU1FTlRcIjogMjMsXG4gIFwiMjNcIjogXCJKU19JRl9TVEFURU1FTlRcIixcbiAgXCJKU19BU1NJR05NRU5UX0VYUFJFU1NJT05cIjogMjQsXG4gIFwiMjRcIjogXCJKU19BU1NJR05NRU5UX0VYUFJFU1NJT05cIixcbiAgXCJKU19TRVFVRU5DRV9FWFBSRVNTSU9OXCI6IDI1LFxuICBcIjI1XCI6IFwiSlNfU0VRVUVOQ0VfRVhQUkVTU0lPTlwiLFxuICBcIkpTX1JFVFVSTl9TVEFURU1FTlRcIjogMjYsXG4gIFwiMjZcIjogXCJKU19SRVRVUk5fU1RBVEVNRU5UXCJcbn07XG5jb25zdCBFbGVtZW50VHlwZXMgPSB7XG4gIFwiRUxFTUVOVFwiOiAwLFxuICBcIjBcIjogXCJFTEVNRU5UXCIsXG4gIFwiQ09NUE9ORU5UXCI6IDEsXG4gIFwiMVwiOiBcIkNPTVBPTkVOVFwiLFxuICBcIlNMT1RcIjogMixcbiAgXCIyXCI6IFwiU0xPVFwiLFxuICBcIlRFTVBMQVRFXCI6IDMsXG4gIFwiM1wiOiBcIlRFTVBMQVRFXCJcbn07XG5jb25zdCBDb25zdGFudFR5cGVzID0ge1xuICBcIk5PVF9DT05TVEFOVFwiOiAwLFxuICBcIjBcIjogXCJOT1RfQ09OU1RBTlRcIixcbiAgXCJDQU5fU0tJUF9QQVRDSFwiOiAxLFxuICBcIjFcIjogXCJDQU5fU0tJUF9QQVRDSFwiLFxuICBcIkNBTl9IT0lTVFwiOiAyLFxuICBcIjJcIjogXCJDQU5fSE9JU1RcIixcbiAgXCJDQU5fU1RSSU5HSUZZXCI6IDMsXG4gIFwiM1wiOiBcIkNBTl9TVFJJTkdJRllcIlxufTtcbmNvbnN0IGxvY1N0dWIgPSB7XG4gIHN0YXJ0OiB7IGxpbmU6IDEsIGNvbHVtbjogMSwgb2Zmc2V0OiAwIH0sXG4gIGVuZDogeyBsaW5lOiAxLCBjb2x1bW46IDEsIG9mZnNldDogMCB9LFxuICBzb3VyY2U6IFwiXCJcbn07XG5mdW5jdGlvbiBjcmVhdGVSb290KGNoaWxkcmVuLCBzb3VyY2UgPSBcIlwiKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogMCxcbiAgICBzb3VyY2UsXG4gICAgY2hpbGRyZW4sXG4gICAgaGVscGVyczogLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKSxcbiAgICBjb21wb25lbnRzOiBbXSxcbiAgICBkaXJlY3RpdmVzOiBbXSxcbiAgICBob2lzdHM6IFtdLFxuICAgIGltcG9ydHM6IFtdLFxuICAgIGNhY2hlZDogMCxcbiAgICB0ZW1wczogMCxcbiAgICBjb2RlZ2VuTm9kZTogdm9pZCAwLFxuICAgIGxvYzogbG9jU3R1YlxuICB9O1xufVxuZnVuY3Rpb24gY3JlYXRlVk5vZGVDYWxsKGNvbnRleHQsIHRhZywgcHJvcHMsIGNoaWxkcmVuLCBwYXRjaEZsYWcsIGR5bmFtaWNQcm9wcywgZGlyZWN0aXZlcywgaXNCbG9jayA9IGZhbHNlLCBkaXNhYmxlVHJhY2tpbmcgPSBmYWxzZSwgaXNDb21wb25lbnQgPSBmYWxzZSwgbG9jID0gbG9jU3R1Yikge1xuICBpZiAoY29udGV4dCkge1xuICAgIGlmIChpc0Jsb2NrKSB7XG4gICAgICBjb250ZXh0LmhlbHBlcihPUEVOX0JMT0NLKTtcbiAgICAgIGNvbnRleHQuaGVscGVyKGdldFZOb2RlQmxvY2tIZWxwZXIoY29udGV4dC5pblNTUiwgaXNDb21wb25lbnQpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGV4dC5oZWxwZXIoZ2V0Vk5vZGVIZWxwZXIoY29udGV4dC5pblNTUiwgaXNDb21wb25lbnQpKTtcbiAgICB9XG4gICAgaWYgKGRpcmVjdGl2ZXMpIHtcbiAgICAgIGNvbnRleHQuaGVscGVyKFdJVEhfRElSRUNUSVZFUyk7XG4gICAgfVxuICB9XG4gI
15HJldHVybiB7XG4gICAgdHlwZTogMTMsXG4gICAgdGFnLFxuICAgIHByb3BzLFxuICAgIGNoaWxkcmVuLFxuICAgIHBhdGNoRmxhZyxcbiAgICBkeW5hbWljUHJvcHMsXG4gICAgZGlyZWN0aXZlcyxcbiAgICBpc0Jsb2NrLFxuICAgIGRpc2FibGVUcmFja2luZyxcbiAgICBpc0NvbXBvbmVudCxcbiAgICBsb2NcbiAgfTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUFycmF5RXhwcmVzc2lvbihlbGVtZW50cywgbG9jID0gbG9jU3R1Yikge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IDE3LFxuICAgIGxvYyxcbiAgICBlbGVtZW50c1xuICB9O1xufVxuZnVuY3Rpb24gY3JlYXRlT2JqZWN0RXhwcmVzc2lvbihwcm9wZXJ0aWVzLCBsb2MgPSBsb2NTdHViKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogMTUsXG4gICAgbG9jLFxuICAgIHByb3BlcnRpZXNcbiAgfTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZU9iamVjdFByb3BlcnR5KGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAxNixcbiAgICBsb2M6IGxvY1N0dWIsXG4gICAga2V5OiBpc1N0cmluZyhrZXkpID8gY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihrZXksIHRydWUpIDoga2V5LFxuICAgIHZhbHVlXG4gIH07XG59XG5mdW5jdGlvbiBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGNvbnRlbnQsIGlzU3RhdGljID0gZmFsc2UsIGxvYyA9IGxvY1N0dWIsIGNvbnN0VHlwZSA9IDApIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiA0LFxuICAgIGxvYyxcbiAgICBjb250ZW50LFxuICAgIGlzU3RhdGljLFxuICAgIGNvbnN0VHlwZTogaXNTdGF0aWMgPyAzIDogY29uc3RUeXBlXG4gIH07XG59XG5mdW5jdGlvbiBjcmVhdGVJbnRlcnBvbGF0aW9uKGNvbnRlbnQsIGxvYykge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IDUsXG4gICAgbG9jLFxuICAgIGNvbnRlbnQ6IGlzU3RyaW5nKGNvbnRlbnQpID8gY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihjb250ZW50LCBmYWxzZSwgbG9jKSA6IGNvbnRlbnRcbiAgfTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUNvbXBvdW5kRXhwcmVzc2lvbihjaGlsZHJlbiwgbG9jID0gbG9jU3R1Yikge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IDgsXG4gICAgbG9jLFxuICAgIGNoaWxkcmVuXG4gIH07XG59XG5mdW5jdGlvbiBjcmVhdGVDYWxsRXhwcmVzc2lvbihjYWxsZWUsIGFyZ3MgPSBbXSwgbG9jID0gbG9jU3R1Yikge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IDE0LFxuICAgIGxvYyxcbiAgICBjYWxsZWUsXG4gICAgYXJndW1lbnRzOiBhcmdzXG4gIH07XG59XG5mdW5jdGlvbiBjcmVhdGVGdW5jdGlvbkV4cHJlc3Npb24ocGFyYW1zLCByZXR1cm5zID0gdm9pZCAwLCBuZXdsaW5lID0gZmFsc2UsIGlzU2xvdCA9IGZhbHNlLCBsb2MgPSBsb2NTdHViKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogMTgsXG4gICAgcGFyYW1zLFxuICAgIHJldHVybnMsXG4gICAgbmV3bGluZSxcbiAgICBpc1Nsb3QsXG4gICAgbG9jXG4gIH07XG59XG5mdW5jdGlvbiBjcmVhdGVDb25kaXRpb25hbEV4cHJlc3Npb24odGVzdCwgY29uc2VxdWVudCwgYWx0ZXJuYXRlLCBuZXdsaW5lID0gdHJ1ZSkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IDE5LFxuICAgIHRlc3QsXG4gICAgY29uc2VxdWVudCxcbiAgICBhbHRlcm5hdGUsXG4gICAgbmV3bGluZSxcbiAgICBsb2M6IGxvY1N0dWJcbiAgfTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUNhY2hlRXhwcmVzc2lvbihpbmRleCwgdmFsdWUsIGlzVk9uY2UgPSBmYWxzZSkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IDIwLFxuICAgIGluZGV4LFxuICAgIHZhbHVlLFxuICAgIGlzVk9uY2UsXG4gICAgbG9jOiBsb2NTdHViXG4gIH07XG59XG5mdW5jdGlvbiBjcmVhdGVCbG9ja1N0YXRlbWVudChib2R5KSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogMjEsXG4gICAgYm9keSxcbiAgICBsb2M6IGxvY1N0dWJcbiAgfTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVRlbXBsYXRlTGl0ZXJhbChlbGVtZW50cykge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IDIyLFxuICAgIGVsZW1lbnRzLFxuICAgIGxvYzogbG9jU3R1YlxuICB9O1xufVxuZnVuY3Rpb24gY3JlYXRlSWZTdGF0ZW1lbnQodGVzdCwgY29uc2VxdWVudCwgYWx0ZXJuYXRlKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogMjMsXG4gICAgdGVzdCxcbiAgICBjb25zZXF1ZW50LFxuICAgIGFsdGVybmF0ZSxcbiAgICBsb2M6IGxvY1N0dWJcbiAgfTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUFzc2lnbm1lbnRFeHByZXNzaW9uKGxlZnQsIHJpZ2h0KSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogMjQsXG4gICAgbGVmdCxcbiAgICByaWdodCxcbiAgICBsb2M6IGxvY1N0dWJcbiAgfTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVNlcXVlbmNlRXhwcmVzc2lvbihleHByZXNzaW9ucykge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IDI1LFxuICAgIGV4cHJlc3Npb25zLFxuICAgIGxvYzogbG9jU3R1YlxuICB9O1xufVxuZnVuY3Rpb24gY3JlYXRlUmV0dXJuU3RhdGVtZW50KHJldHVybnMpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAyNixcbiAgICByZXR1cm5zLFxuICAgIGxvYzogbG9jU3R1YlxuICB9O1xufVxuZnVuY3Rpb24gZ2V0Vk5vZGVIZWxwZXIoc3NyLCBpc0NvbXBvbmVudCkge1xuICByZXR1cm4gc3NyIHx8IGlzQ29tcG9uZW50ID8gQ1JFQVRFX1ZOT0RFIDogQ1JFQVRFX0VMRU1FTlRfVk5PREU7XG59XG5mdW5jdGlvbiBnZXRWTm9kZUJsb2NrSGVscGVyKHNzciwgaXNDb21wb25lbnQpIHtcbiAgcmV0dXJuIHNzciB8fCBpc0NvbXBvbmVudCA/IENSRUFURV9CTE9DSyA6IENSRUFURV9FTEVNRU5UX0JMT0NLO1xufVxuZnVuY3Rpb24gY29udmVydFRvQmxvY2sobm9kZSwgeyBoZWxwZXIsIHJlbW92ZUhlbHBlciwgaW5TU1IgfSkge1xuICBpZiAoIW5vZGUuaXNCbG9jaykge1xuICAgIG5vZGUuaXNCbG9jayA9IHRydWU7XG4gICAgcmVtb3ZlSGVscGVyKGdldFZOb2RlSGVscGVyKGluU1NSLCBub2RlLmlzQ29tcG9uZW50KSk7XG4gICAgaGVscGVyKE9QRU5fQkxPQ0spO1xuICAgIGhlbHBlcihnZXRWTm9kZUJsb2NrSGVscGVyKGluU1NSLCBub2RlLmlzQ29tcG9uZW50KSk7XG4gIH1cbn1cblxuY29uc3QgZGVmYXVsdERlbGltaXRlcnNPcGVuID0gbmV3IFVpbnQ4QXJyYXkoWzEyMywgMTIzXSk7XG5jb25zdCBkZWZhdWx0RGVsaW1pdGVyc0Nsb3NlID0gbmV3IFVpbnQ4QXJyYXkoWzEyNSwgMTI1XSk7XG5mdW5jdGlvbiBpc1RhZ1N0YXJ0Q2hhcihjKSB7XG4gIHJldHVybi
15BjID49IDk3ICYmIGMgPD0gMTIyIHx8IGMgPj0gNjUgJiYgYyA8PSA5MDtcbn1cbmZ1bmN0aW9uIGlzV2hpdGVzcGFjZShjKSB7XG4gIHJldHVybiBjID09PSAzMiB8fCBjID09PSAxMCB8fCBjID09PSA5IHx8IGMgPT09IDEyIHx8IGMgPT09IDEzO1xufVxuZnVuY3Rpb24gaXNFbmRPZlRhZ1NlY3Rpb24oYykge1xuICByZXR1cm4gYyA9PT0gNDcgfHwgYyA9PT0gNjIgfHwgaXNXaGl0ZXNwYWNlKGMpO1xufVxuZnVuY3Rpb24gdG9DaGFyQ29kZXMoc3RyKSB7XG4gIGNvbnN0IHJldCA9IG5ldyBVaW50OEFycmF5KHN0ci5sZW5ndGgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xuICAgIHJldFtpXSA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5jb25zdCBTZXF1ZW5jZXMgPSB7XG4gIENkYXRhOiBuZXcgVWludDhBcnJheShbNjcsIDY4LCA2NSwgODQsIDY1LCA5MV0pLFxuICAvLyBDREFUQVtcbiAgQ2RhdGFFbmQ6IG5ldyBVaW50OEFycmF5KFs5MywgOTMsIDYyXSksXG4gIC8vIF1dPlxuICBDb21tZW50RW5kOiBuZXcgVWludDhBcnJheShbNDUsIDQ1LCA2Ml0pLFxuICAvLyBgLS0+YFxuICBTY3JpcHRFbmQ6IG5ldyBVaW50OEFycmF5KFs2MCwgNDcsIDExNSwgOTksIDExNCwgMTA1LCAxMTIsIDExNl0pLFxuICAvLyBgPFxcL3NjcmlwdGBcbiAgU3R5bGVFbmQ6IG5ldyBVaW50OEFycmF5KFs2MCwgNDcsIDExNSwgMTE2LCAxMjEsIDEwOCwgMTAxXSksXG4gIC8vIGA8L3N0eWxlYFxuICBUaXRsZUVuZDogbmV3IFVpbnQ4QXJyYXkoWzYwLCA0NywgMTE2LCAxMDUsIDExNiwgMTA4LCAxMDFdKSxcbiAgLy8gYDwvdGl0bGVgXG4gIFRleHRhcmVhRW5kOiBuZXcgVWludDhBcnJheShbXG4gICAgNjAsXG4gICAgNDcsXG4gICAgMTE2LFxuICAgIDEwMSxcbiAgICAxMjAsXG4gICAgMTE2LFxuICAgIDk3LFxuICAgIDExNCxcbiAgICAxMDEsXG4gICAgOTdcbiAgXSlcbiAgLy8gYDwvdGV4dGFyZWFcbn07XG5jbGFzcyBUb2tlbml6ZXIge1xuICBjb25zdHJ1Y3RvcihzdGFjaywgY2JzKSB7XG4gICAgdGhpcy5zdGFjayA9IHN0YWNrO1xuICAgIHRoaXMuY2JzID0gY2JzO1xuICAgIC8qKiBUaGUgY3VycmVudCBzdGF0ZSB0aGUgdG9rZW5pemVyIGlzIGluLiAqL1xuICAgIHRoaXMuc3RhdGUgPSAxO1xuICAgIC8qKiBUaGUgcmVhZCBidWZmZXIuICovXG4gICAgdGhpcy5idWZmZXIgPSBcIlwiO1xuICAgIC8qKiBUaGUgYmVnaW5uaW5nIG9mIHRoZSBzZWN0aW9uIHRoYXQgaXMgY3VycmVudGx5IGJlaW5nIHJlYWQuICovXG4gICAgdGhpcy5zZWN0aW9uU3RhcnQgPSAwO1xuICAgIC8qKiBUaGUgaW5kZXggd2l0aGluIHRoZSBidWZmZXIgdGhhdCB3ZSBhcmUgY3VycmVudGx5IGxvb2tpbmcgYXQuICovXG4gICAgdGhpcy5pbmRleCA9IDA7XG4gICAgLyoqIFRoZSBzdGFydCBvZiB0aGUgbGFzdCBlbnRpdHkuICovXG4gICAgdGhpcy5lbnRpdHlTdGFydCA9IDA7XG4gICAgLyoqIFNvbWUgYmVoYXZpb3IsIGVnLiB3aGVuIGRlY29kaW5nIGVudGl0aWVzLCBpcyBkb25lIHdoaWxlIHdlIGFyZSBpbiBhbm90aGVyIHN0YXRlLiBUaGlzIGtlZXBzIHRyYWNrIG9mIHRoZSBvdGhlciBzdGF0ZSB0eXBlLiAqL1xuICAgIHRoaXMuYmFzZVN0YXRlID0gMTtcbiAgICAvKiogRm9yIHNwZWNpYWwgcGFyc2luZyBiZWhhdmlvciBpbnNpZGUgb2Ygc2NyaXB0IGFuZCBzdHlsZSB0YWdzLiAqL1xuICAgIHRoaXMuaW5SQ0RBVEEgPSBmYWxzZTtcbiAgICAvKiogRm9yIGRpc2FibGluZyBSQ0RBVEEgdGFncyBoYW5kbGluZyAqL1xuICAgIHRoaXMuaW5YTUwgPSBmYWxzZTtcbiAgICAvKiogRm9yIGRpc2FibGluZyBpbnRlcnBvbGF0aW9uIHBhcnNpbmcgaW4gdi1wcmUgKi9cbiAgICB0aGlzLmluVlByZSA9IGZhbHNlO1xuICAgIC8qKiBSZWNvcmQgbmV3bGluZSBwb3NpdGlvbnMgZm9yIGZhc3QgbGluZSAvIGNvbHVtbiBjYWxjdWxhdGlvbiAqL1xuICAgIHRoaXMubmV3bGluZXMgPSBbXTtcbiAgICB0aGlzLm1vZGUgPSAwO1xuICAgIHRoaXMuZGVsaW1pdGVyT3BlbiA9IGRlZmF1bHREZWxpbWl0ZXJzT3BlbjtcbiAgICB0aGlzLmRlbGltaXRlckNsb3NlID0gZGVmYXVsdERlbGltaXRlcnNDbG9zZTtcbiAgICB0aGlzLmRlbGltaXRlckluZGV4ID0gLTE7XG4gICAgdGhpcy5jdXJyZW50U2VxdWVuY2UgPSB2b2lkIDA7XG4gICAgdGhpcy5zZXF1ZW5jZUluZGV4ID0gMDtcbiAgfVxuICBnZXQgaW5TRkNSb290KCkge1xuICAgIHJldHVybiB0aGlzLm1vZGUgPT09IDIgJiYgdGhpcy5zdGFjay5sZW5ndGggPT09IDA7XG4gIH1cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5zdGF0ZSA9IDE7XG4gICAgdGhpcy5tb2RlID0gMDtcbiAgICB0aGlzLmJ1ZmZlciA9IFwiXCI7XG4gICAgdGhpcy5zZWN0aW9uU3RhcnQgPSAwO1xuICAgIHRoaXMuaW5kZXggPSAwO1xuICAgIHRoaXMuYmFzZVN0YXRlID0gMTtcbiAgICB0aGlzLmluUkNEQVRBID0gZmFsc2U7XG4gICAgdGhpcy5jdXJyZW50U2VxdWVuY2UgPSB2b2lkIDA7XG4gICAgdGhpcy5uZXdsaW5lcy5sZW5ndGggPSAwO1xuICAgIHRoaXMuZGVsaW1pdGVyT3BlbiA9IGRlZmF1bHREZWxpbWl0ZXJzT3BlbjtcbiAgICB0aGlzLmRlbGltaXRlckNsb3NlID0gZGVmYXVsdERlbGltaXRlcnNDbG9zZTtcbiAgfVxuICAvKipcbiAgICogR2VuZXJhdGUgUG9zaXRpb24gb2JqZWN0IHdpdGggbGluZSAvIGNvbHVtbiBpbmZvcm1hdGlvbiB1c2luZyByZWNvcmRlZFxuICAgKiBuZXdsaW5lIHBvc2l0aW9ucy4gV2Uga25vdyB0aGUgaW5kZXggaXMgYWx3YXlzIGdvaW5nIHRvIGJlIGFuIGFscmVhZHlcbiAgICogcHJvY2Vzc2VkIGluZGV4LCBzbyBhbGwgdGhlIG5ld2xpbmVzIHVwIHRvIHRoaXMgaW5kZXggc2hvdWxkIGhhdmUgYmVlblxuICAgKiByZWNvcmRlZC5cbiAgICovXG4gIGdldFBvcyhpbmRleCkge1xuICAgIGxldCBsaW5lID0gMTtcbiAgICBsZXQgY29sdW1uID0gaW5kZXggKyAxO1xuICAgIGZvciAobGV0IGkgPSB0aGlzLm5ld2xpbmVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBjb25zdCBuZXdsaW5lSW5kZXggPSB0aGlzLm5ld2xpbmVzW2ldO1xuICAgICAgaWYgKGluZGV4ID4gbmV3bGluZUluZGV4KSB7XG4gICAgICAgIGxpbmUgPSBpICsgMjtcbiAgICAgICAgY29sdW1uID0gaW5kZXggLSBuZXdsaW5lSW5kZXg7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgY29sdW1uLFxuICAgICAgbGluZSxcbiAgICAgIG9mZnNldDogaW5kZXhcbiAgICB9O1xuICB9XG4gI
15HBlZWsoKSB7XG4gICAgcmV0dXJuIHRoaXMuYnVmZmVyLmNoYXJDb2RlQXQodGhpcy5pbmRleCArIDEpO1xuICB9XG4gIHN0YXRlVGV4dChjKSB7XG4gICAgaWYgKGMgPT09IDYwKSB7XG4gICAgICBpZiAodGhpcy5pbmRleCA+IHRoaXMuc2VjdGlvblN0YXJ0KSB7XG4gICAgICAgIHRoaXMuY2JzLm9udGV4dCh0aGlzLnNlY3Rpb25TdGFydCwgdGhpcy5pbmRleCk7XG4gICAgICB9XG4gICAgICB0aGlzLnN0YXRlID0gNTtcbiAgICAgIHRoaXMuc2VjdGlvblN0YXJ0ID0gdGhpcy5pbmRleDtcbiAgICB9IGVsc2UgaWYgKCF0aGlzLmluVlByZSAmJiBjID09PSB0aGlzLmRlbGltaXRlck9wZW5bMF0pIHtcbiAgICAgIHRoaXMuc3RhdGUgPSAyO1xuICAgICAgdGhpcy5kZWxpbWl0ZXJJbmRleCA9IDA7XG4gICAgICB0aGlzLnN0YXRlSW50ZXJwb2xhdGlvbk9wZW4oYyk7XG4gICAgfVxuICB9XG4gIHN0YXRlSW50ZXJwb2xhdGlvbk9wZW4oYykge1xuICAgIGlmIChjID09PSB0aGlzLmRlbGltaXRlck9wZW5bdGhpcy5kZWxpbWl0ZXJJbmRleF0pIHtcbiAgICAgIGlmICh0aGlzLmRlbGltaXRlckluZGV4ID09PSB0aGlzLmRlbGltaXRlck9wZW4ubGVuZ3RoIC0gMSkge1xuICAgICAgICBjb25zdCBzdGFydCA9IHRoaXMuaW5kZXggKyAxIC0gdGhpcy5kZWxpbWl0ZXJPcGVuLmxlbmd0aDtcbiAgICAgICAgaWYgKHN0YXJ0ID4gdGhpcy5zZWN0aW9uU3RhcnQpIHtcbiAgICAgICAgICB0aGlzLmNicy5vbnRleHQodGhpcy5zZWN0aW9uU3RhcnQsIHN0YXJ0KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0YXRlID0gMztcbiAgICAgICAgdGhpcy5zZWN0aW9uU3RhcnQgPSBzdGFydDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGVsaW1pdGVySW5kZXgrKztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuaW5SQ0RBVEEpIHtcbiAgICAgIHRoaXMuc3RhdGUgPSAzMjtcbiAgICAgIHRoaXMuc3RhdGVJblJDREFUQShjKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdGF0ZSA9IDE7XG4gICAgICB0aGlzLnN0YXRlVGV4dChjKTtcbiAgICB9XG4gIH1cbiAgc3RhdGVJbnRlcnBvbGF0aW9uKGMpIHtcbiAgICBpZiAoYyA9PT0gdGhpcy5kZWxpbWl0ZXJDbG9zZVswXSkge1xuICAgICAgdGhpcy5zdGF0ZSA9IDQ7XG4gICAgICB0aGlzLmRlbGltaXRlckluZGV4ID0gMDtcbiAgICAgIHRoaXMuc3RhdGVJbnRlcnBvbGF0aW9uQ2xvc2UoYyk7XG4gICAgfVxuICB9XG4gIHN0YXRlSW50ZXJwb2xhdGlvbkNsb3NlKGMpIHtcbiAgICBpZiAoYyA9PT0gdGhpcy5kZWxpbWl0ZXJDbG9zZVt0aGlzLmRlbGltaXRlckluZGV4XSkge1xuICAgICAgaWYgKHRoaXMuZGVsaW1pdGVySW5kZXggPT09IHRoaXMuZGVsaW1pdGVyQ2xvc2UubGVuZ3RoIC0gMSkge1xuICAgICAgICB0aGlzLmNicy5vbmludGVycG9sYXRpb24odGhpcy5zZWN0aW9uU3RhcnQsIHRoaXMuaW5kZXggKyAxKTtcbiAgICAgICAgaWYgKHRoaXMuaW5SQ0RBVEEpIHtcbiAgICAgICAgICB0aGlzLnN0YXRlID0gMzI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zdGF0ZSA9IDE7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWN0aW9uU3RhcnQgPSB0aGlzLmluZGV4ICsgMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGVsaW1pdGVySW5kZXgrKztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdGF0ZSA9IDM7XG4gICAgICB0aGlzLnN0YXRlSW50ZXJwb2xhdGlvbihjKTtcbiAgICB9XG4gIH1cbiAgc3RhdGVTcGVjaWFsU3RhcnRTZXF1ZW5jZShjKSB7XG4gICAgY29uc3QgaXNFbmQgPSB0aGlzLnNlcXVlbmNlSW5kZXggPT09IHRoaXMuY3VycmVudFNlcXVlbmNlLmxlbmd0aDtcbiAgICBjb25zdCBpc01hdGNoID0gaXNFbmQgPyAoXG4gICAgICAvLyBJZiB3ZSBhcmUgYXQgdGhlIGVuZCBvZiB0aGUgc2VxdWVuY2UsIG1ha2Ugc3VyZSB0aGUgdGFnIG5hbWUgaGFzIGVuZGVkXG4gICAgICBpc0VuZE9mVGFnU2VjdGlvbihjKVxuICAgICkgOiAoXG4gICAgICAvLyBPdGhlcndpc2UsIGRvIGEgY2FzZS1pbnNlbnNpdGl2ZSBjb21wYXJpc29uXG4gICAgICAoYyB8IDMyKSA9PT0gdGhpcy5jdXJyZW50U2VxdWVuY2VbdGhpcy5zZXF1ZW5jZUluZGV4XVxuICAgICk7XG4gICAgaWYgKCFpc01hdGNoKSB7XG4gICAgICB0aGlzLmluUkNEQVRBID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmICghaXNFbmQpIHtcbiAgICAgIHRoaXMuc2VxdWVuY2VJbmRleCsrO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnNlcXVlbmNlSW5kZXggPSAwO1xuICAgIHRoaXMuc3RhdGUgPSA2O1xuICAgIHRoaXMuc3RhdGVJblRhZ05hbWUoYyk7XG4gIH1cbiAgLyoqIExvb2sgZm9yIGFuIGVuZCB0YWcuIEZvciA8dGl0bGU+IGFuZCA8dGV4dGFyZWE+LCBhbHNvIGRlY29kZSBlbnRpdGllcy4gKi9cbiAgc3RhdGVJblJDREFUQShjKSB7XG4gICAgaWYgKHRoaXMuc2VxdWVuY2VJbmRleCA9PT0gdGhpcy5jdXJyZW50U2VxdWVuY2UubGVuZ3RoKSB7XG4gICAgICBpZiAoYyA9PT0gNjIgfHwgaXNXaGl0ZXNwYWNlKGMpKSB7XG4gICAgICAgIGNvbnN0IGVuZE9mVGV4dCA9IHRoaXMuaW5kZXggLSB0aGlzLmN1cnJlbnRTZXF1ZW5jZS5sZW5ndGg7XG4gICAgICAgIGlmICh0aGlzLnNlY3Rpb25TdGFydCA8IGVuZE9mVGV4dCkge1xuICAgICAgICAgIGNvbnN0IGFjdHVhbEluZGV4ID0gdGhpcy5pbmRleDtcbiAgICAgICAgICB0aGlzLmluZGV4ID0gZW5kT2ZUZXh0O1xuICAgICAgICAgIHRoaXMuY2JzLm9udGV4dCh0aGlzLnNlY3Rpb25TdGFydCwgZW5kT2ZUZXh0KTtcbiAgICAgICAgICB0aGlzLmluZGV4ID0gYWN0dWFsSW5kZXg7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWN0aW9uU3RhcnQgPSBlbmRPZlRleHQgKyAyO1xuICAgICAgICB0aGlzLnN0YXRlSW5DbG9zaW5nVGFnTmFtZShjKTtcbiAgICAgICAgdGhpcy5pblJDREFUQSA9IGZhbHNlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLnNlcXVlbmNlSW5kZXggPSAwO1xuICAgIH1cbiAgICBpZiAoKGMgfCAzMikgPT09IHRoaXMuY3VycmVudFNlcXVlbmNlW3RoaXMuc2VxdWVuY2VJbmRleF0pIHtcbiAgICAgIHRoaXMuc2VxdWVuY2VJbmRleCArPSAxO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zZXF1ZW5jZUluZGV4ID09PSAwKSB7XG4gICAgICBpZiAodGhpcy5jdXJyZW50U2VxdWVuY2UgPT09IFNlcXVlbmNlcy5UaXRsZUVuZCB8fCB0aGlzLmN1cnJlbnRTZXF1ZW5jZSA9PT0gU2VxdWVuY2VzLlRleHRhcmVhRW5kICYmICF0aGlzLmluU0ZDUm9vdCkge1xuICAgICAgICBpZiAoYyA9PT0gdGhpcy5kZWxpbWl0ZXJPcGVuWzBdKSB7XG4gICAgICAgICAgdGhpcy5zdGF0ZSA9IDI7XG4gICAgICAgICAgdGhpcy5kZWxpbWl0ZXJJbmRleCA9IDA7XG4gICAgICAgICAgdGhpcy5zdGF0ZUludGVycG9sYXRpb25PcGVuKGMpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuZmFzdEZvcndhcmRUbyg2MCkpIHtcbiAgICAgICAgdGhpcy5zZXF1ZW5jZUluZGV4ID0gMTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXF1ZW5jZUluZGV4ID0gTnVtYmVyKGMgPT09IDYwKTtcbiAgICB9XG4gI
15H1cbiAgc3RhdGVDREFUQVNlcXVlbmNlKGMpIHtcbiAgICBpZiAoYyA9PT0gU2VxdWVuY2VzLkNkYXRhW3RoaXMuc2VxdWVuY2VJbmRleF0pIHtcbiAgICAgIGlmICgrK3RoaXMuc2VxdWVuY2VJbmRleCA9PT0gU2VxdWVuY2VzLkNkYXRhLmxlbmd0aCkge1xuICAgICAgICB0aGlzLnN0YXRlID0gMjg7XG4gICAgICAgIHRoaXMuY3VycmVudFNlcXVlbmNlID0gU2VxdWVuY2VzLkNkYXRhRW5kO1xuICAgICAgICB0aGlzLnNlcXVlbmNlSW5kZXggPSAwO1xuICAgICAgICB0aGlzLnNlY3Rpb25TdGFydCA9IHRoaXMuaW5kZXggKyAxO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlcXVlbmNlSW5kZXggPSAwO1xuICAgICAgdGhpcy5zdGF0ZSA9IDIzO1xuICAgICAgdGhpcy5zdGF0ZUluRGVjbGFyYXRpb24oYyk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBXaGVuIHdlIHdhaXQgZm9yIG9uZSBzcGVjaWZpYyBjaGFyYWN0ZXIsIHdlIGNhbiBzcGVlZCB0aGluZ3MgdXBcbiAgICogYnkgc2tpcHBpbmcgdGhyb3VnaCB0aGUgYnVmZmVyIHVudGlsIHdlIGZpbmQgaXQuXG4gICAqXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGNoYXJhY3RlciB3YXMgZm91bmQuXG4gICAqL1xuICBmYXN0Rm9yd2FyZFRvKGMpIHtcbiAgICB3aGlsZSAoKyt0aGlzLmluZGV4IDwgdGhpcy5idWZmZXIubGVuZ3RoKSB7XG4gICAgICBjb25zdCBjYyA9IHRoaXMuYnVmZmVyLmNoYXJDb2RlQXQodGhpcy5pbmRleCk7XG4gICAgICBpZiAoY2MgPT09IDEwKSB7XG4gICAgICAgIHRoaXMubmV3bGluZXMucHVzaCh0aGlzLmluZGV4KTtcbiAgICAgIH1cbiAgICAgIGlmIChjYyA9PT0gYykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5pbmRleCA9IHRoaXMuYnVmZmVyLmxlbmd0aCAtIDE7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8qKlxuICAgKiBDb21tZW50cyBhbmQgQ0RBVEEgZW5kIHdpdGggYC0tPmAgYW5kIGBdXT5gLlxuICAgKlxuICAgKiBUaGVpciBjb21tb24gcXVhbGl0aWVzIGFyZTpcbiAgICogLSBUaGVpciBlbmQgc2VxdWVuY2VzIGhhdmUgYSBkaXN0aW5jdCBjaGFyYWN0ZXIgdGhleSBzdGFydCB3aXRoLlxuICAgKiAtIFRoYXQgY2hhcmFjdGVyIGlzIHRoZW4gcmVwZWF0ZWQsIHNvIHdlIGhhdmUgdG8gY2hlY2sgbXVsdGlwbGUgcmVwZWF0cy5cbiAgICogLSBBbGwgY2hhcmFjdGVycyBidXQgdGhlIHN0YXJ0IGNoYXJhY3RlciBvZiB0aGUgc2VxdWVuY2UgY2FuIGJlIHNraXBwZWQuXG4gICAqL1xuICBzdGF0ZUluQ29tbWVudExpa2UoYykge1xuICAgIGlmIChjID09PSB0aGlzLmN1cnJlbnRTZXF1ZW5jZVt0aGlzLnNlcXVlbmNlSW5kZXhdKSB7XG4gICAgICBpZiAoKyt0aGlzLnNlcXVlbmNlSW5kZXggPT09IHRoaXMuY3VycmVudFNlcXVlbmNlLmxlbmd0aCkge1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50U2VxdWVuY2UgPT09IFNlcXVlbmNlcy5DZGF0YUVuZCkge1xuICAgICAgICAgIHRoaXMuY2JzLm9uY2RhdGEodGhpcy5zZWN0aW9uU3RhcnQsIHRoaXMuaW5kZXggLSAyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmNicy5vbmNvbW1lbnQodGhpcy5zZWN0aW9uU3RhcnQsIHRoaXMuaW5kZXggLSAyKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlcXVlbmNlSW5kZXggPSAwO1xuICAgICAgICB0aGlzLnNlY3Rpb25TdGFydCA9IHRoaXMuaW5kZXggKyAxO1xuICAgICAgICB0aGlzLnN0YXRlID0gMTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuc2VxdWVuY2VJbmRleCA9PT0gMCkge1xuICAgICAgaWYgKHRoaXMuZmFzdEZvcndhcmRUbyh0aGlzLmN1cnJlbnRTZXF1ZW5jZVswXSkpIHtcbiAgICAgICAgdGhpcy5zZXF1ZW5jZUluZGV4ID0gMTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGMgIT09IHRoaXMuY3VycmVudFNlcXVlbmNlW3RoaXMuc2VxdWVuY2VJbmRleCAtIDFdKSB7XG4gICAgICB0aGlzLnNlcXVlbmNlSW5kZXggPSAwO1xuICAgIH1cbiAgfVxuICBzdGFydFNwZWNpYWwoc2VxdWVuY2UsIG9mZnNldCkge1xuICAgIHRoaXMuZW50ZXJSQ0RBVEEoc2VxdWVuY2UsIG9mZnNldCk7XG4gICAgdGhpcy5zdGF0ZSA9IDMxO1xuICB9XG4gIGVudGVyUkNEQVRBKHNlcXVlbmNlLCBvZmZzZXQpIHtcbiAgICB0aGlzLmluUkNEQVRBID0gdHJ1ZTtcbiAgICB0aGlzLmN1cnJlbnRTZXF1ZW5jZSA9IHNlcXVlbmNlO1xuICAgIHRoaXMuc2VxdWVuY2VJbmRleCA9IG9mZnNldDtcbiAgfVxuICBzdGF0ZUJlZm9yZVRhZ05hbWUoYykge1xuICAgIGlmIChjID09PSAzMykge1xuICAgICAgdGhpcy5zdGF0ZSA9IDIyO1xuICAgICAgdGhpcy5zZWN0aW9uU3RhcnQgPSB0aGlzLmluZGV4ICsgMTtcbiAgICB9IGVsc2UgaWYgKGMgPT09IDYzKSB7XG4gICAgICB0aGlzLnN0YXRlID0gMjQ7XG4gICAgICB0aGlzLnNlY3Rpb25TdGFydCA9IHRoaXMuaW5kZXggKyAxO1xuICAgIH0gZWxzZSBpZiAoaXNUYWdTdGFydENoYXIoYykpIHtcbiAgICAgIHRoaXMuc2VjdGlvblN0YXJ0ID0gdGhpcy5pbmRleDtcbiAgICAgIGlmICh0aGlzLm1vZGUgPT09IDApIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IDY7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuaW5TRkNSb290KSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAzNDtcbiAgICAgIH0gZWxzZSBpZiAoIXRoaXMuaW5YTUwpIHtcbiAgICAgICAgaWYgKGMgPT09IDExNikge1xuICAgICAgICAgIHRoaXMuc3RhdGUgPSAzMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnN0YXRlID0gYyA9PT0gMTE1ID8gMjkgOiA2O1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnN0YXRlID0gNjtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGMgPT09IDQ3KSB7XG4gICAgICB0aGlzLnN0YXRlID0gODtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdGF0ZSA9IDE7XG4gICAgICB0aGlzLnN0YXRlVGV4dChjKTtcbiAgICB9XG4gIH1cbiAgc3RhdGVJblRhZ05hbWUoYykge1xuICAgIGlmIChpc0VuZE9mVGFnU2VjdGlvbihjKSkge1xuICAgICAgdGhpcy5oYW5kbGVUYWdOYW1lKGMpO1xuICAgIH1cbiAgfVxuICBzdGF0ZUluU0ZDUm9vdFRhZ05hbWUoYykge1xuICAgIGlmIChpc0VuZE9mVGFnU2VjdGlvbihjKSkge1xuICAgICAgY29uc3QgdGFnID0gdGhpcy5idWZmZXIuc2xpY2UodGhpcy5zZWN0aW9uU3RhcnQsIHRoaXMuaW5kZXgpO1xuICAgICAgaWYgKHRhZyAhPT0gXCJ0ZW1wbGF0ZVwiKSB7XG4gICAgICAgI
15HRoaXMuZW50ZXJSQ0RBVEEodG9DaGFyQ29kZXMoYDwvYCArIHRhZyksIDApO1xuICAgICAgfVxuICAgICAgdGhpcy5oYW5kbGVUYWdOYW1lKGMpO1xuICAgIH1cbiAgfVxuICBoYW5kbGVUYWdOYW1lKGMpIHtcbiAgICB0aGlzLmNicy5vbm9wZW50YWduYW1lKHRoaXMuc2VjdGlvblN0YXJ0LCB0aGlzLmluZGV4KTtcbiAgICB0aGlzLnNlY3Rpb25TdGFydCA9IC0xO1xuICAgIHRoaXMuc3RhdGUgPSAxMTtcbiAgICB0aGlzLnN0YXRlQmVmb3JlQXR0ck5hbWUoYyk7XG4gIH1cbiAgc3RhdGVCZWZvcmVDbG9zaW5nVGFnTmFtZShjKSB7XG4gICAgaWYgKGlzV2hpdGVzcGFjZShjKSkgOyBlbHNlIGlmIChjID09PSA2Mikge1xuICAgICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgfHwgZmFsc2UpIHtcbiAgICAgICAgdGhpcy5jYnMub25lcnIoMTQsIHRoaXMuaW5kZXgpO1xuICAgICAgfVxuICAgICAgdGhpcy5zdGF0ZSA9IDE7XG4gICAgICB0aGlzLnNlY3Rpb25TdGFydCA9IHRoaXMuaW5kZXggKyAxO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0YXRlID0gaXNUYWdTdGFydENoYXIoYykgPyA5IDogMjc7XG4gICAgICB0aGlzLnNlY3Rpb25TdGFydCA9IHRoaXMuaW5kZXg7XG4gICAgfVxuICB9XG4gIHN0YXRlSW5DbG9zaW5nVGFnTmFtZShjKSB7XG4gICAgaWYgKGMgPT09IDYyIHx8IGlzV2hpdGVzcGFjZShjKSkge1xuICAgICAgdGhpcy5jYnMub25jbG9zZXRhZyh0aGlzLnNlY3Rpb25TdGFydCwgdGhpcy5pbmRleCk7XG4gICAgICB0aGlzLnNlY3Rpb25TdGFydCA9IC0xO1xuICAgICAgdGhpcy5zdGF0ZSA9IDEwO1xuICAgICAgdGhpcy5zdGF0ZUFmdGVyQ2xvc2luZ1RhZ05hbWUoYyk7XG4gICAgfVxuICB9XG4gIHN0YXRlQWZ0ZXJDbG9zaW5nVGFnTmFtZShjKSB7XG4gICAgaWYgKGMgPT09IDYyKSB7XG4gICAgICB0aGlzLnN0YXRlID0gMTtcbiAgICAgIHRoaXMuc2VjdGlvblN0YXJ0ID0gdGhpcy5pbmRleCArIDE7XG4gICAgfVxuICB9XG4gIHN0YXRlQmVmb3JlQXR0ck5hbWUoYykge1xuICAgIGlmIChjID09PSA2Mikge1xuICAgICAgdGhpcy5jYnMub25vcGVudGFnZW5kKHRoaXMuaW5kZXgpO1xuICAgICAgaWYgKHRoaXMuaW5SQ0RBVEEpIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IDMyO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IDE7XG4gICAgICB9XG4gICAgICB0aGlzLnNlY3Rpb25TdGFydCA9IHRoaXMuaW5kZXggKyAxO1xuICAgIH0gZWxzZSBpZiAoYyA9PT0gNDcpIHtcbiAgICAgIHRoaXMuc3RhdGUgPSA3O1xuICAgICAgaWYgKCghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHx8IGZhbHNlKSAmJiB0aGlzLnBlZWsoKSAhPT0gNjIpIHtcbiAgICAgICAgdGhpcy5jYnMub25lcnIoMjIsIHRoaXMuaW5kZXgpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoYyA9PT0gNjAgJiYgdGhpcy5wZWVrKCkgPT09IDQ3KSB7XG4gICAgICB0aGlzLmNicy5vbm9wZW50YWdlbmQodGhpcy5pbmRleCk7XG4gICAgICB0aGlzLnN0YXRlID0gNTtcbiAgICAgIHRoaXMuc2VjdGlvblN0YXJ0ID0gdGhpcy5pbmRleDtcbiAgICB9IGVsc2UgaWYgKCFpc1doaXRlc3BhY2UoYykpIHtcbiAgICAgIGlmICgoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB8fCBmYWxzZSkgJiYgYyA9PT0gNjEpIHtcbiAgICAgICAgdGhpcy5jYnMub25lcnIoXG4gICAgICAgICAgMTksXG4gICAgICAgICAgdGhpcy5pbmRleFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgdGhpcy5oYW5kbGVBdHRyU3RhcnQoYyk7XG4gICAgfVxuICB9XG4gIGhhbmRsZUF0dHJTdGFydChjKSB7XG4gICAgaWYgKGMgPT09IDExOCAmJiB0aGlzLnBlZWsoKSA9PT0gNDUpIHtcbiAgICAgIHRoaXMuc3RhdGUgPSAxMztcbiAgICAgIHRoaXMuc2VjdGlvblN0YXJ0ID0gdGhpcy5pbmRleDtcbiAgICB9IGVsc2UgaWYgKGMgPT09IDQ2IHx8IGMgPT09IDU4IHx8IGMgPT09IDY0IHx8IGMgPT09IDM1KSB7XG4gICAgICB0aGlzLmNicy5vbmRpcm5hbWUodGhpcy5pbmRleCwgdGhpcy5pbmRleCArIDEpO1xuICAgICAgdGhpcy5zdGF0ZSA9IDE0O1xuICAgICAgdGhpcy5zZWN0aW9uU3RhcnQgPSB0aGlzLmluZGV4ICsgMTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdGF0ZSA9IDEyO1xuICAgICAgdGhpcy5zZWN0aW9uU3RhcnQgPSB0aGlzLmluZGV4O1xuICAgIH1cbiAgfVxuICBzdGF0ZUluU2VsZkNsb3NpbmdUYWcoYykge1xuICAgIGlmIChjID09PSA2Mikge1xuICAgICAgdGhpcy5jYnMub25zZWxmY2xvc2luZ3RhZyh0aGlzLmluZGV4KTtcbiAgICAgIHRoaXMuc3RhdGUgPSAxO1xuICAgICAgdGhpcy5zZWN0aW9uU3RhcnQgPSB0aGlzLmluZGV4ICsgMTtcbiAgICAgIHRoaXMuaW5SQ0RBVEEgPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKCFpc1doaXRlc3BhY2UoYykpIHtcbiAgICAgIHRoaXMuc3RhdGUgPSAxMTtcbiAgICAgIHRoaXMuc3RhdGVCZWZvcmVBdHRyTmFtZShjKTtcbiAgICB9XG4gIH1cbiAgc3RhdGVJbkF0dHJOYW1lKGMpIHtcbiAgICBpZiAoYyA9PT0gNjEgfHwgaXNFbmRPZlRhZ1NlY3Rpb24oYykpIHtcbiAgICAgIHRoaXMuY2JzLm9uYXR0cmlibmFtZSh0aGlzLnNlY3Rpb25TdGFydCwgdGhpcy5pbmRleCk7XG4gICAgICB0aGlzLmhhbmRsZUF0dHJOYW1lRW5kKGMpO1xuICAgIH0gZWxzZSBpZiAoKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgfHwgZmFsc2UpICYmIChjID09PSAzNCB8fCBjID09PSAzOSB8fCBjID09PSA2MCkpIHtcbiAgICAgIHRoaXMuY2JzLm9uZXJyKFxuICAgICAgICAxNyxcbiAgICAgICAgdGhpcy5pbmRleFxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgc3RhdGVJbkRpck5hbWUoYykge1xuICAgIGlmIChjID09PSA2MSB8fCBpc0VuZE9mVGFnU2VjdGlvbihjKSkge1xuICAgICAgdGhpcy5jYnMub25kaXJuYW1lKHRoaXMuc2VjdGlvblN0YXJ0LCB0aGlzLmluZGV4KTtcbiAgICAgIHRoaXMuaGFuZGxlQXR0ck5hbWVFbmQoYyk7XG4gICAgfSBlbHNlIGlmIChjID09PSA1OCkge1xuICAgICAgdGhpcy5jYnMub25kaXJuYW1lKHRoaXMuc2VjdGlvblN0YXJ0LCB0aGlzLmluZGV4KTtcbiAgICAgIHRoaXMuc3RhdGUgPSAxNDtcbiAgICAgIHRoaXMuc2VjdGlvblN0YXJ0ID0gdGh
15pcy5pbmRleCArIDE7XG4gICAgfSBlbHNlIGlmIChjID09PSA0Nikge1xuICAgICAgdGhpcy5jYnMub25kaXJuYW1lKHRoaXMuc2VjdGlvblN0YXJ0LCB0aGlzLmluZGV4KTtcbiAgICAgIHRoaXMuc3RhdGUgPSAxNjtcbiAgICAgIHRoaXMuc2VjdGlvblN0YXJ0ID0gdGhpcy5pbmRleCArIDE7XG4gICAgfVxuICB9XG4gIHN0YXRlSW5EaXJBcmcoYykge1xuICAgIGlmIChjID09PSA2MSB8fCBpc0VuZE9mVGFnU2VjdGlvbihjKSkge1xuICAgICAgdGhpcy5jYnMub25kaXJhcmcodGhpcy5zZWN0aW9uU3RhcnQsIHRoaXMuaW5kZXgpO1xuICAgICAgdGhpcy5oYW5kbGVBdHRyTmFtZUVuZChjKTtcbiAgICB9IGVsc2UgaWYgKGMgPT09IDkxKSB7XG4gICAgICB0aGlzLnN0YXRlID0gMTU7XG4gICAgfSBlbHNlIGlmIChjID09PSA0Nikge1xuICAgICAgdGhpcy5jYnMub25kaXJhcmcodGhpcy5zZWN0aW9uU3RhcnQsIHRoaXMuaW5kZXgpO1xuICAgICAgdGhpcy5zdGF0ZSA9IDE2O1xuICAgICAgdGhpcy5zZWN0aW9uU3RhcnQgPSB0aGlzLmluZGV4ICsgMTtcbiAgICB9XG4gIH1cbiAgc3RhdGVJbkR5bmFtaWNEaXJBcmcoYykge1xuICAgIGlmIChjID09PSA5Mykge1xuICAgICAgdGhpcy5zdGF0ZSA9IDE0O1xuICAgIH0gZWxzZSBpZiAoYyA9PT0gNjEgfHwgaXNFbmRPZlRhZ1NlY3Rpb24oYykpIHtcbiAgICAgIHRoaXMuY2JzLm9uZGlyYXJnKHRoaXMuc2VjdGlvblN0YXJ0LCB0aGlzLmluZGV4ICsgMSk7XG4gICAgICB0aGlzLmhhbmRsZUF0dHJOYW1lRW5kKGMpO1xuICAgICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgfHwgZmFsc2UpIHtcbiAgICAgICAgdGhpcy5jYnMub25lcnIoXG4gICAgICAgICAgMjcsXG4gICAgICAgICAgdGhpcy5pbmRleFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBzdGF0ZUluRGlyTW9kaWZpZXIoYykge1xuICAgIGlmIChjID09PSA2MSB8fCBpc0VuZE9mVGFnU2VjdGlvbihjKSkge1xuICAgICAgdGhpcy5jYnMub25kaXJtb2RpZmllcih0aGlzLnNlY3Rpb25TdGFydCwgdGhpcy5pbmRleCk7XG4gICAgICB0aGlzLmhhbmRsZUF0dHJOYW1lRW5kKGMpO1xuICAgIH0gZWxzZSBpZiAoYyA9PT0gNDYpIHtcbiAgICAgIHRoaXMuY2JzLm9uZGlybW9kaWZpZXIodGhpcy5zZWN0aW9uU3RhcnQsIHRoaXMuaW5kZXgpO1xuICAgICAgdGhpcy5zZWN0aW9uU3RhcnQgPSB0aGlzLmluZGV4ICsgMTtcbiAgICB9XG4gIH1cbiAgaGFuZGxlQXR0ck5hbWVFbmQoYykge1xuICAgIHRoaXMuc2VjdGlvblN0YXJ0ID0gdGhpcy5pbmRleDtcbiAgICB0aGlzLnN0YXRlID0gMTc7XG4gICAgdGhpcy5jYnMub25hdHRyaWJuYW1lZW5kKHRoaXMuaW5kZXgpO1xuICAgIHRoaXMuc3RhdGVBZnRlckF0dHJOYW1lKGMpO1xuICB9XG4gIHN0YXRlQWZ0ZXJBdHRyTmFtZShjKSB7XG4gICAgaWYgKGMgPT09IDYxKSB7XG4gICAgICB0aGlzLnN0YXRlID0gMTg7XG4gICAgfSBlbHNlIGlmIChjID09PSA0NyB8fCBjID09PSA2Mikge1xuICAgICAgdGhpcy5jYnMub25hdHRyaWJlbmQoMCwgdGhpcy5zZWN0aW9uU3RhcnQpO1xuICAgICAgdGhpcy5zZWN0aW9uU3RhcnQgPSAtMTtcbiAgICAgIHRoaXMuc3RhdGUgPSAxMTtcbiAgICAgIHRoaXMuc3RhdGVCZWZvcmVBdHRyTmFtZShjKTtcbiAgICB9IGVsc2UgaWYgKCFpc1doaXRlc3BhY2UoYykpIHtcbiAgICAgIHRoaXMuY2JzLm9uYXR0cmliZW5kKDAsIHRoaXMuc2VjdGlvblN0YXJ0KTtcbiAgICAgIHRoaXMuaGFuZGxlQXR0clN0YXJ0KGMpO1xuICAgIH1cbiAgfVxuICBzdGF0ZUJlZm9yZUF0dHJWYWx1ZShjKSB7XG4gICAgaWYgKGMgPT09IDM0KSB7XG4gICAgICB0aGlzLnN0YXRlID0gMTk7XG4gICAgICB0aGlzLnNlY3Rpb25TdGFydCA9IHRoaXMuaW5kZXggKyAxO1xuICAgIH0gZWxzZSBpZiAoYyA9PT0gMzkpIHtcbiAgICAgIHRoaXMuc3RhdGUgPSAyMDtcbiAgICAgIHRoaXMuc2VjdGlvblN0YXJ0ID0gdGhpcy5pbmRleCArIDE7XG4gICAgfSBlbHNlIGlmICghaXNXaGl0ZXNwYWNlKGMpKSB7XG4gICAgICB0aGlzLnNlY3Rpb25TdGFydCA9IHRoaXMuaW5kZXg7XG4gICAgICB0aGlzLnN0YXRlID0gMjE7XG4gICAgICB0aGlzLnN0YXRlSW5BdHRyVmFsdWVOb1F1b3RlcyhjKTtcbiAgICB9XG4gIH1cbiAgaGFuZGxlSW5BdHRyVmFsdWUoYywgcXVvdGUpIHtcbiAgICBpZiAoYyA9PT0gcXVvdGUgfHwgdGhpcy5mYXN0Rm9yd2FyZFRvKHF1b3RlKSkge1xuICAgICAgdGhpcy5jYnMub25hdHRyaWJkYXRhKHRoaXMuc2VjdGlvblN0YXJ0LCB0aGlzLmluZGV4KTtcbiAgICAgIHRoaXMuc2VjdGlvblN0YXJ0ID0gLTE7XG4gICAgICB0aGlzLmNicy5vbmF0dHJpYmVuZChcbiAgICAgICAgcXVvdGUgPT09IDM0ID8gMyA6IDIsXG4gICAgICAgIHRoaXMuaW5kZXggKyAxXG4gICAgICApO1xuICAgICAgdGhpcy5zdGF0ZSA9IDExO1xuICAgIH1cbiAgfVxuICBzdGF0ZUluQXR0clZhbHVlRG91YmxlUXVvdGVzKGMpIHtcbiAgICB0aGlzLmhhbmRsZUluQXR0clZhbHVlKGMsIDM0KTtcbiAgfVxuICBzdGF0ZUluQXR0clZhbHVlU2luZ2xlUXVvdGVzKGMpIHtcbiAgICB0aGlzLmhhbmRsZUluQXR0clZhbHVlKGMsIDM5KTtcbiAgfVxuICBzdGF0ZUluQXR0clZhbHVlTm9RdW90ZXMoYykge1xuICAgIGlmIChpc1doaXRlc3BhY2UoYykgfHwgYyA9PT0gNjIpIHtcbiAgICAgIHRoaXMuY2JzLm9uYXR0cmliZGF0YSh0aGlzLnNlY3Rpb25TdGFydCwgdGhpcy5pbmRleCk7XG4gICAgICB0aGlzLnNlY3Rpb25TdGFydCA9IC0xO1xuICAgICAgdGhpcy5jYnMub25hdHRyaWJlbmQoMSwgdGhpcy5pbmRleCk7XG4gICAgICB0aGlzLnN0YXRlID0gMTE7XG4gICAgICB0aGlzLnN0YXRlQmVmb3JlQXR0ck5hbWUoYyk7XG4gICAgfSBlbHNlIGlmICgoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB8fCBmYWxzZSkgJiYgYyA9PT0gMzQgfHwgYyA9PT0gMzkgfHwgYyA9PT0gNjAgfHwgYyA9PT0gNjEgfHwgYyA9PT0gOTYpIHtcbiAgICAgIHRoaXMuY2JzLm9uZXJyKFxuICAgICAgICAxOCxcbiAgICAgICAgdGhpcy5pbmRleFxuICAgICAgKTtcbiAgICB9IGVsc2UgO1xuICB9XG4gI
15HN0YXRlQmVmb3JlRGVjbGFyYXRpb24oYykge1xuICAgIGlmIChjID09PSA5MSkge1xuICAgICAgdGhpcy5zdGF0ZSA9IDI2O1xuICAgICAgdGhpcy5zZXF1ZW5jZUluZGV4ID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdGF0ZSA9IGMgPT09IDQ1ID8gMjUgOiAyMztcbiAgICB9XG4gIH1cbiAgc3RhdGVJbkRlY2xhcmF0aW9uKGMpIHtcbiAgICBpZiAoYyA9PT0gNjIgfHwgdGhpcy5mYXN0Rm9yd2FyZFRvKDYyKSkge1xuICAgICAgdGhpcy5zdGF0ZSA9IDE7XG4gICAgICB0aGlzLnNlY3Rpb25TdGFydCA9IHRoaXMuaW5kZXggKyAxO1xuICAgIH1cbiAgfVxuICBzdGF0ZUluUHJvY2Vzc2luZ0luc3RydWN0aW9uKGMpIHtcbiAgICBpZiAoYyA9PT0gNjIgfHwgdGhpcy5mYXN0Rm9yd2FyZFRvKDYyKSkge1xuICAgICAgdGhpcy5jYnMub25wcm9jZXNzaW5naW5zdHJ1Y3Rpb24odGhpcy5zZWN0aW9uU3RhcnQsIHRoaXMuaW5kZXgpO1xuICAgICAgdGhpcy5zdGF0ZSA9IDE7XG4gICAgICB0aGlzLnNlY3Rpb25TdGFydCA9IHRoaXMuaW5kZXggKyAxO1xuICAgIH1cbiAgfVxuICBzdGF0ZUJlZm9yZUNvbW1lbnQoYykge1xuICAgIGlmIChjID09PSA0NSkge1xuICAgICAgdGhpcy5zdGF0ZSA9IDI4O1xuICAgICAgdGhpcy5jdXJyZW50U2VxdWVuY2UgPSBTZXF1ZW5jZXMuQ29tbWVudEVuZDtcbiAgICAgIHRoaXMuc2VxdWVuY2VJbmRleCA9IDI7XG4gICAgICB0aGlzLnNlY3Rpb25TdGFydCA9IHRoaXMuaW5kZXggKyAxO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0YXRlID0gMjM7XG4gICAgfVxuICB9XG4gIHN0YXRlSW5TcGVjaWFsQ29tbWVudChjKSB7XG4gICAgaWYgKGMgPT09IDYyIHx8IHRoaXMuZmFzdEZvcndhcmRUbyg2MikpIHtcbiAgICAgIHRoaXMuY2JzLm9uY29tbWVudCh0aGlzLnNlY3Rpb25TdGFydCwgdGhpcy5pbmRleCk7XG4gICAgICB0aGlzLnN0YXRlID0gMTtcbiAgICAgIHRoaXMuc2VjdGlvblN0YXJ0ID0gdGhpcy5pbmRleCArIDE7XG4gICAgfVxuICB9XG4gIHN0YXRlQmVmb3JlU3BlY2lhbFMoYykge1xuICAgIGlmIChjID09PSBTZXF1ZW5jZXMuU2NyaXB0RW5kWzNdKSB7XG4gICAgICB0aGlzLnN0YXJ0U3BlY2lhbChTZXF1ZW5jZXMuU2NyaXB0RW5kLCA0KTtcbiAgICB9IGVsc2UgaWYgKGMgPT09IFNlcXVlbmNlcy5TdHlsZUVuZFszXSkge1xuICAgICAgdGhpcy5zdGFydFNwZWNpYWwoU2VxdWVuY2VzLlN0eWxlRW5kLCA0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdGF0ZSA9IDY7XG4gICAgICB0aGlzLnN0YXRlSW5UYWdOYW1lKGMpO1xuICAgIH1cbiAgfVxuICBzdGF0ZUJlZm9yZVNwZWNpYWxUKGMpIHtcbiAgICBpZiAoYyA9PT0gU2VxdWVuY2VzLlRpdGxlRW5kWzNdKSB7XG4gICAgICB0aGlzLnN0YXJ0U3BlY2lhbChTZXF1ZW5jZXMuVGl0bGVFbmQsIDQpO1xuICAgIH0gZWxzZSBpZiAoYyA9PT0gU2VxdWVuY2VzLlRleHRhcmVhRW5kWzNdKSB7XG4gICAgICB0aGlzLnN0YXJ0U3BlY2lhbChTZXF1ZW5jZXMuVGV4dGFyZWFFbmQsIDQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0YXRlID0gNjtcbiAgICAgIHRoaXMuc3RhdGVJblRhZ05hbWUoYyk7XG4gICAgfVxuICB9XG4gIHN0YXJ0RW50aXR5KCkge1xuICB9XG4gIHN0YXRlSW5FbnRpdHkoKSB7XG4gIH1cbiAgLyoqXG4gICAqIEl0ZXJhdGVzIHRocm91Z2ggdGhlIGJ1ZmZlciwgY2FsbGluZyB0aGUgZnVuY3Rpb24gY29ycmVzcG9uZGluZyB0byB0aGUgY3VycmVudCBzdGF0ZS5cbiAgICpcbiAgICogU3RhdGVzIHRoYXQgYXJlIG1vcmUgbGlrZWx5IHRvIGJlIGhpdCBhcmUgaGlnaGVyIHVwLCBhcyBhIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50LlxuICAgKi9cbiAgcGFyc2UoaW5wdXQpIHtcbiAgICB0aGlzLmJ1ZmZlciA9IGlucHV0O1xuICAgIHdoaWxlICh0aGlzLmluZGV4IDwgdGhpcy5idWZmZXIubGVuZ3RoKSB7XG4gICAgICBjb25zdCBjID0gdGhpcy5idWZmZXIuY2hhckNvZGVBdCh0aGlzLmluZGV4KTtcbiAgICAgIGlmIChjID09PSAxMCkge1xuICAgICAgICB0aGlzLm5ld2xpbmVzLnB1c2godGhpcy5pbmRleCk7XG4gICAgICB9XG4gICAgICBzd2l0Y2ggKHRoaXMuc3RhdGUpIHtcbiAgICAgICAgY2FzZSAxOiB7XG4gICAgICAgICAgdGhpcy5zdGF0ZVRleHQoYyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAyOiB7XG4gICAgICAgICAgdGhpcy5zdGF0ZUludGVycG9sYXRpb25PcGVuKGMpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgMzoge1xuICAgICAgICAgIHRoaXMuc3RhdGVJbnRlcnBvbGF0aW9uKGMpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgNDoge1xuICAgICAgICAgIHRoaXMuc3RhdGVJbnRlcnBvbGF0aW9uQ2xvc2UoYyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAzMToge1xuICAgICAgICAgIHRoaXMuc3RhdGVTcGVjaWFsU3RhcnRTZXF1ZW5jZShjKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIDMyOiB7XG4gICAgICAgICAgdGhpcy5zdGF0ZUluUkNEQVRBKGMpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgMjY6IHtcbiAgICAgICAgICB0aGlzLnN0YXRlQ0RBVEFTZXF1ZW5jZShjKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIDE5OiB7XG4gICAgICAgICAgdGhpcy5zdGF0ZUluQXR0clZhbHVlRG91YmxlUXVvdGVzKGMpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgMTI6IHtcbiAgICAgICAgICB0aGlzLnN0YXRlSW5BdHRyTmFtZShjKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIDEzOiB7XG4gICAgICAgICAgdGhpcy5zdGF0ZUluRGlyTmFtZShjKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIDE0OiB7XG4gICAgICAgICAgdGhpcy5zdGF0ZUluRGlyQXJnKGMpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgMTU6IHtcbiAgICAgICAgICB0aGlzLnN0YXRlSW5EeW5hbWljRGlyQXJnKGMpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgMTY6IHtcbiAgICAgICAgICB0aGlzLnN0YXRlSW5EaXJNb2RpZmllcihjKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIDI4OiB7XG4gICAgICAgICAgdGhpcy5zdGF0ZUluQ29tbWVudExpa2UoYyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgI
15H1cbiAgICAgICAgY2FzZSAyNzoge1xuICAgICAgICAgIHRoaXMuc3RhdGVJblNwZWNpYWxDb21tZW50KGMpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgMTE6IHtcbiAgICAgICAgICB0aGlzLnN0YXRlQmVmb3JlQXR0ck5hbWUoYyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSA2OiB7XG4gICAgICAgICAgdGhpcy5zdGF0ZUluVGFnTmFtZShjKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIDM0OiB7XG4gICAgICAgICAgdGhpcy5zdGF0ZUluU0ZDUm9vdFRhZ05hbWUoYyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSA5OiB7XG4gICAgICAgICAgdGhpcy5zdGF0ZUluQ2xvc2luZ1RhZ05hbWUoYyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSA1OiB7XG4gICAgICAgICAgdGhpcy5zdGF0ZUJlZm9yZVRhZ05hbWUoYyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAxNzoge1xuICAgICAgICAgIHRoaXMuc3RhdGVBZnRlckF0dHJOYW1lKGMpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgMjA6IHtcbiAgICAgICAgICB0aGlzLnN0YXRlSW5BdHRyVmFsdWVTaW5nbGVRdW90ZXMoYyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAxODoge1xuICAgICAgICAgIHRoaXMuc3RhdGVCZWZvcmVBdHRyVmFsdWUoYyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSA4OiB7XG4gICAgICAgICAgdGhpcy5zdGF0ZUJlZm9yZUNsb3NpbmdUYWdOYW1lKGMpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgMTA6IHtcbiAgICAgICAgICB0aGlzLnN0YXRlQWZ0ZXJDbG9zaW5nVGFnTmFtZShjKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIDI5OiB7XG4gICAgICAgICAgdGhpcy5zdGF0ZUJlZm9yZVNwZWNpYWxTKGMpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgMzA6IHtcbiAgICAgICAgICB0aGlzLnN0YXRlQmVmb3JlU3BlY2lhbFQoYyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAyMToge1xuICAgICAgICAgIHRoaXMuc3RhdGVJbkF0dHJWYWx1ZU5vUXVvdGVzKGMpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgNzoge1xuICAgICAgICAgIHRoaXMuc3RhdGVJblNlbGZDbG9zaW5nVGFnKGMpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgMjM6IHtcbiAgICAgICAgICB0aGlzLnN0YXRlSW5EZWNsYXJhdGlvbihjKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIDIyOiB7XG4gICAgICAgICAgdGhpcy5zdGF0ZUJlZm9yZURlY2xhcmF0aW9uKGMpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgMjU6IHtcbiAgICAgICAgICB0aGlzLnN0YXRlQmVmb3JlQ29tbWVudChjKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIDI0OiB7XG4gICAgICAgICAgdGhpcy5zdGF0ZUluUHJvY2Vzc2luZ0luc3RydWN0aW9uKGMpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgMzM6IHtcbiAgICAgICAgICB0aGlzLnN0YXRlSW5FbnRpdHkoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5pbmRleCsrO1xuICAgIH1cbiAgICB0aGlzLmNsZWFudXAoKTtcbiAgICB0aGlzLmZpbmlzaCgpO1xuICB9XG4gIC8qKlxuICAgKiBSZW1vdmUgZGF0YSB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gY29uc3VtZWQgZnJvbSB0aGUgYnVmZmVyLlxuICAgKi9cbiAgY2xlYW51cCgpIHtcbiAgICBpZiAodGhpcy5zZWN0aW9uU3RhcnQgIT09IHRoaXMuaW5kZXgpIHtcbiAgICAgIGlmICh0aGlzLnN0YXRlID09PSAxIHx8IHRoaXMuc3RhdGUgPT09IDMyICYmIHRoaXMuc2VxdWVuY2VJbmRleCA9PT0gMCkge1xuICAgICAgICB0aGlzLmNicy5vbnRleHQodGhpcy5zZWN0aW9uU3RhcnQsIHRoaXMuaW5kZXgpO1xuICAgICAgICB0aGlzLnNlY3Rpb25TdGFydCA9IHRoaXMuaW5kZXg7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc3RhdGUgPT09IDE5IHx8IHRoaXMuc3RhdGUgPT09IDIwIHx8IHRoaXMuc3RhdGUgPT09IDIxKSB7XG4gICAgICAgIHRoaXMuY2JzLm9uYXR0cmliZGF0YSh0aGlzLnNlY3Rpb25TdGFydCwgdGhpcy5pbmRleCk7XG4gICAgICAgIHRoaXMuc2VjdGlvblN0YXJ0ID0gdGhpcy5pbmRleDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgZmluaXNoKCkge1xuICAgIHRoaXMuaGFuZGxlVHJhaWxpbmdEYXRhKCk7XG4gICAgdGhpcy5jYnMub25lbmQoKTtcbiAgfVxuICAvKiogSGFuZGxlIGFueSB0cmFpbGluZyBkYXRhLiAqL1xuICBoYW5kbGVUcmFpbGluZ0RhdGEoKSB7XG4gICAgY29uc3QgZW5kSW5kZXggPSB0aGlzLmJ1ZmZlci5sZW5ndGg7XG4gICAgaWYgKHRoaXMuc2VjdGlvblN0YXJ0ID49IGVuZEluZGV4KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLnN0YXRlID09PSAyOCkge1xuICAgICAgaWYgKHRoaXMuY3VycmVudFNlcXVlbmNlID09PSBTZXF1ZW5jZXMuQ2RhdGFFbmQpIHtcbiAgICAgICAgdGhpcy5jYnMub25jZGF0YSh0aGlzLnNlY3Rpb25TdGFydCwgZW5kSW5kZXgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jYnMub25jb21tZW50KHRoaXMuc2VjdGlvblN0YXJ0LCBlbmRJbmRleCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLnN0YXRlID09PSA2IHx8IHRoaXMuc3RhdGUgPT09IDExIHx8IHRoaXMuc3RhdGUgPT09IDE4IHx8IHRoaXMuc3RhdGUgPT09IDE3IHx8IHRoaXMuc3RhdGUgPT09IDEyIHx8IHRoaXMuc3RhdGUgPT09IDEzIHx8IHRoaXMuc3RhdGUgPT09IDE0IHx8IHRoaXMuc3RhdGUgPT09IDE1IHx8IHRoaXMuc3RhdGUgPT09IDE2IHx8IHRoaXMuc3RhdGUgPT09IDIwIHx8IHRoaXMuc3RhdGUgPT09IDE5IHx8IHRoaXMuc3RhdGUgPT09IDIxIHx8IHRoaXMuc3RhdGUgPT09IDkpIDsgZWxzZSB7XG4gICAgICB0aGlzLmNicy5vbnRleHQodGhpcy5zZWN0aW9uU3RhcnQsIGVuZEluZGV4KTtcbiAgICB9XG4gI
15H1cbiAgZW1pdENvZGVQb2ludChjcCwgY29uc3VtZWQpIHtcbiAgfVxufVxuXG5jb25zdCBDb21waWxlckRlcHJlY2F0aW9uVHlwZXMgPSB7XG4gIFwiQ09NUElMRVJfSVNfT05fRUxFTUVOVFwiOiBcIkNPTVBJTEVSX0lTX09OX0VMRU1FTlRcIixcbiAgXCJDT01QSUxFUl9WX0JJTkRfU1lOQ1wiOiBcIkNPTVBJTEVSX1ZfQklORF9TWU5DXCIsXG4gIFwiQ09NUElMRVJfVl9CSU5EX09CSkVDVF9PUkRFUlwiOiBcIkNPTVBJTEVSX1ZfQklORF9PQkpFQ1RfT1JERVJcIixcbiAgXCJDT01QSUxFUl9WX09OX05BVElWRVwiOiBcIkNPTVBJTEVSX1ZfT05fTkFUSVZFXCIsXG4gIFwiQ09NUElMRVJfVl9JRl9WX0ZPUl9QUkVDRURFTkNFXCI6IFwiQ09NUElMRVJfVl9JRl9WX0ZPUl9QUkVDRURFTkNFXCIsXG4gIFwiQ09NUElMRVJfTkFUSVZFX1RFTVBMQVRFXCI6IFwiQ09NUElMRVJfTkFUSVZFX1RFTVBMQVRFXCIsXG4gIFwiQ09NUElMRVJfSU5MSU5FX1RFTVBMQVRFXCI6IFwiQ09NUElMRVJfSU5MSU5FX1RFTVBMQVRFXCIsXG4gIFwiQ09NUElMRVJfRklMVEVSU1wiOiBcIkNPTVBJTEVSX0ZJTFRFUlNcIlxufTtcbmNvbnN0IGRlcHJlY2F0aW9uRGF0YSA9IHtcbiAgW1wiQ09NUElMRVJfSVNfT05fRUxFTUVOVFwiXToge1xuICAgIG1lc3NhZ2U6IGBQbGF0Zm9ybS1uYXRpdmUgZWxlbWVudHMgd2l0aCBcImlzXCIgcHJvcCB3aWxsIG5vIGxvbmdlciBiZSB0cmVhdGVkIGFzIGNvbXBvbmVudHMgaW4gVnVlIDMgdW5sZXNzIHRoZSBcImlzXCIgdmFsdWUgaXMgZXhwbGljaXRseSBwcmVmaXhlZCB3aXRoIFwidnVlOlwiLmAsXG4gICAgbGluazogYGh0dHBzOi8vdjMtbWlncmF0aW9uLnZ1ZWpzLm9yZy9icmVha2luZy1jaGFuZ2VzL2N1c3RvbS1lbGVtZW50cy1pbnRlcm9wLmh0bWxgXG4gIH0sXG4gIFtcIkNPTVBJTEVSX1ZfQklORF9TWU5DXCJdOiB7XG4gICAgbWVzc2FnZTogKGtleSkgPT4gYC5zeW5jIG1vZGlmaWVyIGZvciB2LWJpbmQgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIHYtbW9kZWwgd2l0aCBhcmd1bWVudCBpbnN0ZWFkLiBcXGB2LWJpbmQ6JHtrZXl9LnN5bmNcXGAgc2hvdWxkIGJlIGNoYW5nZWQgdG8gXFxgdi1tb2RlbDoke2tleX1cXGAuYCxcbiAgICBsaW5rOiBgaHR0cHM6Ly92My1taWdyYXRpb24udnVlanMub3JnL2JyZWFraW5nLWNoYW5nZXMvdi1tb2RlbC5odG1sYFxuICB9LFxuICBbXCJDT01QSUxFUl9WX0JJTkRfT0JKRUNUX09SREVSXCJdOiB7XG4gICAgbWVzc2FnZTogYHYtYmluZD1cIm9ialwiIHVzYWdlIGlzIG5vdyBvcmRlciBzZW5zaXRpdmUgYW5kIGJlaGF2ZXMgbGlrZSBKYXZhU2NyaXB0IG9iamVjdCBzcHJlYWQ6IGl0IHdpbGwgbm93IG92ZXJ3cml0ZSBhbiBleGlzdGluZyBub24tbWVyZ2VhYmxlIGF0dHJpYnV0ZSB0aGF0IGFwcGVhcnMgYmVmb3JlIHYtYmluZCBpbiB0aGUgY2FzZSBvZiBjb25mbGljdC4gVG8gcmV0YWluIDIueCBiZWhhdmlvciwgbW92ZSB2LWJpbmQgdG8gbWFrZSBpdCB0aGUgZmlyc3QgYXR0cmlidXRlLiBZb3UgY2FuIGFsc28gc3VwcHJlc3MgdGhpcyB3YXJuaW5nIGlmIHRoZSB1c2FnZSBpcyBpbnRlbmRlZC5gLFxuICAgIGxpbms6IGBodHRwczovL3YzLW1pZ3JhdGlvbi52dWVqcy5vcmcvYnJlYWtpbmctY2hhbmdlcy92LWJpbmQuaHRtbGBcbiAgfSxcbiAgW1wiQ09NUElMRVJfVl9PTl9OQVRJVkVcIl06IHtcbiAgICBtZXNzYWdlOiBgLm5hdGl2ZSBtb2RpZmllciBmb3Igdi1vbiBoYXMgYmVlbiByZW1vdmVkIGFzIGlzIG5vIGxvbmdlciBuZWNlc3NhcnkuYCxcbiAgICBsaW5rOiBgaHR0cHM6Ly92My1taWdyYXRpb24udnVlanMub3JnL2JyZWFraW5nLWNoYW5nZXMvdi1vbi1uYXRpdmUtbW9kaWZpZXItcmVtb3ZlZC5odG1sYFxuICB9LFxuICBbXCJDT01QSUxFUl9WX0lGX1ZfRk9SX1BSRUNFREVOQ0VcIl06IHtcbiAgICBtZXNzYWdlOiBgdi1pZiAvIHYtZm9yIHByZWNlZGVuY2Ugd2hlbiB1c2VkIG9uIHRoZSBzYW1lIGVsZW1lbnQgaGFzIGNoYW5nZWQgaW4gVnVlIDM6IHYtaWYgbm93IHRha2VzIGhpZ2hlciBwcmVjZWRlbmNlIGFuZCB3aWxsIG5vIGxvbmdlciBoYXZlIGFjY2VzcyB0byB2LWZvciBzY29wZSB2YXJpYWJsZXMuIEl0IGlzIGJlc3QgdG8gYXZvaWQgdGhlIGFtYmlndWl0eSB3aXRoIDx0ZW1wbGF0ZT4gdGFncyBvciB1c2UgYSBjb21wdXRlZCBwcm9wZXJ0eSB0aGF0IGZpbHRlcnMgdi1mb3IgZGF0YSBzb3VyY2UuYCxcbiAgICBsaW5rOiBgaHR0cHM6Ly92My1taWdyYXRpb24udnVlanMub3JnL2JyZWFraW5nLWNoYW5nZXMvdi1pZi12LWZvci5odG1sYFxuICB9LFxuICBbXCJDT01QSUxFUl9OQVRJVkVfVEVNUExBVEVcIl06IHtcbiAgICBtZXNzYWdlOiBgPHRlbXBsYXRlPiB3aXRoIG5vIHNwZWNpYWwgZGlyZWN0aXZlcyB3aWxsIHJlbmRlciBhcyBhIG5hdGl2ZSB0ZW1wbGF0ZSBlbGVtZW50IGluc3RlYWQgb2YgaXRzIGlubmVyIGNvbnRlbnQgaW4gVnVlIDMuYFxuICB9LFxuICBbXCJDT01QSUxFUl9JTkxJTkVfVEVNUExBVEVcIl06IHtcbiAgICBtZXNzYWdlOiBgXCJpbmxpbmUtdGVtcGxhdGVcIiBoYXMgYmVlbiByZW1vdmVkIGluIFZ1ZSAzLmAsXG4gICAgbGluazogYGh0dHBzOi8vdjMtbWlncmF0aW9uLnZ1ZWpzLm9yZy9icmVha2luZy1jaGFuZ2VzL2lubGluZS10ZW1wbGF0ZS1hdHRyaWJ1dGUuaHRtbGBcbiAgfSxcbiAgW1wiQ09NUElMRVJfRklMVEVSU1wiXToge1xuICAgIG1lc3NhZ2U6IGBmaWx0ZXJzIGhhdmUgYmVlbiByZW1vdmVkIGluIFZ1ZSAzLiBUaGUgXCJ8XCIgc3ltYm9sIHdpbGwgYmUgdHJlYXRlZCBhcyBuYXRpdmUgSmF2YVNjcmlwdCBiaXR3aXNlIE9SIG9wZXJhdG9yLiBVc2UgbWV0aG9kIGNhbGxzIG9yIGNvbXB1dGVkIHByb3BlcnRpZXMgaW5zdGVhZC5gLFxuICAgIGxpbms6IGBodHRwczovL3YzLW1pZ3JhdGlvbi52dWVqcy5vcmcvYnJlYWtpbmctY2hhbmdlcy9maWx0ZXJzLmh0bWxgXG4gIH1cbn07XG5mdW5jdGlvbiBnZXRDb21wYXRWYWx1ZShrZXksIHsgY29tcGF0Q29uZmlnIH0pIHtcbiAgY29uc3QgdmFsdWUgPSBjb21wYXRDb25maWcgJiYgY29tcGF0Q29uZmlnW2tleV07XG4gIGlmIChrZXkgPT09IFwiTU9ERVwiKSB7XG4gICAgcmV0dXJuIHZhbHVlIHx8IDM7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59XG5mdW5jdGlvbiBpc0NvbXBhdEVuYWJsZWQoa2V5LCBjb250ZXh0KSB7XG4gIGNvbnN0IG1vZGUgPSBnZXRDb21wYXRWYWx1ZShcIk1PREVcIiwgY29udGV4dCk7XG4gIGNvbnN0IHZhbHVlID0gZ2V0Q29tcGF0VmFsdWUoa2V5LCBjb250ZXh0KTtcbiAgcmV0dXJuIG1vZGUgPT09IDMgPyB2YWx1ZSA9PT0gdHJ1ZSA6IHZhbHVlICE9PSBmYWxzZTtcbn1cbmZ1bmN0aW9uIGNoZWNrQ29tcGF0RW5hYmxlZChrZXksIGNvbnRleHQsIGxvYywgLi4uYXJncykge1xuICBjb25zdCBlbmFibGVkID0gaXNDb21wYXRFbmFibGVkKGtleSwgY29udGV4dCk7XG4gIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9k
15dWN0aW9uXCIpICYmIGVuYWJsZWQpIHtcbiAgICB3YXJuRGVwcmVjYXRpb24oa2V5LCBjb250ZXh0LCBsb2MsIC4uLmFyZ3MpO1xuICB9XG4gIHJldHVybiBlbmFibGVkO1xufVxuZnVuY3Rpb24gd2FybkRlcHJlY2F0aW9uKGtleSwgY29udGV4dCwgbG9jLCAuLi5hcmdzKSB7XG4gIGNvbnN0IHZhbCA9IGdldENvbXBhdFZhbHVlKGtleSwgY29udGV4dCk7XG4gIGlmICh2YWwgPT09IFwic3VwcHJlc3Mtd2FybmluZ1wiKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IHsgbWVzc2FnZSwgbGluayB9ID0gZGVwcmVjYXRpb25EYXRhW2tleV07XG4gIGNvbnN0IG1zZyA9IGAoZGVwcmVjYXRpb24gJHtrZXl9KSAke3R5cGVvZiBtZXNzYWdlID09PSBcImZ1bmN0aW9uXCIgPyBtZXNzYWdlKC4uLmFyZ3MpIDogbWVzc2FnZX0ke2xpbmsgPyBgXG4gIERldGFpbHM6ICR7bGlua31gIDogYGB9YDtcbiAgY29uc3QgZXJyID0gbmV3IFN5bnRheEVycm9yKG1zZyk7XG4gIGVyci5jb2RlID0ga2V5O1xuICBpZiAobG9jKSBlcnIubG9jID0gbG9jO1xuICBjb250ZXh0Lm9uV2FybihlcnIpO1xufVxuXG5mdW5jdGlvbiBkZWZhdWx0T25FcnJvcihlcnJvcikge1xuICB0aHJvdyBlcnJvcjtcbn1cbmZ1bmN0aW9uIGRlZmF1bHRPbldhcm4obXNnKSB7XG4gICEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgJiYgY29uc29sZS53YXJuKGBbVnVlIHdhcm5dICR7bXNnLm1lc3NhZ2V9YCk7XG59XG5mdW5jdGlvbiBjcmVhdGVDb21waWxlckVycm9yKGNvZGUsIGxvYywgbWVzc2FnZXMsIGFkZGl0aW9uYWxNZXNzYWdlKSB7XG4gIGNvbnN0IG1zZyA9ICEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgfHwgZmFsc2UgPyAobWVzc2FnZXMgfHwgZXJyb3JNZXNzYWdlcylbY29kZV0gKyAoYWRkaXRpb25hbE1lc3NhZ2UgfHwgYGApIDogYGh0dHBzOi8vdnVlanMub3JnL2Vycm9yLXJlZmVyZW5jZS8jY29tcGlsZXItJHtjb2RlfWA7XG4gIGNvbnN0IGVycm9yID0gbmV3IFN5bnRheEVycm9yKFN0cmluZyhtc2cpKTtcbiAgZXJyb3IuY29kZSA9IGNvZGU7XG4gIGVycm9yLmxvYyA9IGxvYztcbiAgcmV0dXJuIGVycm9yO1xufVxuY29uc3QgRXJyb3JDb2RlcyA9IHtcbiAgXCJBQlJVUFRfQ0xPU0lOR19PRl9FTVBUWV9DT01NRU5UXCI6IDAsXG4gIFwiMFwiOiBcIkFCUlVQVF9DTE9TSU5HX09GX0VNUFRZX0NPTU1FTlRcIixcbiAgXCJDREFUQV9JTl9IVE1MX0NPTlRFTlRcIjogMSxcbiAgXCIxXCI6IFwiQ0RBVEFfSU5fSFRNTF9DT05URU5UXCIsXG4gIFwiRFVQTElDQVRFX0FUVFJJQlVURVwiOiAyLFxuICBcIjJcIjogXCJEVVBMSUNBVEVfQVRUUklCVVRFXCIsXG4gIFwiRU5EX1RBR19XSVRIX0FUVFJJQlVURVNcIjogMyxcbiAgXCIzXCI6IFwiRU5EX1RBR19XSVRIX0FUVFJJQlVURVNcIixcbiAgXCJFTkRfVEFHX1dJVEhfVFJBSUxJTkdfU09MSURVU1wiOiA0LFxuICBcIjRcIjogXCJFTkRfVEFHX1dJVEhfVFJBSUxJTkdfU09MSURVU1wiLFxuICBcIkVPRl9CRUZPUkVfVEFHX05BTUVcIjogNSxcbiAgXCI1XCI6IFwiRU9GX0JFRk9SRV9UQUdfTkFNRVwiLFxuICBcIkVPRl9JTl9DREFUQVwiOiA2LFxuICBcIjZcIjogXCJFT0ZfSU5fQ0RBVEFcIixcbiAgXCJFT0ZfSU5fQ09NTUVOVFwiOiA3LFxuICBcIjdcIjogXCJFT0ZfSU5fQ09NTUVOVFwiLFxuICBcIkVPRl9JTl9TQ1JJUFRfSFRNTF9DT01NRU5UX0xJS0VfVEVYVFwiOiA4LFxuICBcIjhcIjogXCJFT0ZfSU5fU0NSSVBUX0hUTUxfQ09NTUVOVF9MSUtFX1RFWFRcIixcbiAgXCJFT0ZfSU5fVEFHXCI6IDksXG4gIFwiOVwiOiBcIkVPRl9JTl9UQUdcIixcbiAgXCJJTkNPUlJFQ1RMWV9DTE9TRURfQ09NTUVOVFwiOiAxMCxcbiAgXCIxMFwiOiBcIklOQ09SUkVDVExZX0NMT1NFRF9DT01NRU5UXCIsXG4gIFwiSU5DT1JSRUNUTFlfT1BFTkVEX0NPTU1FTlRcIjogMTEsXG4gIFwiMTFcIjogXCJJTkNPUlJFQ1RMWV9PUEVORURfQ09NTUVOVFwiLFxuICBcIklOVkFMSURfRklSU1RfQ0hBUkFDVEVSX09GX1RBR19OQU1FXCI6IDEyLFxuICBcIjEyXCI6IFwiSU5WQUxJRF9GSVJTVF9DSEFSQUNURVJfT0ZfVEFHX05BTUVcIixcbiAgXCJNSVNTSU5HX0FUVFJJQlVURV9WQUxVRVwiOiAxMyxcbiAgXCIxM1wiOiBcIk1JU1NJTkdfQVRUUklCVVRFX1ZBTFVFXCIsXG4gIFwiTUlTU0lOR19FTkRfVEFHX05BTUVcIjogMTQsXG4gIFwiMTRcIjogXCJNSVNTSU5HX0VORF9UQUdfTkFNRVwiLFxuICBcIk1JU1NJTkdfV0hJVEVTUEFDRV9CRVRXRUVOX0FUVFJJQlVURVNcIjogMTUsXG4gIFwiMTVcIjogXCJNSVNTSU5HX1dISVRFU1BBQ0VfQkVUV0VFTl9BVFRSSUJVVEVTXCIsXG4gIFwiTkVTVEVEX0NPTU1FTlRcIjogMTYsXG4gIFwiMTZcIjogXCJORVNURURfQ09NTUVOVFwiLFxuICBcIlVORVhQRUNURURfQ0hBUkFDVEVSX0lOX0FUVFJJQlVURV9OQU1FXCI6IDE3LFxuICBcIjE3XCI6IFwiVU5FWFBFQ1RFRF9DSEFSQUNURVJfSU5fQVRUUklCVVRFX05BTUVcIixcbiAgXCJVTkVYUEVDVEVEX0NIQVJBQ1RFUl9JTl9VTlFVT1RFRF9BVFRSSUJVVEVfVkFMVUVcIjogMTgsXG4gIFwiMThcIjogXCJVTkVYUEVDVEVEX0NIQVJBQ1RFUl9JTl9VTlFVT1RFRF9BVFRSSUJVVEVfVkFMVUVcIixcbiAgXCJVTkVYUEVDVEVEX0VRVUFMU19TSUdOX0JFRk9SRV9BVFRSSUJVVEVfTkFNRVwiOiAxOSxcbiAgXCIxOVwiOiBcIlVORVhQRUNURURfRVFVQUxTX1NJR05fQkVGT1JFX0FUVFJJQlVURV9OQU1FXCIsXG4gIFwiVU5FWFBFQ1RFRF9OVUxMX0NIQVJBQ1RFUlwiOiAyMCxcbiAgXCIyMFwiOiBcIlVORVhQRUNURURfTlVMTF9DSEFSQUNURVJcIixcbiAgXCJVTkVYUEVDVEVEX1FVRVNUSU9OX01BUktfSU5TVEVBRF9PRl9UQUdfTkFNRVwiOiAyMSxcbiAgXCIyMVwiOiBcIlVORVhQRUNURURfUVVFU1RJT05fTUFSS19JTlNURUFEX09GX1RBR19OQU1FXCIsXG4gIFwiVU5FWFBFQ1RFRF9TT0xJRFVTX0lOX1RBR1wiOiAyMixcbiAgXCIyMlwiOiBcIlVORVhQRUNURURfU09MSURVU19JTl9UQUdcIixcbiAgXCJYX0lOVkFMSURfRU5EX1RBR1wiOiAyMyxcbiAgXCIyM1wiOiBcIlhfSU5WQUxJRF9FTkRfVEFHXCIsXG4gIFwiWF9NSVNTSU5HX0VORF9UQUdcIjogMjQsXG4gIFwiMjRcIjogXCJYX01JU1NJTkdfRU5EX1RBR1wiLFxuICBcIlhfTUlTU0lOR19JTlRFUlBPTEFUSU9OX0VORFwiOiAyNSxcbiAgXCIyNVwiOiBcIlhfTUlTU0lOR19JTlRFUlBPTEFUSU9OX0VORFwiLFxuICBcIlhfTUlTU0lOR19ESVJFQ1RJVkVfTkFNRVwiOiAyNixcbiAgXCIyNlwiOiBcIlhfTUlTU0lOR19ESVJFQ1RJVkVfTkFNRVwiLFxuICBcIlhfTUlTU0lOR19EWU5BTUlDX0RJUkVDVElWRV9BUkdVTUVOVF9FTkRcIjogMjcsXG4gIFwiMjdcIjogXCJYX01JU1NJTkdfRFlOQU1JQ19ESVJFQ1RJVkVfQVJHVU1FTlRfRU5EXCIsXG4gIFwiWF9WX0lGX05PX0VYUFJFU1NJT05cIjogMjgsXG4gIFwiMjhcIjogXCJYX1ZfSUZfTk9fRVhQUkVTU0lPTlwiLFxuICBcIlhfVl9JRl9TQU1FX0tFWVwiOiAyOSxcbiAgXCIyOVwiOiBcIlhfVl9JRl9TQU1FX0tFWVwiLFxuICBcIlhfVl9FTFNFX05PX0FESkFDRU5UX0lGXCI6IDMwLFxuICBcIjMwXCI6IFwiWF9WX0VMU0VfTk9fQURKQUNFTlRfSUZcIixcbiAgXCJYX1ZfRk9SX05PX0VYUFJFU1NJT05cIjogMzEsXG4gIFwiMzFcIjogXCJYX1ZfRk9SX05PX0VYUFJFU1NJT05cIixcbiAgXCJYX1ZfRk9SX01BTEZPUk1FRF9FWFBSRVNTSU9OXCI6IDMyLFxuICBcIjMyXCI6IFwiWF9WX0ZPUl9NQUxGT1JNRURfRVhQUkVTU0lPTlwiLFxuICBcIlhfVl9GT1JfVEVNUExBVEVfS0VZX1BMQUNFTUVOVFwiOiAzMyxcbiAgXCIzM1wiOiBcIlhfVl9GT1JfVEVNUExBVEVfS0VZX1BMQUNFTUVOVFwiLFxuICBcIlhfVl9CSU5EX05PX0VYUFJFU1NJT05cIjogMzQsXG4gIFwiMzRcIjogXCJYX1ZfQklORF9OT19FWFBSRVNTSU9OXCIsXG4gIFwiWF9WX09OX05PX0VYUFJFU1NJT05cIjogMzUsXG4gIFwiMzVcIjogXCJYX1ZfT05fTk9fRVhQUkVTU0lPTlwiLFxuICBcIlhfVl9TTE9UX1VORVhQRUNURURfRElSRUNUSVZFX09OX1NMT1RfT1VUTEVUXCI6I
15DM2LFxuICBcIjM2XCI6IFwiWF9WX1NMT1RfVU5FWFBFQ1RFRF9ESVJFQ1RJVkVfT05fU0xPVF9PVVRMRVRcIixcbiAgXCJYX1ZfU0xPVF9NSVhFRF9TTE9UX1VTQUdFXCI6IDM3LFxuICBcIjM3XCI6IFwiWF9WX1NMT1RfTUlYRURfU0xPVF9VU0FHRVwiLFxuICBcIlhfVl9TTE9UX0RVUExJQ0FURV9TTE9UX05BTUVTXCI6IDM4LFxuICBcIjM4XCI6IFwiWF9WX1NMT1RfRFVQTElDQVRFX1NMT1RfTkFNRVNcIixcbiAgXCJYX1ZfU0xPVF9FWFRSQU5FT1VTX0RFRkFVTFRfU0xPVF9DSElMRFJFTlwiOiAzOSxcbiAgXCIzOVwiOiBcIlhfVl9TTE9UX0VYVFJBTkVPVVNfREVGQVVMVF9TTE9UX0NISUxEUkVOXCIsXG4gIFwiWF9WX1NMT1RfTUlTUExBQ0VEXCI6IDQwLFxuICBcIjQwXCI6IFwiWF9WX1NMT1RfTUlTUExBQ0VEXCIsXG4gIFwiWF9WX01PREVMX05PX0VYUFJFU1NJT05cIjogNDEsXG4gIFwiNDFcIjogXCJYX1ZfTU9ERUxfTk9fRVhQUkVTU0lPTlwiLFxuICBcIlhfVl9NT0RFTF9NQUxGT1JNRURfRVhQUkVTU0lPTlwiOiA0MixcbiAgXCI0MlwiOiBcIlhfVl9NT0RFTF9NQUxGT1JNRURfRVhQUkVTU0lPTlwiLFxuICBcIlhfVl9NT0RFTF9PTl9TQ09QRV9WQVJJQUJMRVwiOiA0MyxcbiAgXCI0M1wiOiBcIlhfVl9NT0RFTF9PTl9TQ09QRV9WQVJJQUJMRVwiLFxuICBcIlhfVl9NT0RFTF9PTl9QUk9QU1wiOiA0NCxcbiAgXCI0NFwiOiBcIlhfVl9NT0RFTF9PTl9QUk9QU1wiLFxuICBcIlhfSU5WQUxJRF9FWFBSRVNTSU9OXCI6IDQ1LFxuICBcIjQ1XCI6IFwiWF9JTlZBTElEX0VYUFJFU1NJT05cIixcbiAgXCJYX0tFRVBfQUxJVkVfSU5WQUxJRF9DSElMRFJFTlwiOiA0NixcbiAgXCI0NlwiOiBcIlhfS0VFUF9BTElWRV9JTlZBTElEX0NISUxEUkVOXCIsXG4gIFwiWF9QUkVGSVhfSURfTk9UX1NVUFBPUlRFRFwiOiA0NyxcbiAgXCI0N1wiOiBcIlhfUFJFRklYX0lEX05PVF9TVVBQT1JURURcIixcbiAgXCJYX01PRFVMRV9NT0RFX05PVF9TVVBQT1JURURcIjogNDgsXG4gIFwiNDhcIjogXCJYX01PRFVMRV9NT0RFX05PVF9TVVBQT1JURURcIixcbiAgXCJYX0NBQ0hFX0hBTkRMRVJfTk9UX1NVUFBPUlRFRFwiOiA0OSxcbiAgXCI0OVwiOiBcIlhfQ0FDSEVfSEFORExFUl9OT1RfU1VQUE9SVEVEXCIsXG4gIFwiWF9TQ09QRV9JRF9OT1RfU1VQUE9SVEVEXCI6IDUwLFxuICBcIjUwXCI6IFwiWF9TQ09QRV9JRF9OT1RfU1VQUE9SVEVEXCIsXG4gIFwiWF9WTk9ERV9IT09LU1wiOiA1MSxcbiAgXCI1MVwiOiBcIlhfVk5PREVfSE9PS1NcIixcbiAgXCJYX1ZfQklORF9JTlZBTElEX1NBTUVfTkFNRV9BUkdVTUVOVFwiOiA1MixcbiAgXCI1MlwiOiBcIlhfVl9CSU5EX0lOVkFMSURfU0FNRV9OQU1FX0FSR1VNRU5UXCIsXG4gIFwiX19FWFRFTkRfUE9JTlRfX1wiOiA1MyxcbiAgXCI1M1wiOiBcIl9fRVhURU5EX1BPSU5UX19cIlxufTtcbmNvbnN0IGVycm9yTWVzc2FnZXMgPSB7XG4gIC8vIHBhcnNlIGVycm9yc1xuICBbMF06IFwiSWxsZWdhbCBjb21tZW50LlwiLFxuICBbMV06IFwiQ0RBVEEgc2VjdGlvbiBpcyBhbGxvd2VkIG9ubHkgaW4gWE1MIGNvbnRleHQuXCIsXG4gIFsyXTogXCJEdXBsaWNhdGUgYXR0cmlidXRlLlwiLFxuICBbM106IFwiRW5kIHRhZyBjYW5ub3QgaGF2ZSBhdHRyaWJ1dGVzLlwiLFxuICBbNF06IFwiSWxsZWdhbCAnLycgaW4gdGFncy5cIixcbiAgWzVdOiBcIlVuZXhwZWN0ZWQgRU9GIGluIHRhZy5cIixcbiAgWzZdOiBcIlVuZXhwZWN0ZWQgRU9GIGluIENEQVRBIHNlY3Rpb24uXCIsXG4gIFs3XTogXCJVbmV4cGVjdGVkIEVPRiBpbiBjb21tZW50LlwiLFxuICBbOF06IFwiVW5leHBlY3RlZCBFT0YgaW4gc2NyaXB0LlwiLFxuICBbOV06IFwiVW5leHBlY3RlZCBFT0YgaW4gdGFnLlwiLFxuICBbMTBdOiBcIkluY29ycmVjdGx5IGNsb3NlZCBjb21tZW50LlwiLFxuICBbMTFdOiBcIkluY29ycmVjdGx5IG9wZW5lZCBjb21tZW50LlwiLFxuICBbMTJdOiBcIklsbGVnYWwgdGFnIG5hbWUuIFVzZSAnJmx0OycgdG8gcHJpbnQgJzwnLlwiLFxuICBbMTNdOiBcIkF0dHJpYnV0ZSB2YWx1ZSB3YXMgZXhwZWN0ZWQuXCIsXG4gIFsxNF06IFwiRW5kIHRhZyBuYW1lIHdhcyBleHBlY3RlZC5cIixcbiAgWzE1XTogXCJXaGl0ZXNwYWNlIHdhcyBleHBlY3RlZC5cIixcbiAgWzE2XTogXCJVbmV4cGVjdGVkICc8IS0tJyBpbiBjb21tZW50LlwiLFxuICBbMTddOiBgQXR0cmlidXRlIG5hbWUgY2Fubm90IGNvbnRhaW4gVSswMDIyIChcIiksIFUrMDAyNyAoJyksIGFuZCBVKzAwM0MgKDwpLmAsXG4gIFsxOF06IFwiVW5xdW90ZWQgYXR0cmlidXRlIHZhbHVlIGNhbm5vdCBjb250YWluIFUrMDAyMiAoXFxcIiksIFUrMDAyNyAoJyksIFUrMDAzQyAoPCksIFUrMDAzRCAoPSksIGFuZCBVKzAwNjAgKGApLlwiLFxuICBbMTldOiBcIkF0dHJpYnV0ZSBuYW1lIGNhbm5vdCBzdGFydCB3aXRoICc9Jy5cIixcbiAgWzIxXTogXCInPD8nIGlzIGFsbG93ZWQgb25seSBpbiBYTUwgY29udGV4dC5cIixcbiAgWzIwXTogYFVuZXhwZWN0ZWQgbnVsbCBjaGFyYWN0ZXIuYCxcbiAgWzIyXTogXCJJbGxlZ2FsICcvJyBpbiB0YWdzLlwiLFxuICAvLyBWdWUtc3BlY2lmaWMgcGFyc2UgZXJyb3JzXG4gIFsyM106IFwiSW52YWxpZCBlbmQgdGFnLlwiLFxuICBbMjRdOiBcIkVsZW1lbnQgaXMgbWlzc2luZyBlbmQgdGFnLlwiLFxuICBbMjVdOiBcIkludGVycG9sYXRpb24gZW5kIHNpZ24gd2FzIG5vdCBmb3VuZC5cIixcbiAgWzI3XTogXCJFbmQgYnJhY2tldCBmb3IgZHluYW1pYyBkaXJlY3RpdmUgYXJndW1lbnQgd2FzIG5vdCBmb3VuZC4gTm90ZSB0aGF0IGR5bmFtaWMgZGlyZWN0aXZlIGFyZ3VtZW50IGNhbm5vdCBjb250YWluIHNwYWNlcy5cIixcbiAgWzI2XTogXCJMZWdhbCBkaXJlY3RpdmUgbmFtZSB3YXMgZXhwZWN0ZWQuXCIsXG4gIC8vIHRyYW5zZm9ybSBlcnJvcnNcbiAgWzI4XTogYHYtaWYvdi1lbHNlLWlmIGlzIG1pc3NpbmcgZXhwcmVzc2lvbi5gLFxuICBbMjldOiBgdi1pZi9lbHNlIGJyYW5jaGVzIG11c3QgdXNlIHVuaXF1ZSBrZXlzLmAsXG4gIFszMF06IGB2LWVsc2Uvdi1lbHNlLWlmIGhhcyBubyBhZGphY2VudCB2LWlmIG9yIHYtZWxzZS1pZi5gLFxuICBbMzFdOiBgdi1mb3IgaXMgbWlzc2luZyBleHByZXNzaW9uLmAsXG4gIFszMl06IGB2LWZvciBoYXMgaW52YWxpZCBleHByZXNzaW9uLmAsXG4gIFszM106IGA8dGVtcGxhdGUgdi1mb3I+IGtleSBzaG91bGQgYmUgcGxhY2VkIG9uIHRoZSA8dGVtcGxhdGU+IHRhZy5gLFxuICBbMzRdOiBgdi1iaW5kIGlzIG1pc3NpbmcgZXhwcmVzc2lvbi5gLFxuICBbNTJdOiBgdi1iaW5kIHdpdGggc2FtZS1uYW1lIHNob3J0aGFuZCBvbmx5IGFsbG93cyBzdGF0aWMgYXJndW1lbnQuYCxcbiAgWzM1XTogYHYtb24gaXMgbWlzc2luZyBleHByZXNzaW9uLmAsXG4gIFszNl06IGBVbmV4cGVjdGVkIGN1c3RvbSBkaXJlY3RpdmUgb24gPHNsb3Q+IG91dGxldC5gLFxuICBbMzddOiBgTWl4ZWQgdi1zbG90IHVzYWdlIG9uIGJvdGggdGhlIGNvbXBvbmVudCBhbmQgbmVzdGVkIDx0
15ZW1wbGF0ZT4uIFdoZW4gdGhlcmUgYXJlIG11bHRpcGxlIG5hbWVkIHNsb3RzLCBhbGwgc2xvdHMgc2hvdWxkIHVzZSA8dGVtcGxhdGU+IHN5bnRheCB0byBhdm9pZCBzY29wZSBhbWJpZ3VpdHkuYCxcbiAgWzM4XTogYER1cGxpY2F0ZSBzbG90IG5hbWVzIGZvdW5kLiBgLFxuICBbMzldOiBgRXh0cmFuZW91cyBjaGlsZHJlbiBmb3VuZCB3aGVuIGNvbXBvbmVudCBhbHJlYWR5IGhhcyBleHBsaWNpdGx5IG5hbWVkIGRlZmF1bHQgc2xvdC4gVGhlc2UgY2hpbGRyZW4gd2lsbCBiZSBpZ25vcmVkLmAsXG4gIFs0MF06IGB2LXNsb3QgY2FuIG9ubHkgYmUgdXNlZCBvbiBjb21wb25lbnRzIG9yIDx0ZW1wbGF0ZT4gdGFncy5gLFxuICBbNDFdOiBgdi1tb2RlbCBpcyBtaXNzaW5nIGV4cHJlc3Npb24uYCxcbiAgWzQyXTogYHYtbW9kZWwgdmFsdWUgbXVzdCBiZSBhIHZhbGlkIEphdmFTY3JpcHQgbWVtYmVyIGV4cHJlc3Npb24uYCxcbiAgWzQzXTogYHYtbW9kZWwgY2Fubm90IGJlIHVzZWQgb24gdi1mb3Igb3Igdi1zbG90IHNjb3BlIHZhcmlhYmxlcyBiZWNhdXNlIHRoZXkgYXJlIG5vdCB3cml0YWJsZS5gLFxuICBbNDRdOiBgdi1tb2RlbCBjYW5ub3QgYmUgdXNlZCBvbiBhIHByb3AsIGJlY2F1c2UgbG9jYWwgcHJvcCBiaW5kaW5ncyBhcmUgbm90IHdyaXRhYmxlLlxuVXNlIGEgdi1iaW5kIGJpbmRpbmcgY29tYmluZWQgd2l0aCBhIHYtb24gbGlzdGVuZXIgdGhhdCBlbWl0cyB1cGRhdGU6eCBldmVudCBpbnN0ZWFkLmAsXG4gIFs0NV06IGBFcnJvciBwYXJzaW5nIEphdmFTY3JpcHQgZXhwcmVzc2lvbjogYCxcbiAgWzQ2XTogYDxLZWVwQWxpdmU+IGV4cGVjdHMgZXhhY3RseSBvbmUgY2hpbGQgY29tcG9uZW50LmAsXG4gIFs1MV06IGBAdm5vZGUtKiBob29rcyBpbiB0ZW1wbGF0ZXMgYXJlIG5vIGxvbmdlciBzdXBwb3J0ZWQuIFVzZSB0aGUgdnVlOiBwcmVmaXggaW5zdGVhZC4gRm9yIGV4YW1wbGUsIEB2bm9kZS1tb3VudGVkIHNob3VsZCBiZSBjaGFuZ2VkIHRvIEB2dWU6bW91bnRlZC4gQHZub2RlLSogaG9va3Mgc3VwcG9ydCBoYXMgYmVlbiByZW1vdmVkIGluIDMuNC5gLFxuICAvLyBnZW5lcmljIGVycm9yc1xuICBbNDddOiBgXCJwcmVmaXhJZGVudGlmaWVyc1wiIG9wdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgYnVpbGQgb2YgY29tcGlsZXIuYCxcbiAgWzQ4XTogYEVTIG1vZHVsZSBtb2RlIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBidWlsZCBvZiBjb21waWxlci5gLFxuICBbNDldOiBgXCJjYWNoZUhhbmRsZXJzXCIgb3B0aW9uIGlzIG9ubHkgc3VwcG9ydGVkIHdoZW4gdGhlIFwicHJlZml4SWRlbnRpZmllcnNcIiBvcHRpb24gaXMgZW5hYmxlZC5gLFxuICBbNTBdOiBgXCJzY29wZUlkXCIgb3B0aW9uIGlzIG9ubHkgc3VwcG9ydGVkIGluIG1vZHVsZSBtb2RlLmAsXG4gIC8vIGp1c3QgdG8gZnVsZmlsbCB0eXBlc1xuICBbNTNdOiBgYFxufTtcblxuZnVuY3Rpb24gd2Fsa0lkZW50aWZpZXJzKHJvb3QsIG9uSWRlbnRpZmllciwgaW5jbHVkZUFsbCA9IGZhbHNlLCBwYXJlbnRTdGFjayA9IFtdLCBrbm93bklkcyA9IC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuY3JlYXRlKG51bGwpKSB7XG4gIHtcbiAgICByZXR1cm47XG4gIH1cbn1cbmZ1bmN0aW9uIGlzUmVmZXJlbmNlZElkZW50aWZpZXIoaWQsIHBhcmVudCwgcGFyZW50U3RhY2spIHtcbiAge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuZnVuY3Rpb24gaXNJbkRlc3RydWN0dXJlQXNzaWdubWVudChwYXJlbnQsIHBhcmVudFN0YWNrKSB7XG4gIGlmIChwYXJlbnQgJiYgKHBhcmVudC50eXBlID09PSBcIk9iamVjdFByb3BlcnR5XCIgfHwgcGFyZW50LnR5cGUgPT09IFwiQXJyYXlQYXR0ZXJuXCIpKSB7XG4gICAgbGV0IGkgPSBwYXJlbnRTdGFjay5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgY29uc3QgcCA9IHBhcmVudFN0YWNrW2ldO1xuICAgICAgaWYgKHAudHlwZSA9PT0gXCJBc3NpZ25tZW50RXhwcmVzc2lvblwiKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBlbHNlIGlmIChwLnR5cGUgIT09IFwiT2JqZWN0UHJvcGVydHlcIiAmJiAhcC50eXBlLmVuZHNXaXRoKFwiUGF0dGVyblwiKSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuZnVuY3Rpb24gaXNJbk5ld0V4cHJlc3Npb24ocGFyZW50U3RhY2spIHtcbiAgbGV0IGkgPSBwYXJlbnRTdGFjay5sZW5ndGg7XG4gIHdoaWxlIChpLS0pIHtcbiAgICBjb25zdCBwID0gcGFyZW50U3RhY2tbaV07XG4gICAgaWYgKHAudHlwZSA9PT0gXCJOZXdFeHByZXNzaW9uXCIpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSBpZiAocC50eXBlICE9PSBcIk1lbWJlckV4cHJlc3Npb25cIikge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cbmZ1bmN0aW9uIHdhbGtGdW5jdGlvblBhcmFtcyhub2RlLCBvbklkZW50KSB7XG4gIGZvciAoY29uc3QgcCBvZiBub2RlLnBhcmFtcykge1xuICAgIGZvciAoY29uc3QgaWQgb2YgZXh0cmFjdElkZW50aWZpZXJzKHApKSB7XG4gICAgICBvbklkZW50KGlkKTtcbiAgICB9XG4gIH1cbn1cbmZ1bmN0aW9uIHdhbGtCbG9ja0RlY2xhcmF0aW9ucyhibG9jaywgb25JZGVudCkge1xuICBmb3IgKGNvbnN0IHN0bXQgb2YgYmxvY2suYm9keSkge1xuICAgIGlmIChzdG10LnR5cGUgPT09IFwiVmFyaWFibGVEZWNsYXJhdGlvblwiKSB7XG4gICAgICBpZiAoc3RtdC5kZWNsYXJlKSBjb250aW51ZTtcbiAgICAgIGZvciAoY29uc3QgZGVjbCBvZiBzdG10LmRlY2xhcmF0aW9ucykge1xuICAgICAgICBmb3IgKGNvbnN0IGlkIG9mIGV4dHJhY3RJZGVudGlmaWVycyhkZWNsLmlkKSkge1xuICAgICAgICAgIG9uSWRlbnQoaWQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChzdG10LnR5cGUgPT09IFwiRnVuY3Rpb25EZWNsYXJhdGlvblwiIHx8IHN0bXQudHlwZSA9PT0gXCJDbGFzc0RlY2xhcmF0aW9uXCIpIHtcbiAgICAgIGlmIChzdG10LmRlY2xhcmUgfHwgIXN0bXQuaWQpIGNvbnRpbnVlO1xuICAgICAgb25JZGVudChzdG10LmlkKTtcbiAgICB9IGVsc2UgaWYgKGlzRm9yU3RhdGVtZW50KHN0bXQpKSB7XG4gICAgICB3YWxrRm9yU3RhdGVtZW50KHN0bXQsIHRydWUsIG9uSWRlbnQpO1xuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gaXNGb3JTdGF0ZW1lbnQoc3RtdCkge1xuICByZXR1cm4gc3RtdC50eXBlID09PSBcIkZvck9mU3RhdGVtZW50XCIgfHwgc3RtdC50eXBlID09PSBcIkZvckluU3RhdGVtZW50XCIgfHwgc3RtdC50eXBlID09PSBcIkZvclN0YXRlbWVudFwiO1xufVxuZnVuY3Rpb24gd2Fsa0ZvclN0YXRlbWVudChzdG10LCBpc1Zhciwgb25JZGVudCkge1xuICBjb25zdCB2YXJpYWJsZSA9IHN0bXQudHlwZSA9PT0gXCJGb3JTdGF0ZW1lbnRcIiA/IHN0bXQuaW5p
15dCA6IHN0bXQubGVmdDtcbiAgaWYgKHZhcmlhYmxlICYmIHZhcmlhYmxlLnR5cGUgPT09IFwiVmFyaWFibGVEZWNsYXJhdGlvblwiICYmICh2YXJpYWJsZS5raW5kID09PSBcInZhclwiID8gaXNWYXIgOiAhaXNWYXIpKSB7XG4gICAgZm9yIChjb25zdCBkZWNsIG9mIHZhcmlhYmxlLmRlY2xhcmF0aW9ucykge1xuICAgICAgZm9yIChjb25zdCBpZCBvZiBleHRyYWN0SWRlbnRpZmllcnMoZGVjbC5pZCkpIHtcbiAgICAgICAgb25JZGVudChpZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5mdW5jdGlvbiBleHRyYWN0SWRlbnRpZmllcnMocGFyYW0sIG5vZGVzID0gW10pIHtcbiAgc3dpdGNoIChwYXJhbS50eXBlKSB7XG4gICAgY2FzZSBcIklkZW50aWZpZXJcIjpcbiAgICAgIG5vZGVzLnB1c2gocGFyYW0pO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcIk1lbWJlckV4cHJlc3Npb25cIjpcbiAgICAgIGxldCBvYmplY3QgPSBwYXJhbTtcbiAgICAgIHdoaWxlIChvYmplY3QudHlwZSA9PT0gXCJNZW1iZXJFeHByZXNzaW9uXCIpIHtcbiAgICAgICAgb2JqZWN0ID0gb2JqZWN0Lm9iamVjdDtcbiAgICAgIH1cbiAgICAgIG5vZGVzLnB1c2gob2JqZWN0KTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJPYmplY3RQYXR0ZXJuXCI6XG4gICAgICBmb3IgKGNvbnN0IHByb3Agb2YgcGFyYW0ucHJvcGVydGllcykge1xuICAgICAgICBpZiAocHJvcC50eXBlID09PSBcIlJlc3RFbGVtZW50XCIpIHtcbiAgICAgICAgICBleHRyYWN0SWRlbnRpZmllcnMocHJvcC5hcmd1bWVudCwgbm9kZXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGV4dHJhY3RJZGVudGlmaWVycyhwcm9wLnZhbHVlLCBub2Rlcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJBcnJheVBhdHRlcm5cIjpcbiAgICAgIHBhcmFtLmVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgaWYgKGVsZW1lbnQpIGV4dHJhY3RJZGVudGlmaWVycyhlbGVtZW50LCBub2Rlcyk7XG4gICAgICB9KTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJSZXN0RWxlbWVudFwiOlxuICAgICAgZXh0cmFjdElkZW50aWZpZXJzKHBhcmFtLmFyZ3VtZW50LCBub2Rlcyk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiQXNzaWdubWVudFBhdHRlcm5cIjpcbiAgICAgIGV4dHJhY3RJZGVudGlmaWVycyhwYXJhbS5sZWZ0LCBub2Rlcyk7XG4gICAgICBicmVhaztcbiAgfVxuICByZXR1cm4gbm9kZXM7XG59XG5jb25zdCBpc0Z1bmN0aW9uVHlwZSA9IChub2RlKSA9PiB7XG4gIHJldHVybiAvRnVuY3Rpb24oPzpFeHByZXNzaW9ufERlY2xhcmF0aW9uKSR8TWV0aG9kJC8udGVzdChub2RlLnR5cGUpO1xufTtcbmNvbnN0IGlzU3RhdGljUHJvcGVydHkgPSAobm9kZSkgPT4gbm9kZSAmJiAobm9kZS50eXBlID09PSBcIk9iamVjdFByb3BlcnR5XCIgfHwgbm9kZS50eXBlID09PSBcIk9iamVjdE1ldGhvZFwiKSAmJiAhbm9kZS5jb21wdXRlZDtcbmNvbnN0IGlzU3RhdGljUHJvcGVydHlLZXkgPSAobm9kZSwgcGFyZW50KSA9PiBpc1N0YXRpY1Byb3BlcnR5KHBhcmVudCkgJiYgcGFyZW50LmtleSA9PT0gbm9kZTtcbmNvbnN0IFRTX05PREVfVFlQRVMgPSBbXG4gIFwiVFNBc0V4cHJlc3Npb25cIixcbiAgLy8gZm9vIGFzIG51bWJlclxuICBcIlRTVHlwZUFzc2VydGlvblwiLFxuICAvLyAoPG51bWJlcj5mb28pXG4gIFwiVFNOb25OdWxsRXhwcmVzc2lvblwiLFxuICAvLyBmb28hXG4gIFwiVFNJbnN0YW50aWF0aW9uRXhwcmVzc2lvblwiLFxuICAvLyBmb288c3RyaW5nPlxuICBcIlRTU2F0aXNmaWVzRXhwcmVzc2lvblwiXG4gIC8vIGZvbyBzYXRpc2ZpZXMgVFxuXTtcbmZ1bmN0aW9uIHVud3JhcFRTTm9kZShub2RlKSB7XG4gIGlmIChUU19OT0RFX1RZUEVTLmluY2x1ZGVzKG5vZGUudHlwZSkpIHtcbiAgICByZXR1cm4gdW53cmFwVFNOb2RlKG5vZGUuZXhwcmVzc2lvbik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cbn1cblxuY29uc3QgaXNTdGF0aWNFeHAgPSAocCkgPT4gcC50eXBlID09PSA0ICYmIHAuaXNTdGF0aWM7XG5mdW5jdGlvbiBpc0NvcmVDb21wb25lbnQodGFnKSB7XG4gIHN3aXRjaCAodGFnKSB7XG4gICAgY2FzZSBcIlRlbGVwb3J0XCI6XG4gICAgY2FzZSBcInRlbGVwb3J0XCI6XG4gICAgICByZXR1cm4gVEVMRVBPUlQ7XG4gICAgY2FzZSBcIlN1c3BlbnNlXCI6XG4gICAgY2FzZSBcInN1c3BlbnNlXCI6XG4gICAgICByZXR1cm4gU1VTUEVOU0U7XG4gICAgY2FzZSBcIktlZXBBbGl2ZVwiOlxuICAgIGNhc2UgXCJrZWVwLWFsaXZlXCI6XG4gICAgICByZXR1cm4gS0VFUF9BTElWRTtcbiAgICBjYXNlIFwiQmFzZVRyYW5zaXRpb25cIjpcbiAgICBjYXNlIFwiYmFzZS10cmFuc2l0aW9uXCI6XG4gICAgICByZXR1cm4gQkFTRV9UUkFOU0lUSU9OO1xuICB9XG59XG5jb25zdCBub25JZGVudGlmaWVyUkUgPSAvXlxcZHxbXlxcJFxcd1xceEEwLVxcdUZGRkZdLztcbmNvbnN0IGlzU2ltcGxlSWRlbnRpZmllciA9IChuYW1lKSA9PiAhbm9uSWRlbnRpZmllclJFLnRlc3QobmFtZSk7XG5jb25zdCB2YWxpZEZpcnN0SWRlbnRDaGFyUkUgPSAvW0EtWmEtel8kXFx4QTAtXFx1RkZGRl0vO1xuY29uc3QgdmFsaWRJZGVudENoYXJSRSA9IC9bXFwuXFw/XFx3JFxceEEwLVxcdUZGRkZdLztcbmNvbnN0IHdoaXRlc3BhY2VSRSA9IC9cXHMrWy5bXVxccyp8XFxzKlsuW11cXHMrL2c7XG5jb25zdCBnZXRFeHBTb3VyY2UgPSAoZXhwKSA9PiBleHAudHlwZSA9PT0gNCA/IGV4cC5jb250ZW50IDogZXhwLmxvYy5zb3VyY2U7XG5jb25zdCBpc01lbWJlckV4cHJlc3Npb25Ccm93c2VyID0gKGV4cCkgPT4ge1xuICBjb25zdCBwYXRoID0gZ2V0RXhwU291cmNlKGV4cCkudHJpbSgpLnJlcGxhY2Uod2hpdGVzcGFjZVJFLCAocykgPT4gcy50cmltKCkpO1xuICBsZXQgc3RhdGUgPSAwIC8qIGluTWVtYmVyRXhwICovO1xuICBsZXQgc3RhdGVTdGFjayA9IFtdO1xuICBsZXQgY3VycmVudE9wZW5CcmFja2V0Q291bnQgPSAwO1xuICBsZXQgY3VycmVudE9wZW5QYXJlbnNDb3VudCA9IDA7XG4gIGxldCBjdXJyZW50U3RyaW5nVHlwZSA9IG51bGw7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcGF0aC5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGNoYXIgPSBwYXRoLmNoYXJBdChpKTtcbiAgICBzd2l0Y2ggKHN0YXRl
15KSB7XG4gICAgICBjYXNlIDAgLyogaW5NZW1iZXJFeHAgKi86XG4gICAgICAgIGlmIChjaGFyID09PSBcIltcIikge1xuICAgICAgICAgIHN0YXRlU3RhY2sucHVzaChzdGF0ZSk7XG4gICAgICAgICAgc3RhdGUgPSAxIC8qIGluQnJhY2tldHMgKi87XG4gICAgICAgICAgY3VycmVudE9wZW5CcmFja2V0Q291bnQrKztcbiAgICAgICAgfSBlbHNlIGlmIChjaGFyID09PSBcIihcIikge1xuICAgICAgICAgIHN0YXRlU3RhY2sucHVzaChzdGF0ZSk7XG4gICAgICAgICAgc3RhdGUgPSAyIC8qIGluUGFyZW5zICovO1xuICAgICAgICAgIGN1cnJlbnRPcGVuUGFyZW5zQ291bnQrKztcbiAgICAgICAgfSBlbHNlIGlmICghKGkgPT09IDAgPyB2YWxpZEZpcnN0SWRlbnRDaGFyUkUgOiB2YWxpZElkZW50Q2hhclJFKS50ZXN0KGNoYXIpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxIC8qIGluQnJhY2tldHMgKi86XG4gICAgICAgIGlmIChjaGFyID09PSBgJ2AgfHwgY2hhciA9PT0gYFwiYCB8fCBjaGFyID09PSBcImBcIikge1xuICAgICAgICAgIHN0YXRlU3RhY2sucHVzaChzdGF0ZSk7XG4gICAgICAgICAgc3RhdGUgPSAzIC8qIGluU3RyaW5nICovO1xuICAgICAgICAgIGN1cnJlbnRTdHJpbmdUeXBlID0gY2hhcjtcbiAgICAgICAgfSBlbHNlIGlmIChjaGFyID09PSBgW2ApIHtcbiAgICAgICAgICBjdXJyZW50T3BlbkJyYWNrZXRDb3VudCsrO1xuICAgICAgICB9IGVsc2UgaWYgKGNoYXIgPT09IGBdYCkge1xuICAgICAgICAgIGlmICghLS1jdXJyZW50T3BlbkJyYWNrZXRDb3VudCkge1xuICAgICAgICAgICAgc3RhdGUgPSBzdGF0ZVN0YWNrLnBvcCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMiAvKiBpblBhcmVucyAqLzpcbiAgICAgICAgaWYgKGNoYXIgPT09IGAnYCB8fCBjaGFyID09PSBgXCJgIHx8IGNoYXIgPT09IFwiYFwiKSB7XG4gICAgICAgICAgc3RhdGVTdGFjay5wdXNoKHN0YXRlKTtcbiAgICAgICAgICBzdGF0ZSA9IDMgLyogaW5TdHJpbmcgKi87XG4gICAgICAgICAgY3VycmVudFN0cmluZ1R5cGUgPSBjaGFyO1xuICAgICAgICB9IGVsc2UgaWYgKGNoYXIgPT09IGAoYCkge1xuICAgICAgICAgIGN1cnJlbnRPcGVuUGFyZW5zQ291bnQrKztcbiAgICAgICAgfSBlbHNlIGlmIChjaGFyID09PSBgKWApIHtcbiAgICAgICAgICBpZiAoaSA9PT0gcGF0aC5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghLS1jdXJyZW50T3BlblBhcmVuc0NvdW50KSB7XG4gICAgICAgICAgICBzdGF0ZSA9IHN0YXRlU3RhY2sucG9wKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAzIC8qIGluU3RyaW5nICovOlxuICAgICAgICBpZiAoY2hhciA9PT0gY3VycmVudFN0cmluZ1R5cGUpIHtcbiAgICAgICAgICBzdGF0ZSA9IHN0YXRlU3RhY2sucG9wKCk7XG4gICAgICAgICAgY3VycmVudFN0cmluZ1R5cGUgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gIWN1cnJlbnRPcGVuQnJhY2tldENvdW50ICYmICFjdXJyZW50T3BlblBhcmVuc0NvdW50O1xufTtcbmNvbnN0IGlzTWVtYmVyRXhwcmVzc2lvbk5vZGUgPSBOT09QIDtcbmNvbnN0IGlzTWVtYmVyRXhwcmVzc2lvbiA9IGlzTWVtYmVyRXhwcmVzc2lvbkJyb3dzZXIgO1xuY29uc3QgZm5FeHBSRSA9IC9eXFxzKihhc3luY1xccyopPyhcXChbXildKj9cXCl8W1xcdyRfXSspXFxzKig6W149XSspPz0+fF5cXHMqKGFzeW5jXFxzKyk/ZnVuY3Rpb24oPzpcXHMrW1xcdyRdKyk/XFxzKlxcKC87XG5jb25zdCBpc0ZuRXhwcmVzc2lvbkJyb3dzZXIgPSAoZXhwKSA9PiBmbkV4cFJFLnRlc3QoZ2V0RXhwU291cmNlKGV4cCkpO1xuY29uc3QgaXNGbkV4cHJlc3Npb25Ob2RlID0gTk9PUCA7XG5jb25zdCBpc0ZuRXhwcmVzc2lvbiA9IGlzRm5FeHByZXNzaW9uQnJvd3NlciA7XG5mdW5jdGlvbiBhZHZhbmNlUG9zaXRpb25XaXRoQ2xvbmUocG9zLCBzb3VyY2UsIG51bWJlck9mQ2hhcmFjdGVycyA9IHNvdXJjZS5sZW5ndGgpIHtcbiAgcmV0dXJuIGFkdmFuY2VQb3NpdGlvbldpdGhNdXRhdGlvbihcbiAgICB7XG4gICAgICBvZmZzZXQ6IHBvcy5vZmZzZXQsXG4gICAgICBsaW5lOiBwb3MubGluZSxcbiAgICAgIGNvbHVtbjogcG9zLmNvbHVtblxuICAgIH0sXG4gICAgc291cmNlLFxuICAgIG51bWJlck9mQ2hhcmFjdGVyc1xuICApO1xufVxuZnVuY3Rpb24gYWR2YW5jZVBvc2l0aW9uV2l0aE11dGF0aW9uKHBvcywgc291cmNlLCBudW1iZXJPZkNoYXJhY3RlcnMgPSBzb3VyY2UubGVuZ3RoKSB7XG4gIGxldCBsaW5lc0NvdW50ID0gMDtcbiAgbGV0IGxhc3ROZXdMaW5lUG9zID0gLTE7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtYmVyT2ZDaGFyYWN0ZXJzOyBpKyspIHtcbiAgICBpZiAoc291cmNlLmNoYXJDb2RlQXQoaSkgPT09IDEwKSB7XG4gICAgICBsaW5lc0NvdW50Kys7XG4gICAgICBsYXN0TmV3TGluZVBvcyA9IGk7XG4gICAgfVxuICB9XG4gIHBvcy5vZmZzZXQgKz0gbnVtYmVyT2ZDaGFyYWN0ZXJzO1xuICBwb3MubGluZSArPSBsaW5lc0NvdW50O1xuICBwb3MuY29sdW1uID0gbGFzdE5ld0xpbmVQb3MgPT09IC0xID8gcG9zLmNvbHVtbiArIG51bWJlck9mQ2hhcmFjdGVycyA6IG51bWJlck9mQ2hhcmFjdGVycyAtIGxhc3ROZXdMaW5lUG9zO1xuICByZXR1cm4gcG9zO1xufVxuZnVuY3Rpb24gYXNzZXJ0KGNvbmRpdGlvbiwgbXNnKSB7XG4gIGlmICghY29uZGl0aW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKG1zZyB8fCBgdW5leHBlY3RlZCBjb21waWxlciBjb25kaXRpb25gKTtcbiAgfVxufVxuZnVuY3Rpb24gZmluZERpcihub2RlLCBuYW1lLCBhbGxvd0VtcHR5ID0gZmFsc2UpIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLnByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgcCA9IG5vZGUucHJvcHNbaV07XG4gICAgaWYgKHAudHlwZSA9PT0gNyAmJiAoYWxsb3dFbXB0eSB8fCBwLmV4cCkgJiYgKGlzU3RyaW5nKG5hbWUpID8gcC5uYW1lID09PSBuYW1lIDogbmFtZS50ZXN0KHAubmFtZSkpKSB7XG4gICAgICByZXR1cm4gcDtcbiAgICB9XG4gI
15H1cbn1cbmZ1bmN0aW9uIGZpbmRQcm9wKG5vZGUsIG5hbWUsIGR5bmFtaWNPbmx5ID0gZmFsc2UsIGFsbG93RW1wdHkgPSBmYWxzZSkge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUucHJvcHMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBwID0gbm9kZS5wcm9wc1tpXTtcbiAgICBpZiAocC50eXBlID09PSA2KSB7XG4gICAgICBpZiAoZHluYW1pY09ubHkpIGNvbnRpbnVlO1xuICAgICAgaWYgKHAubmFtZSA9PT0gbmFtZSAmJiAocC52YWx1ZSB8fCBhbGxvd0VtcHR5KSkge1xuICAgICAgICByZXR1cm4gcDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHAubmFtZSA9PT0gXCJiaW5kXCIgJiYgKHAuZXhwIHx8IGFsbG93RW1wdHkpICYmIGlzU3RhdGljQXJnT2YocC5hcmcsIG5hbWUpKSB7XG4gICAgICByZXR1cm4gcDtcbiAgICB9XG4gIH1cbn1cbmZ1bmN0aW9uIGlzU3RhdGljQXJnT2YoYXJnLCBuYW1lKSB7XG4gIHJldHVybiAhIShhcmcgJiYgaXNTdGF0aWNFeHAoYXJnKSAmJiBhcmcuY29udGVudCA9PT0gbmFtZSk7XG59XG5mdW5jdGlvbiBoYXNEeW5hbWljS2V5VkJpbmQobm9kZSkge1xuICByZXR1cm4gbm9kZS5wcm9wcy5zb21lKFxuICAgIChwKSA9PiBwLnR5cGUgPT09IDcgJiYgcC5uYW1lID09PSBcImJpbmRcIiAmJiAoIXAuYXJnIHx8IC8vIHYtYmluZD1cIm9ialwiXG4gICAgcC5hcmcudHlwZSAhPT0gNCB8fCAvLyB2LWJpbmQ6W19jdHguZm9vXVxuICAgICFwLmFyZy5pc1N0YXRpYylcbiAgICAvLyB2LWJpbmQ6W2Zvb11cbiAgKTtcbn1cbmZ1bmN0aW9uIGlzVGV4dCQxKG5vZGUpIHtcbiAgcmV0dXJuIG5vZGUudHlwZSA9PT0gNSB8fCBub2RlLnR5cGUgPT09IDI7XG59XG5mdW5jdGlvbiBpc1ZTbG90KHApIHtcbiAgcmV0dXJuIHAudHlwZSA9PT0gNyAmJiBwLm5hbWUgPT09IFwic2xvdFwiO1xufVxuZnVuY3Rpb24gaXNUZW1wbGF0ZU5vZGUobm9kZSkge1xuICByZXR1cm4gbm9kZS50eXBlID09PSAxICYmIG5vZGUudGFnVHlwZSA9PT0gMztcbn1cbmZ1bmN0aW9uIGlzU2xvdE91dGxldChub2RlKSB7XG4gIHJldHVybiBub2RlLnR5cGUgPT09IDEgJiYgbm9kZS50YWdUeXBlID09PSAyO1xufVxuY29uc3QgcHJvcHNIZWxwZXJTZXQgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldChbTk9STUFMSVpFX1BST1BTLCBHVUFSRF9SRUFDVElWRV9QUk9QU10pO1xuZnVuY3Rpb24gZ2V0VW5ub3JtYWxpem
15VkUHJvcHMocHJvcHMsIGNhbGxQYXRoID0gW10pIHtcbiAgaWYgKHByb3BzICYmICFpc1N0cmluZyhwcm9wcykgJiYgcHJvcHMudHlwZSA9PT0gMTQpIHtcbiAgICBjb25zdCBjYWxsZWUgPSBwcm9wcy5jYWxsZWU7XG4gICAgaWYgKCFpc1N0cmluZyhjYWxsZWUpICYmIHByb3BzSGVscGVyU2V0LmhhcyhjYWxsZWUpKSB7XG4gICAgICByZXR1cm4gZ2V0VW5ub3JtYWxpemVkUHJvcHMoXG4gICAgICAgIHByb3BzLmFyZ3VtZW50c1swXSxcbiAgICAgICAgY2FsbFBhdGguY29uY2F0KHByb3BzKVxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFtwcm9wcywgY2FsbFBhdGhdO1xufVxuZnVuY3Rpb24gaW5qZWN0UHJvcChub2RlLCBwcm9wLCBjb250ZXh0KSB7XG4gIGxldCBwcm9wc1dpdGhJbmplY3Rpb247XG4gIGxldCBwcm9wcyA9IG5vZGUudHlwZSA9PT0gMTMgPyBub2RlLnByb3BzIDogbm9kZS5hcmd1bWVudHNbMl07XG4gIGxldCBjYWxsUGF0aCA9IFtdO1xuICBsZXQgcGFyZW50Q2FsbDtcbiAgaWYgKHByb3BzICYmICFpc1N0cmluZyhwcm9wcykgJiYgcHJvcHMudHlwZSA9PT0gMTQpIHtcbiAgICBjb25zdCByZXQgPSBnZXRVbm5vcm1hbGl6ZWRQcm9wcyhwcm9wcyk7XG4gICAgcHJvcHMgPSByZXRbMF07XG4gICAgY2FsbFBhdGggPSByZXRbMV07XG4gICAgcGFyZW50Q2FsbCA9IGNhbGxQYXRoW2NhbGxQYXRoLmxlbmd0aCAtIDFdO1xuICB9XG4gIGlmIChwcm9wcyA9PSBudWxsIHx8IGlzU3RyaW5nKHByb3BzKSkge1xuICAgIHByb3BzV2l0aEluamVjdGlvbiA9IGNyZWF0ZU9iamVjdEV4cHJlc3Npb24oW3Byb3BdKTtcbiAgfSBlbHNlIGlmIChwcm9wcy50eXBlID09PSAxNCkge1xuICAgIGNvbnN0IGZpcnN0ID0gcHJvcHMuYXJndW1lbnRzWzBdO1xuICAgIGlmICghaXNTdHJpbmcoZmlyc3QpICYmIGZpcnN0LnR5cGUgPT09IDE1KSB7XG4gICAgICBpZiAoIWhhc1Byb3AocHJvcCwgZmlyc3QpKSB7XG4gICAgICAgIGZpcnN0LnByb3BlcnRpZXMudW5zaGlmdChwcm9wKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHByb3BzLmNhbGxlZSA9PT0gVE9fSEFORExFUlMpIHtcbiAgICAgICAgcHJvcHNXaXRoSW5qZWN0aW9uID0gY3JlYXRlQ2FsbEV4cHJlc3Npb24oY29udGV4dC5oZWxwZXIoTUVSR0VfUFJPUFMpLCBbXG4gICAgICAgICAgY3JlYXRlT2JqZWN0RXhwcmVzc2lvbihbcHJvcF0pLFxuICAgICAgICAgIHByb3BzXG4gICAgICAgIF0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJvcHMuYXJndW1lbnRzLnVuc2hpZnQoY3JlYXRlT2JqZWN0RXhwcmVzc2lvbihbcHJvcF0pKTtcbiAgICAgIH1cbiAgICB9XG4gICAgIXByb3BzV2l0aEluamVjdGlvbiAmJiAocHJvcHNXaXRoSW5qZWN0aW9uID0gcHJvcHMpO1xuICB9IGVsc2UgaWYgKHByb3BzLnR5cGUgPT09IDE1KSB7XG4gICAgaWYgKCFoYXN
15Qcm9wKHByb3AsIHByb3BzKSkge1xuICAgICAgcHJvcHMucHJvcGVydGllcy51bnNoaWZ0KHByb3ApO1xuICAgIH1cbiAgICBwcm9wc1dpdGhJbmplY3Rpb24gPSBwcm9wcztcbiAgfSBlbHNlIHtcbiAgICBwcm9wc1dpdGhJbmplY3Rpb24gPSBjcmVhdGVDYWxsRXhwcmVzc2lvbihjb250ZXh0LmhlbHBlcihNRVJHRV9QUk9QUyksIFtcbiAgICAgIGNyZWF0ZU9iamVjdEV4cHJlc3Npb24oW3Byb3BdKSxcbiAgICAgIHByb3BzXG4gICAgXSk7XG4gICAgaWYgKHBhcmVudENhbGwgJiYgcGFyZW50Q2FsbC5jYWxsZWUgPT09IEdVQVJEX1JFQUNUSVZFX1BST1BTKSB7XG4gICAgICBwYXJlbnRDYWxsID0gY2FsbFBhdGhbY2FsbFBhdGgubGVuZ3RoIC0gMl07XG4gICAgfVxuICB9XG4gIGlmIChub2RlLnR5cGUgPT09IDEzKSB7XG4gICAgaWYgKHBhcmVudENhbGwpIHtcbiAgICAgIHBhcmVudENhbGwuYXJndW1lbnRzWzBdID0gcHJvcHNXaXRoSW5qZWN0aW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICBub2RlLnByb3BzID0gcHJvcHNXaXRoSW5qZWN0aW9uO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAocGFyZW50Q2FsbCkge1xuICAgICAgcGFyZW50Q2FsbC5hcmd1bWVudHNbMF0gPSBwcm9wc1dpdGhJbmplY3Rpb247XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGUuYXJndW1lbnRzWzJdID0gcHJvcHNXaXRoSW5qZWN0aW9uO1xuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gaGFzUHJvcChwcm9wLCBwcm9wcykge1xuICBsZXQgcmVzdWx0ID0gZmFsc2U7XG4gIGlmIChwcm9wLmtleS50eXBlID09PSA0KSB7XG4gICAgY29uc3QgcHJvcEtleU5hbWUgPSBwcm9wLmtleS5jb250ZW50O1xuICAgIHJlc3VsdCA9IHByb3BzLnByb3BlcnRpZXMuc29tZShcbiAgICAgIChwKSA9PiBwLmtleS50eXBlID09PSA0ICYmIHAua2V5LmNvbnRlbnQgPT09IHByb3BLZXlOYW1lXG4gICAgKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gdG9WYWxpZEFzc2V0SWQobmFtZSwgdHlwZSkge1xuICByZXR1cm4gYF8ke3R5cGV9XyR7bmFtZS5yZXBsYWNlKC9bXlxcd10vZywgKHNlYXJjaFZhbHVlLCByZXBsYWNlVmFsdWUpID0+IHtcbiAgICByZXR1cm4gc2VhcmNoVmFsdWUgPT09IFwiLVwiID8gXCJfXCIgOiBuYW1lLmNoYXJDb2RlQXQocmVwbGFjZVZhbHVlKS50b1N0cmluZygpO1xuICB9KX1gO1xufVxuZnVuY3Rpb24gaGFzU2NvcGVSZWYobm9kZSwgaWRzKSB7XG4gIGlmICghbm9kZSB8fCBPYmplY3Qua2V5cyhpZHMpLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgIGNhc2UgMTpcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5wcm9wcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBwID0gbm9kZS5wcm9wc1tpXTtcbiAgICAgICAgaWYgKHAudHlwZSA9PT0gNyAmJiAoaGFzU2NvcGVSZWYocC5hcmcsIGlkcykgfHwgaGFzU2NvcGVSZWYocC5leHAsIGlkcykpKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBub2RlLmNoaWxkcmVuLnNvbWUoKGMpID0+IGhhc1Njb3BlUmVmKGMsIGlkcykpO1xuICAgIGNhc2UgMTE6XG4gICAgICBpZiAoaGFzU2NvcGVSZWYobm9kZS5zb3VyY2UsIGlkcykpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gbm9kZS5jaGlsZHJlbi5zb21lKChjKSA9PiBoYXNTY29wZVJlZihjLCBpZHMpKTtcbiAgICBjYXNlIDk6XG4gICAgICByZXR1cm4gbm9kZS5icmFuY2hlcy5zb21lKChiKSA9PiBoYXNTY29wZVJlZihiLCBpZHMpKTtcbiAgICBjYXNlIDEwOlxuICAgICAgaWYgKGhhc1Njb3BlUmVmKG5vZGUuY29uZGl0aW9uLCBpZHMpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5vZGUuY2hpbGRyZW4uc29tZSgoYykgPT4gaGFzU2NvcGVSZWYoYywgaWRzKSk7XG4gICAgY2FzZSA0OlxuICAgICAgcmV0dXJuICFub2RlLmlzU3RhdGljICYmIGlzU2ltcGxlSWRlbnRpZmllcihub2RlLmNvbnRlbnQpICYmICEhaWRzW25vZGUuY29udGVudF07XG4gICAgY2FzZSA4OlxuICAgICAgcmV0dXJuIG5vZGUuY2hpbGRyZW4uc29tZSgoYykgPT4gaXNPYmplY3QoYykgJiYgaGFzU2NvcGVSZWYoYywgaWRzKSk7XG4gICAgY2FzZSA1OlxuICAgIGNhc2UgMTI6XG4gICAgICByZXR1cm4gaGFzU2NvcGVSZWYobm9kZS5jb250ZW50LCBpZHMpO1xuICAgIGNhc2UgMjpcbiAgICBjYXNlIDM6XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgZGVmYXVsdDpcbiAgICAgIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpKSA7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbmZ1bmN0aW9uIGdldE1lbW9lZFZOb2RlQ2FsbChub2RlKSB7XG4gIGlmIChub2RlLnR5cGUgPT09IDE0ICYmIG5vZGUuY2FsbGVlID09PSBXSVRIX01FTU8pIHtcbiAgICByZXR1cm4gbm9kZS5hcmd1bWVudHNbMV0ucmV0dXJucztcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxufVxuY29uc3QgZm9yQWxpYXNSRSA9IC8oW1xcc1xcU10qPylcXHMrKD86aW58b2YpXFxzKyhcXFNbXFxzXFxTXSopLztcblxuY29uc3QgZGVmYXVsdFBhcnNlck9wdGlvbnMgPSB7XG4gIHBhcnNlTW9kZTogXCJiYXNlXCIsXG4gIG5zOiAwLFxuICBkZWxpbWl0ZXJzOiBbYHt7YCwgYH19YF0sXG4gIGdldE5hbWVzcGFjZTogKCkgPT4gMCxcbiAgaXNWb2lkVGFnOiBOTyxcbiAgaXNQcmVUYWc6IE5PLFxuICBpc0N1c3RvbUVsZW1lbnQ6IE5PLFxuICBvbkVycm9yOiBkZWZhdWx0T25FcnJvcixcbiAgb25XYXJuOiBkZWZhdWx0T25XYXJuLFxuICBjb21tZW50czogISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSxcbiAgcHJlZml4SWRlbnRpZmllcnM6IGZhbHNlXG59O1xubGV0IGN1cnJlbnRPcHRpb25zID0gZGVmYXVsdFBhcnNlck9wdGlvbnM7XG5sZXQgY3VycmVudFJvb3QgPSBudWxsO1xubGV0IGN1cnJlbnRJbnB1dCA9IFwiXCI7XG5sZXQgY3VycmVudE9wZW5UYWcgPSBudWxsO1xubGV0IGN1cnJlbnRQcm9wID0gbnVsbDtcbmxldCBjdXJyZW50QXR0clZhbHVlID0gXCJcIjtcbmxldCBjdXJyZW50QXR0clN0YXJ0SW5kZXggPSAtMTtcbmxldCBjdXJyZW50QXR0ckVuZEluZGV4ID0gLTE7XG5sZXQgaW5QcmUgPSAwO1xubGV0IGluVlByZSA9IGZhbHNlO1xubGV0IGN1cnJlbnRWUHJlQm91bmRhcnkgPSBudWxsO1xuY29uc3Qgc3RhY2sgPSBbXTtcbmNvbnN0IHRva2VuaXplciA9IG5ldyBUb2tlbml6ZXIoc3RhY2ssIHtcbiAgb25lcnI6IGVtaXRFcnJvcixcbiAgb250ZXh0KHN0YXJ0LCBlbmQpIHtcbiAgICBvblRleHQoZ2V0U2xpY2Uoc3RhcnQsIGVuZCksIHN0YXJ0LCBlbmQpO1xuICB9LFxuICBvbnRleHRlbnRpdHkoY2hhciwgc3RhcnQsIGVuZCkge1xuICAgIG9uVGV4dChjaGFyLCBzdGFydCwgZW5kKTtcbiAgfSxcbiAgb25pbnRlcnBvbGF0aW9uKHN0YXJ0LCBlbmQpIHtcbiAgICBpZiAoaW5WUHJlKSB7XG4gICAgICByZXR1cm4gb25UZXh0KGdldFNsaWNlKHN0YXJ0LCBlbmQpLCBzdGFydCwgZW5kKTtcbiAgICB9XG4gICAgbGV0IGlubmVyU3RhcnQgPSBzdGFydCArIHRva2VuaXplci5kZWxpbWl0ZXJPcGVuLmxlbmd0aDtcbiAgICBsZXQgaW5uZXJFbmQgPSBlbmQgLSB0b2tlbml6ZXIuZGVsaW1pdGVyQ2xvc2UubGVuZ3RoO1xuICAgIHdoaWxlIChpc1doaXRlc3BhY2UoY3VycmVudElucHV0LmNoYXJDb2RlQXQoaW5uZXJTdGFydCkpKSB7XG4gICAgICBpbm5lclN0YXJ0Kys7XG4gICAgfVxuICAgIHdoaWxlIChpc1doaXRlc3BhY2UoY3VycmVudElucHV0LmNoYXJDb2RlQXQoaW5uZXJFbmQgLSAxKSkpIHtcbiAgICAgIGlubmVyRW5kLS07XG4gICAgfVxuICAgIGxldCBleHAgPSBnZXRTbGljZShpbm5lclN0YXJ0LCBpbm5lckVuZCk7XG4gICAgaWYgKGV4cC5pbmNsdWRlcyhcIiZcIikpIHtcbiAgICAgIHtcbiAgICAgICAgZXhwID0gY3VycmVudE9wdGlvbnMuZGVjb2RlRW50aXRpZXMoZXhwLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGFkZE5vZGUoe1xuICAgICAgdHlwZTogNSxcbiAgICAgIGNvbnRlbnQ6IGNyZWF0ZUV4cChleHAsIGZhbHNlLCBnZXRMb2MoaW5uZXJTdGFydCwgaW5uZXJFbmQpKSxcbiAgICAgIGxvYzogZ2V0TG9jKHN0YXJ0LCBlbmQpXG4gICAgfSk7XG4gIH0sXG4gIG9ub3BlbnRhZ25hbWUoc3RhcnQsIGVuZCkge1xuICAgIGNvbnN0IG5hbW
15UgPSBnZXRTbGljZShzdGFydCwgZW5kKTtcbiAgICBjdXJyZW50T3BlblRhZyA9IHtcbiAgICAgIHR5cGU6IDEsXG4gICAgICB0YWc6IG5hbWUsXG4gICAgICBuczogY3VycmVudE9wdGlvbnMuZ2V0TmFtZXNwYWNlKG5hbWUsIHN0YWNrWzBdLCBjdXJyZW50T3B0aW9ucy5ucyksXG4gICAgICB0YWdUeXBlOiAwLFxuICAgICAgLy8gd2lsbCBiZSByZWZpbmVkIG9uIHRhZyBjbG9zZVxuICAgICAgcHJvcHM6IFtdLFxuICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgbG9jOiBnZXRMb2Moc3RhcnQgLSAxLCBlbmQpLFxuICAgICAgY29kZWdlbk5vZGU6IHZvaWQgMFxuICAgIH07XG4gIH0sXG4gIG9ub3BlbnRhZ2VuZChlbmQpIHtcbiAgICBlbmRPcGVuVGFnKGVuZCk7XG4gIH0sXG4gIG9uY2xvc2V0YWcoc3RhcnQsIGVuZCkge1xuICAgIGNvbnN0IG5hbWUgPSBnZXRTbGljZShzdGFydCwgZW5kKTtcbiAgICBpZiAoIWN1cnJlbnRPcHRpb25zLmlzVm9pZFRhZyhuYW1lKSkge1xuICAgICAgbGV0IGZvdW5kID0gZmFsc2U7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0YWNrLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGUgPSBzdGFja1tpXTtcbiAgICAgICAgaWYgKGUudGFnLnRvTG93ZXJDYXNlKCkgPT09IG5hbWUudG9Mb3dlckNhc2UoKSkge1xuICAgICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgICAgIGVtaXRFcnJvcigyNCwgc3RhY2tbMF0ubG9jLnN0YXJ0Lm9mZnNldCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDw9IGk7IGorKykge1xuICAgICAgICAgICAgY29uc3QgZWwgPSBzdGFjay5zaGlmdCgpO1xuICAgICAgICAgICAgb25DbG9zZVRhZyhlbCwgZW5kLCBqIDwgaSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoIWZvdW5kKSB7XG4gICAgICAgIGVtaXRFcnJvcigyMywgYmFja1RyYWNrKHN0YXJ0LCA2MCkpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgb25zZWxmY2xvc2luZ3RhZyhlbmQpIHtcbiAgICBjb25zdCBuYW1lID0gY3VycmVudE9wZW5UYWcudGFnO1xuICAgIGN1cnJlbnRPcGVuVGFnLmlzU2VsZkNsb3NpbmcgPSB0cnVlO1xuICAgIGVuZE9wZW5UYWcoZW5kKTtcbiAgICBpZiAoc3RhY2tbMF0gJiYgc3RhY2tbMF0udGFnID09PSBuYW1lKSB7XG4gICAgICBvbkNsb3NlVGFnKHN0YWNrLnNoaWZ0KCksIGVuZCk7XG4gICAgfVxuICB9LFxuICBvbmF0dHJpYm5hbWUoc3RhcnQsIGVuZCkge1xuICAgIGN1cnJlbnRQcm9wID0ge1xuICAgICAgdHlwZTogNixcbiAgICAgIG5hbWU6IGdldFNsaWNlKHN0YXJ0LCBlbmQpLFxuICAgICAgbmFtZUxvYzogZ2V0TG9jKHN0YXJ0LCBlbmQpLFxuICAgICAgdmFsdWU6IHZvaWQgMCxcbiAgICAgIGxvYzogZ2V0TG9jKHN0YXJ0KVxuICAgIH07XG4gIH0sXG4gIG9uZGlybmFtZShzdGFydCwgZW5kKSB7XG4gICAgY29uc3QgcmF3ID0gZ2V0U2xpY2Uoc3RhcnQsIGVuZCk7XG4gICAgY29uc3QgbmFtZSA9IHJhdyA9PT0gXCIuXCIgfHwgcmF3ID09PSBcIjpcIiA/IFwiYmluZFwiIDogcmF3ID09PSBcIkBcIiA/IFwib25cIiA6IHJhdyA9PT0gXCIjXCIgPyBcInNsb3RcIiA6IHJhdy5zbGljZSgyKTtcbiAgICBpZiAoIWluVlByZSAmJiBuYW1lID09PSBcIlwiKSB7XG4gICAgICBlbWl0RXJyb3IoMjYsIHN0YXJ0KTtcbiAgICB9XG4gICAgaWYgKGluVlByZSB8fCBuYW1lID09PSBcIlwiKSB7XG4gICAgICBjdXJyZW50UHJvcCA9IHtcbiAgICAgICAgdHlwZTogNixcbiAgICAgICAgbmFtZTogcmF3LFxuICAgICAgICBuYW1lTG9jOiBnZXRMb2Moc3RhcnQsIGVuZCksXG4gICAgICAgIHZhbHVlOiB2b2lkIDAsXG4gICAgICAgIGxvYzogZ2V0TG9jKHN0YXJ0KVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VycmVudFByb3AgPSB7XG4gICAgICAgIHR5cGU6IDcsXG4gICAgICAgIG5hbWUsXG4gICAgICAgIHJhd05hbWU6IHJhdyxcbiAgICAgICAgZXhwOiB2b2lkIDAsXG4gICAgICAgIGFyZzogdm9pZCAwLFxuICAgICAgICBtb2RpZmllcnM6IHJhdyA9PT0gXCIuXCIgPyBbXCJwcm9wXCJdIDogW10sXG4gICAgICAgIGxvYzogZ2V0TG9jKHN0YXJ0KVxuICAgICAgfTtcbiAgICAgIGlmIChuYW1lID09PSBcInByZVwiKSB7XG4gICAgICAgIGluVlByZSA9IHRva2VuaXplci5pblZQcmUgPSB0cnVlO1xuICAgICAgICBjdXJyZW50VlByZUJvdW5kYXJ5ID0gY3VycmVudE9wZW5UYWc7XG4gICAgICAgIGNvbnN0IHByb3BzID0gY3VycmVudE9wZW5UYWcucHJvcHM7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZiAocHJvcHNbaV0udHlwZSA9PT0gNykge1xuICAgICAgICAgICAgcHJvcHNbaV0gPSBkaXJUb0F0dHIocHJvcHNbaV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgb25kaXJhcmcoc3RhcnQsIGVuZCkge1xuICAgIGlmIChzdGFydCA9PT0gZW5kKSByZXR1cm47XG4gICAgY29uc3QgYXJnID0gZ2V0U2xpY2Uoc3RhcnQsIGVuZCk7XG4gICAgaWYgKGluVlByZSkge1xuICAgICAgY3VycmVudFByb3AubmFtZSArPSBhcmc7XG4gICAgICBzZXRMb2NFbmQoY3VycmVudFByb3AubmFtZUxvYywgZW5kKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgaXNTdGF0aWMgPSBhcmdbMF0gIT09IGBbYDtcbiAgICAgIGN1cnJlbnRQcm9wLmFyZyA9IGNyZWF0ZUV4cChcbiAgICAgICAgaXNTdGF0aWMgPyBhcmcgOiBhcmcuc2xpY2UoMSwgLTEpLFxuICAgICAgICBpc1N0YXRpYyxcbiAgICAgICAgZ2V0TG9jKHN0YXJ0LCBlbmQpLFxuICAgICAgICBpc1N0YXRpYyA/IDMgOiAwXG4gICAgICApO1xuICAgIH1cbiAgfSxcbiAgb25kaXJtb2RpZmllcihzdGFydCwgZW5kKSB7XG4gICAgY29uc3QgbW9kID0gZ2V0U2xpY2Uoc3RhcnQsIGVuZCk7XG4gICAgaWYgKGluVlByZSkge1xuICAgICAgY3VycmVudFByb3AubmFtZSArPSBcIi5cIiArIG1vZDtcbiAgICAgIHNldExvY0VuZChjdXJyZW50UHJvcC5uYW1lTG9jLCBlbmQpO1xuICAgIH0gZWxzZSBpZiAoY3VycmVudFByb3AubmFtZSA9PT0gXCJzbG90XCIpIHtcbiAgICAgIGNvbnN0IGFyZyA9IGN1cnJlbnRQcm9wLmFyZztcbiAgICAgIGlmIChhcmcpIHtcbiAgICAgICAgYXJnLmNvbnRlbnQgKz0gXCIuXCIgKyBtb2Q7XG4gICAgICAgI
15HNldExvY0VuZChhcmcubG9jLCBlbmQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjdXJyZW50UHJvcC5tb2RpZmllcnMucHVzaChtb2QpO1xuICAgIH1cbiAgfSxcbiAgb25hdHRyaWJkYXRhKHN0YXJ0LCBlbmQpIHtcbiAgICBjdXJyZW50QXR0clZhbHVlICs9IGdldFNsaWNlKHN0YXJ0LCBlbmQpO1xuICAgIGlmIChjdXJyZW50QXR0clN0YXJ0SW5kZXggPCAwKSBjdXJyZW50QXR0clN0YXJ0SW5kZXggPSBzdGFydDtcbiAgICBjdXJyZW50QXR0ckVuZEluZGV4ID0gZW5kO1xuICB9LFxuICBvbmF0dHJpYmVudGl0eShjaGFyLCBzdGFydCwgZW5kKSB7XG4gICAgY3VycmVudEF0dHJWYWx1ZSArPSBjaGFyO1xuICAgIGlmIChjdXJyZW50QXR0clN0YXJ0SW5kZXggPCAwKSBjdXJyZW50QXR0clN0YXJ0SW5kZXggPSBzdGFydDtcbiAgICBjdXJyZW50QXR0ckVuZEluZGV4ID0gZW5kO1xuICB9LFxuICBvbmF0dHJpYm5hbWVlbmQoZW5kKSB7XG4gICAgY29uc3Qgc3RhcnQgPSBjdXJyZW50UHJvcC5sb2Muc3RhcnQub2Zmc2V0O1xuICAgIGNvbnN0IG5hbWUgPSBnZXRTbGljZShzdGFydCwgZW5kKTtcbiAgICBpZiAoY3VycmVudFByb3AudHlwZSA9PT0gNykge1xuICAgICAgY3VycmVudFByb3AucmF3TmFtZSA9IG5hbWU7XG4gICAgfVxuICAgIGlmIChjdXJyZW50T3BlblRhZy5wcm9wcy5zb21lKFxuICAgICAgKHApID0+IChwLnR5cGUgPT09IDcgPyBwLnJhd05hbWUgOiBwLm5hbWUpID09PSBuYW1lXG4gICAgKSkge1xuICAgICAgZW1pdEVycm9yKDIsIHN0YXJ0KTtcbiAgICB9XG4gIH0sXG4gIG9uYXR0cmliZW5kKHF1b3RlLCBlbmQpIHtcbiAgICBpZiAoY3VycmVudE9wZW5UYWcgJiYgY3VycmVudFByb3ApIHtcbiAgICAgIHNldExvY0VuZChjdXJyZW50UHJvcC5sb2MsIGVuZCk7XG4gICAgICBpZiAocXVvdGUgIT09IDApIHtcbiAgICAgICAgaWYgKGN1cnJlbnRBdHRyVmFsdWUuaW5jbHVkZXMoXCImXCIpKSB7XG4gICAgICAgICAgY3VycmVudEF0dHJWYWx1ZSA9IGN1cnJlbnRPcHRpb25zLmRlY29kZUVudGl0aWVzKFxuICAgICAgICAgICAgY3VycmVudEF0dHJWYWx1ZSxcbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjdXJyZW50UHJvcC50eXBlID09PSA2KSB7XG4gICAgICAgICAgaWYgKGN1cnJlbnRQcm9wLm5hbWUgPT09IFwiY2xhc3NcIikge1xuICAgICAgICAgICAgY3VycmVudEF0dHJWYWx1ZSA9IGNvbmRlbnNlKGN1cnJlbnRBdHRyVmFsdWUpLnRyaW0oKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHF1b3RlID09PSAxICYmICFjdXJyZW50QXR0clZhbHVlKSB7XG4gICAgICAgICAgICBlbWl0RXJyb3IoMTMsIGVuZCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGN1cnJlbnRQcm9wLnZhbHVlID0ge1xuICAgICAgICAgICAgdHlwZTogMixcbiAgICAgICAgICAgIGNvbnRlbnQ6IGN1cnJlbnRBdHRyVmFsdWUsXG4gICAgICAgICAgICBsb2M6IHF1b3RlID09PSAxID8gZ2V0TG9jKGN1cnJlbnRBdHRyU3RhcnRJbmRleCwgY3VycmVudEF0dHJFbmRJbmRleCkgOiBnZXRMb2MoY3VycmVudEF0dHJTdGFydEluZGV4IC0gMSwgY3VycmVudEF0dHJFbmRJbmRleCArIDEpXG4gICAgICAgICAgfTtcbiAgICAgICAgICBpZiAodG9rZW5pemVyLmluU0ZDUm9vdCAmJiBjdXJyZW50T3BlblRhZy50YWcgPT09IFwidGVtcGxhdGVcIiAmJiBjdXJyZW50UHJvcC5uYW1lID09PSBcImxhbmdcIiAmJiBjdXJyZW50QXR0clZhbHVlICYmIGN1cnJlbnRBdHRyVmFsdWUgIT09IFwiaHRtbFwiKSB7XG4gICAgICAgICAgICB0b2tlbml6ZXIuZW50ZXJSQ0RBVEEodG9DaGFyQ29kZXMoYDwvdGVtcGxhdGVgKSwgMCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxldCBleHBQYXJzZU1vZGUgPSAwIC8qIE5vcm1hbCAqLztcbiAgICAgICAgICBjdXJyZW50UHJvcC5leHAgPSBjcmVhdGVFeHAoXG4gICAgICAgICAgICBjdXJyZW50QXR0clZhbHVlLFxuICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICBnZXRMb2MoY3VycmVudEF0dHJTdGFydEluZGV4LCBjdXJyZW50QXR0ckVuZEluZGV4KSxcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICBleHBQYXJzZU1vZGVcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmIChjdXJyZW50UHJvcC5uYW1lID09PSBcImZvclwiKSB7XG4gICAgICAgICAgICBjdXJyZW50UHJvcC5mb3JQYXJzZVJlc3VsdCA9IHBhcnNlRm9yRXhwcmVzc2lvbihjdXJyZW50UHJvcC5leHApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsZXQgc3luY0luZGV4ID0gLTE7XG4gICAgICAgICAgaWYgKGN1cnJlbnRQcm9wLm5hbWUgPT09IFwiYmluZFwiICYmIChzeW5jSW5kZXggPSBjdXJyZW50UHJvcC5tb2RpZmllcnMuaW5kZXhPZihcInN5bmNcIikpID4gLTEgJiYgY2hlY2tDb21wYXRFbmFibGVkKFxuICAgICAgICAgICAgXCJDT01QSUxFUl9WX0JJTkRfU1lOQ1wiLFxuICAgICAgICAgICAgY3VycmVudE9wdGlvbnMsXG4gICAgICAgICAgICBjdXJyZW50UHJvcC5sb2MsXG4gICAgICAgICAgICBjdXJyZW50UHJvcC5yYXdOYW1lXG4gICAgICAgICAgKSkge1xuICAgICAgICAgICAgY3VycmVudFByb3AubmFtZSA9IFwibW9kZWxcIjtcbiAgICAgICAgICAgIGN1cnJlbnRQcm9wLm1vZGlmaWVycy5zcGxpY2Uoc3luY0luZGV4LCAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChjdXJyZW50UHJvcC50eXBlICE9PSA3IHx8IGN1cnJlbnRQcm9wLm5hbWUgIT09IFwicHJlXCIpIHtcbiAgICAgICAgY3VycmVudE9wZW5UYWcucHJvcHMucHVzaChjdXJyZW50UHJvcCk7XG4gICAgICB9XG4gICAgfVxuICAgIGN1cnJlbnRBdHRyVmFsdWUgPSBcIlwiO1xuICAgIGN1cnJlbnRBdHRyU3RhcnRJbmRleCA9IGN1cnJlbnRBdHRyRW5kSW5kZXggPSAtMTtcbiAgfSxcbiAgb25jb21tZW50KHN0YXJ0LCBlbmQpIHtcbiAgICBpZiAoY3VycmVudE9wdGlvbnMuY29tbWVudHMpIHtcbiAgICAgIGFkZE5vZGUoe1xuICAgICAgICB0eXBlOiAzLFxuICAgICAgICBjb250ZW50OiBnZXRTbGljZShzdGFydCwgZW5kKSxcbiAgICAgICAgbG9jOiBnZXRMb2Moc3RhcnQgLSA0LCBlbmQgKyAzKVxuICAgICAgfSk7XG4gICAgfVxuICB9LFxuICBvbmVuZCgpIHtcbiAgICBjb25zdCBlbmQgPSBjdXJyZW50SW5wdXQubGVuZ3RoO1xuICAgIGlmICgoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB8fCBmYWxzZSkgJiYgdG9rZW5pemVyLnN0YXRlICE9PSAxKSB7XG4gICAgICBzd2l0Y2ggKHRva2VuaXplci5zdGF0ZSkge1xuICAgICAgICBjYXNlIDU6XG4gICAgICAgIGNhc2UgODpcbiAgICAgICAgICBlbWl0RXJyb3IoNSwgZW5kKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgZW1pdEVycm9yKFxuICAgICAgICAgICAgMjUsXG4gICAgICAgICAgICB0b2tlbml6ZXIuc2VjdGlvblN0YXJ0XG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyODpcbiAgICAgICAgICBpZiAodG9rZW5pemVyLmN1cnJlbnRTZXF1ZW5jZSA9PT0gU2VxdWVuY2VzLkNkYXRhRW5kKSB7XG4gICAgICAgICAgICBlbWl0RXJyb3IoNiwgZW5kKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZW1pdEVycm9yKDcsIGVuZCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDY6XG4gICAgICAgIGNhc2UgNzpcbiAgICAgICAgY2FzZSA5OlxuICAgICAgICBjYXNlIDExOlxuICAgICAgICBjYXNlIDEyOlxuICAgICAgICBjYXNlIDEzOlxuICAgICAgICBjYXNlIDE0OlxuICAgICAgICBjYXNlIDE1OlxuICAgICAgICBjYXNlIDE2OlxuICAgICAgICBjYXNlIDE3OlxuICAgICAgICBjYXNlIDE4OlxuICAgICAgICBjYXNlIDE5OlxuICAgICAgICBjYXNlIDIwOlxuICAgICAgICBjYXNlIDIxOlxuICAgICAgICAgIGVtaXRFcnJvcig5LCBlbmQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgc3RhY2subGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBvbkNsb3NlVGFnKHN0YWNrW2luZGV4XSwgZW5kIC0gMSk7XG4gICAgICBlbWl0RXJyb3IoMjQsIHN0YWNrW2luZGV4XS5sb2Muc3RhcnQub2Zmc2V0KTtcbiAgICB9XG4gI
15H0sXG4gIG9uY2RhdGEoc3RhcnQsIGVuZCkge1xuICAgIGlmIChzdGFja1swXS5ucyAhPT0gMCkge1xuICAgICAgb25UZXh0KGdldFNsaWNlKHN0YXJ0LCBlbmQpLCBzdGFydCwgZW5kKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZW1pdEVycm9yKDEsIHN0YXJ0IC0gOSk7XG4gICAgfVxuICB9LFxuICBvbnByb2Nlc3NpbmdpbnN0cnVjdGlvbihzdGFydCkge1xuICAgIGlmICgoc3RhY2tbMF0gPyBzdGFja1swXS5ucyA6IGN1cnJlbnRPcHRpb25zLm5zKSA9PT0gMCkge1xuICAgICAgZW1pdEVycm9yKFxuICAgICAgICAyMSxcbiAgICAgICAgc3RhcnQgLSAxXG4gICAgICApO1xuICAgIH1cbiAgfVxufSk7XG5jb25zdCBmb3JJdGVyYXRvclJFID0gLywoW14sXFx9XFxdXSopKD86LChbXixcXH1cXF1dKikpPyQvO1xuY29uc3Qgc3RyaXBQYXJlbnNSRSA9IC9eXFwofFxcKSQvZztcbmZ1bmN0aW9uIHBhcnNlRm9yRXhwcmVzc2lvbihpbnB1dCkge1xuICBjb25zdCBsb2MgPSBpbnB1dC5sb2M7XG4gIGNvbnN0IGV4cCA9IGlucHV0LmNvbnRlbnQ7XG4gIGNvbnN0IGluTWF0Y2ggPSBleHAubWF0Y2goZm9yQWxpYXNSRSk7XG4gIGlmICghaW5NYXRjaCkgcmV0dXJuO1xuICBjb25zdCBbLCBMSFMsIFJIU10gPSBpbk1hdGNoO1xuICBjb25zdCBjcmVhdGVBbGlhc0V4cHJlc3Npb24gPSAoY29udGVudCwgb2Zmc2V0LCBhc1BhcmFtID0gZmFsc2UpID0+IHtcbiAgICBjb25zdCBzdGFydCA9IGxvYy5zdGFydC5vZmZzZXQgKyBvZmZzZXQ7XG4gICAgY29uc3QgZW5kID0gc3RhcnQgKyBjb250ZW50Lmxlbmd0aDtcbiAgICByZXR1cm4gY3JlYXRlRXhwKFxuICAgICAgY29udGVudCxcbiAgICAgIGZhbHNlLFxuICAgICAgZ2V0TG9jKHN0YXJ0LCBlbmQpLFxuICAgICAgMCxcbiAgICAgIGFzUGFyYW0gPyAxIC8qIFBhcmFtcyAqLyA6IDAgLyogTm9ybWFsICovXG4gICAgKTtcbiAgfTtcbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgIHNvdXJjZTogY3JlYXRlQWxpYXNFeHByZXNzaW9uKFJIUy50cmltKCksIGV4cC5pbmRleE9mKFJIUywgTEhTLmxlbmd0aCkpLFxuICAgIHZhbHVlOiB2b2lkIDAsXG4gICAga2V5OiB2b2lkIDAsXG4gICAgaW5kZXg6IHZvaWQgMCxcbiAgICBmaW5hbGl6ZWQ6IGZhbHNlXG4gIH07XG4gIGxldCB2YWx1ZUNvbnRlbnQgPSBMSFMudHJpbSgpLnJlcGxhY2Uoc3RyaXBQYXJlbnNSRSwgXCJcIikudHJpbSgpO1xuICBjb25zdCB0cmltbWVkT2Zmc2V0ID0gTEhTLmluZGV4T2YodmFsdWVDb250ZW50KTtcbiAgY29uc3QgaXRlcmF0b3JNYXRjaCA9IHZhbHVlQ29udGVudC5tYXRjaChmb3JJdGVyYXRvclJFKTtcbiAgaWYgKGl0ZXJhdG9yTWF0Y2gpIHtcbiAgICB2YWx1ZUNvbnRlbnQgPSB2YWx1ZUNvbnRlbnQucmVwbGFjZShmb3JJdGVyYXRvclJFLCBcIlwiKS50cmltKCk7XG4gICAgY29uc3Qga2V5Q29udGVudCA9IGl0ZXJhdG9yTWF0Y2hbMV0udHJpbSgpO1xuICAgIGxldCBrZXlPZmZzZXQ7XG4gICAgaWYgKGtleUNvbnRlbnQpIHtcbiAgICAgIGtleU9mZnNldCA9IGV4cC5pbmRleE9mKGtleUNvbnRlbnQsIHRyaW1tZWRPZmZzZXQgKyB2YWx1ZUNvbnRlbnQubGVuZ3RoKTtcbiAgICAgIHJlc3VsdC5rZXkgPSBjcmVhdGVBbGlhc0V4cHJlc3Npb24oa2V5Q29udGVudCwga2V5T2Zmc2V0LCB0cnVlKTtcbiAgICB9XG4gICAgaWYgKGl0ZXJhdG9yTWF0Y2hbMl0pIHtcbiAgICAgIGNvbnN0IGluZGV4Q29udGVudCA9IGl0ZXJhdG9yTWF0Y2hbMl0udHJpbSgpO1xuICAgICAgaWYgKGluZGV4Q29udGVudCkge1xuICAgICAgICByZXN1bHQuaW5kZXggPSBjcmVhdGVBbGlhc0V4cHJlc3Npb24oXG4gICAgICAgICAgaW5kZXhDb250ZW50LFxuICAgICAgICAgIGV4cC5pbmRleE9mKFxuICAgICAgICAgICAgaW5kZXhDb250ZW50LFxuICAgICAgICAgICAgcmVzdWx0LmtleSA/IGtleU9mZnNldCArIGtleUNvbnRlbnQubGVuZ3RoIDogdHJpbW1lZE9mZnNldCArIHZhbHVlQ29udGVudC5sZW5ndGhcbiAgICAgICAgICApLFxuICAgICAgICAgIHRydWVcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKHZhbHVlQ29udGVudCkge1xuICAgIHJlc3VsdC52YWx1ZSA9IGNyZWF0ZUFsaWFzRXhwcmVzc2lvbih2YWx1ZUNvbnRlbnQsIHRyaW1tZWRPZmZzZXQsIHRydWUpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiBnZXRTbGljZShzdGFydCwgZW5kKSB7XG4gIHJldHVybiBjdXJyZW50SW5wdXQuc2xpY2Uoc3RhcnQsIGVuZCk7XG59XG5mdW5jdGlvbiBlbmRPcGVuVGFnKGVuZCkge1xuICBpZiAodG9rZW5pemVyLmluU0ZDUm9vdCkge1xuICAgIGN1cnJlbnRPcGVuVGFnLmlubmVyTG9jID0gZ2V0TG9jKGVuZCArIDEsIGVuZCArIDEpO1xuICB9XG4gIGFkZE5vZGUoY3VycmVudE9wZW5UYWcpO1xuICBjb25zdCB7IHRhZywgbnMgfSA9IGN1cnJlbnRPcGVuVGFnO1xuICBpZiAobnMgPT09IDAgJiYgY3VycmVudE9wdGlvbnMuaXNQcmVUYWcodGFnKSkge1xuICAgIGluUHJlKys7XG4gIH1cbiAgaWYgKGN1cnJlbnRPcHRpb25zLmlzVm9pZFRhZyh0YWcpKSB7XG4gICAgb25DbG9zZVRhZyhjdXJyZW50T3BlblRhZywgZW5kKTtcbiAgfSBlbHNlIHtcbiAgICBzdGFjay51bnNoaWZ0KGN1cnJlbnRPcGVuVGFnKTtcbiAgICBpZiAobnMgPT09IDEgfHwgbnMgPT09IDIpIHtcbiAgICAgIHRva2VuaXplci5pblhNTCA9IHRydWU7XG4gICAgfVxuICB9XG4gIGN1cnJlbnRPcGVuVGFnID0gbnVsbDtcbn1cbmZ1bmN0aW9uIG9uVGV4dChjb250ZW50LCBzdGFydCwgZW5kKSB7XG4gIHtcbiAgICBjb25zdCB0YWcgPSBzdGFja1swXSAmJiBzdGFja1swXS50YWc7XG4gICAgaWYgKHRhZyAhPT0gXCJzY3JpcHRcIiAmJiB0YWcgIT09IFwic3R5bGVcIiAmJiBjb250ZW50LmluY2x1ZGVzKFwiJlwiKSkge1xuICAgICAgY29udGVudCA9IGN1cnJlbnRPcHRpb25zLmRlY29kZUVudGl0aWVzKGNvbnRlbnQsIGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgY29uc3QgcGFyZW50ID0gc3RhY2tbMF0gfHwgY3VycmVudFJvb3Q7XG4gIGNvbnN0IGxhc3ROb2RlID0gcGFyZW50LmNoaWxkcmVuW3BhcmVudC5jaGlsZHJlbi5sZW5ndGggLSAxXTtcbiAgaWYgKGxhc3ROb2RlICYmIGxhc3ROb2RlLnR5cGUgPT09IDIpIHtcbiAgICBsYXN0Tm9kZS5jb250ZW50ICs9IGNvbnRlbnQ7XG4gICAgc2V0TG9jRW5kKGxhc3ROb2RlLmxvYywgZW5kKTtcbiAgfSBlbHNlIHtcbiAgICBwYXJlbnQuY2hpbGRyZW4ucHVzaCh7XG4gICAgICB0eX
15BlOiAyLFxuICAgICAgY29udGVudCxcbiAgICAgIGxvYzogZ2V0TG9jKHN0YXJ0LCBlbmQpXG4gICAgfSk7XG4gIH1cbn1cbmZ1bmN0aW9uIG9uQ2xvc2VUYWcoZWwsIGVuZCwgaXNJbXBsaWVkID0gZmFsc2UpIHtcbiAgaWYgKGlzSW1wbGllZCkge1xuICAgIHNldExvY0VuZChlbC5sb2MsIGJhY2tUcmFjayhlbmQsIDYwKSk7XG4gIH0gZWxzZSB7XG4gICAgc2V0TG9jRW5kKGVsLmxvYywgbG9va0FoZWFkKGVuZCwgNjIpICsgMSk7XG4gIH1cbiAgaWYgKHRva2VuaXplci5pblNGQ1Jvb3QpIHtcbiAgICBpZiAoZWwuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICBlbC5pbm5lckxvYy5lbmQgPSBleHRlbmQoe30sIGVsLmNoaWxkcmVuW2VsLmNoaWxkcmVuLmxlbmd0aCAtIDFdLmxvYy5lbmQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbC5pbm5lckxvYy5lbmQgPSBleHRlbmQoe30sIGVsLmlubmVyTG9jLnN0YXJ0KTtcbiAgICB9XG4gICAgZWwuaW5uZXJMb2Muc291cmNlID0gZ2V0U2xpY2UoXG4gICAgICBlbC5pbm5lckxvYy5zdGFydC5vZmZzZXQsXG4gICAgICBlbC5pbm5lckxvYy5lbmQub2Zmc2V0XG4gICAgKTtcbiAgfVxuICBjb25zdCB7IHRhZywgbnMgfSA9IGVsO1xuICBpZiAoIWluVlByZSkge1xuICAgIGlmICh0YWcgPT09IFwic2xvdFwiKSB7XG4gICAgICBlbC50YWdUeXBlID0gMjtcbiAgICB9IGVsc2UgaWYgKGlzRnJhZ21lbnRUZW1wbGF0ZShlbCkpIHtcbiAgICAgIGVsLnRhZ1R5cGUgPSAzO1xuICAgIH0gZWxzZSBpZiAoaXNDb21wb25lbnQoZWwpKSB7XG4gICAgICBlbC50YWdUeXBlID0gMTtcbiAgICB9XG4gIH1cbiAgaWYgKCF0b2tlbml6ZXIuaW5SQ0RBVEEpIHtcbiAgICBlbC5jaGlsZHJlbiA9IGNvbmRlbnNlV2hpdGVzcGFjZShlbC5jaGlsZHJlbiwgZWwudGFnKTtcbiAgfVxuICBpZiAobnMgPT09IDAgJiYgY3VycmVudE9wdGlvbnMuaXNQcmVUYWcodGFnKSkge1xuICAgIGluUHJlLS07XG4gIH1cbiAgaWYgKGN1cnJlbnRWUHJlQm91bmRhcnkgPT09IGVsKSB7XG4gICAgaW5WUHJlID0gdG9rZW5pemVyLmluVlByZSA9IGZhbHNlO1xuICAgIGN1cnJlbnRWUHJlQm91bmRhcnkgPSBudWxsO1xuICB9XG4gIGlmICh0b2tlbml6ZXIuaW5YTUwgJiYgKHN0YWNrWzBdID8gc3RhY2tbMF0ubnMgOiBjdXJyZW50T3B0aW9ucy5ucykgPT09IDApIHtcbiAgICB0b2tlbml6ZXIuaW5YTUwgPSBmYWxzZTtcbiAgfVxuICB7XG4gICAgY29uc3QgcHJvcHMgPSBlbC5wcm9wcztcbiAgICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSAmJiBpc0NvbXBhdEVuYWJsZWQoXG4gICAgICBcIkNPTVBJTEVSX1ZfSUZfVl9GT1JfUFJFQ0VERU5DRVwiLFxuICAgICAgY3VycmVudE9wdGlvbnNcbiAgICApKSB7XG4gICAgICBsZXQgaGFzSWYgPSBmYWxzZTtcbiAgICAgIGxldCBoYXNGb3IgPSBmYWxzZTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgcCA9IHByb3BzW2ldO1xuICAgICAgICBpZiAocC50eXBlID09PSA3KSB7XG4gICAgICAgICAgaWYgKHAubmFtZSA9PT0gXCJpZlwiKSB7XG4gICAgICAgICAgICBoYXNJZiA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIGlmIChwLm5hbWUgPT09IFwiZm9yXCIpIHtcbiAgICAgICAgICAgIGhhc0ZvciA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChoYXNJZiAmJiBoYXNGb3IpIHtcbiAgICAgICAgICB3YXJuRGVwcmVjYXRpb24oXG4gICAgICAgICAgICBcIkNPTVBJTEVSX1ZfSUZfVl9GT1JfUFJFQ0VERU5DRVwiLFxuICAgICAgICAgICAgY3VycmVudE9wdGlvbnMsXG4gICAgICAgICAgICBlbC5sb2NcbiAgICAgICAgICApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmICghdG9rZW5pemVyLmluU0ZDUm9vdCAmJiBpc0NvbXBhdEVuYWJsZWQoXG4gICAgICBcIkNPTVBJTEVSX05BVElWRV9URU1QTEFURVwiLFxuICAgICAgY3VycmVudE9wdGlvbnNcbiAgICApICYmIGVsLnRhZyA9PT0gXCJ0ZW1wbGF0ZVwiICYmICFpc0ZyYWdtZW50VGVtcGxhdGUoZWwpKSB7XG4gICAgICAhIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpICYmIHdhcm5EZXByZWNhdGlvbihcbiAgICAgICAgXCJDT01QSUxFUl9OQVRJVkVfVEVNUExBVEVcIixcbiAgICAgICAgY3VycmVudE9wdGlvbnMsXG4gICAgICAgIGVsLmxvY1xuICAgICAgKTtcbiAgICAgIGNvbnN0IHBhcmVudCA9IHN0YWNrWzBdIHx8IGN1cnJlbnRSb290O1xuICAgICAgY29uc3QgaW5kZXggPSBwYXJlbnQuY2hpbGRyZW4uaW5kZXhPZihlbCk7XG4gICAgICBwYXJlbnQuY2hpbGRyZW4uc3BsaWNlKGluZGV4LCAxLCAuLi5lbC5jaGlsZHJlbik7XG4gICAgfVxuICAgIGNvbnN0IGlubGluZVRlbXBsYXRlUHJvcCA9IHByb3BzLmZpbmQoXG4gICAgICAocCkgPT4gcC50eXBlID09PSA2ICYmIHAubmFtZSA9PT0gXCJpbmxpbmUtdGVtcGxhdGVcIlxuICAgICk7XG4gICAgaWYgKGlubGluZVRlbXBsYXRlUHJvcCAmJiBjaGVja0NvbXBhdEVuYWJsZWQoXG4gICAgICBcIkNPTVBJTEVSX0lOTElORV9URU1QTEFURVwiLFxuICAgICAgY3VycmVudE9wdGlvbnMsXG4gICAgICBpbmxpbmVUZW1wbGF0ZVByb3AubG9jXG4gICAgKSAmJiBlbC5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgIGlubGluZVRlbXBsYXRlUHJvcC52YWx1ZSA9IHtcbiAgICAgICAgdHlwZTogMixcbiAgICAgICAgY29udGVudDogZ2V0U2xpY2UoXG4gICAgICAgICAgZWwuY2hpbGRyZW5bMF0ubG9jLnN0YXJ0Lm9mZnNldCxcbiAgICAgICAgICBlbC5jaGlsZHJlbltlbC5jaGlsZHJlbi5sZW5ndGggLSAxXS5sb2MuZW5kLm9mZnNldFxuICAgICAgICApLFxuICAgICAgICBsb2M6IGlubGluZVRlbXBsYXRlUHJvcC5sb2NcbiAgICAgIH07XG4gICAgfVxuICB9XG59XG5mdW5jdGlvbiBsb29rQWhlYWQoaW5kZXgsIGMpIHtcbiAgbGV0IGkgPSBpbmRleDtcbiAgd2hpbGUgKGN1cnJlbnRJbnB1dC5jaGFyQ29kZUF0KGkpICE9PSBjICYmIGkgPCBjdXJyZW50SW5wdXQubGVuZ3RoIC0gMSkgaSsrO1xuICByZXR1cm4gaTtcbn1cbmZ1bmN0aW9uIGJhY2tUcmFjayhpbmRleCwgYykge1xuICBsZXQgaSA9IGluZGV4O1xuICB3aGlsZSAoY3VycmVudElucHV0LmNoYXJDb2RlQXQoaSkgIT09IGMgJiYgaSA+PSAwKSBpLS07XG4gIHJldHVybi
15BpO1xufVxuY29uc3Qgc3BlY2lhbFRlbXBsYXRlRGlyID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoW1wiaWZcIiwgXCJlbHNlXCIsIFwiZWxzZS1pZlwiLCBcImZvclwiLCBcInNsb3RcIl0pO1xuZnVuY3Rpb24gaXNGcmFnbWVudFRlbXBsYXRlKHsgdGFnLCBwcm9wcyB9KSB7XG4gIGlmICh0YWcgPT09IFwidGVtcGxhdGVcIikge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChwcm9wc1tpXS50eXBlID09PSA3ICYmIHNwZWNpYWxUZW1wbGF0ZURpci5oYXMocHJvcHNbaV0ubmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cbmZ1bmN0aW9uIGlzQ29tcG9uZW50KHsgdGFnLCBwcm9wcyB9KSB7XG4gIGlmIChjdXJyZW50T3B0aW9ucy5pc0N1c3RvbUVsZW1lbnQodGFnKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAodGFnID09PSBcImNvbXBvbmVudFwiIHx8IGlzVXBwZXJDYXNlKHRhZy5jaGFyQ29kZUF0KDApKSB8fCBpc0NvcmVDb21wb25lbnQodGFnKSB8fCBjdXJyZW50T3B0aW9ucy5pc0J1aWx0SW5Db21wb25lbnQgJiYgY3VycmVudE9wdGlvbnMuaXNCdWlsdEluQ29tcG9uZW50KHRhZykgfHwgY3VycmVudE9wdGlvbnMuaXNOYXRpdmVUYWcgJiYgIWN1cnJlbnRPcHRpb25zLmlzTmF0aXZlVGFnKHRhZykpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgcCA9IHByb3BzW2ldO1xuICAgIGlmIChwLnR5cGUgPT09IDYpIHtcbiAgICAgIGlmIChwLm5hbWUgPT09IFwiaXNcIiAmJiBwLnZhbHVlKSB7XG4gICAgICAgIGlmIChwLnZhbHVlLmNvbnRlbnQuc3RhcnRzV2l0aChcInZ1ZTpcIikpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmIChjaGVja0NvbXBhdEVuYWJsZWQoXG4gICAgICAgICAgXCJDT01QSUxFUl9JU19PTl9FTEVNRU5UXCIsXG4gICAgICAgICAgY3VycmVudE9wdGlvbnMsXG4gICAgICAgICAgcC5sb2NcbiAgICAgICAgKSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICgvLyA6aXMgb24gcGxhaW4gZWxlbWVudCAtIG9ubHkgdHJlYXQgYXMgY29tcG9uZW50IGluIGNvbXBhdCBtb2RlXG4gICAgcC5uYW1lID09PSBcImJpbmRcIiAmJiBpc1N0YXRpY0FyZ09mKHAuYXJnLCBcImlzXCIpICYmIGNoZWNrQ29tcGF0RW5hYmxlZChcbiAgICAgIFwiQ09NUElMRVJfSVNfT05fRUxFTUVOVFwiLFxuICAgICAgY3VycmVudE9wdGlvbnMsXG4gICAgICBwLmxvY1xuICAgICkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5mdW5jdGlvbiBpc1VwcGVyQ2FzZShjKSB7XG4gIHJldHVybiBjID4gNjQgJiYgYyA8IDkxO1xufVxuY29uc3Qgd2luZG93c05ld2xpbmVSRSA9IC9cXHJcXG4vZztcbmZ1bmN0aW9uIGNvbmRlbnNlV2hpdGVzcGFjZShub2RlcywgdGFnKSB7XG4gIGNvbnN0IHNob3VsZENvbmRlbnNlID0gY3VycmVudE9wdGlvbnMud2hpdGVzcGFjZSAhPT0gXCJwcmVzZXJ2ZVwiO1xuICBsZXQgcmVtb3ZlZFdoaXRlc3BhY2UgPSBmYWxzZTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IG5vZGUgPSBub2Rlc1tpXTtcbiAgICBpZiAobm9kZS50eXBlID09PSAyKSB7XG4gICAgICBpZiAoIWluUHJlKSB7XG4gICAgICAgIGlmIChpc0FsbFdoaXRlc3BhY2Uobm9kZS5jb250ZW50KSkge1xuICAgICAgICAgIGNvbnN0IHByZXYgPSBub2Rlc1tpIC0gMV0gJiYgbm9kZXNbaSAtIDFdLnR5cGU7XG4gICAgICAgICAgY29uc3QgbmV4dCA9IG5vZGVzW2kgKyAxXSAmJiBub2Rlc1tpICsgMV0udHlwZTtcbiAgICAgICAgICBpZiAoIXByZXYgfHwgIW5leHQgfHwgc2hvdWxkQ29uZGVuc2UgJiYgKHByZXYgPT09IDMgJiYgKG5leHQgPT09IDMgfHwgbmV4dCA9PT0gMSkgfHwgcHJldiA9PT0gMSAmJiAobmV4dCA9PT0gMyB8fCBuZXh0ID09PSAxICYmIGhhc05ld2xpbmVDaGFyKG5vZGUuY29udGVudCkpKSkge1xuICAgICAgICAgICAgcmVtb3ZlZFdoaXRlc3BhY2UgPSB0cnVlO1xuICAgICAgICAgICAgbm9kZXNbaV0gPSBudWxsO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBub2RlLmNvbnRlbnQgPSBcIiBcIjtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoc2hvdWxkQ29uZGVuc2UpIHtcbiAgICAgICAgICBub2RlLmNvbnRlbnQgPSBjb25kZW5zZShub2RlLmNvbnRlbnQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBub2RlLmNvbnRlbnQgPSBub2RlLmNvbnRlbnQucmVwbGFjZSh3aW5kb3dzTmV3bGluZVJFLCBcIlxcblwiKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKGluUHJlICYmIHRhZyAmJiBjdXJyZW50T3B0aW9ucy5pc1ByZVRhZyh0YWcpKSB7XG4gICAgY29uc3QgZmlyc3QgPSBub2Rlc1swXTtcbiAgICBpZiAoZmlyc3QgJiYgZmlyc3QudHlwZSA9PT0gMikge1xuICAgICAgZmlyc3QuY29udGVudCA9IGZpcnN0LmNvbnRlbnQucmVwbGFjZSgvXlxccj9cXG4vLCBcIlwiKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlbW92ZWRXaGl0ZXNwYWNlID8gbm9kZXMuZmlsdGVyKEJvb2xlYW4pIDogbm9kZXM7XG59XG5mdW5jdGlvbiBpc0FsbFdoaXRlc3BhY2Uoc3RyKSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKCFpc1doaXRlc3BhY2Uoc3RyLmNoYXJDb2RlQXQoaSkpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuZnVuY3Rpb24gaGFzTmV3bGluZUNoYXIoc3RyKSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgYyA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuICAgIGlmIChjID09PSAxMCB8fCBjID09PSAxMykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gI
15HJldHVybiBmYWxzZTtcbn1cbmZ1bmN0aW9uIGNvbmRlbnNlKHN0cikge1xuICBsZXQgcmV0ID0gXCJcIjtcbiAgbGV0IHByZXZDaGFySXNXaGl0ZXNwYWNlID0gZmFsc2U7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGlzV2hpdGVzcGFjZShzdHIuY2hhckNvZGVBdChpKSkpIHtcbiAgICAgIGlmICghcHJldkNoYXJJc1doaXRlc3BhY2UpIHtcbiAgICAgICAgcmV0ICs9IFwiIFwiO1xuICAgICAgICBwcmV2Q2hhcklzV2hpdGVzcGFjZSA9IHRydWU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldCArPSBzdHJbaV07XG4gICAgICBwcmV2Q2hhcklzV2hpdGVzcGFjZSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmV0O1xufVxuZnVuY3Rpb24gYWRkTm9kZShub2RlKSB7XG4gIChzdGFja1swXSB8fCBjdXJyZW50Um9vdCkuY2hpbGRyZW4ucHVzaChub2RlKTtcbn1cbmZ1bmN0aW9uIGdldExvYyhzdGFydCwgZW5kKSB7XG4gIHJldHVybiB7XG4gICAgc3RhcnQ6IHRva2VuaXplci5nZXRQb3Moc3RhcnQpLFxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgYWxsb3cgbGF0ZSBhdHRhY2htZW50XG4gICAgZW5kOiBlbmQgPT0gbnVsbCA/IGVuZCA6IHRva2VuaXplci5nZXRQb3MoZW5kKSxcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGFsbG93IGxhdGUgYXR0YWNobWVudFxuICAgIHNvdXJjZTogZW5kID09IG51bGwgPyBlbmQgOiBnZXRTbGljZShzdGFydCwgZW5kKVxuICB9O1xufVxuZnVuY3Rpb24gc2V0TG9jRW5kKGxvYywgZW5kKSB7XG4gIGxvYy5lbmQgPSB0b2tlbml6ZXIuZ2V0UG9zKGVuZCk7XG4gIGxvYy5zb3VyY2UgPSBnZXRTbGljZShsb2Muc3RhcnQub2Zmc2V0LCBlbmQpO1xufVxuZnVuY3Rpb24gZGlyVG9BdHRyKGRpcikge1xuICBjb25zdCBhdHRyID0ge1xuICAgIHR5cGU6IDYsXG4gICAgbmFtZTogZGlyLnJhd05hbWUsXG4gICAgbmFtZUxvYzogZ2V0TG9jKFxuICAgICAgZGlyLmxvYy5zdGFydC5vZmZzZXQsXG4gICAgICBkaXIubG9jLnN0YXJ0Lm9mZnNldCArIGRpci5yYXdOYW1lLmxlbmd0aFxuICAgICksXG4gICAgdmFsdWU6IHZvaWQgMCxcbiAgICBsb2M6IGRpci5sb2NcbiAgfTtcbiAgaWYgKGRpci5leHApIHtcbiAgICBjb25zdCBsb2MgPSBkaXIuZXhwLmxvYztcbiAgICBpZiAobG9jLmVuZC5vZmZzZXQgPCBkaXIubG9jLmVuZC5vZmZzZXQpIHtcbiAgICAgIGxvYy5zdGFydC5vZmZzZXQtLTtcbiAgICAgIGxvYy5zdGFydC5jb2x1bW4tLTtcbiAgICAgIGxvYy5lbmQub2Zmc2V0Kys7XG4gICAgICBsb2MuZW5kLmNvbHVtbisrO1xuICAgIH1cbiAgICBhdHRyLnZhbHVlID0ge1xuICAgICAgdHlwZTogMixcbiAgICAgIGNvbnRlbnQ6IGRpci5leHAuY29udGVudCxcbiAgICAgIGxvY1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIGF0dHI7XG59XG5mdW5jdGlvbiBjcmVhdGVFeHAoY29udGVudCwgaXNTdGF0aWMgPSBmYWxzZSwgbG9jLCBjb25zdFR5cGUgPSAwLCBwYXJzZU1vZGUgPSAwIC8qIE5vcm1hbCAqLykge1xuICBjb25zdCBleHAgPSBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGNvbnRlbnQsIGlzU3RhdGljLCBsb2MsIGNvbnN0VHlwZSk7XG4gIHJldHVybiBleHA7XG59XG5mdW5jdGlvbiBlbWl0RXJyb3IoY29kZSwgaW5kZXgsIG1lc3NhZ2UpIHtcbiAgY3VycmVudE9wdGlvbnMub25FcnJvcihcbiAgICBjcmVhdGVDb21waWxlckVycm9yKGNvZGUsIGdldExvYyhpbmRleCwgaW5kZXgpLCB2b2lkIDAsIG1lc3NhZ2UpXG4gICk7XG59XG5mdW5jdGlvbiByZXNldCgpIHtcbiAgdG9rZW5pemVyLnJlc2V0KCk7XG4gIGN1cnJlbnRPcGVuVGFnID0gbnVsbDtcbiAgY3VycmVudFByb3AgPSBudWxsO1xuICBjdXJyZW50QXR0clZhbHVlID0gXCJcIjtcbiAgY3VycmVudEF0dHJTdGFydEluZGV4ID0gLTE7XG4gIGN1cnJlbnRBdHRyRW5kSW5kZXggPSAtMTtcbiAgc3RhY2subGVuZ3RoID0gMDtcbn1cbmZ1bmN0aW9uIGJhc2VQYXJzZShpbnB1dCwgb3B0aW9ucykge1xuICByZXNldCgpO1xuICBjdXJyZW50SW5wdXQgPSBpbnB1dDtcbiAgY3VycmVudE9wdGlvbnMgPSBleHRlbmQoe30sIGRlZmF1bHRQYXJzZXJPcHRpb25zKTtcbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBsZXQga2V5O1xuICAgIGZvciAoa2V5IGluIG9wdGlvbnMpIHtcbiAgICAgIGlmIChvcHRpb25zW2tleV0gIT0gbnVsbCkge1xuICAgICAgICBjdXJyZW50T3B0aW9uc1trZXldID0gb3B0aW9uc1trZXldO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSkge1xuICAgIGlmICghY3VycmVudE9wdGlvbnMuZGVjb2RlRW50aXRpZXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFtAdnVlL2NvbXBpbGVyLWNvcmVdIGRlY29kZUVudGl0aWVzIG9wdGlvbiBpcyByZXF1aXJlZCBpbiBicm93c2VyIGJ1aWxkcy5gXG4gICAgICApO1xuICAgIH1cbiAgfVxuICB0b2tlbml6ZXIubW9kZSA9IGN1cnJlbnRPcHRpb25zLnBhcnNlTW9kZSA9PT0gXCJodG1sXCIgPyAxIDogY3VycmVudE9wdGlvbnMucGFyc2VNb2RlID09PSBcInNmY1wiID8gMiA6IDA7XG4gIHRva2VuaXplci5pblhNTCA9IGN1cnJlbnRPcHRpb25zLm5zID09PSAxIHx8IGN1cnJlbnRPcHRpb25zLm5zID09PSAyO1xuICBjb25zdCBkZWxpbWl0ZXJzID0gb3B0aW9ucyAmJiBvcHRpb25zLmRlbGltaXRlcnM7XG4gIGlmIChkZWxpbWl0ZXJzKSB7XG4gICAgdG9rZW5pemVyLmRlbGltaXRlck9wZW4gPSB0b0NoYXJDb2RlcyhkZWxpbWl0ZXJzWzBdKTtcbiAgICB0b2tlbml6ZXIuZGVsaW1pdGVyQ2xvc2UgPSB0b0NoYXJDb2RlcyhkZWxpbWl0ZXJzWzFdKTtcbiAgfVxuICBjb25zdCByb290ID0gY3VycmVudFJvb3QgPSBjcmVhdGVSb290KFtdLCBpbnB1dCk7XG4gIHRva2VuaXplci5wYXJzZShjdXJyZW50SW5wdXQpO1xuICByb290LmxvYyA9IGdldExvYygwLCBpbnB1dC5sZW5ndGgpO1xuICByb290LmNoaWxkcmVuID0gY29uZGVuc2VXaGl0ZXNwYWNlKHJvb3QuY2hpbGRyZW4pO1xuICBjdXJyZW50Um9vdCA9IG51bGw7XG4gIHJldHVybi
15Byb290O1xufVxuXG5mdW5jdGlvbiBob2lzdFN0YXRpYyhyb290LCBjb250ZXh0KSB7XG4gIHdhbGsoXG4gICAgcm9vdCxcbiAgICBjb250ZXh0LFxuICAgIC8vIFJvb3Qgbm9kZSBpcyB1bmZvcnR1bmF0ZWx5IG5vbi1ob2lzdGFibGUgZHVlIHRvIHBvdGVudGlhbCBwYXJlbnRcbiAgICAvLyBmYWxsdGhyb3VnaCBhdHRyaWJ1dGVzLlxuICAgIGlzU2luZ2xlRWxlbWVudFJvb3Qocm9vdCwgcm9vdC5jaGlsZHJlblswXSlcbiAgKTtcbn1cbmZ1bmN0aW9uIGlzU2luZ2xlRWxlbWVudFJvb3Qocm9vdCwgY2hpbGQpIHtcbiAgY29uc3QgeyBjaGlsZHJlbiB9ID0gcm9vdDtcbiAgcmV0dXJuIGNoaWxkcmVuLmxlbmd0aCA9PT0gMSAmJiBjaGlsZC50eXBlID09PSAxICYmICFpc1Nsb3RPdXRsZXQoY2hpbGQpO1xufVxuZnVuY3Rpb24gd2Fsayhub2RlLCBjb250ZXh0LCBkb05vdEhvaXN0Tm9kZSA9IGZhbHNlKSB7XG4gIGNvbnN0IHsgY2hpbGRyZW4gfSA9IG5vZGU7XG4gIGNvbnN0IG9yaWdpbmFsQ291bnQgPSBjaGlsZHJlbi5sZW5ndGg7XG4gIGxldCBob2lzdGVkQ291bnQgPSAwO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgY2hpbGQgPSBjaGlsZHJlbltpXTtcbiAgICBpZiAoY2hpbGQudHlwZSA9PT0gMSAmJiBjaGlsZC50YWdUeXBlID09PSAwKSB7XG4gICAgICBjb25zdCBjb25zdGFudFR5cGUgPSBkb05vdEhvaXN0Tm9kZSA/IDAgOiBnZXRDb25zdGFudFR5cGUoY2hpbGQsIGNvbnRleHQpO1xuICAgICAgaWYgKGNvbnN0YW50VHlwZSA+IDApIHtcbiAgICAgICAgaWYgKGNvbnN0YW50VHlwZSA+PSAyKSB7XG4gICAgICAgICAgY2hpbGQuY29kZWdlbk5vZGUucGF0Y2hGbGFnID0gLTE7XG4gICAgICAgICAgY2hpbGQuY29kZWdlbk5vZGUgPSBjb250ZXh0LmhvaXN0KGNoaWxkLmNvZGVnZW5Ob2RlKTtcbiAgICAgICAgICBob2lzdGVkQ291bnQrKztcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgY29kZWdlbk5vZGUgPSBjaGlsZC5jb2RlZ2VuTm9kZTtcbiAgICAgICAgaWYgKGNvZGVnZW5Ob2RlLnR5cGUgPT09IDEzKSB7XG4gICAgICAgICAgY29uc3QgZmxhZyA9IGNvZGVnZW5Ob2RlLnBhdGNoRmxhZztcbiAgICAgICAgICBpZiAoKGZsYWcgPT09IHZvaWQgMCB8fCBmbGFnID09PSA1MTIgfHwgZmxhZyA9PT0gMSkgJiYgZ2V0R2VuZXJhdGVkUHJvcHNDb25zdGFudFR5cGUoY2hpbGQsIGNvbnRleHQpID49IDIpIHtcbiAgICAgICAgICAgIGNvbnN0IHByb3BzID0gZ2V0Tm9kZVByb3BzKGNoaWxkKTtcbiAgICAgICAgICAgIGlmIChwcm9wcykge1xuICAgICAgICAgICAgICBjb2RlZ2VuTm9kZS5wcm9wcyA9IGNvbnRleHQuaG9pc3QocHJvcHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoY29kZWdlbk5vZGUuZHluYW1pY1Byb3BzKSB7XG4gICAgICAgICAgICBjb2RlZ2VuTm9kZS5keW5hbWljUHJvcHMgPSBjb250ZXh0LmhvaXN0KGNvZGVnZW5Ob2RlLmR5bmFtaWNQcm9wcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChjaGlsZC50eXBlID09PSAxKSB7XG4gICAgICBjb25zdCBpc0NvbXBvbmVudCA9IGNoaWxkLnRhZ1R5cGUgPT09IDE7XG4gICAgICBpZiAoaXNDb21wb25lbnQpIHtcbiAgICAgICAgY29udGV4dC5zY29wZXMudlNsb3QrKztcbiAgICAgIH1cbiAgICAgIHdhbGsoY2hpbGQsIGNvbnRleHQpO1xuICAgICAgaWYgKGlzQ29tcG9uZW50KSB7XG4gICAgICAgIGNvbnRleHQuc2NvcGVzLnZTbG90LS07XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjaGlsZC50eXBlID09PSAxMSkge1xuICAgICAgd2FsayhjaGlsZCwgY29udGV4dCwgY2hpbGQuY2hpbGRyZW4ubGVuZ3RoID09PSAxKTtcbiAgICB9IGVsc2UgaWYgKGNoaWxkLnR5cGUgPT09IDkpIHtcbiAgICAgIGZvciAobGV0IGkyID0gMDsgaTIgPCBjaGlsZC5icmFuY2hlcy5sZW5ndGg7IGkyKyspIHtcbiAgICAgICAgd2FsayhcbiAgICAgICAgICBjaGlsZC5icmFuY2hlc1tpMl0sXG4gICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICBjaGlsZC5icmFuY2hlc1tpMl0uY2hpbGRyZW4ubGVuZ3RoID09PSAxXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmIChob2lzdGVkQ291bnQgJiYgY29udGV4dC50cmFuc2Zvcm1Ib2lzdCkge1xuICAgIGNvbnRleHQudHJhbnNmb3JtSG9pc3QoY2hpbGRyZW4sIGNvbnRleHQsIG5vZGUpO1xuICB9XG4gIGlmIChob2lzdGVkQ291bnQgJiYgaG9pc3RlZENvdW50ID09PSBvcmlnaW5hbENvdW50ICYmIG5vZGUudHlwZSA9PT0gMSAmJiBub2RlLnRhZ1R5cGUgPT09IDAgJiYgbm9kZS5jb2RlZ2VuTm9kZSAmJiBub2RlLmNvZGVnZW5Ob2RlLnR5cGUgPT09IDEzICYmIGlzQXJyYXkobm9kZS5jb2RlZ2VuTm9kZS5jaGlsZHJlbikpIHtcbiAgICBjb25zdCBob2lzdGVkID0gY29udGV4dC5ob2lzdChcbiAgICAgIGNyZWF0ZUFycmF5RXhwcmVzc2lvbihub2RlLmNvZGVnZW5Ob2RlLmNoaWxkcmVuKVxuICAgICk7XG4gICAgaWYgKGNvbnRleHQuaG1yKSB7XG4gICAgICBob2lzdGVkLmNvbnRlbnQgPSBgWy4uLiR7aG9pc3RlZC5jb250ZW50fV1gO1xuICAgIH1cbiAgICBub2RlLmNvZGVnZW5Ob2RlLmNoaWxkcmVuID0gaG9pc3RlZDtcbiAgfVxufVxuZnVuY3Rpb24gZ2V0Q29uc3RhbnRUeXBlKG5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBjb25zdGFudENhY2hlIH0gPSBjb250ZXh0O1xuICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgIGNhc2UgMTpcbiAgICAgIGlmIChub2RlLnRhZ1R5cGUgIT09IDApIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG4gICAgICBjb25zdCBjYWNoZWQgPSBjb25zdGFudENhY2hlLmdldChub2RlKTtcbiAgICAgIGlmIChjYWNoZWQgIT09IHZvaWQgMCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkO1xuICAgICAgfVxuICAgICAgY29uc3QgY29kZWdlbk5vZGUgPSBub2RlLmNvZGVnZW5Ob2RlO1xuICAgICAgaWYgKGNvZGVnZW5Ob2RlLnR5cGUgIT09IDEzKSB7XG4gICAgICAgI
15HJldHVybiAwO1xuICAgICAgfVxuICAgICAgaWYgKGNvZGVnZW5Ob2RlLmlzQmxvY2sgJiYgbm9kZS50YWcgIT09IFwic3ZnXCIgJiYgbm9kZS50YWcgIT09IFwiZm9yZWlnbk9iamVjdFwiICYmIG5vZGUudGFnICE9PSBcIm1hdGhcIikge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cbiAgICAgIGlmIChjb2RlZ2VuTm9kZS5wYXRjaEZsYWcgPT09IHZvaWQgMCkge1xuICAgICAgICBsZXQgcmV0dXJuVHlwZTIgPSAzO1xuICAgICAgICBjb25zdCBnZW5lcmF0ZWRQcm9wc1R5cGUgPSBnZXRHZW5lcmF0ZWRQcm9wc0NvbnN0YW50VHlwZShub2RlLCBjb250ZXh0KTtcbiAgICAgICAgaWYgKGdlbmVyYXRlZFByb3BzVHlwZSA9PT0gMCkge1xuICAgICAgICAgIGNvbnN0YW50Q2FjaGUuc2V0KG5vZGUsIDApO1xuICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIGlmIChnZW5lcmF0ZWRQcm9wc1R5cGUgPCByZXR1cm5UeXBlMikge1xuICAgICAgICAgIHJldHVyblR5cGUyID0gZ2VuZXJhdGVkUHJvcHNUeXBlO1xuICAgICAgICB9XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGNvbnN0IGNoaWxkVHlwZSA9IGdldENvbnN0YW50VHlwZShub2RlLmNoaWxkcmVuW2ldLCBjb250ZXh0KTtcbiAgICAgICAgICBpZiAoY2hpbGRUeXBlID09PSAwKSB7XG4gICAgICAgICAgICBjb25zdGFudENhY2hlLnNldChub2RlLCAwKTtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoY2hpbGRUeXBlIDwgcmV0dXJuVHlwZTIpIHtcbiAgICAgICAgICAgIHJldHVyblR5cGUyID0gY2hpbGRUeXBlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAocmV0dXJuVHlwZTIgPiAxKSB7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLnByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBwID0gbm9kZS5wcm9wc1tpXTtcbiAgICAgICAgICAgIGlmIChwLnR5cGUgPT09IDcgJiYgcC5uYW1lID09PSBcImJpbmRcIiAmJiBwLmV4cCkge1xuICAgICAgICAgICAgICBjb25zdCBleHBUeXBlID0gZ2V0Q29uc3RhbnRUeXBlKHAuZXhwLCBjb250ZXh0KTtcbiAgICAgICAgICAgICAgaWYgKGV4cFR5cGUgPT09IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdGFudENhY2hlLnNldChub2RlLCAwKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoZXhwVHlwZSA8IHJldHVyblR5cGUyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuVHlwZTIgPSBleHBUeXBlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChjb2RlZ2VuTm9kZS5pc0Jsb2NrKSB7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLnByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBwID0gbm9kZS5wcm9wc1tpXTtcbiAgICAgICAgICAgIGlmIChwLnR5cGUgPT09IDcpIHtcbiAgICAgICAgICAgICAgY29uc3RhbnRDYWNoZS5zZXQobm9kZSwgMCk7XG4gICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBjb250ZXh0LnJlbW92ZUhlbHBlcihPUEVOX0JMT0NLKTtcbiAgICAgICAgICBjb250ZXh0LnJlbW92ZUhlbHBlcihcbiAgICAgICAgICAgIGdldFZOb2RlQmxvY2tIZWxwZXIoY29udGV4dC5pblNTUiwgY29kZWdlbk5vZGUuaXNDb21wb25lbnQpXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb2RlZ2VuTm9kZS5pc0Jsb2NrID0gZmFsc2U7XG4gICAgICAgICAgY29udGV4dC5oZWxwZXIoZ2V0Vk5vZGVIZWxwZXIoY29udGV4dC5pblNTUiwgY29kZWdlbk5vZGUuaXNDb21wb25lbnQpKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdGFudENhY2hlLnNldChub2RlLCByZXR1cm5UeXBlMik7XG4gICAgICAgIHJldHVybiByZXR1cm5UeXBlMjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0YW50Q2FjaGUuc2V0KG5vZGUsIDApO1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cbiAgICBjYXNlIDI6XG4gICAgY2FzZSAzOlxuICAgICAgcmV0dXJuIDM7XG4gICAgY2FzZSA5OlxuICAgIGNhc2UgMTE6XG4gICAgY2FzZSAxMDpcbiAgICAgIHJldHVybiAwO1xuICAgIGNhc2UgNTpcbiAgICBjYXNlIDEyOlxuICAgICAgcmV0dXJuIGdldENvbnN0YW50VHlwZShub2RlLmNvbnRlbnQsIGNvbnRleHQpO1xuICAgIGNhc2UgNDpcbiAgICAgIHJldHVybiBub2RlLmNvbnN0VHlwZTtcbiAgICBjYXNlIDg6XG4gICAgICBsZXQgcmV0dXJuVHlwZSA9IDM7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgY2hpbGQgPSBub2RlLmNoaWxkcmVuW2ldO1xuICAgICAgICBpZiAoaXNTdHJpbmcoY2hpbGQpIHx8IGlzU3ltYm9sKGNoaWxkKSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNoaWxkVHlwZSA9IGdldENvbnN0YW50VHlwZShjaGlsZCwgY29udGV4dCk7XG4gICAgICAgIGlmIChjaGlsZFR5cGUgPT09IDApIHtcbiAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfSBlbHNlIGlmIChjaGlsZFR5cGUgPCByZXR1cm5UeXBlKSB7XG4gICAgICAgICAgcmV0dXJuVHlwZSA9IGNoaWxkVHlwZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJldHVyblR5cGU7XG4gICAgZGVmYXVsdDpcbiAgICAgIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpKSA7XG4gICAgICByZXR1cm4gMDtcbiAgfVxufVxuY29uc3QgYWxsb3dIb2lzdGVkSGVscGVyU2V0ID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoW1xuICBOT1JNQUxJWkVfQ0xBU1MsXG4gIE5PUk1BTElaRV9TVFlMRSxcbiAgTk9STUFMSVpFX1BST1BTLFxuICBHVUFSRF9SRUFDVElWRV9QUk9QU1xuXSk7XG5mdW5jdGlvbiBnZXRDb25zdGFudFR5cGVPZkhlbHBlckNhbGwodmFsdWUsIGNvbnRleHQpIHtcbiAgaWYgKHZhbHVlLnR5cGUgPT09IDE0ICYmICFpc1N0cmluZyh2YWx1ZS
155jYWxsZWUpICYmIGFsbG93SG9pc3RlZEhlbHBlclNldC5oYXModmFsdWUuY2FsbGVlKSkge1xuICAgIGNvbnN0IGFyZyA9IHZhbHVlLmFyZ3VtZW50c1swXTtcbiAgICBpZiAoYXJnLnR5cGUgPT09IDQpIHtcbiAgICAgIHJldHVybiBnZXRDb25zdGFudFR5cGUoYXJnLCBjb250ZXh0KTtcbiAgICB9IGVsc2UgaWYgKGFyZy50eXBlID09PSAxNCkge1xuICAgICAgcmV0dXJuIGdldENvbnN0YW50VHlwZU9mSGVscGVyQ2FsbChhcmcsIGNvbnRleHQpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gMDtcbn1cbmZ1bmN0aW9uIGdldEdlbmVyYXRlZFByb3BzQ29uc3RhbnRUeXBlKG5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IHJldHVyblR5cGUgPSAzO1xuICBjb25zdCBwcm9wcyA9IGdldE5vZGVQcm9wcyhub2RlKTtcbiAgaWYgKHByb3BzICYmIHByb3BzLnR5cGUgPT09IDE1KSB7XG4gICAgY29uc3QgeyBwcm9wZXJ0aWVzIH0gPSBwcm9wcztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3BlcnRpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHsga2V5LCB2YWx1ZSB9ID0gcHJvcGVydGllc1tpXTtcbiAgICAgIGNvbnN0IGtleVR5cGUgPSBnZXRDb25zdGFudFR5cGUoa2V5LCBjb250ZXh0KTtcbiAgICAgIGlmIChrZXlUeXBlID09PSAwKSB7XG4gICAgICAgIHJldHVybiBrZXlUeXBlO1xuICAgICAgfVxuICAgICAgaWYgKGtleVR5cGUgPCByZXR1cm5UeXBlKSB7XG4gICAgICAgIHJldHVyblR5cGUgPSBrZXlUeXBlO1xuICAgICAgfVxuICAgICAgbGV0IHZhbHVlVHlwZTtcbiAgICAgIGlmICh2YWx1ZS50eXBlID09PSA0KSB7XG4gICAgICAgIHZhbHVlVHlwZSA9IGdldENvbnN0YW50VHlwZSh2YWx1ZSwgY29udGV4dCk7XG4gICAgICB9IGVsc2UgaWYgKHZhbHVlLnR5cGUgPT09IDE0KSB7XG4gICAgICAgIHZhbHVlVHlwZSA9IGdldENvbnN0YW50VHlwZU9mSGVscGVyQ2FsbCh2YWx1ZSwgY29udGV4dCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWx1ZVR5cGUgPSAwO1xuICAgICAgfVxuICAgICAgaWYgKHZhbHVlVHlwZSA9PT0gMCkge1xuICAgICAgICByZXR1cm4gdmFsdWVUeXBlO1xuICAgICAgfVxuICAgICAgaWYgKHZhbHVlVHlwZSA8IHJldHVyblR5cGUpIHtcbiAgICAgICAgcmV0dXJuVHlwZSA9IHZhbHVlVHlwZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJldHVyblR5cGU7XG59XG5mdW5jdGlvbiBnZXROb2RlUHJvcHMobm9kZSkge1xuICBjb25zdCBjb2RlZ2VuTm9kZSA9IG5vZGUuY29kZWdlbk5vZGU7XG4gIGlmIChjb2RlZ2VuTm9kZS50eXBlID09PSAxMykge1xuICAgIHJldHVybiBjb2RlZ2VuTm9kZS5wcm9wcztcbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVUcmFuc2Zvcm1Db250ZXh0KHJvb3QsIHtcbiAgZmlsZW5hbWUgPSBcIlwiLFxuICBwcmVmaXhJZGVudGlmaWVycyA9IGZhbHNlLFxuICBob2lzdFN0YXRpYzogaG9pc3RTdGF0aWMyID0gZmFsc2UsXG4gIGhtciA9IGZhbHNlLFxuICBjYWNoZUhhbmRsZXJzID0gZmFsc2UsXG4gIG5vZGVUcmFuc2Zvcm1zID0gW10sXG4gIGRpcmVjdGl2ZVRyYW5zZm9ybXMgPSB7fSxcbiAgdHJhbnNmb3JtSG9pc3QgPSBudWxsLFxuICBpc0J1aWx0SW5Db21wb25lbnQgPSBOT09QLFxuICBpc0N1c3RvbUVsZW1lbnQgPSBOT09QLFxuICBleHByZXNzaW9uUGx1Z2lucyA9IFtdLFxuICBzY29wZUlkID0gbnVsbCxcbiAgc2xvdHRlZCA9IHRydWUsXG4gIHNzciA9IGZhbHNlLFxuICBpblNTUiA9IGZhbHNlLFxuICBzc3JDc3NWYXJzID0gYGAsXG4gIGJpbmRpbmdNZXRhZGF0YSA9IEVNUFRZX09CSixcbiAgaW5saW5lID0gZmFsc2UsXG4gIGlzVFMgPSBmYWxzZSxcbiAgb25FcnJvciA9IGRlZmF1bHRPbkVycm9yLFxuICBvbldhcm4gPSBkZWZhdWx0T25XYXJuLFxuICBjb21wYXRDb25maWdcbn0pIHtcbiAgY29uc3QgbmFtZU1hdGNoID0gZmlsZW5hbWUucmVwbGFjZSgvXFw/LiokLywgXCJcIikubWF0Y2goLyhbXi9cXFxcXSspXFwuXFx3KyQvKTtcbiAgY29uc3QgY29udGV4dCA9IHtcbiAgICAvLyBvcHRpb25zXG4gICAgZmlsZW5hbWUsXG4gICAgc2VsZk5hbWU6IG5hbWVNYXRjaCAmJiBjYXBpdGFsaXplKGNhbWVsaXplKG5hbWVNYXRjaFsxXSkpLFxuICAgIHByZWZpeElkZW50aWZpZXJzLFxuICAgIGhvaXN0U3RhdGljOiBob2lzdFN0YXRpYzIsXG4gICAgaG1yLFxuICAgIGNhY2hlSGFuZGxlcnMsXG4gICAgbm9kZVRyYW5zZm9ybXMsXG4gICAgZGlyZWN0aXZlVHJhbnNmb3JtcyxcbiAgICB0cmFuc2Zvcm1Ib2lzdCxcbiAgICBpc0J1aWx0SW5Db21wb25lbnQsXG4gICAgaXNDdXN0b21FbGVtZW50LFxuICAgIGV4cHJlc3Npb25QbHVnaW5zLFxuICAgIHNjb3BlSWQsXG4gICAgc2xvdHRlZCxcbiAgICBzc3IsXG4gICAgaW5TU1IsXG4gICAgc3NyQ3NzVmFycyxcbiAgICBiaW5kaW5nTWV0YWRhdGEsXG4gICAgaW5saW5lLFxuICAgIGlzVFMsXG4gICAgb25FcnJvcixcbiAgICBvbldhcm4sXG4gICAgY29tcGF0Q29uZmlnLFxuICAgIC8vIHN0YXRlXG4gICAgcm9vdCxcbiAgICBoZWxwZXJzOiAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpLFxuICAgIGNvbXBvbmVudHM6IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCksXG4gICAgZGlyZWN0aXZlczogLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKSxcbiAgICBob2lzdHM6IFtdLFxuICAgIGltcG9ydHM6IFtdLFxuICAgIGNvbnN0YW50Q2FjaGU6IC8qIEBfX1BVUkVfXyAqLyBuZXcgV2Vha01hcCgpLFxuICAgIHRlbXBzOiAwLFxuICAgIGNhY2hlZDogMCxcbiAgICBpZGVudGlmaWVyczogLyogQF9fUFVSRV9fICovIE9iamVjdC5jcmVhdGUobnVsbCksXG4gICAgc2NvcGVzOiB7XG4gICAgICB2Rm9yOiAwLFxuICAgICAgdlNsb3Q6IDAsXG4gICAgICB2UHJlOiAwLFxuICAgICAgdk9uY2U6IDBcbiAgICB9LFxuICAgIHBhcmVudDogbnVsbCxcbiAgICBncmFuZFBhcmVudDogbnVsbCxcbiAgICBjdXJyZW50Tm9kZTogcm9vdCxcbiAgICBjaGlsZEluZGV4OiAwLFxuICAgIGluVk9uY2U6IGZhbHNlLFxuICAgIC8vIG1ldGhvZHNcbiAgICBoZWxwZXIobmFtZSkge1xuICAgICAgY29uc3QgY291bnQgPSBjb250ZXh0LmhlbHBlcnMuZ2V0KG5hbWUpIHx8IDA7XG4gICAgICBjb250ZXh0LmhlbHBlcnMuc2V0KG5hbWUsIGNvdW50ICsgMSk7XG4gICAgICByZXR1cm4gbmFtZTtcbiAgICB9LFxuICAgIHJlbW92ZUhlbHBlcihuYW1lKSB7XG4gICAgICBjb25zdCBjb3VudCA9IGNvbnRleHQuaGVscGVycy5nZXQobmFtZSk7XG4gICAgICBpZiAoY291bnQpIHtcbiAgICAgICAgY29uc3QgY3VycmVudENvdW50ID0gY291bnQgLSAxO1xuICAgICAgICBpZiAoIWN1cnJlbnRDb3VudCkge1xuICAgICAgICAgIGNvbnRleHQuaGVscGVycy5kZWxldGUobmFtZSk7XG4gICAgICAgI
15H0gZWxzZSB7XG4gICAgICAgICAgY29udGV4dC5oZWxwZXJzLnNldChuYW1lLCBjdXJyZW50Q291bnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBoZWxwZXJTdHJpbmcobmFtZSkge1xuICAgICAgcmV0dXJuIGBfJHtoZWxwZXJOYW1lTWFwW2NvbnRleHQuaGVscGVyKG5hbWUpXX1gO1xuICAgIH0sXG4gICAgcmVwbGFjZU5vZGUobm9kZSkge1xuICAgICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikpIHtcbiAgICAgICAgaWYgKCFjb250ZXh0LmN1cnJlbnROb2RlKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBOb2RlIGJlaW5nIHJlcGxhY2VkIGlzIGFscmVhZHkgcmVtb3ZlZC5gKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWNvbnRleHQucGFyZW50KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgcmVwbGFjZSByb290IG5vZGUuYCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnRleHQucGFyZW50LmNoaWxkcmVuW2NvbnRleHQuY2hpbGRJbmRleF0gPSBjb250ZXh0LmN1cnJlbnROb2RlID0gbm9kZTtcbiAgICB9LFxuICAgIHJlbW92ZU5vZGUobm9kZSkge1xuICAgICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgJiYgIWNvbnRleHQucGFyZW50KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHJlbW92ZSByb290IG5vZGUuYCk7XG4gICAgICB9XG4gICAgICBjb25zdCBsaXN0ID0gY29udGV4dC5wYXJlbnQuY2hpbGRyZW47XG4gICAgICBjb25zdCByZW1vdmFsSW5kZXggPSBub2RlID8gbGlzdC5pbmRleE9mKG5vZGUpIDogY29udGV4dC5jdXJyZW50Tm9kZSA/IGNvbnRleHQuY2hpbGRJbmRleCA6IC0xO1xuICAgICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgJiYgcmVtb3ZhbEluZGV4IDwgMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYG5vZGUgYmVpbmcgcmVtb3ZlZCBpcyBub3QgYSBjaGlsZCBvZiBjdXJyZW50IHBhcmVudGApO1xuICAgICAgfVxuICAgICAgaWYgKCFub2RlIHx8IG5vZGUgPT09IGNvbnRleHQuY3VycmVudE5vZGUpIHtcbiAgICAgICAgY29udGV4dC5jdXJyZW50Tm9kZSA9IG51bGw7XG4gICAgICAgIGNvbnRleHQub25Ob2RlUmVtb3ZlZCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGNvbnRleHQuY2hpbGRJbmRleCA+IHJlbW92YWxJbmRleCkge1xuICAgICAgICAgIGNvbnRleHQuY2hpbGRJbmRleC0tO1xuICAgICAgICAgIGNvbnRleHQub25Ob2RlUmVtb3ZlZCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb250ZXh0LnBhcmVudC5jaGlsZHJlbi5zcGxpY2UocmVtb3ZhbEluZGV4LCAxKTtcbiAgICB9LFxuICAgIG9uTm9kZVJlbW92ZWQ6IE5PT1AsXG4gICAgYWRkSWRlbnRpZmllcnMoZXhwKSB7XG4gICAgfSxcbiAgICByZW1vdmVJZGVudGlmaWVycyhleHApIHtcbiAgICB9LFxuICAgIGhvaXN0KGV4cCkge1xuICAgICAgaWYgKGlzU3RyaW5nKGV4cCkpIGV4cCA9IGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oZXhwKTtcbiAgICAgIGNvbnRleHQuaG9pc3RzLnB1c2goZXhwKTtcbiAgICAgIGNvbnN0IGlkZW50aWZpZXIgPSBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKFxuICAgICAgICBgX2hvaXN0ZWRfJHtjb250ZXh0LmhvaXN0cy5sZW5ndGh9YCxcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIGV4cC5sb2MsXG4gICAgICAgIDJcbiAgICAgICk7XG4gICAgICBpZGVudGlmaWVyLmhvaXN0ZWQgPSBleHA7XG4gICAgICByZXR1cm4gaWRlbnRpZmllcjtcbiAgICB9LFxuICAgIGNhY2hlKGV4cCwgaXNWTm9kZSA9IGZhbHNlKSB7XG4gICAgICByZXR1cm4gY3JlYXRlQ2FjaGVFeHByZXNzaW9uKGNvbnRleHQuY2FjaGVkKyssIGV4cCwgaXNWTm9kZSk7XG4gICAgfVxuICB9O1xuICB7XG4gICAgY29udGV4dC5maWx0ZXJzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKTtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn1cbmZ1bmN0aW9uIHRyYW5zZm9ybShyb290LCBvcHRpb25zKSB7XG4gIGNvbnN0IGNvbnRleHQgPSBjcmVhdGVUcmFuc2Zvcm1Db250ZXh0KHJvb3QsIG9wdGlvbnMpO1xuICB0cmF2ZXJzZU5vZGUocm9vdCwgY29udGV4dCk7XG4gIGlmIChvcHRpb25zLmhvaXN0U3RhdGljKSB7XG4gICAgaG9pc3RTdGF0aWMocm9vdCwgY29udGV4dCk7XG4gIH1cbiAgaWYgKCFvcHRpb25zLnNzcikge1xuICAgIGNyZWF0ZVJvb3RDb2RlZ2VuKHJvb3QsIGNvbnRleHQpO1xuICB9XG4gIHJvb3QuaGVscGVycyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KFsuLi5jb250ZXh0LmhlbHBlcnMua2V5cygpXSk7XG4gIHJvb3QuY29tcG9uZW50cyA9IFsuLi5jb250ZXh0LmNvbXBvbmVudHNdO1xuICByb290LmRpcmVjdGl2ZXMgPSBbLi4uY29udGV4dC5kaXJlY3RpdmVzXTtcbiAgcm9vdC5pbXBvcnRzID0gY29udGV4dC5pbXBvcnRzO1xuICByb290LmhvaXN0cyA9IGNvbnRleHQuaG9pc3RzO1xuICByb290LnRlbXBzID0gY29udGV4dC50ZW1wcztcbiAgcm9vdC5jYWNoZWQgPSBjb250ZXh0LmNhY2hlZDtcbiAgcm9vdC50cmFuc2Zvcm1lZCA9IHRydWU7XG4gIHtcbiAgICByb290LmZpbHRlcnMgPSBbLi4uY29udGV4dC5maWx0ZXJzXTtcbiAgfVxufVxuZnVuY3Rpb24gY3JlYXRlUm9vdENvZGVnZW4ocm9vdCwgY29udGV4dCkge1xuICBjb25zdCB7IGhlbHBlciB9ID0gY29udGV4dDtcbiAgY29uc3QgeyBjaGlsZHJlbiB9ID0gcm9vdDtcbiAgaWYgKGNoaWxkcmVuLmxlbmd0aCA9PT0gMSkge1xuICAgIGNvbnN0IGNoaWxkID0gY2hpbGRyZW5bMF07XG4gICAgaWYgKGlzU2luZ2xlRWxlbWVudFJvb3Qocm9vdCwgY2hpbGQpICYmIGNoaWxkLmNvZGVnZW5Ob2RlKSB7XG4gICAgICBjb25zdCBjb2RlZ2VuTm9kZSA9IGNoaWxkLmNvZGVnZW5Ob2RlO1xuICAgICAgaWYgKGNvZGVnZW5Ob2RlLnR5cGUgPT09IDEzKSB7XG4gICAgICAgIGNvbnZlcnRUb0Jsb2NrKGNvZGVnZW5Ob2RlLCBjb250ZXh0KTtcbiAgICAgIH1cbiAgICAgIHJvb3QuY29kZWdlbk5vZGUgPSBjb2RlZ2VuTm9kZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcm9vdC5jb2RlZ2VuTm9kZSA9IGNoaWxkO1xuICAgIH1cbiAgfSBlbHNlIGlmIChjaGlsZHJlbi5sZW5ndGggPiAxKSB7XG4gICAgbGV0IHBhdGNoRmxhZyA9IDY0O1xuICAgIGxldCBwYXRjaEZsYWdUZXh0ID0gUGF0Y2hGbGFnTmFtZXNbNjRdO1xuICAgIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9k
15dWN0aW9uXCIpICYmIGNoaWxkcmVuLmZpbHRlcigoYykgPT4gYy50eXBlICE9PSAzKS5sZW5ndGggPT09IDEpIHtcbiAgICAgIHBhdGNoRmxhZyB8PSAyMDQ4O1xuICAgICAgcGF0Y2hGbGFnVGV4dCArPSBgLCAke1BhdGNoRmxhZ05hbWVzWzIwNDhdfWA7XG4gICAgfVxuICAgIHJvb3QuY29kZWdlbk5vZGUgPSBjcmVhdGVWTm9kZUNhbGwoXG4gICAgICBjb250ZXh0LFxuICAgICAgaGVscGVyKEZSQUdNRU5UKSxcbiAgICAgIHZvaWQgMCxcbiAgICAgIHJvb3QuY2hpbGRyZW4sXG4gICAgICBwYXRjaEZsYWcsXG4gICAgICB2b2lkIDAsXG4gICAgICB2b2lkIDAsXG4gICAgICB0cnVlLFxuICAgICAgdm9pZCAwLFxuICAgICAgZmFsc2VcbiAgICApO1xuICB9IGVsc2UgO1xufVxuZnVuY3Rpb24gdHJhdmVyc2VDaGlsZHJlbihwYXJlbnQsIGNvbnRleHQpIHtcbiAgbGV0IGkgPSAwO1xuICBjb25zdCBub2RlUmVtb3ZlZCA9ICgpID0+IHtcbiAgICBpLS07XG4gIH07XG4gIGZvciAoOyBpIDwgcGFyZW50LmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgY2hpbGQgPSBwYXJlbnQuY2hpbGRyZW5baV07XG4gICAgaWYgKGlzU3RyaW5nKGNoaWxkKSkgY29udGludWU7XG4gICAgY29udGV4dC5ncmFuZFBhcmVudCA9IGNvbnRleHQucGFyZW50O1xuICAgIGNvbnRleHQucGFyZW50ID0gcGFyZW50O1xuICAgIGNvbnRleHQuY2hpbGRJbmRleCA9IGk7XG4gICAgY29udGV4dC5vbk5vZGVSZW1vdmVkID0gbm9kZVJlbW92ZWQ7XG4gICAgdHJhdmVyc2VOb2RlKGNoaWxkLCBjb250ZXh0KTtcbiAgfVxufVxuZnVuY3Rpb24gdHJhdmVyc2VOb2RlKG5vZGUsIGNvbnRleHQpIHtcbiAgY29udGV4dC5jdXJyZW50Tm9kZSA9IG5vZGU7XG4gIGNvbnN0IHsgbm9kZVRyYW5zZm9ybXMgfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGV4aXRGbnMgPSBbXTtcbiAgZm9yIChsZXQgaTIgPSAwOyBpMiA8IG5vZGVUcmFuc2Zvcm1zLmxlbmd0aDsgaTIrKykge1xuICAgIGNvbnN0IG9uRXhpdCA9IG5vZGVUcmFuc2Zvcm1zW2kyXShub2RlLCBjb250ZXh0KTtcbiAgICBpZiAob25FeGl0KSB7XG4gICAgICBpZiAoaXNBcnJheShvbkV4aXQpKSB7XG4gICAgICAgIGV4aXRGbnMucHVzaCguLi5vbkV4aXQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXhpdEZucy5wdXNoKG9uRXhpdCk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICghY29udGV4dC5jdXJyZW50Tm9kZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICBub2RlID0gY29udGV4dC5jdXJyZW50Tm9kZTtcbiAgICB9XG4gIH1cbiAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICBjYXNlIDM6XG4gICAgICBpZiAoIWNvbnRleHQuc3NyKSB7XG4gICAgICAgIGNvbnRleHQuaGVscGVyKENSRUFURV9DT01NRU5UKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgNTpcbiAgICAgIGlmICghY29udGV4dC5zc3IpIHtcbiAgICAgICAgY29udGV4dC5oZWxwZXIoVE9fRElTUExBWV9TVFJJTkcpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSA5OlxuICAgICAgZm9yIChsZXQgaTIgPSAwOyBpMiA8IG5vZGUuYnJhbmNoZXMubGVuZ3RoOyBpMisrKSB7XG4gICAgICAgIHRyYXZlcnNlTm9kZShub2RlLmJyYW5jaGVzW2kyXSwgY29udGV4dCk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIDEwOlxuICAgIGNhc2UgMTE6XG4gICAgY2FzZSAxOlxuICAgIGNhc2UgMDpcbiAgICAgIHRyYXZlcnNlQ2hpbGRyZW4obm9kZSwgY29udGV4dCk7XG4gICAgICBicmVhaztcbiAgfVxuICBjb250ZXh0LmN1cnJlbnROb2RlID0gbm9kZTtcbiAgbGV0IGkgPSBleGl0Rm5zLmxlbmd0aDtcbiAgd2hpbGUgKGktLSkge1xuICAgIGV4aXRGbnNbaV0oKTtcbiAgfVxufVxuZnVuY3Rpb24gY3JlYXRlU3RydWN0dXJhbERpcmVjdGl2ZVRyYW5zZm9ybShuYW1lLCBmbikge1xuICBjb25zdCBtYXRjaGVzID0gaXNTdHJpbmcobmFtZSkgPyAobikgPT4gbiA9PT0gbmFtZSA6IChuKSA9PiBuYW1lLnRlc3Qobik7XG4gIHJldHVybiAobm9kZSwgY29udGV4dCkgPT4ge1xuICAgIGlmIChub2RlLnR5cGUgPT09IDEpIHtcbiAgICAgIGNvbnN0IHsgcHJvcHMgfSA9IG5vZGU7XG4gICAgICBpZiAobm9kZS50YWdUeXBlID09PSAzICYmIHByb3BzLnNvbWUoaXNWU2xvdCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgZXhpdEZucyA9IFtdO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBwcm9wID0gcHJvcHNbaV07XG4gICAgICAgIGlmIChwcm9wLnR5cGUgPT09IDcgJiYgbWF0Y2hlcyhwcm9wLm5hbWUpKSB7XG4gICAgICAgICAgcHJvcHMuc3BsaWNlKGksIDEpO1xuICAgICAgICAgIGktLTtcbiAgICAgICAgICBjb25zdCBvbkV4aXQgPSBmbihub2RlLCBwcm9wLCBjb250ZXh0KTtcbiAgICAgICAgICBpZiAob25FeGl0KSBleGl0Rm5zLnB1c2gob25FeGl0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGV4aXRGbnM7XG4gICAgfVxuICB9O1xufVxuXG5jb25zdCBQVVJFX0FOTk9UQVRJT04gPSBgLyojX19QVVJFX18qL2A7XG5jb25zdCBhbGlhc0hlbHBlciA9IChzKSA9PiBgJHtoZWxwZXJOYW1lTWFwW3NdfTogXyR7aGVscGVyTmFtZU1hcFtzXX1gO1xuZnVuY3Rpb24gY3JlYXRlQ29kZWdlbkNvbnRleHQoYXN0LCB7XG4gIG1vZGUgPSBcImZ1bmN0aW9uXCIsXG4gIHByZWZpeElkZW50aWZpZXJzID0gbW9kZSA9PT0gXCJtb2R1bGVcIixcbiAgc291cmNlTWFwID0gZmFsc2UsXG4gIGZpbGVuYW1lID0gYHRlbXBsYXRlLnZ1ZS5odG1sYCxcbiAgc2NvcGVJZCA9IG51bGwsXG4gIG9wdGltaXplSW1wb3J0cyA9IGZhbHNlLFxuICBydW50aW1lR2xvYmFsTmFtZSA9IGBWdWVgLFxuICBydW50aW1lTW9kdWxlTmFtZSA9IGB2dWVgLFxuICBzc3JSdW50aW1lTW9kdWxlTmFtZSA9IFwidnVlL3NlcnZlci1yZW5kZXJlclwiLFxuICBzc3IgPSBmYWxzZSxcbiAgaXNUUyA9IGZhbHNlLFxuICBpblNTUiA9IGZhbHNlXG59KSB7XG4gIGNvbnN0IGNvbnRleHQgPSB7XG4gICAgbW9kZSxcbiAgICBwcmVmaXhJZGVudGlmaWVycyxcbiAgICBzb3VyY2VNYXAsXG4gICAgZmlsZW5hbWUsXG4gICAgc2NvcGVJZCxcbiAgICBvcHRpbWl6ZUltcG9ydHMsXG4gICAgcnVudGltZUdsb2JhbE5hbWUsXG4gICAgcnVudGltZU1vZHVsZU5hbWUsXG4gICAgc3NyUnVudGltZU1vZHVsZU5hbWUsXG4gICAgc3NyLFxuICAgIGlzVFMsXG4gICAgaW5TU1IsXG4gICAgc291cmNlOiBhc3Quc291cmNlLFxuICAgIGNvZGU6IGBgLFxuICAgIGNvbHVtbjogMSxcbiAgICBsaW5lOiAxLFxuICAgIG9mZnNldDogMCxcbiAgICBpbmRlbnRMZXZlbDogMCxcbiAgICBwdXJlOiBmYWxzZSxcbiAgICBtYXA6IHZvaWQgMCxcbiAgICBoZWxwZXIoa2V5KSB7XG4gICAgICByZXR1cm4gYF8ke2hlbHBlck5hbWVNYXBba2V5XX1gO1xuICAgIH0sXG4gICAgcHVzaChjb2RlLCBuZXdsaW5lSW5kZXggPSAtMiAvKiBOb25lICovLCBub2RlKSB7XG4gICAgICBjb250ZXh0LmNvZGUgKz0gY29kZTtcbiAgICB9LFxuICAgIGluZGVudCgpIHtcbiAgICAgIG5ld2xpbmUoKytjb250ZXh0LmluZGVudExldmVsKTtcbiAgICB9LFxuICAgIGRlaW5kZW50KHdpdGhvdXROZXdMaW5lID0gZmFsc2UpIHtcbiAgICAgIGlmICh3aXRob3V0TmV3TGluZSkge1xuICAgICAgICAtLWNvbnRleHQuaW5kZW50TGV2ZWw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXdsaW5lKC0tY29udGV4dC5pbmRlbnRMZXZlbCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBuZXdsaW5lKCkge1xuICAgICAgbmV3bGluZShjb250ZXh0LmluZGVudExldmVsKTtcbiAgICB9XG4gI
15H07XG4gIGZ1bmN0aW9uIG5ld2xpbmUobikge1xuICAgIGNvbnRleHQucHVzaChcIlxcblwiICsgYCAgYC5yZXBlYXQobiksIDAgLyogU3RhcnQgKi8pO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufVxuZnVuY3Rpb24gZ2VuZXJhdGUoYXN0LCBvcHRpb25zID0ge30pIHtcbiAgY29uc3QgY29udGV4dCA9IGNyZWF0ZUNvZGVnZW5Db250ZXh0KGFzdCwgb3B0aW9ucyk7XG4gIGlmIChvcHRpb25zLm9uQ29udGV4dENyZWF0ZWQpIG9wdGlvbnMub25Db250ZXh0Q3JlYXRlZChjb250ZXh0KTtcbiAgY29uc3Qge1xuICAgIG1vZGUsXG4gICAgcHVzaCxcbiAgICBwcmVmaXhJZGVudGlmaWVycyxcbiAgICBpbmRlbnQsXG4gICAgZGVpbmRlbnQsXG4gICAgbmV3bGluZSxcbiAgICBzY29wZUlkLFxuICAgIHNzclxuICB9ID0gY29udGV4dDtcbiAgY29uc3QgaGVscGVycyA9IEFycmF5LmZyb20oYXN0LmhlbHBlcnMpO1xuICBjb25zdCBoYXNIZWxwZXJzID0gaGVscGVycy5sZW5ndGggPiAwO1xuICBjb25zdCB1c2VXaXRoQmxvY2sgPSAhcHJlZml4SWRlbnRpZmllcnMgJiYgbW9kZSAhPT0gXCJtb2R1bGVcIjtcbiAgY29uc3QgcHJlYW1ibGVDb250ZXh0ID0gY29udGV4dDtcbiAge1xuICAgIGdlbkZ1bmN0aW9uUHJlYW1ibGUoYXN0LCBwcmVhbWJsZUNvbnRleHQpO1xuICB9XG4gIGNvbnN0IGZ1bmN0aW9uTmFtZSA9IHNzciA/IGBzc3JSZW5kZXJgIDogYHJlbmRlcmA7XG4gIGNvbnN0IGFyZ3MgPSBzc3IgPyBbXCJfY3R4XCIsIFwiX3B1c2hcIiwgXCJfcGFyZW50XCIsIFwiX2F0dHJzXCJdIDogW1wiX2N0eFwiLCBcIl9jYWNoZVwiXTtcbiAgY29uc3Qgc2lnbmF0dXJlID0gYXJncy5qb2luKFwiLCBcIik7XG4gIHtcbiAgICBwdXNoKGBmdW5jdGlvbiAke2Z1bmN0aW9uTmFtZX0oJHtzaWduYXR1cmV9KSB7YCk7XG4gIH1cbiAgaW5kZW50KCk7XG4gIGlmICh1c2VXaXRoQmxvY2spIHtcbiAgICBwdXNoKGB3aXRoIChfY3R4KSB7YCk7XG4gICAgaW5kZW50KCk7XG4gICAgaWYgKGhhc0hlbHBlcnMpIHtcbiAgICAgIHB1c2goXG4gICAgICAgIGBjb25zdCB7ICR7aGVscGVycy5tYXAoYWxpYXNIZWxwZXIpLmpvaW4oXCIsIFwiKX0gfSA9IF9WdWVcbmAsXG4gICAgICAgIC0xIC8qIEVuZCAqL1xuICAgICAgKTtcbiAgICAgIG5ld2xpbmUoKTtcbiAgICB9XG4gIH1cbiAgaWYgKGFzdC5jb21wb25lbnRzLmxlbmd0aCkge1xuICAgIGdlbkFzc2V0cyhhc3QuY29tcG9uZW50cywgXCJjb21wb25lbnRcIiwgY29udGV4dCk7XG4gICAgaWYgKGFzdC5kaXJlY3RpdmVzLmxlbmd0aCB8fCBhc3QudGVtcHMgPiAwKSB7XG4gICAgICBuZXdsaW5lKCk7XG4gICAgfVxuICB9XG4gIGlmIChhc3QuZGlyZWN0aXZlcy5sZW5ndGgpIHtcbiAgICBnZW5Bc3NldHMoYXN0LmRpcmVjdGl2ZXMsIFwiZGlyZWN0aXZlXCIsIGNvbnRleHQpO1xuICAgIGlmIChhc3QudGVtcHMgPiAwKSB7XG4gICAgICBuZXdsaW5lKCk7XG4gICAgfVxuICB9XG4gIGlmIChhc3QuZmlsdGVycyAmJiBhc3QuZmlsdGVycy5sZW5ndGgpIHtcbiAgICBuZXdsaW5lKCk7XG4gICAgZ2VuQXNzZXRzKGFzdC5maWx0ZXJzLCBcImZpbHRlclwiLCBjb250ZXh0KTtcbiAgICBuZXdsaW5lKCk7XG4gIH1cbiAgaWYgKGFzdC50ZW1wcyA+IDApIHtcbiAgICBwdXNoKGBsZXQgYCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhc3QudGVtcHM7IGkrKykge1xuICAgICAgcHVzaChgJHtpID4gMCA/IGAsIGAgOiBgYH1fdGVtcCR7aX1gKTtcbiAgICB9XG4gIH1cbiAgaWYgKGFzdC5jb21wb25lbnRzLmxlbmd0aCB8fCBhc3QuZGlyZWN0aXZlcy5sZW5ndGggfHwgYXN0LnRlbXBzKSB7XG4gICAgcHVzaChgXG5gLCAwIC8qIFN0YXJ0ICovKTtcbiAgICBuZXdsaW5lKCk7XG4gIH1cbiAgaWYgKCFzc3IpIHtcbiAgICBwdXNoKGByZXR1cm4gYCk7XG4gIH1cbiAgaWYgKGFzdC5jb2RlZ2VuTm9kZSkge1xuICAgIGdlbk5vZGUoYXN0LmNvZGVnZW5Ob2RlLCBjb250ZXh0KTtcbiAgfSBlbHNlIHtcbiAgICBwdXNoKGBudWxsYCk7XG4gIH1cbiAgaWYgKHVzZVdpdGhCbG9jaykge1xuICAgIGRlaW5kZW50KCk7XG4gICAgcHVzaChgfWApO1xuICB9XG4gIGRlaW5kZW50KCk7XG4gIHB1c2goYH1gKTtcbiAgcmV0dXJuIHtcbiAgICBhc3QsXG4gICAgY29kZTogY29udGV4dC5jb2RlLFxuICAgIHByZWFtYmxlOiBgYCxcbiAgICBtYXA6IGNvbnRleHQubWFwID8gY29udGV4dC5tYXAudG9KU09OKCkgOiB2b2lkIDBcbiAgfTtcbn1cbmZ1bmN0aW9uIGdlbkZ1bmN0aW9uUHJlYW1ibGUoYXN0LCBjb250ZXh0KSB7XG4gIGNvbnN0IHtcbiAgICBzc3IsXG4gICAgcHJlZml4SWRlbnRpZmllcnMsXG4gICAgcHVzaCxcbiAgICBuZXdsaW5lLFxuICAgIHJ1bnRpbWVNb2R1bGVOYW1lLFxuICAgIHJ1bnRpbWVHbG9iYWxOYW1lLFxuICAgIHNzclJ1bnRpbWVNb2R1bGVOYW1lXG4gIH0gPSBjb250ZXh0O1xuICBjb25zdCBWdWVCaW5kaW5nID0gcnVudGltZUdsb2JhbE5hbWU7XG4gIGNvbnN0IGhlbHBlcnMgPSBBcnJheS5mcm9tKGFzdC5oZWxwZXJzKTtcbiAgaWYgKGhlbHBlcnMubGVuZ3RoID4gMCkge1xuICAgIHtcbiAgICAgIHB1c2goYGNvbnN0IF9WdWUgPSAke1Z1ZUJpbmRpbmd9XG5gLCAtMSAvKiBFbmQgKi8pO1xuICAgICAgaWYgKGFzdC5ob2lzdHMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IHN0YXRpY0hlbHBlcnMgPSBbXG4gICAgICAgICAgQ1JFQVRFX1ZOT0RFLFxuICAgICAgICAgIENSRUFURV9FTEVNRU5UX1ZOT0RFLFxuICAgICAgICAgIENSRUFURV9DT01NRU5ULFxuICAgICAgICAgIENSRUFURV9URVhULFxuICAgICAgICAgIENSRUFURV9TVEFUSUNcbiAgICAgICAgXS5maWx0ZXIoKGhlbHBlcikgPT4gaGVscGVycy5pbmNsdWRlcyhoZWxwZXIpKS5tYXAoYWxpYXNIZWxwZXIpLmpvaW4oXCIsIFwiKTtcbiAgICAgICAgcHVzaChgY29uc3QgeyAke3N0YXRpY0hlbHBlcnN9IH0gPSBfVnVlXG5gLCAtMSAvKiBFbmQgKi8pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBnZW5Ib2lzdHMoYXN0LmhvaXN0cywgY29udGV4dCk7XG4gIG5ld2xpbmUoKTtcbiAgcHVzaChgcmV0dXJuIGApO1xufVxuZnVuY3Rpb24gZ2VuQXNzZXRzKGFzc2V0cywgdHlwZSwgeyBoZWxwZXIsIHB1c2gsIG5ld2xpbmUsIGlzVFMgfSkge1xuICBjb25zdCByZXNvbHZlciA9IGhlbHBlcihcbiAgICB0eX
15BlID09PSBcImZpbHRlclwiID8gUkVTT0xWRV9GSUxURVIgOiB0eXBlID09PSBcImNvbXBvbmVudFwiID8gUkVTT0xWRV9DT01QT05FTlQgOiBSRVNPTFZFX0RJUkVDVElWRVxuICApO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGFzc2V0cy5sZW5ndGg7IGkrKykge1xuICAgIGxldCBpZCA9IGFzc2V0c1tpXTtcbiAgICBjb25zdCBtYXliZVNlbGZSZWZlcmVuY2UgPSBpZC5lbmRzV2l0aChcIl9fc2VsZlwiKTtcbiAgICBpZiAobWF5YmVTZWxmUmVmZXJlbmNlKSB7XG4gICAgICBpZCA9IGlkLnNsaWNlKDAsIC02KTtcbiAgICB9XG4gICAgcHVzaChcbiAgICAgIGBjb25zdCAke3RvVmFsaWRBc3NldElkKGlkLCB0eXBlKX0gPSAke3Jlc29sdmVyfSgke0pTT04uc3RyaW5naWZ5KGlkKX0ke21heWJlU2VsZlJlZmVyZW5jZSA/IGAsIHRydWVgIDogYGB9KSR7aXNUUyA/IGAhYCA6IGBgfWBcbiAgICApO1xuICAgIGlmIChpIDwgYXNzZXRzLmxlbmd0aCAtIDEpIHtcbiAgICAgIG5ld2xpbmUoKTtcbiAgICB9XG4gIH1cbn1cbmZ1bmN0aW9uIGdlbkhvaXN0cyhob2lzdHMsIGNvbnRleHQpIHtcbiAgaWYgKCFob2lzdHMubGVuZ3RoKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnRleHQucHVyZSA9IHRydWU7XG4gIGNvbnN0IHsgcHVzaCwgbmV3bGluZSwgaGVscGVyLCBzY29wZUlkLCBtb2RlIH0gPSBjb250ZXh0O1xuICBuZXdsaW5lKCk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgaG9pc3RzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgZXhwID0gaG9pc3RzW2ldO1xuICAgIGlmIChleHApIHtcbiAgICAgIHB1c2goXG4gICAgICAgIGBjb25zdCBfaG9pc3RlZF8ke2kgKyAxfSA9ICR7YGB9YFxuICAgICAgKTtcbiAgICAgIGdlbk5vZGUoZXhwLCBjb250ZXh0KTtcbiAgICAgIG5ld2xpbmUoKTtcbiAgICB9XG4gIH1cbiAgY29udGV4dC5wdXJlID0gZmFsc2U7XG59XG5mdW5jdGlvbiBpc1RleHQobikge1xuICByZXR1cm4gaXNTdHJpbmcobikgfHwgbi50eXBlID09PSA0IHx8IG4udHlwZSA9PT0gMiB8fCBuLnR5cGUgPT09IDUgfHwgbi50eXBlID09PSA4O1xufVxuZnVuY3Rpb24gZ2VuTm9kZUxpc3RBc0FycmF5KG5vZGVzLCBjb250ZXh0KSB7XG4gIGNvbnN0IG11bHRpbGluZXMgPSBub2Rlcy5sZW5ndGggPiAzIHx8ICEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgJiYgbm9kZXMuc29tZSgobikgPT4gaXNBcnJheShuKSB8fCAhaXNUZXh0KG4pKTtcbiAgY29udGV4dC5wdXNoKGBbYCk7XG4gIG11bHRpbGluZXMgJiYgY29udGV4dC5pbmRlbnQoKTtcbiAgZ2VuTm9kZUxpc3Qobm9kZXMsIGNvbnRleHQsIG11bHRpbGluZXMpO1xuICBtdWx0aWxpbmVzICYmIGNvbnRleHQuZGVpbmRlbnQoKTtcbiAgY29udGV4dC5wdXNoKGBdYCk7XG59XG5mdW5jdGlvbiBnZW5Ob2RlTGlzdChub2RlcywgY29udGV4dCwgbXVsdGlsaW5lcyA9IGZhbHNlLCBjb21tYSA9IHRydWUpIHtcbiAgY29uc3QgeyBwdXNoLCBuZXdsaW5lIH0gPSBjb250ZXh0O1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3Qgbm9kZSA9IG5vZGVzW2ldO1xuICAgIGlmIChpc1N0cmluZyhub2RlKSkge1xuICAgICAgcHVzaChub2RlLCAtMyAvKiBVbmtub3duICovKTtcbiAgICB9IGVsc2UgaWYgKGlzQXJyYXkobm9kZSkpIHtcbiAgICAgIGdlbk5vZGVMaXN0QXNBcnJheShub2RlLCBjb250ZXh0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZ2VuTm9kZShub2RlLCBjb250ZXh0KTtcbiAgICB9XG4gICAgaWYgKGkgPCBub2Rlcy5sZW5ndGggLSAxKSB7XG4gICAgICBpZiAobXVsdGlsaW5lcykge1xuICAgICAgICBjb21tYSAmJiBwdXNoKFwiLFwiKTtcbiAgICAgICAgbmV3bGluZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29tbWEgJiYgcHVzaChcIiwgXCIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gZ2VuTm9kZShub2RlLCBjb250ZXh0KSB7XG4gIGlmIChpc1N0cmluZyhub2RlKSkge1xuICAgIGNvbnRleHQucHVzaChub2RlLCAtMyAvKiBVbmtub3duICovKTtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKGlzU3ltYm9sKG5vZGUpKSB7XG4gICAgY29udGV4dC5wdXNoKGNvbnRleHQuaGVscGVyKG5vZGUpKTtcbiAgICByZXR1cm47XG4gIH1cbiAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICBjYXNlIDE6XG4gICAgY2FzZSA5OlxuICAgIGNhc2UgMTE6XG4gICAgICAhIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpICYmIGFzc2VydChcbiAgICAgICAgbm9kZS5jb2RlZ2VuTm9kZSAhPSBudWxsLFxuICAgICAgICBgQ29kZWdlbiBub2RlIGlzIG1pc3NpbmcgZm9yIGVsZW1lbnQvaWYvZm9yIG5vZGUuIEFwcGx5IGFwcHJvcHJpYXRlIHRyYW5zZm9ybXMgZmlyc3QuYFxuICAgICAgKTtcbiAgICAgIGdlbk5vZGUobm9kZS5jb2RlZ2VuTm9kZSwgY29udGV4dCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDI6XG4gICAgICBnZW5UZXh0KG5vZGUsIGNvbnRleHQpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA0OlxuICAgICAgZ2VuRXhwcmVzc2lvbihub2RlLCBjb250ZXh0KTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgNTpcbiAgICAgIGdlbkludGVycG9sYXRpb24obm9kZSwgY29udGV4dCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDEyOlxuICAgICAgZ2VuTm9kZShub2RlLmNvZGVnZW5Ob2RlLCBjb250ZXh0KTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgODpcbiAgICAgIGdlbkNvbXBvdW5kRXhwcmVzc2lvbihub2RlLCBjb250ZXh0KTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMzpcbiAgICAgIGdlbkNvbW1lbnQobm9kZSwgY29udGV4dCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDEzOlxuICAgICAgZ2VuVk5vZGVDYWxsKG5vZGUsIGNvbnRleHQpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxNDpcbiAgICAgIGdlbkNhbGxFeHByZXNzaW9uKG5vZGUsIGNvbnRleHQpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxNTpcbiAgICAgIGdlbk9iamVjdEV4cHJlc3Npb24obm9kZSwgY29udGV4dCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDE3OlxuICAgICAgZ2VuQXJyYXlFeHByZXNzaW9uKG5vZGUsIGNvbnRleHQpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxODpcbiAgICAgIGdlbkZ1bmN0aW9uRXhwcmVzc2lvbihub2RlLCBjb250ZXh0KTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTk6XG4gICAgICBnZW5Db25kaXRpb25hbEV4cHJlc3Npb24obm9kZSwgY29udGV4dCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDIwOlxuICAgICAgZ2VuQ2FjaG
15VFeHByZXNzaW9uKG5vZGUsIGNvbnRleHQpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAyMTpcbiAgICAgIGdlbk5vZGVMaXN0KG5vZGUuYm9keSwgY29udGV4dCwgdHJ1ZSwgZmFsc2UpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAyMjpcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMjM6XG4gICAgICBicmVhaztcbiAgICBjYXNlIDI0OlxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAyNTpcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMjY6XG4gICAgICBicmVhaztcbiAgICBjYXNlIDEwOlxuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGlmICghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpKSB7XG4gICAgICAgIGFzc2VydChmYWxzZSwgYHVuaGFuZGxlZCBjb2RlZ2VuIG5vZGUgdHlwZTogJHtub2RlLnR5cGV9YCk7XG4gICAgICAgIGNvbnN0IGV4aGF1c3RpdmVDaGVjayA9IG5vZGU7XG4gICAgICAgIHJldHVybiBleGhhdXN0aXZlQ2hlY2s7XG4gICAgICB9XG4gIH1cbn1cbmZ1bmN0aW9uIGdlblRleHQobm9kZSwgY29udGV4dCkge1xuICBjb250ZXh0LnB1c2goSlNPTi5zdHJpbmdpZnkobm9kZS5jb250ZW50KSwgLTMgLyogVW5rbm93biAqLywgbm9kZSk7XG59XG5mdW5jdGlvbiBnZW5FeHByZXNzaW9uKG5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBjb250ZW50LCBpc1N0YXRpYyB9ID0gbm9kZTtcbiAgY29udGV4dC5wdXNoKFxuICAgIGlzU3RhdGljID8gSlNPTi5zdHJpbmdpZnkoY29udGVudCkgOiBjb250ZW50LFxuICAgIC0zIC8qIFVua25vd24gKi8sXG4gICAgbm9kZVxuICApO1xufVxuZnVuY3Rpb24gZ2VuSW50ZXJwb2xhdGlvbihub2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgcHVzaCwgaGVscGVyLCBwdXJlIH0gPSBjb250ZXh0O1xuICBpZiAocHVyZSkgcHVzaChQVVJFX0FOTk9UQVRJT04pO1xuICBwdXNoKGAke2hlbHBlcihUT19ESVNQTEFZX1NUUklORyl9KGApO1xuICBnZW5Ob2RlKG5vZGUuY29udGVudCwgY29udGV4dCk7XG4gIHB1c2goYClgKTtcbn1cbmZ1bmN0aW9uIGdlbkNvbXBvdW5kRXhwcmVzc2lvbihub2RlLCBjb250ZXh0KSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGNoaWxkID0gbm9kZS5jaGlsZHJlbltpXTtcbiAgICBpZiAoaXNTdHJpbmcoY2hpbGQpKSB7XG4gICAgICBjb250ZXh0LnB1c2goY2hpbGQsIC0zIC8qIFVua25vd24gKi8pO1xuICAgIH0gZWxzZSB7XG4gICAgICBnZW5Ob2RlKGNoaWxkLCBjb250ZXh0KTtcbiAgICB9XG4gIH1cbn1cbmZ1bmN0aW9uIGdlbkV4cHJlc3Npb25Bc1Byb3BlcnR5S2V5KG5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBwdXNoIH0gPSBjb250ZXh0O1xuICBpZiAobm9kZS50eXBlID09PSA4KSB7XG4gICAgcHVzaChgW2ApO1xuICAgIGdlbkNvbXBvdW5kRXhwcmVzc2lvbihub2RlLCBjb250ZXh0KTtcbiAgICBwdXNoKGBdYCk7XG4gIH0gZWxzZSBpZiAobm9kZS5pc1N0YXRpYykge1xuICAgIGNvbnN0IHRleHQgPSBpc1NpbXBsZUlkZW50aWZpZXIobm9kZS5jb250ZW50KSA/IG5vZGUuY29udGVudCA6IEpTT04uc3RyaW5naWZ5KG5vZGUuY29udGVudCk7XG4gICAgcHVzaCh0ZXh0LCAtMiAvKiBOb25lICovLCBub2RlKTtcbiAgfSBlbHNlIHtcbiAgICBwdXNoKGBbJHtub2RlLmNvbnRlbnR9XWAsIC0zIC8qIFVua25vd24gKi8sIG5vZGUpO1xuICB9XG59XG5mdW5jdGlvbiBnZW5Db21tZW50KG5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBwdXNoLCBoZWxwZXIsIHB1cmUgfSA9IGNvbnRleHQ7XG4gIGlmIChwdXJlKSB7XG4gICAgcHVzaChQVVJFX0FOTk9UQVRJT04pO1xuICB9XG4gIHB1c2goXG4gICAgYCR7aGVscGVyKENSRUFURV9DT01NRU5UKX0oJHtKU09OLnN0cmluZ2lmeShub2RlLmNvbnRlbnQpfSlgLFxuICAgIC0zIC8qIFVua25vd24gKi8sXG4gICAgbm9kZVxuICApO1xufVxuZnVuY3Rpb24gZ2VuVk5vZGVDYWxsKG5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBwdXNoLCBoZWxwZXIsIHB1cmUgfSA9IGNvbnRleHQ7XG4gIGNvbnN0IHtcbiAgICB0YWcsXG4gICAgcHJvcHMsXG4gICAgY2hpbGRyZW4sXG4gICAgcGF0Y2hGbGFnLFxuICAgIGR5bmFtaWNQcm9wcyxcbiAgICBkaXJlY3RpdmVzLFxuICAgIGlzQmxvY2ssXG4gICAgZGlzYWJsZVRyYWNraW5nLFxuICAgIGlzQ29tcG9uZW50XG4gIH0gPSBub2RlO1xuICBsZXQgcGF0Y2hGbGFnU3RyaW5nO1xuICBpZiAocGF0Y2hGbGFnKSB7XG4gICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikpIHtcbiAgICAgIGlmIChwYXRjaEZsYWcgPCAwKSB7XG4gICAgICAgIHBhdGNoRmxhZ1N0cmluZyA9IHBhdGNoRmxhZyArIGAgLyogJHtQYXRjaEZsYWdOYW1lc1twYXRjaEZsYWddfSAqL2A7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBmbGFnTmFtZXMgPSBPYmplY3Qua2V5cyhQYXRjaEZsYWdOYW1lcykubWFwKE51bWJlcikuZmlsdGVyKChuKSA9PiBuID4gMCAmJiBwYXRjaEZsYWcgJiBuKS5tYXAoKG4pID0+IFBhdGNoRmxhZ05hbWVzW25dKS5qb2luKGAsIGApO1xuICAgICAgICBwYXRjaEZsYWdTdHJpbmcgPSBwYXRjaEZsYWcgKyBgIC8qICR7ZmxhZ05hbWVzfSAqL2A7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhdGNoRmxhZ1N0cmluZyA9IFN0cmluZyhwYXRjaEZsYWcpO1xuICAgIH1cbiAgfVxuICBpZiAoZGlyZWN0aXZlcykge1xuICAgIHB1c2goaGVscGVyKFdJVEhfRElSRUNUSVZFUykgKyBgKGApO1xuICB9XG4gIGlmIChpc0Jsb2NrKSB7XG4gICAgcHVzaChgKCR7aGVscGVyKE9QRU5fQkxPQ0spfSgke2Rpc2FibGVUcmFja2luZyA/IGB0cnVlYCA6IGBgfSksIGApO1xuICB9XG4gIGlmIChwdXJlKSB7XG4gICAgcHVzaChQVVJFX0FOTk9UQVRJT04pO1xuICB9XG4gIGNvbnN0IGNhbGxIZWxwZXIgPSBpc0Jsb2NrID8gZ2V0Vk5vZGVCbG9ja0hlbHBlcihjb250ZXh0LmluU1NSLCBpc0NvbXBvbmVudCkgOiBnZXRWTm9kZUhlbHBlcihjb250ZXh0LmluU1NSLCBpc0NvbXBvbmVudCk7XG4gIHB1c2goaGVscGVyKGNhbGxIZWxwZXIpICsgYChgLCAtMiAvKiBOb25lICovLCBub2RlKTtcbiAgZ2VuTm9kZUxpc3QoXG4gICAgZ2VuTnVsbGFibGVBcmdzKFt0YWcsIHByb3BzLCBjaGlsZHJlbiwgcGF0Y2hGbGFnU3RyaW5nLCBkeW5hbWljUHJvcHNdKSxcbiAgICBjb250ZXh0XG4gICk7XG4gIHB1c2goYClgKTtcbiAgaWYgKGlzQmxvY2spIHtcbiAgICBwdXNoKGApYCk7XG4gIH1cbiAgaWYgKGRpcmVjdGl2ZXMpIHtcbiAgICBwdXNoKGAsIGApO1xuICAgIGdlbk5vZGUoZGlyZWN0aXZlcywgY29udGV4dCk7XG4gICAgcHVzaChgKWApO1xuICB9XG59XG5mdW5jdGlvbiBnZW5OdWxsYWJsZUFyZ3MoYXJncykge1xuICBsZXQgaSA9IGFyZ3MubGVuZ3RoO1xuICB3aGlsZSAoaS0tKSB7XG4gICAgaWYgKGFyZ3NbaV0gIT0gbnVsbCkgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIGFyZ3Muc2xpY2UoMCwgaSArIDEpLm1hcCgoYXJnKSA9PiBhcmcgfHwgYG51bGxgKTtcbn1cbmZ1bmN0aW9uIGdlbkNhbGxFeHByZXNzaW9uKG5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBwdXNoLCBoZWxwZXIsIHB1cmUgfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGNhbGxlZSA9IGlzU3RyaW5nKG5vZGUuY2FsbGVlKSA/IG5vZGUuY2FsbGVlIDogaGVscGVyKG5vZGUuY2FsbGVlKTtcbiAgaWYgKHB1cmUpIHtcbiAgICBwdXNoKFBVUkVfQU5OT1RBVElPTik7XG4gIH1cbiAgcHVzaChjYWxsZWUgKyBgKGAsIC0yIC8qIE5vbmUgKi8sIG5vZGUpO1xuICBnZW5Ob2RlTGlzdChub2RlLmFyZ3VtZW50cywgY29udGV4dCk7XG4gIHB1c2goYClgKTtcbn1cbmZ1bmN0aW9uIGdlbk9iamVjdEV4cHJlc3Npb24obm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IHB1c2gsIGluZGVudCwgZGVpbmRlbnQsIG5ld2xpbmUgfSA9IGNvbnRleHQ7XG4gIGNvbnN0IHsgcHJvcGVydGllcyB9ID0gbm9kZTtcbiAgaWYgKCFwcm9wZXJ0aWVzLmxlbmd0aCkge1xuICAgIHB1c2goYHt9YCwgLTIgLyogTm9uZSAqLywgbm9kZSk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IG11bHRpbGluZXMgPSBwcm9wZXJ0aWVzLmxlbmd0aCA+IDEgfHwgISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSAmJiBwcm9wZXJ0aWVzLnNvbWUoKHApID0+IHAudmFsdWUud
15HlwZSAhPT0gNCk7XG4gIHB1c2gobXVsdGlsaW5lcyA/IGB7YCA6IGB7IGApO1xuICBtdWx0aWxpbmVzICYmIGluZGVudCgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3BlcnRpZXMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCB7IGtleSwgdmFsdWUgfSA9IHByb3BlcnRpZXNbaV07XG4gICAgZ2VuRXhwcmVzc2lvbkFzUHJvcGVydHlLZXkoa2V5LCBjb250ZXh0KTtcbiAgICBwdXNoKGA6IGApO1xuICAgIGdlbk5vZGUodmFsdWUsIGNvbnRleHQpO1xuICAgIGlmIChpIDwgcHJvcGVydGllcy5sZW5ndGggLSAxKSB7XG4gICAgICBwdXNoKGAsYCk7XG4gICAgICBuZXdsaW5lKCk7XG4gICAgfVxuICB9XG4gIG11bHRpbGluZXMgJiYgZGVpbmRlbnQoKTtcbiAgcHVzaChtdWx0aWxpbmVzID8gYH1gIDogYCB9YCk7XG59XG5mdW5jdGlvbiBnZW5BcnJheUV4cHJlc3Npb24obm9kZSwgY29udGV4dCkge1xuICBnZW5Ob2RlTGlzdEFzQXJyYXkobm9kZS5lbGVtZW50cywgY29udGV4dCk7XG59XG5mdW5jdGlvbiBnZW5GdW5jdGlvbkV4cHJlc3Npb24obm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IHB1c2gsIGluZGVudCwgZGVpbmRlbnQgfSA9IGNvbnRleHQ7XG4gIGNvbnN0IHsgcGFyYW1zLCByZXR1cm5zLCBib2R5LCBuZXdsaW5lLCBpc1Nsb3QgfSA9IG5vZGU7XG4gIGlmIChpc1Nsb3QpIHtcbiAgICBwdXNoKGBfJHtoZWxwZXJOYW1lTWFwW1dJVEhfQ1RYXX0oYCk7XG4gIH1cbiAgcHVzaChgKGAsIC0yIC8qIE5vbmUgKi8sIG5vZGUpO1xuICBpZiAoaXNBcnJheShwYXJhbXMpKSB7XG4gICAgZ2VuTm9kZUxpc3QocGFyYW1zLCBjb250ZXh0KTtcbiAgfSBlbHNlIGlmIChwYXJhbXMpIHtcbiAgICBnZW5Ob2RlKHBhcmFtcywgY29udGV4dCk7XG4gIH1cbiAgcHVzaChgKSA9PiBgKTtcbiAgaWYgKG5ld2xpbmUgfHwgYm9keSkge1xuICAgIHB1c2goYHtgKTtcbiAgICBpbmRlbnQoKTtcbiAgfVxuICBpZiAocmV0dXJucykge1xuICAgIGlmIChuZXdsaW5lKSB7XG4gICAgICBwdXNoKGByZXR1cm4gYCk7XG4gICAgfVxuICAgIGlmIChpc0FycmF5KHJldHVybnMpKSB7XG4gICAgICBnZW5Ob2RlTGlzdEFzQXJyYXkocmV0dXJucywgY29udGV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGdlbk5vZGUocmV0dXJucywgY29udGV4dCk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGJvZHkpIHtcbiAgICBnZW5Ob2RlKGJvZHksIGNvbnRleHQpO1xuICB9XG4gIGlmIChuZXdsaW5lIHx8IGJvZHkpIHtcbiAgICBkZWluZGVudCgpO1xuICAgIHB1c2goYH1gKTtcbiAgfVxuICBpZiAoaXNTbG90KSB7XG4gICAgaWYgKG5vZGUuaXNOb25TY29wZWRTbG90KSB7XG4gICAgICBwdXNoKGAsIHVuZGVmaW5lZCwgdHJ1ZWApO1xuICAgIH1cbiAgICBwdXNoKGApYCk7XG4gIH1cbn1cbmZ1bmN0aW9uIGdlbkNvbmRpdGlvbmFsRXhwcmVzc2lvbihub2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgdGVzdCwgY29uc2VxdWVudCwgYWx0ZXJuYXRlLCBuZXdsaW5lOiBuZWVkTmV3bGluZSB9ID0gbm9kZTtcbiAgY29uc3QgeyBwdXNoLCBpbmRlbnQsIGRlaW5kZW50LCBuZXdsaW5lIH0gPSBjb250ZXh0O1xuICBpZiAodGVzdC50eXBlID09PSA0KSB7XG4gICAgY29uc3QgbmVlZHNQYXJlbnMgPSAhaXNTaW1wbGVJZGVudGlmaWVyKHRlc3QuY29udGVudCk7XG4gICAgbmVlZHNQYXJlbnMgJiYgcHVzaChgKGApO1xuICAgIGdlbkV4cHJlc3Npb24odGVzdCwgY29udGV4dCk7XG4gICAgbmVlZHNQYXJlbnMgJiYgcHVzaChgKWApO1xuICB9IGVsc2Uge1xuICAgIHB1c2goYChgKTtcbiAgICBnZW5Ob2RlKHRlc3QsIGNvbnRleHQpO1xuICAgIHB1c2goYClgKTtcbiAgfVxuICBuZWVkTmV3bGluZSAmJiBpbmRlbnQoKTtcbiAgY29udGV4dC5pbmRlbnRMZXZlbCsrO1xuICBuZWVkTmV3bGluZSB8fCBwdXNoKGAgYCk7XG4gIHB1c2goYD8gYCk7XG4gIGdlbk5vZGUoY29uc2VxdWVudCwgY29udGV4dCk7XG4gIGNvbnRleHQuaW5kZW50TGV2ZWwtLTtcbiAgbmVlZE5ld2xpbmUgJiYgbmV3bGluZSgpO1xuICBuZWVkTmV3bGluZSB8fCBwdXNoKGAgYCk7XG4gIHB1c2goYDogYCk7XG4gIGNvbnN0IGlzTmVzdGVkID0gYWx0ZXJuYXRlLnR5cGUgPT09IDE5O1xuICBpZiAoIWlzTmVzdGVkKSB7XG4gICAgY29udGV4dC5pbmRlbnRMZXZlbCsrO1xuICB9XG4gIGdlbk5vZGUoYWx0ZXJuYXRlLCBjb250ZXh0KTtcbiAgaWYgKCFpc05lc3RlZCkge1xuICAgIGNvbnRleHQuaW5kZW50TGV2ZWwtLTtcbiAgfVxuICBuZWVkTmV3bGluZSAmJiBkZWluZGVudChcbiAgICB0cnVlXG4gICAgLyogd2l0aG91dCBuZXdsaW5lICovXG4gICk7XG59XG5mdW5jdGlvbiBnZW5DYWNoZUV4cHJlc3Npb24obm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IHB1c2gsIGhlbHBlciwgaW5kZW50LCBkZWluZGVudCwgbmV3bGluZSB9ID0gY29udGV4dDtcbiAgcHVzaChgX2NhY2hlWyR7bm9kZS5pbmRleH1dIHx8IChgKTtcbiAgaWYgKG5vZGUuaXNWT25jZSkge1xuICAgIGluZGVudCgpO1xuICAgIHB1c2goYCR7aGVscGVyKFNFVF9CTE9DS19UUkFDS0lORyl9KC0xKSxgKTtcbiAgICBuZXdsaW5lKCk7XG4gICAgcHVzaChgKGApO1xuICB9XG4gIHB1c2goYF9jYWNoZVske25vZGUuaW5kZXh9XSA9IGApO1xuICBnZW5Ob2RlKG5vZGUudmFsdWUsIGNvbnRleHQpO1xuICBpZiAobm9kZS5pc1ZPbmNlKSB7XG4gICAgcHVzaChgKS5jYWNoZUluZGV4ID0gJHtub2RlLmluZGV4fSxgKTtcbiAgICBuZXdsaW5lKCk7XG4gICAgcHVzaChgJHtoZWxwZXIoU0VUX0JMT0NLX1RSQUNLSU5HKX0oMSksYCk7XG4gICAgbmV3bGluZSgpO1xuICAgIHB1c2goYF9jYWNoZVske25vZGUuaW5kZXh9XWApO1xuICAgIGRlaW5kZW50KCk7XG4gIH1cbiAgcHVzaChgKWApO1xufVxuXG5jb25zdCBwcm9oaWJpdGVkS2V5d29yZFJFID0gbmV3IFJlZ0V4cChcbiAgXCJcXFxcYlwiICsgXCJhcmd1bWVudHMsYXdhaXQsYnJlYWssY2FzZSxjYXRjaCxjbGFzcyxjb25zdCxjb250aW51ZSxkZWJ1Z2dlcixkZWZhdWx0LGRlbGV0ZSxkbyxlbHNlLGV4cG9ydCxleHRlbmRzLGZpbmFsbHksZm9yLGZ1bmN0aW9uLGlmLGltcG9ydCxsZXQsbmV3LHJldHVybixzdXBlcixzd2l0Y2gsdGhyb3csdHJ5L
15HZhcix2b2lkLHdoaWxlLHdpdGgseWllbGRcIi5zcGxpdChcIixcIikuam9pbihcIlxcXFxifFxcXFxiXCIpICsgXCJcXFxcYlwiXG4pO1xuY29uc3Qgc3RyaXBTdHJpbmdSRSA9IC8nKD86W14nXFxcXF18XFxcXC4pKid8XCIoPzpbXlwiXFxcXF18XFxcXC4pKlwifGAoPzpbXmBcXFxcXXxcXFxcLikqXFwkXFx7fFxcfSg/OlteYFxcXFxdfFxcXFwuKSpgfGAoPzpbXmBcXFxcXXxcXFxcLikqYC9nO1xuZnVuY3Rpb24gdmFsaWRhdGVCcm93c2VyRXhwcmVzc2lvbihub2RlLCBjb250ZXh0LCBhc1BhcmFtcyA9IGZhbHNlLCBhc1Jhd1N0YXRlbWVudHMgPSBmYWxzZSkge1xuICBjb25zdCBleHAgPSBub2RlLmNvbnRlbnQ7XG4gIGlmICghZXhwLnRyaW0oKSkge1xuICAgIHJldHVybjtcbiAgfVxuICB0cnkge1xuICAgIG5ldyBGdW5jdGlvbihcbiAgICAgIGFzUmF3U3RhdGVtZW50cyA/IGAgJHtleHB9IGAgOiBgcmV0dXJuICR7YXNQYXJhbXMgPyBgKCR7ZXhwfSkgPT4ge31gIDogYCgke2V4cH0pYH1gXG4gICAgKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGxldCBtZXNzYWdlID0gZS5tZXNzYWdlO1xuICAgIGNvbnN0IGtleXdvcmRNYXRjaCA9IGV4cC5yZXBsYWNlKHN0cmlwU3RyaW5nUkUsIFwiXCIpLm1hdGNoKHByb2hpYml0ZWRLZXl3b3JkUkUpO1xuICAgIGlmIChrZXl3b3JkTWF0Y2gpIHtcbiAgICAgIG1lc3NhZ2UgPSBgYXZvaWQgdXNpbmcgSmF2YVNjcmlwdCBrZXl3b3JkIGFzIHByb3BlcnR5IG5hbWU6IFwiJHtrZXl3b3JkTWF0Y2hbMF19XCJgO1xuICAgIH1cbiAgICBjb250ZXh0Lm9uRXJyb3IoXG4gICAgICBjcmVhdGVDb21waWxlckVycm9yKFxuICAgICAgICA0NSxcbiAgICAgICAgbm9kZS5sb2MsXG4gICAgICAgIHZvaWQgMCxcbiAgICAgICAgbWVzc2FnZVxuICAgICAgKVxuICAgICk7XG4gIH1cbn1cblxuY29uc3QgdHJhbnNmb3JtRXhwcmVzc2lvbiA9IChub2RlLCBjb250ZXh0KSA9PiB7XG4gIGlmIChub2RlLnR5cGUgPT09IDUpIHtcbiAgICBub2RlLmNvbnRlbnQgPSBwcm9jZXNzRXhwcmVzc2lvbihcbiAgICAgIG5vZGUuY29udGVudCxcbiAgICAgIGNvbnRleHRcbiAgICApO1xuICB9IGVsc2UgaWYgKG5vZGUudHlwZSA9PT0gMSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5wcm9wcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgZGlyID0gbm9kZS5wcm9wc1tpXTtcbiAgICAgIGlmIChkaXIudHlwZSA9PT0gNyAmJiBkaXIubmFtZSAhPT0gXCJmb3JcIikge1xuICAgICAgICBjb25zdCBleHAgPSBkaXIuZXhwO
151xuICAgICAgICBjb25zdCBhcmcgPSBkaXIuYXJnO1xuICAgICAgICBpZiAoZXhwICYmIGV4cC50eXBlID09PSA0ICYmICEoZGlyLm5hbWUgPT09IFwib25cIiAmJiBhcmcpKSB7XG4gICAgICAgICAgZGlyLmV4cCA9IHByb2Nlc3NFeHByZXNzaW9uKFxuICAgICAgICAgICAgZXhwLFxuICAgICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICAgIC8vIHNsb3QgYXJncyBtdXN0IGJlIHByb2Nlc3NlZCBhcyBmdW5jdGlvbiBwYXJhbXNcbiAgICAgICAgICAgIGRpci5uYW1lID09PSBcInNsb3RcIlxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFyZyAmJiBhcmcudHlwZSA9PT0gNCAmJiAhYXJnLmlzU3RhdGljKSB7XG4gICAgICAgICAgZGlyLmFyZyA9IHByb2Nlc3NFeHByZXNzaW9uKGFyZywgY29udGV4dCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5mdW5jdGlvbiBwcm9jZXNzRXhwcmVzc2lvbihub2RlLCBjb250ZXh0LCBhc1BhcmFtcyA9IGZhbHNlLCBhc1Jhd1N0YXRlbWVudHMgPSBmYWxzZSwgbG9jYWxWYXJzID0gT2JqZWN0LmNyZWF0ZShjb250ZXh0LmlkZW50aWZpZXJzKSkge1xuICB7XG4gICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikpIHtcbiAgICAgIHZhbGlkYXRlQnJvd3NlckV4cHJlc3Npb24obm9kZSwgY29udGV4dCwgYXNQYXJhbXMsIGFzUmF3U3RhdGVtZW50cyk7XG4gICAgfVxuICAgIHJldHVybiBub2RlO1xuICB9XG59XG5mdW5jdGlvbiBzdHJpbmdpZnlFeHByZXNzaW9uKGV4cCkge1xuICBpZiAoaXNTdHJpbmcoZXhwKSkge1xuICAgIHJldHVybiBleHA7XG4gIH0gZWxzZSBpZiAoZXhwLnR5cGUgPT09IDQpIHtcbiAgICByZXR1cm4gZXhwLmNvbnRlbnQ7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGV4cC5jaGlsZHJlbi5tYXAoc3RyaW5naWZ5RXhwcmVzc2lvbikuam9pbihcIlwiKTtcbiAgfVxufVxuXG5jb25zdCB0cmFuc2Zvcm1JZiA9IGNyZWF0ZVN0cnVjdHVyYWxEaXJlY3RpdmVUcmFuc2Zvcm0oXG4gIC9eKGlmfGVsc2V8ZWxzZS1pZikkLyxcbiAgKG5vZGUsIGRpciwgY29udGV4dCkgPT4ge1xuICAgIHJldHVybiBwcm9jZXNzSWYobm9kZSwgZGlyLCBjb250ZXh0LCAoaWZOb2RlLCBicmFuY2gsIGlzUm9vdCkgPT4ge1xuICAgICAgY29uc3Qgc2libGluZ3MgPSBjb250ZXh0LnBhcmVudC5jaGlsZHJlbjtcbiAgICAgIGxldCBpID0gc2libGluZ3MuaW5kZXhPZihpZk5vZGUpO1xuICAgICAgbGV0IGtleSA9IDA7XG4gICAgICB3aGlsZSAoaS0tID49IDApIHtcbiAgICAgICAgY29uc3Qgc2libGluZyA9IHNpYmxpbmdzW2ldO1xuICAgICAgICBpZiAoc2libGluZyAmJiBzaWJsaW5nLnR5cGUgPT09IDkpIHtcbiAgICAgICAgICBrZXkgKz0gc2libGluZy5icmFuY2hlcy5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGlmIChpc1Jvb3QpIHtcbiAgICAgICAgICBpZk5vZGUuY29kZWdlbk5vZGUgPSBjcmVhdGVDb2RlZ2VuTm9kZUZvckJyYW5jaChcbiAgICAgICAgICAgIGJyYW5jaCxcbiAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgIGNvbnRleHRcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHBhcmVudENvbmRpdGlvbiA9IGdldFBhcmVudENvbmRpdGlvbihpZk5vZGUuY29kZWdlbk5vZGUpO1xuICAgICAgICAgIHBhcmVudENvbmRpdGlvbi5hbHRlcm5hdGUgPSBjcmVhdGVDb2RlZ2VuTm9kZUZvckJyYW5jaChcbiAgICAgICAgICAgIGJyYW5jaCxcbiAgICAgICAgICAgIGtleSArIGlmTm9kZS5icmFuY2hlcy5sZW5ndGggLSAxLFxuICAgICAgICAgICAgY29udGV4dFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSk7XG4gIH1cbik7XG5mdW5jdGlvbiBwcm9jZXNzSWYobm9kZSwgZGlyLCBjb250ZXh0LCBwcm9jZXNzQ29kZWdlbikge1xuICBpZiAoZGlyLm5hbWUgIT09IFwiZWxzZVwiICYmICghZGlyLmV4cCB8fCAhZGlyLmV4cC5jb250ZW50LnRyaW0oKSkpIHtcbiAgICBjb25zdCBsb2MgPSBkaXIuZXhwID8gZGlyLmV4cC5sb2MgOiBub2RlLmxvYztcbiAgICBjb250ZXh0Lm9uRXJyb3IoXG4gICAgICBjcmVhdGVDb21waWxlckVycm9yKDI4LCBkaXIubG9jKVxuICAgICk7XG4gICAgZGlyLmV4cCA9IGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oYHRydWVgLCBmYWxzZSwgbG9jKTtcbiAgfVxuICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSAmJiB0cnVlICYmIGRpci5leHApIHtcbiAgICB2YWxpZGF0ZUJyb3dzZXJFeHByZXNzaW9uKGRpci5leHAsIGNvbnRleHQpO1xuICB9XG4gIGlmIChkaXIubmFtZSA9PT0gXCJpZlwiKSB7XG4gICAgY29uc3QgYnJhbmNoID0gY3JlYXRlSWZCcmFuY2gobm9kZSwgZGlyKTtcbiAgICBjb25zdCBpZk5vZGUgPSB7XG4gICAgICB0eXBlOiA5LFxuICAgICAgbG9jOiBub2RlLmxvYyxcbiAgICAgIGJyYW5jaGVzOiBbYnJhbmNoXVxuICAgIH07XG4gICAgY29udGV4dC5yZXBsYWNlTm9kZShpZk5vZGUpO1xuICAgIGlmIChwcm9jZXNzQ29kZWdlbikge1xuICAgICAgcmV0dXJuIHByb2Nlc3NDb2RlZ2VuKGlmTm9kZSwgYnJhbmNoLCB0cnVlKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29uc3Qgc2libGluZ3MgPSBjb250ZXh0LnBhcmVudC5jaGlsZHJlbjtcbiAgICBjb25zdCBjb21tZW50cyA9IFtdO1xuICAgIGxldCBpID0gc2libGluZ3MuaW5kZXhPZihub2RlKTtcbiAgICB3aGlsZSAoaS0tID49IC0xKSB7XG4gICAgICBjb25zdCBzaWJsaW5nID0gc2libGluZ3NbaV07XG4gICAgICBpZiAoc2libGluZyAmJiBzaWJsaW5nLnR5cGUgPT09IDMpIHtcbiAgICAgICAgY29udGV4dC5yZW1vdmVOb2RlKHNpYmxpbmcpO1xuICAgICAgICAhIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpICYmIGNvbW1lbnRzLnVuc2hpZnQoc2libGluZyk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKHNpYmxpbmcgJiYgc2libGluZy50eXBlID09PSA
15yICYmICFzaWJsaW5nLmNvbnRlbnQudHJpbSgpLmxlbmd0aCkge1xuICAgICAgICBjb250ZXh0LnJlbW92ZU5vZGUoc2libGluZyk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKHNpYmxpbmcgJiYgc2libGluZy50eXBlID09PSA5KSB7XG4gICAgICAgIGlmIChkaXIubmFtZSA9PT0gXCJlbHNlLWlmXCIgJiYgc2libGluZy5icmFuY2hlc1tzaWJsaW5nLmJyYW5jaGVzLmxlbmd0aCAtIDFdLmNvbmRpdGlvbiA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgY29udGV4dC5vbkVycm9yKFxuICAgICAgICAgICAgY3JlYXRlQ29tcGlsZXJFcnJvcigzMCwgbm9kZS5sb2MpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBjb250ZXh0LnJlbW92ZU5vZGUoKTtcbiAgICAgICAgY29uc3QgYnJhbmNoID0gY3JlYXRlSWZCcmFuY2gobm9kZSwgZGlyKTtcbiAgICAgICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgJiYgY29tbWVudHMubGVuZ3RoICYmIC8vICMzNjE5IGlnbm9yZSBjb21tZW50cyBpZiB0aGUgdi1pZiBpcyBkaXJlY3QgY2hpbGQgb2YgPHRyYW5zaXRpb24+XG4gICAgICAgICEoY29udGV4dC5wYXJlbnQgJiYgY29udGV4dC5wYXJlbnQudHlwZSA9PT0gMSAmJiAoY29udGV4dC5wYXJlbnQudGFnID09PSBcInRyYW5zaXRpb25cIiB8fCBjb250ZXh0LnBhcmVudC50YWcgPT09IFwiVHJhbnNpdGlvblwiKSkpIHtcbiAgICAgICAgICBicmFuY2guY2hpbGRyZW4gPSBbLi4uY29tbWVudHMsIC4uLmJyYW5jaC5jaGlsZHJlbl07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgfHwgZmFsc2UpIHtcbiAgICAgICAgICBjb25zdCBrZXkgPSBicmFuY2gudXNlcktleTtcbiAgICAgICAgICBpZiAoa2V5KSB7XG4gICAgICAgICAgICBzaWJsaW5nLmJyYW5jaGVzLmZvckVhY2goKHsgdXNlcktleSB9KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChpc1NhbWVLZXkodXNlcktleSwga2V5KSkge1xuICAgICAgICAgICAgICAgIGNvbnRleHQub25FcnJvcihcbiAgICAgICAgICAgICAgICAgIGNyZWF0ZUNvbXBpbGVyRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIDI5LFxuICAgICAgICAgICAgICAgICAgICBicmFuY2gudXNlcktleS5sb2NcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgc2libGluZy5icmFuY2hlcy5wdXNoKGJyYW5jaCk7XG4gICAgICAgIGNvbnN0IG9uRXhpdCA9IHByb2Nlc3NDb2RlZ2VuICYmIHByb2Nlc3NDb2RlZ2VuKHNpYmxpbmcsIGJyYW5jaCwgZmFsc2UpO1xuICAgICAgICB0cmF2ZXJzZU5vZGUoYnJhbmNoLCBjb250ZXh0KTtcbiAgICAgICAgaWYgKG9uRXhpdCkgb25FeGl0KCk7XG4gICAgICAgIGNvbnRleHQuY3VycmVudE5vZGUgPSBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29udGV4dC5vbkVycm9yKFxuICAgICAgICAgIGNyZWF0ZUNvbXBpbGVyRXJyb3IoMzAsIG5vZGUubG9jKVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG59XG5mdW5jdGlvbiBjcmVhdGVJZkJyYW5jaChub2RlLCBkaXIpIHtcbiAgY29uc3QgaXNUZW1wbGF0ZUlmID0gbm9kZS50YWdUeXBlID09PSAzO1xuICByZXR1cm4ge1xuICAgIHR5cGU6IDEwLFxuICAgIGxvYzogbm9kZS5sb2MsXG4gICAgY29uZGl0aW9uOiBkaXIubmFtZSA9PT0gXCJlbHNlXCIgPyB2b2lkIDAgOiBkaXIuZXhwLFxuICAgIGNoaWxkcmVuOiBpc1RlbXBsYXRlSWYgJiYgIWZpbmREaXIobm9kZSwgXCJmb3JcIikgPyBub2RlLmNoaWxkcmVuIDogW25vZGVdLFxuICAgIHVzZXJLZXk6IGZpbmRQcm9wKG5vZGUsIGBrZXlgKSxcbiAgICBpc1RlbXBsYXRlSWZcbiAgfTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUNvZGVnZW5Ob2RlRm9yQnJhbmNoKGJyYW5jaCwga2V5SW5kZXgsIGNvbnRleHQpIHtcbiAgaWYgKGJyYW5jaC5jb25kaXRpb24pIHtcbiAgICByZXR1cm4gY3JlYXRlQ29uZGl0aW9uYWxFeHByZXNzaW9uKFxuICAgICAgYnJhbmNoLmNvbmRpdGlvbixcbiAgICAgIGNyZWF0ZUNoaWxkcmVuQ29kZWdlbk5vZGUoYnJhbmNoLCBrZXlJbmRleCwgY29udGV4dCksXG4gICAgICAvLyBtYWtlIHN1cmUgdG8gcGFzcyBpbiBhc0Jsb2NrOiB0cnVlIHNvIHRoYXQgdGhlIGNvbW1lbnQgbm9kZSBjYWxsXG4gICAgICAvLyBjbG9zZXMgdGhlIGN1cnJlbnQgYmxvY2suXG4gICAgICBjcmVhdGVDYWxsRXhwcmVzc2lvbihjb250ZXh0LmhlbHBlcihDUkVBVEVfQ09NTUVOVCksIFtcbiAgICAgICAgISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSA/ICdcInYtaWZcIicgOiAnXCJcIicsXG4gICAgICAgIFwidHJ1ZVwiXG4gICAgICBdKVxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGNyZWF0ZUNoaWxkcmVuQ29kZWdlbk5vZGUoYnJhbmNoLCBrZXlJbmRleCwgY29udGV4dCk7XG4gIH1cbn1cbmZ1bmN0aW9uIGNyZWF0ZUNoaWxkcmVuQ29kZWdlbk5vZGUoYnJhbmNoLCBrZXlJbmRleCwgY29udGV4dCkge1xuICBjb25zdCB7IGhlbHBlciB9ID0gY29udGV4dDtcbiAgY29uc3Qga2V5UHJvcGVydHkgPSBjcmVhdGVPYmplY3RQcm9wZXJ0eShcbiAgICBga2V5YCxcbiAgICBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKFxuICAgICAgYCR7a2V5SW5kZXh9YCxcbiAgICAgIGZhbHNlLFxuICAgICAgbG9jU3R1YixcbiAgICAgIDJcbiAgICApXG4gICk7XG4gIGNvbnN0IHsgY2hpbGRyZW4gfSA9IGJyYW5jaDtcbiAgY29uc3QgZmlyc3RDaGlsZCA9IGNoaWxkcmVuWzBdO1xuICBjb25zdCBuZWVkRnJhZ21lbnRXcmFwcGVyID0gY2hpbGRyZW4ubGVuZ3RoICE9PSAxIHx8IGZpcnN0Q2hpbGQudHlwZSAhPT0gMTtcbiAgaWYgKG5lZWRGcmFnbWVudFdyYXBwZXIpIHtcbiAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoID09PSAxICYmIGZpcnN0Q2hpbGQudHlwZSA9PT0gMTEpIHtcbiAgICAgIGNvbnN0IHZub2RlQ2FsbCA9IGZpcnN0Q2hpbGQuY29kZWdlbk5vZGU7XG4gICAgICBpbmplY3RQcm9wKHZub2RlQ2FsbCwga2V5UHJvcGVydHksIGNvbnRleHQpO1xuICAgICAgcmV0dXJuIHZub2RlQ2FsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IHBhdGNoRmxhZyA9IDY0O1xuICAgICAgbGV0IHBhdGNoRmxhZ1RleHQgPSBQYXRjaEZsYWdOYW1lc1s2NF07XG4gICAgICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSAmJiAhYnJhbmNoLmlzVGVtcGxhdGVJZiAmJiBjaGlsZHJlbi5maWx0ZXIoKGMpID0+IGMudHlwZSAhPT0gMykubGVuZ3RoID09PSAxKSB7XG4gICAgICAgI
15HBhdGNoRmxhZyB8PSAyMDQ4O1xuICAgICAgICBwYXRjaEZsYWdUZXh0ICs9IGAsICR7UGF0Y2hGbGFnTmFtZXNbMjA0OF19YDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjcmVhdGVWTm9kZUNhbGwoXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIGhlbHBlcihGUkFHTUVOVCksXG4gICAgICAgIGNyZWF0ZU9iamVjdEV4cHJlc3Npb24oW2tleVByb3BlcnR5XSksXG4gICAgICAgIGNoaWxkcmVuLFxuICAgICAgICBwYXRjaEZsYWcsXG4gICAgICAgIHZvaWQgMCxcbiAgICAgICAgdm9pZCAwLFxuICAgICAgICB0cnVlLFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIGJyYW5jaC5sb2NcbiAgICAgICk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGNvbnN0IHJldCA9IGZpcnN0Q2hpbGQuY29kZWdlbk5vZGU7XG4gICAgY29uc3Qgdm5vZGVDYWxsID0gZ2V0TWVtb2VkVk5vZGVDYWxsKHJldCk7XG4gICAgaWYgKHZub2RlQ2FsbC50eXBlID09PSAxMykge1xuICAgICAgY29udmVydFRvQmxvY2sodm5vZGVDYWxsLCBjb250ZXh0KTtcbiAgICB9XG4gICAgaW5qZWN0UHJvcCh2bm9kZUNhbGwsIGtleVByb3BlcnR5LCBjb250ZXh0KTtcbiAgICByZXR1cm4gcmV0O1xuICB9XG59XG5mdW5jdGlvbiBpc1NhbWVLZXkoYSwgYikge1xuICBpZiAoIWEgfHwgYS50eXBlICE9PSBiLnR5cGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKGEudHlwZSA9PT0gNikge1xuICAgIGlmIChhLnZhbHVlLmNvbnRlbnQgIT09IGIudmFsdWUuY29udGVudCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjb25zdCBleHAgPSBhLmV4cDtcbiAgICBjb25zdCBicmFuY2hFeHAgPSBiLmV4cDtcbiAgICBpZiAoZXhwLnR5cGUgIT09IGJyYW5jaEV4cC50eXBlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChleHAudHlwZSAhPT0gNCB8fCBleHAuaXNTdGF0aWMgIT09IGJyYW5jaEV4cC5pc1N0YXRpYyB8fCBleHAuY29udGVudCAhPT0gYnJhbmNoRXhwLmNvbnRlbnQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5mdW5jdGlvbiBnZXRQYXJlbnRDb25kaXRpb24obm9kZSkge1xuICB3aGlsZSAodHJ1ZSkge1xuICAgIGlmIChub2RlLnR5cGUgPT09IDE5KSB7XG4gICAgICBpZiAobm9kZS5hbHRlcm5hdGUudHlwZSA9PT0gMTkpIHtcbiAgICAgICAgbm9kZSA9IG5vZGUuYWx0ZXJuYXRlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChub2RlLnR5cGUgPT09IDIwKSB7XG4gICAgICBub2RlID0gbm9kZS52YWx1ZTtcbiAgICB9XG4gIH1cbn1cblxuY29uc3QgdHJhbnNmb3JtQmluZCA9IChkaXIsIF9ub2RlLCBjb250ZXh0KSA9PiB7XG4gIGNvbnN0IHsgbW9kaWZpZXJzLCBsb2MgfSA9IGRpcjtcbiAgY29uc3QgYXJnID0gZGlyLmFyZztcbiAgbGV0IHsgZXhwIH0gPSBkaXI7XG4gIGlmIChleHAgJiYgZXhwLnR5cGUgPT09IDQgJiYgIWV4cC5jb250ZW50LnRyaW0oKSkge1xuICAgIHtcbiAgICAgIGV4cCA9IHZvaWQgMDtcbiAgICB9XG4gIH1cbiAgaWYgKCFleHApIHtcbiAgICBpZiAoYXJnLnR5cGUgIT09IDQgfHwgIWFyZy5pc1N0YXRpYykge1xuICAgICAgY29udGV4dC5vbkVycm9yKFxuICAgICAgICBjcmVhdGVDb21waWxlckVycm9yKFxuICAgICAgICAgIDUyLFxuICAgICAgICAgIGFyZy5sb2NcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHByb3BzOiBbXG4gICAgICAgICAgY3JlYXRlT2JqZWN0UHJvcGVydHkoYXJnLCBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKFwiXCIsIHRydWUsIGxvYykpXG4gICAgICAgIF1cbiAgICAgIH07XG4gICAgfVxuICAgIHRyYW5zZm9ybUJpbmRTaG9ydGhhbmQoZGlyKTtcbiAgICBleHAgPSBkaXIuZXhwO
151xuICB9XG4gIGlmIChhcmcudHlwZSAhPT0gNCkge1xuICAgIGFyZy5jaGlsZHJlbi51bnNoaWZ0KGAoYCk7XG4gICAgYXJnLmNoaWxkcmVuLnB1c2goYCkgfHwgXCJcImApO1xuICB9IGVsc2UgaWYgKCFhcmcuaXNTdGF0aWMpIHtcbiAgICBhcmcuY29udGVudCA9IGAke2FyZy5jb250ZW50fSB8fCBcIlwiYDtcbiAgfVxuICBpZiAobW9kaWZpZXJzLmluY2x1ZGVzKFwiY2FtZWxcIikpIHtcbiAgICBpZiAoYXJnLnR5cGUgPT09IDQpIHtcbiAgICAgIGlmIChhcmcuaXNTdGF0aWMpIHtcbiAgICAgICAgYXJnLmNvbnRlbnQgPSBjYW1lbGl6ZShhcmcuY29udGVudCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhcmcuY29udGVudCA9IGAke2NvbnRleHQuaGVscGVyU3RyaW5nKENBTUVMSVpFKX0oJHthcmcuY29udGVudH0pYDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgYXJnLmNoaWxkcmVuLnVuc2hpZnQoYCR7Y29udGV4dC5oZWxwZXJTdHJpbmcoQ0FNRUxJWkUpfShgKTtcbiAgICAgIGFyZy5jaGlsZHJlbi5wdXNoKGApYCk7XG4gICAgfVxuICB9XG4gIGlmICghY29udGV4dC5pblNTUikge1xuICAgIGlmIChtb2RpZmllcnMuaW5jbHVkZXMoXCJwcm9wXCIpKSB7XG4gICAgICBpbmplY3RQcmVmaXgoYXJnLCBcIi5cIik7XG4gICAgfVxuICAgIGlmIChtb2RpZmllcnMuaW5jbHVkZXMoXCJhdHRyXCIpKSB7XG4gICAgICBpbmplY3RQcmVmaXgoYXJnLCBcIl5cIik7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgcHJvcHM6IFtjcmVhdGVPYmplY3RQcm9wZXJ0eShhcmcsIGV4cCldXG4gIH07XG59O1xuY29uc3QgdHJhbnNmb3JtQmluZFNob3J0aGFuZCA9IChkaXIsIGNvbnRleHQpID0+IHtcbiAgY29uc3QgYXJnID0gZGlyLmFyZztcbiAgY29uc3QgcHJvcE5hbWUgPSBjYW1lbGl6ZShhcmcuY29udGVudCk7XG4gIGRpci5leHAgPSBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKHByb3BOYW1lLCBmYWxzZSwgYXJnLmxvYyk7XG59O1xuY29uc3QgaW5qZWN0UHJlZml4ID0gKGFyZywgcHJlZml4KSA9PiB7XG4gIGlmIChhcmcudHlwZSA9PT0gNCkge1xuICAgIGlmIChhcmcuaXNTdGF0aWMpIHtcbiAgICAgIGFyZy5jb250ZW50ID0gcHJlZml4ICsgYXJnLmNvbnRlbnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFyZy5jb250ZW50ID0gYFxcYCR7cHJlZml4fVxcJHske2FyZy5jb250ZW50fX1cXGBgO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBhcmcuY2hpbGRyZW4udW5zaGlmdChgJyR7cHJlZml4fScgKyAoYCk7XG4gICAgYXJnLmNoaWxkcmVuLnB1c2goYClgKTtcbiAgfVxufTtcblxuY29uc3QgdHJhbnNmb3JtRm9yID0gY3JlYXRlU3RydWN0dXJhbERpcmVjdGl2ZVRyYW5zZm9ybShcbiAgXCJmb3JcIixcbiAgKG5vZGUsIGRpciwgY29udGV4dCkgPT4ge1xuICAgIGNvbnN0IHsgaGVscGVyLCByZW1vdmVIZWxwZXIgfSA9IGNvbnRleHQ7XG4gICAgcmV0dXJuIHByb2Nlc3NGb3Iobm9kZSwgZGlyLCBjb250ZXh0LCAoZm9yTm9kZSkgPT4ge1xuICAgICAgY29uc3QgcmVuZGVyRXhwID0gY3JlYXRlQ2FsbEV4cHJlc3Npb24oaGVscGVyKFJFTkRFUl9MSVNUKSwgW1xuICAgICAgICBmb3JOb2RlLnNvdXJjZVxuICAgICAgXSk7XG4gICAgICBjb25zdCBpc1RlbXBsYXRlID0gaXNUZW1wbGF0ZU5vZGUobm9kZSk7XG4gICAgICBjb25zdCBtZW1vID0gZmluZERpcihub2RlLCBcIm1lbW9cIik7XG4gICAgICBjb25zdCBrZXlQcm9wID0gZmluZFByb3Aobm9kZSwgYGtleWAsIGZhbHNlLCB0cnVlKTtcbiAgICAgIGlmIChrZXlQcm9wICYmIGtleVByb3AudHlwZSA9PT0gNyAmJiAha2V5UHJvcC5leHApIHtcbiAgICAgICAgdHJhbnNmb3JtQmluZFNob3J0aGFuZChrZXlQcm9wKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGtleUV4cCA9IGtleVByb3AgJiYgKGtleVByb3AudHlwZSA9PT0gNiA/IGtleVByb3AudmFsdWUgPyBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGtleVByb3AudmFsdWUuY29udGVudCwgdHJ1ZSkgOiB2b2lkIDAgOiBrZXlQcm9wLmV4cCk7XG4gICAgICBjb25zdCBrZXlQcm9wZXJ0eSA9IGtleVByb3AgJiYga2V5RXhwID8gY3JlYXRlT2JqZWN0UHJvcGVydHkoYGtleWAsIGtleUV4cCkgOiBudWxsO1xuICAgICAgY29uc3QgaXNTdGFibGVGcmFnbWVudCA9IGZvck5vZGUuc291cmNlLnR5cGUgPT09IDQgJiYgZm9yTm9kZS5zb3VyY2UuY29uc3RUeXBlID4gMDtcbiAgICAgIGNvbnN0IGZyYWdtZW50RmxhZyA9IGlzU3RhYmxlRnJhZ21lbnQgPyA2NCA6IGtleVByb3AgPyAxMjggOiAyNTY7XG4gICAgICBmb3JOb2RlLmNvZGVnZW5Ob2RlID0gY3JlYXRlVk5vZGVDYWxsKFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICBoZWxwZXIoRlJBR01FTlQpLFxuICAgICAgICB2b2lkIDAsXG4gICAgICAgIHJlbmRlckV4cCxcbiAgICAgICAgZnJhZ21lbnRGbGFnLFxuICAgICAgICB2b2lkIDAsXG4gICAgICAgIHZvaWQgMCxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgIWlzU3RhYmxlRnJhZ21lbnQsXG4gICAgICAgIGZhbHNlLFxuICAgICAgICBub2RlLmxvY1xuICAgICAgKTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGxldCBjaGlsZEJsb2NrO1xuICAgICAgICBjb25zdCB7IGNoaWxkcmVuIH0gPSBmb3JOb2RlO1xuICAgICAgICBpZiAoKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgfHwgZmFsc2UpICYmIGlzVGVtcGxhdGUpIHtcbiAgICAgICAgICBub2RlLmNoaWxkcmVuLnNvbWUoKGMpID0+IHtcbiAgICAgICAgICAgIGlmIChjLnR5cGUgPT09IDEpIHtcbiAgICAgICAgICAgICAgY29uc3Qga2V5ID0gZmluZFByb3AoYywgXCJrZXlcIik7XG4gICAgICAgICAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgICAgICAgICBjb250ZXh0Lm9uRXJyb3IoXG4gICAgICAgICAgICAgICAgICBjcmVhdGVDb21waWxlckVycm9yKFxuICAgICAgICAgICAgICAgICAgICAzMyxcbiAgICAgICAgICAgICAgICAgICAga2V5LmxvY1xuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgI
15H1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuZWVkRnJhZ21lbnRXcmFwcGVyID0gY2hpbGRyZW4ubGVuZ3RoICE9PSAxIHx8IGNoaWxkcmVuWzBdLnR5cGUgIT09IDE7XG4gICAgICAgIGNvbnN0IHNsb3RPdXRsZXQgPSBpc1Nsb3RPdXRsZXQobm9kZSkgPyBub2RlIDogaXNUZW1wbGF0ZSAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCA9PT0gMSAmJiBpc1Nsb3RPdXRsZXQobm9kZS5jaGlsZHJlblswXSkgPyBub2RlLmNoaWxkcmVuWzBdIDogbnVsbDtcbiAgICAgICAgaWYgKHNsb3RPdXRsZXQpIHtcbiAgICAgICAgICBjaGlsZEJsb2NrID0gc2xvdE91dGxldC5jb2RlZ2VuTm9kZTtcbiAgICAgICAgICBpZiAoaXNUZW1wbGF0ZSAmJiBrZXlQcm9wZXJ0eSkge1xuICAgICAgICAgICAgaW5qZWN0UHJvcChjaGlsZEJsb2NrLCBrZXlQcm9wZXJ0eSwgY29udGV4dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKG5lZWRGcmFnbWVudFdyYXBwZXIpIHtcbiAgICAgICAgICBjaGlsZEJsb2NrID0gY3JlYXRlVk5vZGVDYWxsKFxuICAgICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICAgIGhlbHBlcihGUkFHTUVOVCksXG4gICAgICAgICAgICBrZXlQcm9wZXJ0eSA/IGNyZWF0ZU9iamVjdEV4cHJlc3Npb24oW2tleVByb3BlcnR5XSkgOiB2b2lkIDAsXG4gICAgICAgICAgICBub2RlLmNoaWxkcmVuLFxuICAgICAgICAgICAgNjQsXG4gICAgICAgICAgICB2b2lkIDAsXG4gICAgICAgICAgICB2b2lkIDAsXG4gICAgICAgICAgICB0cnVlLFxuICAgICAgICAgICAgdm9pZCAwLFxuICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNoaWxkQmxvY2sgPSBjaGlsZHJlblswXS5jb2RlZ2VuTm9kZTtcbiAgICAgICAgICBpZiAoaXNUZW1wbGF0ZSAmJiBrZXlQcm9wZXJ0eSkge1xuICAgICAgICAgICAgaW5qZWN0UHJvcChjaGlsZEJsb2NrLCBrZXlQcm9wZXJ0eSwgY29udGV4dCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChjaGlsZEJsb2NrLmlzQmxvY2sgIT09ICFpc1N0YWJsZUZyYWdtZW50KSB7XG4gICAgICAgICAgICBpZiAoY2hpbGRCbG9jay5pc0Jsb2NrKSB7XG4gICAgICAgICAgICAgIHJlbW92ZUhlbHBlcihPUEVOX0JMT0NLKTtcbiAgICAgICAgICAgICAgcmVtb3ZlSGVscGVyKFxuICAgICAgICAgICAgICAgIGdldFZOb2RlQmxvY2tIZWxwZXIoY29udGV4dC5pblNTUiwgY2hpbGRCbG9jay5pc0NvbXBvbmVudClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlbW92ZUhlbHBlcihcbiAgICAgICAgICAgICAgICBnZXRWTm9kZUhlbHBlcihjb250ZXh0LmluU1NSLCBjaGlsZEJsb2NrLmlzQ29tcG9uZW50KVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBjaGlsZEJsb2NrLmlzQmxvY2sgPSAhaXNTdGFibGVGcmFnbWVudDtcbiAgICAgICAgICBpZiAoY2hpbGRCbG9jay5pc0Jsb2NrKSB7XG4gICAgICAgICAgICBoZWxwZXIoT1BFTl9CTE9DSyk7XG4gICAgICAgICAgICBoZWxwZXIoZ2V0Vk5vZGVCbG9ja0hlbHBlcihjb250ZXh0LmluU1NSLCBjaGlsZEJsb2NrLmlzQ29tcG9uZW50KSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGhlbHBlcihnZXRWTm9kZUhlbHBlcihjb250ZXh0LmluU1NSLCBjaGlsZEJsb2NrLmlzQ29tcG9uZW50KSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChtZW1vKSB7XG4gICAgICAgICAgY29uc3QgbG9vcCA9IGNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbihcbiAgICAgICAgICAgIGNyZWF0ZUZvckxvb3BQYXJhbXMoZm9yTm9kZS5wYXJzZVJlc3VsdCwgW1xuICAgICAgICAgICAgICBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGBfY2FjaGVkYClcbiAgICAgICAgICAgIF0pXG4gICAgICAgICAgKTtcbiAgICAgICAgICBsb29wLmJvZHkgPSBjcmVhdGVCbG9ja1N0YXRlbWVudChbXG4gICAgICAgICAgICBjcmVhdGVDb21wb3VuZEV4cHJlc3Npb24oW2Bjb25zdCBfbWVtbyA9IChgLCBtZW1vLmV4cCwgYClgXSksXG4gICAgICAgICAgICBjcmVhdGVDb21wb3VuZEV4cHJlc3Npb24oW1xuICAgICAgICAgICAgICBgaWYgKF9jYWNoZWRgLFxuICAgICAgICAgICAgICAuLi5rZXlFeHAgPyBbYCAmJiBfY2FjaGVkLmtleSA9PT0gYCwga2V5RXhwXSA6IFtdLFxuICAgICAgICAgICAgICBgICYmICR7Y29udGV4dC5oZWxwZXJTdHJpbmcoXG4gICAgICAgICAgICAgICAgSVNfTUVNT19TQU1FXG4gICAgICAgICAgICAgICl9KF9jYWNoZWQsIF9tZW1vKSkgcmV0dXJuIF9jYWNoZWRgXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIGNyZWF0ZUNvbXBvdW5kRXhwcmVzc2lvbihbYGNvbnN0IF9pdGVtID0gYCwgY2hpbGRCbG9ja10pLFxuICAgICAgICAgICAgY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihgX2l0ZW0ubWVtbyA9IF9tZW1vYCksXG4gICAgICAgICAgICBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGByZXR1cm4gX2l0ZW1gKVxuICAgICAgICAgIF0pO1xuICAgICAgICAgIHJlbmRlckV4cC5hcmd1bWVudHMucHVzaChcbiAgICAgICAgICAgIGxvb3AsXG4gICAgICAgICAgICBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGBfY2FjaGVgKSxcbiAgICAgICAgICAgIGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oU3RyaW5nKGNvbnRleHQuY2FjaGVkKyspKVxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVuZGVyRXhwLmFyZ3VtZW50cy5wdXNoKFxuICAgICAgICAgICAgY3JlYXRlRnVuY3Rpb25FeHByZXNzaW9uKFxuICAgICAgICAgICAgICBjcmVhdGVGb3JMb29wUGFyYW1zKGZvck5vZGUucGFyc2VSZXN1bHQpLFxuICAgICAgICAgICAgICBjaGlsZEJsb2NrLFxuICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuKTtcbmZ1bmN0aW9uIHByb2Nlc3NGb3Iobm9kZSwgZGlyLCBjb250ZXh0LCBwcm9jZXNzQ29kZWdlbikge1xuICBpZiAoIWRpci5leHApIHtcbiAgICBjb250ZXh0Lm9uRXJyb3IoXG4gICAgICBjcmVhdGVDb21waWxlckVycm9yKDMxLCBkaXIubG9jKVxuICAgICk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IHBhcnNlUmVzdWx0ID0gZGlyLmZvclBhcnNlUmVzdWx0O1xuICBpZiAoIXBhcnNlUmVzdWx0KSB7XG4gICAgY29udGV4dC5vbkVycm9yKFxuICAgICAgY3JlYXRlQ29tcGlsZXJFcnJvcigzMiwgZGlyLmxvYylcbiAgICApO
151xuICAgIHJldHVybjtcbiAgfVxuICBmaW5hbGl6ZUZvclBhcnNlUmVzdWx0KHBhcnNlUmVzdWx0LCBjb250ZXh0KTtcbiAgY29uc3QgeyBhZGRJZGVudGlmaWVycywgcmVtb3ZlSWRlbnRpZmllcnMsIHNjb3BlcyB9ID0gY29udGV4dDtcbiAgY29uc3QgeyBzb3VyY2UsIHZhbHVlLCBrZXksIGluZGV4IH0gPSBwYXJzZVJlc3VsdDtcbiAgY29uc3QgZm9yTm9kZSA9IHtcbiAgICB0eXBlOiAxMSxcbiAgICBsb2M6IGRpci5sb2MsXG4gICAgc291cmNlLFxuICAgIHZhbHVlQWxpYXM6IHZhbHVlLFxuICAgIGtleUFsaWFzOiBrZXksXG4gICAgb2JqZWN0SW5kZXhBbGlhczogaW5kZXgsXG4gICAgcGFyc2VSZXN1bHQsXG4gICAgY2hpbGRyZW46IGlzVGVtcGxhdGVOb2RlKG5vZGUpID8gbm9kZS5jaGlsZHJlbiA6IFtub2RlXVxuICB9O1xuICBjb250ZXh0LnJlcGxhY2VOb2RlKGZvck5vZGUpO1xuICBzY29wZXMudkZvcisrO1xuICBjb25zdCBvbkV4aXQgPSBwcm9jZXNzQ29kZWdlbiAmJiBwcm9jZXNzQ29kZWdlbihmb3JOb2RlKTtcbiAgcmV0dXJuICgpID0+IHtcbiAgICBzY29wZXMudkZvci0tO1xuICAgIGlmIChvbkV4aXQpIG9uRXhpdCgpO1xuICB9O1xufVxuZnVuY3Rpb24gZmluYWxpemVGb3JQYXJzZVJlc3VsdChyZXN1bHQsIGNvbnRleHQpIHtcbiAgaWYgKHJlc3VsdC5maW5hbGl6ZWQpIHJldHVybjtcbiAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgJiYgdHJ1ZSkge1xuICAgIHZhbGlkYXRlQnJvd3NlckV4cHJlc3Npb24ocmVzdWx0LnNvdXJjZSwgY29udGV4dCk7XG4gICAgaWYgKHJlc3VsdC5rZXkpIHtcbiAgICAgIHZhbGlkYXRlQnJvd3NlckV4cHJl
15c3Npb24oXG4gICAgICAgIHJlc3VsdC5rZXksXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChyZXN1bHQuaW5kZXgpIHtcbiAgICAgIHZhbGlkYXRlQnJvd3NlckV4cHJlc3Npb24oXG4gICAgICAgIHJlc3VsdC5pbmRleCxcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHJlc3VsdC52YWx1ZSkge1xuICAgICAgdmFsaWRhdGVCcm93c2VyRXhwcmVzc2lvbihcbiAgICAgICAgcmVzdWx0LnZhbHVlLFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICB0cnVlXG4gICAgICApO1xuICAgIH1cbiAgfVxuICByZXN1bHQuZmluYWxpemVkID0gdHJ1ZTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUZvckxvb3BQYXJhbXMoeyB2YWx1ZSwga2V5LCBpbmRleCB9LCBtZW1vQXJncyA9IFtdKSB7XG4gIHJldHVybiBjcmVhdGVQYXJhbXNMaXN0KFt2YWx1ZSwga2V5LCBpbmRleCwgLi4ubWVtb0FyZ3NdKTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVBhcmFtc0xpc3QoYXJncykge1xuICBsZXQgaSA9IGFyZ3MubGVuZ3RoO1xuICB3aGlsZSAoaS0tKSB7XG4gICAgaWYgKGFyZ3NbaV0pIGJyZWFrO1xuICB9XG4gIHJldHVybiBhcmdzLnNsaWNlKDAsIGkgKyAxKS5tYXAoKGFyZywgaTIpID0+IGFyZyB8fCBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGBfYC5yZXBlYXQoaTIgKyAxKSwgZmFsc2UpKTtcbn1cblxuY29uc3QgZGVmYXVsdEZhbGxiYWNrID0gY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihgdW5kZWZpbmVkYCwgZmFsc2UpO1xuY29uc3QgdHJhY2tTbG90U2NvcGVzID0gKG5vZGUsIGNvbnRleHQpID0+IHtcbiAgaWYgKG5vZGUudHlwZSA9PT0gMSAmJiAobm9kZS50YWdUeXBlID09PSAxIHx8IG5vZGUudGFnVHlwZSA9PT0gMykpIHtcbiAgICBjb25zdCB2U2xvdCA9IGZpbmREaXIobm9kZSwgXCJzbG90XCIpO1xuICAgIGlmICh2U2xvdCkge1xuICAgICAgdlNsb3QuZXhwO1xuICAgICAgY29udGV4dC5zY29wZXMudlNsb3QrKztcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGNvbnRleHQuc2NvcGVzLnZTbG90LS07XG4gICAgICB9O1xuICAgIH1cbiAgfVxufTtcbmNvbnN0IHRyYWNrVkZvclNsb3RTY29wZXMgPSAobm9kZSwgY29udGV4dCkgPT4ge1xuICBsZXQgdkZvcjtcbiAgaWYgKGlzVGVtcGxhdGVOb2RlKG5vZGUpICYmIG5vZGUucHJvcHMuc29tZShpc1ZTbG90KSAmJiAodkZvciA9IGZpbmREaXIobm9kZSwgXCJmb3JcIikpKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gdkZvci5mb3JQYXJzZVJlc3VsdDtcbiAgICBpZiAocmVzdWx0KSB7XG4gICAgICBmaW5hbGl6ZUZvclBhcnNlUmVzdWx0KHJlc3VsdCwgY29udGV4dCk7XG4gICAgICBjb25zdCB7IHZhbHVlLCBrZXksIGluZGV4IH0gPSByZXN1bHQ7XG4gICAgICBjb25zdCB7IGFkZElkZW50aWZpZXJzLCByZW1vdmVJZGVudGlmaWVycyB9ID0gY29udGV4dDtcbiAgICAgIHZhbHVlICYmIGFkZElkZW50aWZpZXJzKHZhbHVlKTtcbiAgICAgIGtleSAmJiBhZGRJZGVudGlmaWVycyhrZXkpO1xuICAgICAgaW5kZXggJiYgYWRkSWRlbnRpZmllcnMoaW5kZXgpO1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgdmFsdWUgJiYgcmVtb3ZlSWRlbnRpZmllcnModmFsdWUpO1xuICAgICAgICBrZXkgJiYgcmVtb3ZlSWRlbnRpZmllcnMoa2V5KTtcbiAgICAgICAgaW5kZXggJiYgcmVtb3ZlSWRlbnRpZmllcnMoaW5kZXgpO1xuICAgICAgfTtcbiAgICB9XG4gIH1cbn07XG5jb25zdCBidWlsZENsaWVudFNsb3RGbiA9IChwcm9wcywgX3ZGb3JFeHAsIGNoaWxkcmVuLCBsb2MpID0+IGNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbihcbiAgcHJvcHMsXG4gIGNoaWxkcmVuLFxuICBmYWxzZSxcbiAgdHJ1ZSxcbiAgY2hpbGRyZW4ubGVuZ3RoID8gY2hpbGRyZW5bMF0ubG9jIDogbG9jXG4pO1xuZnVuY3Rpb24gYnVpbGRTbG90cyhub2RlLCBjb250ZXh0LCBidWlsZFNsb3RGbiA9IGJ1aWxkQ2xpZW50U2xvdEZuKSB7XG4gIGNvbnRleHQuaGVscGVyKFdJVEhfQ1RYKTtcbiAgY29uc3QgeyBjaGlsZHJlbiwgbG9jIH0gPSBub2RlO1xuICBjb25zdCBzbG90c1Byb3BlcnRpZXMgPSBbXTtcbiAgY29uc3QgZHluYW1pY1Nsb3RzID0gW107XG4gIGxldCBoYXNEeW5hbWljU2xvdHMgPSBjb250ZXh0LnNjb3Blcy52U2xvdCA+IDAgfHwgY29udGV4dC5zY29wZXMudkZvciA+IDA7XG4gIGNvbnN0IG9uQ29tcG9uZW50U2xvdCA9IGZpbmREaXIobm9kZSwgXCJzbG90XCIsIHRydWUpO1xuICBpZiAob25Db21wb25lbnRTbG90KSB7XG4gICAgY29uc3QgeyBhcmcsIGV4cCB9ID0gb25Db21wb25lbnRTbG90O1xuICAgIGlmIChhcmcgJiYgIWlzU3RhdGljRXhwKGFyZykpIHtcbiAgICAgIGhhc0R5bmFtaWNTbG90cyA9IHRydWU7XG4gICAgfVxuICAgIHNsb3RzUHJvcGVydGllcy5wdXNoKFxuICAgICAgY3JlYXRlT2JqZWN0UHJvcGVydHkoXG4gICAgICAgIGFyZyB8fCBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKFwiZGVmYXVsdFwiLCB0cnVlKSxcbiAgICAgICAgYnVpbGRTbG90Rm4oZXhwLCB2b2lkIDAsIGNo
15aWxkcmVuLCBsb2MpXG4gICAgICApXG4gICAgKTtcbiAgfVxuICBsZXQgaGFzVGVtcGxhdGVTbG90cyA9IGZhbHNlO1xuICBsZXQgaGFzTmFtZWREZWZhdWx0U2xvdCA9IGZhbHNlO1xuICBjb25zdCBpbXBsaWNpdERlZmF1bHRDaGlsZHJlbiA9IFtdO1xuICBjb25zdCBzZWVuU2xvdE5hbWVzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKTtcbiAgbGV0IGNvbmRpdGlvbmFsQnJhbmNoSW5kZXggPSAwO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3Qgc2xvdEVsZW1lbnQgPSBjaGlsZHJlbltpXTtcbiAgICBsZXQgc2xvdERpcjtcbiAgICBpZiAoIWlzVGVtcGxhdGVOb2RlKHNsb3RFbGVtZW50KSB8fCAhKHNsb3REaXIgPSBmaW5kRGlyKHNsb3RFbGVtZW50LCBcInNsb3RcIiwgdHJ1ZSkpKSB7XG4gICAgICBpZiAoc2xvdEVsZW1lbnQudHlwZSAhPT0gMykge1xuICAgICAgICBpbXBsaWNpdERlZmF1bHRDaGlsZHJlbi5wdXNoKHNsb3RFbGVtZW50KTtcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAob25Db21wb25lbnRTbG90KSB7XG4gICAgICBjb250ZXh0Lm9uRXJyb3IoXG4gICAgICAgIGNyZWF0ZUNvbXBpbGVyRXJyb3IoMzcsIHNsb3REaXIubG9jKVxuICAgICAgKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBoYXNUZW1wbGF0ZVNsb3RzID0gdHJ1ZTtcbiAgICBjb25zdCB7IGNoaWxkcmVuOiBzbG90Q2hpbGRyZW4sIGxvYzogc2xvdExvYyB9ID0gc2xvdEVsZW1lbnQ7XG4gICAgY29uc3Qge1xuICAgICAgYXJnOiBzbG90TmFtZSA9IGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oYGRlZmF1bHRgLCB0cnVlKSxcbiAgICAgIGV4cDogc2xvdFByb3BzLFxuICAgICAgbG9jOiBkaXJMb2NcbiAgICB9ID0gc2xvdERpcjtcbiAgICBsZXQgc3RhdGljU2xvdE5hbWU7XG4gICAgaWYgKGlzU3RhdGljRXhwKHNsb3ROYW1lKSkge1xuICAgICAgc3RhdGljU2xvdE5hbWUgPSBzbG90TmFtZSA/IHNsb3ROYW1lLmNvbnRlbnQgOiBgZGVmYXVsdGA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGhhc0R5bmFtaWNTbG90cyA9IHRydWU7XG4gICAgfVxuICAgIGNvbnN0IHZGb3IgPSBmaW5kRGlyKHNsb3RFbGVtZW50LCBcImZvclwiKTtcbiAgICBjb25zdCBzbG90RnVuY3Rpb24gPSBidWlsZFNsb3RGbihzbG90UHJvcHMsIHZGb3IsIHNsb3RDaGlsZHJlbiwgc2xvdExvYyk7XG4gICAgbGV0IHZJZjtcbiAgICBsZXQgdkVsc2U7XG4gICAgaWYgKHZJZiA9IGZpbmREaXIoc2xvdEVsZW1lbnQsIFwiaWZcIikpIHtcbiAgICAgIGhhc0R5bmFtaWNTbG90cyA9IHRydWU7XG4gICAgICBkeW5hbWljU2xvdHMucHVzaChcbiAgICAgICAgY3JlYXRlQ29uZGl0aW9uYWxFeHByZXNzaW9uKFxuICAgICAgICAgIHZJZi5leHAsXG4gICAgICAgICAgYnVpbGREeW5hbWljU2xvdChzbG90TmFtZSwgc2xvdEZ1bmN0aW9uLCBjb25kaXRpb25hbEJyYW5jaEluZGV4KyspL
15FxuICAgICAgICAgIGRlZmF1bHRGYWxsYmFja1xuICAgICAgICApXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAodkVsc2UgPSBmaW5kRGlyKFxuICAgICAgc2xvdEVsZW1lbnQsXG4gICAgICAvXmVsc2UoLWlmKT8kLyxcbiAgICAgIHRydWVcbiAgICAgIC8qIGFsbG93RW1wdHkgKi9cbiAgICApKSB7XG4gICAgICBsZXQgaiA9IGk7XG4gICAgICBsZXQgcHJldjtcbiAgICAgIHdoaWxlIChqLS0pIHtcbiAgICAgICAgcHJldiA9IGNoaWxkcmVuW2pdO1xuICAgICAgICBpZiAocHJldi50eXBlICE9PSAzKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChwcmV2ICYmIGlzVGVtcGxhdGVOb2RlKHByZXYpICYmIGZpbmREaXIocHJldiwgL14oZWxzZS0pP2lmJC8pKSB7XG4gICAgICAgIGxldCBjb25kaXRpb25hbCA9IGR5bmFtaWNTbG90c1tkeW5hbWljU2xvdHMubGVuZ3RoIC0gMV07XG4gICAgICAgIHdoaWxlIChjb25kaXRpb25hbC5hbHRlcm5hdGUudHlwZSA9PT0gMTkpIHtcbiAgICAgICAgICBjb25kaXRpb25hbCA9IGNvbmRpdGlvbmFsLmFsdGVybmF0ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25kaXRpb25hbC5hbHRlcm5hdGUgPSB2RWxzZS5leHAgPyBjcmVhdGVDb25kaXRpb25hbEV4cHJlc3Npb24oXG4gICAgICAgICAgdkVsc2UuZXhwLFxuICAgICAgICAgIGJ1aWxkRHluYW1pY1Nsb3QoXG4gICAgICAgICAgICBzbG90TmFtZSxcbiAgICAgICAgICAgIHNsb3RGdW5jdGlvbixcbiAgICAgICAgICAgIGNvbmRpdGlvbmFsQnJhbmNoSW5kZXgrK1xuICAgICAgICAgICksXG4gICAgICAgICAgZGVmYXVsdEZhbGxiYWNrXG4gICAgICAgICkgOiBidWlsZER5bmFtaWNTbG90KHNsb3ROYW1lLCBzbG90RnVuY3Rpb24sIGNvbmRpdGlvbmFsQnJhbmNoSW5kZXgrKyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb250ZXh0Lm9uRXJyb3IoXG4gICAgICAgICAgY3JlYXRlQ29tcGlsZXJFcnJvcigzMCwgdkVsc2UubG9jKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodkZvcikge1xuICAgICAgaGFzRHluYW1pY1Nsb3RzID0gdHJ1ZTtcbiAgICAgIGNvbnN0IHBhcnNlUmVzdWx0ID0gdkZvci5mb3JQYXJzZVJlc3VsdDtcbiAgICAgIGlmIChwYXJzZVJlc3VsdCkge1xuICAgICAgICBmaW5hbGl6ZUZvclBhcnNlUmVzdWx0KHBhcnNlUmVzdWx0LCBjb250ZXh0KTtcbiAgICAgICAgZHluYW1pY1Nsb3RzLnB1c2goXG4gICAgICAgICAgY3JlYXRlQ2FsbEV4cHJlc3Npb24oY29udGV4dC5oZWxwZXIoUkVOREVSX0xJU1QpLCBbXG4gICAgICAgICAgICBwYXJzZVJlc3VsdC5zb3VyY2UsXG4gICAgICAgICAgICBjcmVhdGVGdW5jdGlvbkV4cHJlc3Npb24oXG4gICAgICAgICAgICAgIGNyZWF0ZUZvckxvb3BQYXJhbXMocGFyc2VSZXN1bHQpLFxuICAgICAgICAgICAgICBidWlsZER5bmFtaWNTbG90KHNsb3ROYW1lLCBzbG90RnVuY3Rpb24pLFxuICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICApXG4gICAgICAgICAgXSlcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnRleHQub25FcnJvcihcbiAgICAgICAgICBjcmVhdGVDb21waWxlckVycm9yKFxuICAgICAgICAgICAgMzIsXG4gICAgICAgICAgICB2Rm9yLmxvY1xuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHN0YXRpY1Nsb3ROYW1lKSB7XG4gICAgICAgIGlmIChzZWVuU2xvdE5hbWVzLmhhcyhzdGF0aWNTbG90TmFtZSkpIHtcbiAgICAgICAgICBjb250ZXh0Lm9uRXJyb3IoXG4gICAgICAgICAgICBjcmVhdGVDb21waWxlckVycm9yKFxuICAgICAgICAgICAgICAzOCxcbiAgICAgICAgICAgICAgZGlyTG9jXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBzZWVuU2xvdE5hbWVzLmFkZChzdGF0aWNTbG90TmFtZSk7XG4gICAgICAgIGlmIChzdGF0aWNTbG90TmFtZSA9PT0gXCJkZWZhdWx0XCIpIHtcbiAgICAgICAgICBoYXNOYW1lZERlZmF1bHRTbG90ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgc2xvdHNQcm9wZXJ0aWVzLnB1c2goY3JlYXRlT2JqZWN0UHJvcGVydHkoc2xvdE5hbWUsIHNsb3RGdW5jdGlvbikpO1xuICAgIH1cbiAgfVxuICBpZiAoIW9uQ29tcG9uZW50U2xvdCkge1xuICAgIGNvbnN0IGJ1aWxkRGVmYXVsdFNsb3RQcm9wZXJ0eSA9IChwcm9wcywgY2hpbGRyZW4yKSA9PiB7XG4gICAgICBjb25zdCBmbiA9IGJ1aWxkU2xvdEZuKHByb3BzLCB2b2lkIDAsIGNo
15aWxkcmVuMiwgbG9jKTtcbiAgICAgIGlmIChjb250ZXh0LmNvbXBhdENvbmZpZykge1xuICAgICAgICBmbi5pc05vblNjb3BlZFNsb3QgPSB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNyZWF0ZU9iamVjdFByb3BlcnR5KGBkZWZhdWx0YCwgZm4pO1xuICAgIH07XG4gICAgaWYgKCFoYXNUZW1wbGF0ZVNsb3RzKSB7XG4gICAgICBzbG90c1Byb3BlcnRpZXMucHVzaChidWlsZERlZmF1bHRTbG90UHJvcGVydHkodm9pZCAwLCBjaGlsZHJlbikpO1xuICAgIH0gZWxzZSBpZiAoaW1wbGljaXREZWZhdWx0Q2hpbGRyZW4ubGVuZ3RoICYmIC8vICMzNzY2XG4gICAgLy8gd2l0aCB3aGl0ZXNwYWNlOiAncHJlc2VydmUnLCB3aGl0ZXNwYWNlcyBiZXR3ZWVuIHNsb3RzIHdpbGwgZW5kIHVwIGluXG4gICAgLy8gaW1wbGljaXREZWZhdWx0Q2hpbGRyZW4uIElnbm9yZSBpZiBhbGwgaW1wbGljaXQgY2hpbGRyZW4gYXJlIHdoaXRlc3BhY2VzLlxuICAgIGltcGxpY2l0RGVmYXVsdENoaWxkcmVuLnNvbWUoKG5vZGUyKSA9PiBpc05vbldoaXRlc3BhY2VDb250ZW50KG5vZGUyKSkpIHtcbiAgICAgIGlmIChoYXNOYW1lZERlZmF1bHRTbG90KSB7XG4gICAgICAgIGNvbnRleHQub25FcnJvcihcbiAgICAgICAgICBjcmVhdGVDb21waWxlckVycm9yKFxuICAgICAgICAgICAgMzksXG4gICAgICAgICAgICBpbXBsaWNpdERlZmF1bHRDaGlsZHJlblswXS5sb2NcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzbG90c1Byb3BlcnRpZXMucHVzaChcbiAgICAgICAgICBidWlsZERlZmF1bHRTbG90UHJvcGVydHkodm9pZCAwLCBpbXBsaWNpdERlZmF1bHRDaGlsZHJlbilcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgY29uc3Qgc2xvdEZsYWcgPSBoYXNEeW5hbWljU2xvdHMgPyAyIDogaGFzRm9yd2FyZGVkU2xvdHMobm9kZS5jaGlsZHJlbikgPyAzIDogMTtcbiAgbGV0IHNsb3RzID0gY3JlYXRlT2JqZWN0RXhwcmVzc2lvbihcbiAgICBzbG90c1Byb3BlcnRpZXMuY29uY2F0KFxuICAgICAgY3JlYXRlT2JqZWN0UHJvcGVydHkoXG4gICAgICAgIGBfYCxcbiAgICAgICAgLy8gMiA9IGNvbXBpbGVkIGJ1dCBkeW5hbWljID0gY2FuIHNraXAgbm9ybWFsaXphdGlvbiwgYnV0IG11c3QgcnVuIGRpZmZcbiAgICAgICAgLy8gMSA9IGNvbXBpbGVkIGFuZCBzdGF0aWMgPSBjYW4gc2tpcCBub3JtYWxpemF0aW9uIEFORCBkaWZmIGFzIG9wdGltaXplZFxuICAgICAgICBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKFxuICAgICAgICAgIHNsb3RGbGFnICsgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgPyBgIC8qICR7c2xvdEZsYWdzVGV4dFtzbG90RmxhZ119ICovYCA6IGBgKSxcbiAgICAgICAgICBmYWxzZVxuICAgICAgICApXG4gICAgICApXG4gICAgKSxcbiAgICBsb2NcbiAgKTtcbiAgaWYgKGR5bmFtaWNTbG90cy5sZW5ndGgpIHtcbiAgICBzbG90cyA9IGNyZWF0ZUNhbGxFeHByZXNzaW9uKGNvbnRleHQuaGVscGVyKENSRUFURV9TTE9UUyksIFtcbiAgICAgIHNsb3RzLFxuICAgICAgY3JlYXRlQXJyYXlFeHByZXNzaW9uKGR5bmFtaWNTbG90cylcbiAgICBdKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHNsb3RzLFxuICAgIGhhc0R5bmFtaWNTbG90c1xuICB9O1xufVxuZnVuY3Rpb24gYnVpbGREeW5hbWljU2xvdChuYW1lLCBmbiwgaW5kZXgpIHtcbiAgY29uc3QgcHJvcHMgPSBbXG4gICAgY3JlYXRlT2JqZWN0UHJvcGVydHkoYG5hbWVgLCBuYW1lKSxcbiAgICBjcmVhdGVPYmplY3RQcm9wZXJ0eShgZm5gLCBmbilcbiAgXTtcbiAgaWYgKGluZGV4ICE9IG51bGwpIHtcbiAgICBwcm9wcy5wdXNoKFxuICAgICAgY3JlYXRlT2JqZWN0UHJvcGVydHkoYGtleWAsIGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oU3RyaW5nKGluZGV4KSwgdHJ1ZSkpXG4gICAgKTtcbiAgfVxuICByZXR1cm4gY3JlYXRlT2JqZWN0RXhwcmVzc2lvbihwcm9wcyk7XG59XG5mdW5jdGlvbiBoYXNGb3J3YXJkZWRTbG90cyhjaGlsZHJlbikge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgY2hpbGQgPSBjaGlsZHJlbltpXTtcbiAgICBzd2l0Y2ggKGNoaWxkLnR5cGUpIHtcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgaWYgKGNoaWxkLnRhZ1R5cGUgPT09IDIgfHwgaGFzRm9yd2FyZGVkU2xvdHMoY2hpbGQuY2hpbGRyZW4pKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDk6XG4gICAgICAgIGlmIChoYXNGb3J3YXJkZWRTbG90cyhjaGlsZC5icmFuY2hlcykpIHJldHVybiB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTA6XG4gICAgICBjYXNlIDExOlxuICAgICAgICBpZiAoaGFzRm9yd2FyZGVkU2xvdHMoY2hpbGQuY2hpbGRyZW4pKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cbmZ1bmN0aW9uIGlzTm9uV2hpdGVzcGFjZUNvbnRlbnQobm9kZSkge1xuICBpZiAobm9kZS50eXBlICE9PSAyICYmIG5vZGUudHlwZSAhPT0gMTIpXG4gICAgcmV0dXJuIHRydWU7XG4gIHJldHVybiBub2RlLnR5cGUgPT09IDIgPyAhIW5vZGUuY29udGVudC50cmltKCkgOiBpc05vbldoaXRlc3BhY2VDb250ZW50KG5vZGUuY29udGVudCk7XG59XG5cbmNvbnN0IGRpcmVjdGl2ZUltcG9ydE1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgV2Vha01hcCgpO1xuY29uc3QgdHJhbnNmb3JtRWxlbWVudCA9IChub2RlLCBjb250ZXh0KSA9PiB7XG4gIHJldHVybiBmdW5jdGlvbiBwb3N0VHJhbnNmb3JtRWxlbWVudCgpIHtcbiAgICBub2RlID0gY29udGV4dC5jdXJyZW50Tm9kZTtcbiAgICBpZiAoIShub2RlLnR5cGUgPT09IDEgJiYgKG5vZGUudGFnVHlwZSA9PT0gMCB8fCBub2RlLnRhZ1R5cGUgPT09IDEpKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB7IHRhZywgcHJvcHMgfSA9IG5vZGU7XG4gICAgY29uc3QgaXNDb21wb25lbnQgPSBub2RlLnRhZ1R5cGUgPT09IDE7XG4gICAgbGV0IHZub2RlVGFnID0gaXNDb21wb25lbnQgPyByZXNvbHZlQ29tcG9uZW50VHlwZShub2RlLCBjb250ZXh0KSA6IGBcIiR7dGFnfVwiYDtcbiAgICBjb25zdCBpc0R5bmFtaWNDb21wb25lbnQgPSBpc09iamVjdCh2bm9kZVRhZykgJiYgdm5vZGVUYWcuY2FsbGVlID09PSBSRVNPTFZFX0RZTkFNSUNfQ09NUE9ORU5UO1xuICAgIGxldCB2bm9kZVByb3BzO1xuICAgIGxldCB2bm9kZUNoaWxkcmVuO1xuICAgIGxldCBwYXRjaEZsYWcgPSAwO1xuICAgIGxldCB2bm9kZUR5bmFtaWNQcm9wcztcbiAgICBsZXQgZHluYW1pY1Byb3BOYW1lcztcbiAgICBsZXQgdm5vZGVEaXJlY3RpdmVzO1xuICAgIGxldCBzaG91bGRVc2VCbG9jayA9IChcbiAgICAgIC8vIGR5bmFtaWMgY29tcG9uZW50IG1heSByZXNvbHZlIHRvIHBsYWluIGVsZW1lbnRzXG4gICAgICBpc0R5bmFtaWNDb21wb25lbnQgfHwgdm5vZGVUYWcgPT09IFRFTEVQT1J
15UIHx8IHZub2RlVGFnID09PSBTVVNQRU5TRSB8fCAhaXNDb21wb25lbnQgJiYgLy8gPHN2Zz4gYW5kIDxmb3JlaWduT2JqZWN0PiBtdXN0IGJlIGZvcmNlZCBpbnRvIGJsb2NrcyBzbyB0aGF0IGJsb2NrXG4gICAgICAvLyB1cGRhdGVzIGluc2lkZSBnZXQgcHJvcGVyIGlzU1ZHIGZsYWcgYXQgcnVudGltZS4gKCM2MzksICM2NDMpXG4gICAgICAvLyBUaGlzIGlzIHRlY2huaWNhbGx5IHdlYi1zcGVjaWZpYywgYnV0IHNwbGl0dGluZyB0aGUgbG9naWMgb3V0IG9mIGNvcmVcbiAgICAgIC8vIGxlYWRzIHRvIHRvbyBtdWNoIHVubmVjZXNzYXJ5IGNvbXBsZXhpdHkuXG4gICAgICAodGFnID09PSBcInN2Z1wiIHx8IHRhZyA9PT0gXCJmb3JlaWduT2JqZWN0XCIgfHwgdGFnID09PSBcIm1hdGhcIilcbiAgICApO1xuICAgIGlmIChwcm9wcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBwcm9wc0J1aWxkUmVzdWx0ID0gYnVpbGRQcm9wcyhcbiAgICAgICAgbm9kZSxcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgdm9pZCAwLFxuICAgICAgICBpc0NvbXBvbmVudCxcbiAgICAgICAgaXNEeW5hbWljQ29tcG9uZW50XG4gICAgICApO1xuICAgICAgdm5vZGVQcm9wcyA9IHByb3BzQnVpbGRSZXN1bHQucHJvcHM7XG4gICAgICBwYXRjaEZsYWcgPSBwcm9wc0J1aWxkUmVzdWx0LnBhdGNoRmxhZztcbiAgICAgIGR5bmFtaWNQcm9wTmFtZXMgPSBwcm9wc0J1aWxkUmVzdWx0LmR5bmFtaWNQcm9wTmFtZXM7XG4gICAgICBjb25zdCBkaXJlY3RpdmVzID0gcHJvcHNCdWlsZFJlc3VsdC5kaXJlY3RpdmVzO1xuICAgICAgdm5vZGVEaXJlY3RpdmVzID0gZGlyZWN0aXZlcyAmJiBkaXJlY3RpdmVzLmxlbmd0aCA/IGNyZWF0ZUFycmF5RXhwcmVzc2lvbihcbiAgICAgICAgZGlyZWN0aXZlcy5tYXAoKGRpcikgPT4gYnVpbGREaXJlY3RpdmVBcmdzKGRpciwgY29udGV4dCkpXG4gICAgICApIDogdm9pZCAwO1xuICAgICAgaWYgKHByb3BzQnVpbGRSZXN1bHQuc2hvdWxkVXNlQmxvY2spIHtcbiAgICAgICAgc2hvdWxkVXNlQmxvY2sgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAobm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAodm5vZGVUYWcgPT09IEtFRVBfQUxJVkUpIHtcbiAgICAgICAgc2hvdWxkVXNlQmxvY2sgPSB0cnVlO1xuICAgICAgICBwYXRjaEZsYWcgfD0gMTAyNDtcbiAgICAgICAgaWYgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgY29udGV4dC5vbkVycm9yKFxuICAgICAgICAgICAgY3JlYXRlQ29tcGlsZXJFcnJvcig0Niwge1xuICAgICAgICAgICAgICBzdGFydDogbm9kZS5jaGlsZHJlblswXS5sb2Muc3RhcnQsXG4gICAgICAgICAgICAgIGVuZDogbm9kZS5jaGlsZHJlbltub2RlLmNoaWxkcmVuLmxlbmd0aCAtIDFdLmxvYy5lbmQsXG4gICAgICAgICAgICAgIHNvdXJjZTogXCJcIlxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb25zdCBzaG91bGRCdWlsZEFzU2xvdHMgPSBpc0NvbXBvbmVudCAmJiAvLyBUZWxlcG9ydCBpcyBub3QgYSByZWFsIGNvbXBvbmVudCBhbmQgaGFzIGRlZGljYXRlZCBydW50aW1lIGhhbmRsaW5nXG4gICAgICB2bm9kZVRhZyAhPT0gVEVMRVBPUlQgJiYgLy8gZXhwbGFpbmVkIGFib3ZlLlxuICAgICAgdm5vZGVUYWcgIT09IEtFRVBfQUxJVkU7XG4gICAgICBpZiAoc2hvdWxkQnVpbGRBc1Nsb3RzKSB7XG4gICAgICAgIGNvbnN0IHsgc2xvdHMsIGhhc0R5bmFtaWNTbG90cyB9ID0gYnVpbGRTbG90cyhub2RlLCBjb250ZXh0KTtcbiAgICAgICAgdm5vZGVDaGlsZHJlbiA9IHNsb3RzO1xuICAgICAgICBpZiAoaGFzRHluYW1pY1Nsb3RzKSB7XG4gICAgICAgICAgcGF0Y2hGbGFnIHw9IDEwMjQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAobm9kZS5jaGlsZHJlbi5sZW5ndGggPT09IDEgJiYgdm5vZGVUYWcgIT09IFRFTEVQT1JUKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkID0gbm9kZS5jaGlsZHJlblswXTtcbiAgICAgICAgY29uc3QgdHlwZSA9IGNoaWxkLnR5cGU7XG4gICAgICAgIGNvbnN0IGhhc0R5bmFtaWNUZXh0Q2hpbGQgPSB0eXBlID09PSA1IHx8IHR5cGUgPT09IDg7XG4gICAgICAgIGlmIChoYXNEeW5hbWljVGV4dENoaWxkICYmIGdldENvbnN0YW50VHlwZShjaGlsZCwgY29udGV4dCkgPT09IDApIHtcbiAgICAgICAgICBwYXRjaEZsYWcgfD0gMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaGFzRHluYW1pY1RleHRDaGlsZCB8fCB0eXBlID09PSAyKSB7XG4gICAgICAgICAgdm5vZGVDaGlsZHJlbiA9IGNoaWxkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZub2RlQ2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2bm9kZUNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbjtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGR5bmFtaWNQcm9wTmFtZXMgJiYgZHluYW1pY1Byb3BOYW1lcy5sZW5ndGgpIHtcbiAgICAgIHZub2RlRHluYW1pY1Byb3BzID0gc3RyaW5naWZ5RHluYW1pY1Byb3BOYW1lcyhkeW5hbWljUHJvcE5hbWVzKTtcbiAgICB9XG4gICAgbm9kZS5jb2RlZ2VuTm9kZSA9IGNyZWF0ZVZOb2RlQ2FsbChcbiAgICAgIGNvbnRleHQsXG4gICAgICB2bm9kZVRhZyxcbiAgICAgIHZub2RlUHJvcHMsXG4gICAgICB2bm9kZUNoaWxkcmVuLFxuICAgICAgcGF0Y2hGbGFnID09PSAwID8gdm9pZCAwIDogcGF0Y2hGbGFnLFxuICAgICAgdm5vZGVEeW5hbWljUHJvcHMsXG4gICAgICB2bm9kZURpcmVjdGl2ZXMsXG4gICAgICAhIXNob3VsZFVzZUJsb2NrLFxuICAgICAgZmFsc2UsXG4gICAgICBpc0NvbXBvbmVudCxcbiAgICAgIG5vZGUubG9jXG4gICAgKTtcbiAgfTtcbn07XG5mdW5jdGlvbiByZXNvbHZlQ29tcG9uZW50VHlwZShub2RlLCBjb250ZXh0LCBzc3IgPSBmYWxzZSkge1xuICBsZXQgeyB0YWcgfSA9IG5vZGU7XG4gIGNvbnN0IGlzRXhwbGljaXREeW5hbWljID0gaXNDb21wb25lbnRUYWcodGFnKTtcbiAgY29uc3QgaXNQcm9wID0gZmluZFByb3AoXG4gICAgbm9kZSxcbiAgICBcImlzXCIsXG4gICAgZmFsc2UsXG4gICAgdHJ1ZVxuICAgIC8qIGFsbG93IGVtcHR5ICovXG4gICk7XG4gIGlmIChpc1Byb3ApIHtcbiAgICBpZiAoaXNFeHBsaWNpdER5bmFtaWMgfHwgaXNDb21wYXRFbmFibGVkKFxuICAgICAgXCJDT01QSUxFUl9JU19PTl9FTEVNRU5UXCIsXG4gICAgICBjb250ZXh0XG4gICAgKSkge1xuICAgICAgbGV0IGV4cDtcbiAgICAgIGlmIChpc1Byb3AudHlwZSA9PT0gNikge1xuICAgICAgICBleHAgPSBpc1Byb3AudmFsdWUgJiYgY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihpc1Byb3AudmFsdWUuY29udGVudCwgdHJ1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBleHAgPSBpc1Byb3AuZXhwO1xuICAgICAgICBpZiAoIWV4cCkge1xuICAgICAgICAgIGV4cCA9IGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oYGlzYCwgZmFsc2UsIGlzUHJvcC5hcmcubG9jKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGV4cCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlQ2FsbEV4cHJlc3Npb24oY29udGV4dC5oZWxwZXIoUkVTT0xWRV9EWU5BTUlDX0NPTVBPTkVOVCksIFtcbiAgICAgICAgICBleHBcbiAgICAgICAgXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1Byb3AudHlwZSA9PT0gNiAmJiBpc1Byb3AudmFsdWUuY29udGVudC5zdGFydHNXaXRoKFwidnVlOlwiKSkge1xuICAgICAgdGFnID0gaXNQcm9wLnZhbHVlLmNvbnRlbnQuc2xpY2UoNCk7XG4gICAgfVxuICB9XG4gIGNvbnN0IGJ1aWx0SW4gPSBpc0NvcmVDb21wb25lbnQodGFnKSB8fCBjb250ZXh0LmlzQnVpbHRJbkNvbXBvbmVudCh0YWcpO1xuICBpZiAoYnVpbHRJbikge1xuICAgIGlmICghc3NyKSBjb250ZXh0LmhlbHBlcihidWlsdEluKTtcbiAgICByZXR1cm4gYnVpbHRJbjt
15cbiAgfVxuICBjb250ZXh0LmhlbHBlcihSRVNPTFZFX0NPTVBPTkVOVCk7XG4gIGNvbnRleHQuY29tcG9uZW50cy5hZGQodGFnKTtcbiAgcmV0dXJuIHRvVmFsaWRBc3NldElkKHRhZywgYGNvbXBvbmVudGApO1xufVxuZnVuY3Rpb24gYnVpbGRQcm9wcyhub2RlLCBjb250ZXh0LCBwcm9wcyA9IG5vZGUucHJvcHMsIGlzQ29tcG9uZW50LCBpc0R5bmFtaWNDb21wb25lbnQsIHNzciA9IGZhbHNlKSB7XG4gIGNvbnN0IHsgdGFnLCBsb2M6IGVsZW1lbnRMb2MsIGNoaWxkcmVuIH0gPSBub2RlO1xuICBsZXQgcHJvcGVydGllcyA9IFtdO1xuICBjb25zdCBtZXJnZUFyZ3MgPSBbXTtcbiAgY29uc3QgcnVudGltZURpcmVjdGl2ZXMgPSBbXTtcbiAgY29uc3QgaGFzQ2hpbGRyZW4gPSBjaGlsZHJlbi5sZW5ndGggPiAwO1xuICBsZXQgc2hvdWxkVXNlQmxvY2sgPSBmYWxzZTtcbiAgbGV0IHBhdGNoRmxhZyA9IDA7XG4gIGxldCBoYXNSZWYgPSBmYWxzZTtcbiAgbGV0IGhhc0NsYXNzQmluZGluZyA9IGZhbHNlO1xuICBsZXQgaGFzU3R5bGVCaW5kaW5nID0gZmFsc2U7XG4gIGxldCBoYXNIeWRyYXRpb25FdmVudEJpbmRpbmcgPSBmYWxzZTtcbiAgbGV0IGhhc0R5bmFtaWNLZXlzID0gZmFsc2U7XG4gIGxldCBoYXNWbm9kZUhvb2sgPSBmYWxzZTtcbiAgY29uc3QgZHluYW1pY1Byb3BOYW1lcyA9IFtdO1xuICBjb25zdCBwdXNoTWVyZ2VBcmcgPSAoYXJnKSA9PiB7XG4gICAgaWYgKHByb3BlcnRpZXMubGVuZ3RoKSB7XG4gICAgICBtZXJnZUFyZ3MucHVzaChcbiAgICAgICAgY3JlYXRlT2JqZWN0RXhwcmVzc2lvbihkZWR1cGVQcm9wZXJ0aWVzKHByb3BlcnRpZXMpLCBlbGVtZW50TG9jKVxuICAgICAgKTtcbiAgICAgIHByb3BlcnRpZXMgPSBbXTtcbiAgICB9XG4gICAgaWYgKGFyZykgbWVyZ2VBcmdzLnB1c2goYXJnKTtcbiAgfTtcbiAgY29uc3QgcHVzaFJlZlZGb3JNYXJrZXIgPSAoKSA9PiB7XG4gICAgaWYgKGNvbnRleHQuc2NvcGVzLnZGb3IgPiAwKSB7XG4gICAgICBwcm9wZXJ0aWVzLnB1c2goXG4gICAgICAgIGNyZWF0ZU9iamVjdFByb3BlcnR5KFxuICAgICAgICAgIGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oXCJyZWZfZm9yXCIsIHRydWUpLFxuICAgICAgICAgIGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oXCJ0cnVlXCIpXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuICB9O1xuICBjb25zdCBhbmFseXplUGF0Y2hGbGFnID0gKHsga2V5LCB2YWx1ZSB9KSA9PiB7XG4gICAgaWYgKGlzU3RhdGljRXhwKGtleSkpIHtcbiAgICAgIGNvbnN0IG5hbWUgPSBrZXkuY29udGVudDtcbiAgICAgIGNvbnN0IGlzRXZlbnRIYW5kbGVyID0gaXNPbihuYW1lKTtcbiAgICAgIGlmIChpc0V2ZW50SGFuZGxlciAmJiAoIWlzQ29tcG9uZW50IHx8IGlzRHluYW1pY0NvbXBvbmVudCkgJiYgLy8gb21pdCB0aGUgZmxhZyBmb3IgY2xpY2sgaGFuZGxlcnMgYmVjYXVzZSBoeWRyYXRpb24gZ2l2ZXMgY2xpY2tcbiAgICAgIC8vIGRlZGljYXRlZCBmYXN0IHBhdGguXG4gICAgICBuYW1lLnRvTG93ZXJDYXNlKCkgIT09IFwib25jbGlja1wiICYmIC8vIG9taXQgdi1tb2RlbCBoYW5kbGVyc1xuICAgICAgbmFtZSAhPT0gXCJvblVwZGF0ZTptb2RlbFZhbHVlXCIgJiYgLy8gb21pdCBvblZub2RlWFhYIGhvb2tzXG4gICAgICAhaXNSZXNlcnZlZFByb3AobmFtZSkpIHtcbiAgICAgICAgaGFzSHlkcmF0aW9uRXZlbnRCaW5kaW5nID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChpc0V2ZW50SGFuZGxlciAmJiBpc1Jlc2VydmVkUHJvcChuYW1lKSkge1xuICAgICAgICBoYXNWbm9kZUhvb2sgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKGlzRXZlbnRIYW5kbGVyICYmIHZhbHVlLnR5cGUgPT09IDE0KSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWUuYXJndW1lbnRzWzBdO1xuICAgICAgfVxuICAgICAgaWYgKHZhbHVlLnR5cGUgPT09IDIwIHx8ICh2YWx1ZS50eXBlID09PSA0IHx8IHZhbHVlLnR5cGUgPT09IDgpICYmIGdldENvbnN0YW50VHlwZSh2YWx1ZSwgY29udGV4dCkgPiAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChuYW1lID09PSBcInJlZlwiKSB7XG4gICAgICAgIGhhc1JlZiA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKG5hbWUgPT09IFwiY2xhc3NcIikge1xuICAgICAgICBoYXNDbGFzc0JpbmRpbmcgPSB0cnVlO1xuICAgICAgfSBlbHNlIGlmIChuYW1lID09PSBcInN0eWxlXCIpIHtcbiAgICAgICAgaGFzU3R5bGVCaW5kaW5nID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZiAobmFtZSAhPT0gXCJrZXlcIiAmJiAhZHluYW1pY1Byb3BOYW1lcy5pbmNsdWRlcyhuYW1lKSkge1xuICAgICAgICBkeW5hbWljUHJvcE5hbWVzLnB1c2gobmFtZSk7XG4gICAgICB9XG4gICAgICBpZiAoaXNDb21wb25lbnQgJiYgKG5hbWUgPT09IFwiY2xhc3NcIiB8fCBuYW1lID09PSBcInN0eWxlXCIpICYmICFkeW5hbWljUHJvcE5hbWVzLmluY2x1ZGVzKG5hbWUpKSB7XG4gICAgICAgIGR5bmFtaWNQcm9wTmFtZXMucHVzaChuYW1lKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaGFzRHluYW1pY0tleXMgPSB0cnVlO1xuICAgIH1cbiAgfTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHByb3AgPSBwcm9wc1tpXTtcbiAgICBpZiAocHJvcC50eXBlID09PSA2KSB7XG4gICAgICBjb25zdCB7IGxvYywgbmFtZSwgbmFtZUxvYywgdmFsdWUgfSA9IHByb3A7XG4gICAgICBsZXQgaXNTdGF0aWMgPSB0cnVlO1xuICAgICAgaWYgKG5hbWUgPT09IFwicmVmXCIpIHtcbiAgICAgICAgaGFzUmVmID0gdHJ1ZTtcbiAgICAgICAgcHVzaFJlZlZGb3JNYXJrZXIoKTtcbiAgICAgIH1cbiAgICAgIGlmIChuYW1lID09PSBcImlzXCIgJiYgKGlzQ29tcG9uZW50VGFnKHRhZykgfHwgdmFsdWUgJiYgdmFsdWUuY29udGVudC5zdGFydHNXaXRoKFwidnVlOlwiKSB8fCBpc0NvbXBhdEVuYWJsZWQoXG4gICAgICAgIFwiQ09NUElMRVJfSVNfT05fRUxFTUVOVFwiLFxuICAgICAgICBjb250ZXh0XG4gICAgICApKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHByb3BlcnRpZXMucHVzaChcbiAgICAgICAgY3JlYXRlT2JqZWN0UHJvcGVydHkoXG4gICAgICAgICAgY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihuYW1lLCB0cnVlLCBuYW1lTG9jKSxcbiAgICAgICAgICBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKFxuICAgICAgICAgICAgdmFsdWUgPyB2YWx1ZS
155jb250ZW50IDogXCJcIixcbiAgICAgICAgICAgIGlzU3RhdGljLFxuICAgICAgICAgICAgdmFsdWUgPyB2YWx1ZS5sb2MgOiBsb2NcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgbmFtZSwgYXJnLCBleHAsIGxvYywgbW9kaWZpZXJzIH0gPSBwcm9wO1xuICAgICAgY29uc3QgaXNWQmluZCA9IG5hbWUgPT09IFwiYmluZFwiO1xuICAgICAgY29uc3QgaXNWT24gPSBuYW1lID09PSBcIm9uXCI7XG4gICAgICBpZiAobmFtZSA9PT0gXCJzbG90XCIpIHtcbiAgICAgICAgaWYgKCFpc0NvbXBvbmVudCkge1xuICAgICAgICAgIGNvbnRleHQub25FcnJvcihcbiAgICAgICAgICAgIGNyZWF0ZUNvbXBpbGVyRXJyb3IoNDAsIGxvYylcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKG5hbWUgPT09IFwib25jZVwiIHx8IG5hbWUgPT09IFwibWVtb1wiKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKG5hbWUgPT09IFwiaXNcIiB8fCBpc1ZCaW5kICYmIGlzU3RhdGljQXJnT2YoYXJnLCBcImlzXCIpICYmIChpc0NvbXBvbmVudFRhZyh0YWcpIHx8IGlzQ29tcGF0RW5hYmxlZChcbiAgICAgICAgXCJDT01QSUxFUl9JU19PTl9FTEVNRU5UXCIsXG4gICAgICAgIGNvbnRleHRcbiAgICAgICkpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKGlzVk9uICYmIHNzcikge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgLy8gIzkzODogZWxlbWVudHMgd2l0aCBkeW5hbWljIGtleXMgc2hvdWxkIGJlIGZvcmNlZCBpbnRvIGJsb2Nrc1xuICAgICAgICBpc1ZCaW5kICYmIGlzU3RhdGljQXJnT2YoYXJnLCBcImtleVwiKSB8fCAvLyBpbmxpbmUgYmVmb3JlLXVwZGF0ZSBob29rcyBuZWVkIHRvIGZvcmNlIGJsb2NrIHNvIHRoYXQgaXQgaXMgaW52b2tlZFxuICAgICAgICAvLyBiZWZvcmUgY2hpbGRyZW5cbiAgICAgICAgaXNWT24gJiYgaGFzQ2hpbGRyZW4gJiYgaXNTdGF0aWNBcmdPZihhcmcsIFwidnVlOmJlZm9yZS11cGRhdGVcIilcbiAgICAgICkge1xuICAgICAgICBzaG91bGRVc2VCbG9jayA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoaXNWQmluZCAmJiBpc1N0YXRpY0FyZ09mKGFyZywgXCJyZWZcIikpIHtcbiAgICAgICAgcHVzaFJlZlZGb3JNYXJrZXIoKTtcbiAgICAgIH1cbiAgICAgIGlmICghYXJnICYmIChpc1ZCaW5kIHx8IGlzVk9uKSkge1xuICAgICAgICBoYXNEeW5hbWljS2V5cyA9IHRydWU7XG4gICAgICAgIGlmIChleHApIHtcbiAgICAgICAgICBpZiAoaXNWQmluZCkge1xuICAgICAgICAgICAgcHVzaFJlZlZGb3JNYXJrZXIoKTtcbiAgICAgICAgICAgIHB1c2hNZXJnZUFyZygpO1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGhhc092ZXJyaWRhYmxlS2V5cyA9IG1lcmdlQXJncy5zb21lKChhcmcyKSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAoYXJnMi50eXBlID09PSAxNSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXJnMi5wcm9wZXJ0aWVzLnNvbWUoKHsga2V5IH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoa2V5LnR5cGUgIT09IDQgfHwgIWtleS5pc1N0YXRpYykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBrZXkuY29udGVudCAhPT0gXCJjbGFzc1wiICYmIGtleS5jb250ZW50ICE9PSBcInN0eWxlXCIgJiYgIWlzT24oa2V5LmNvbnRlbnQpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmIChoYXNPdmVycmlkYWJsZUtleXMpIHtcbiAgICAgICAgICAgICAgICAgIGNoZWNrQ29tcGF0RW5hYmxlZChcbiAgICAgICAgICAgICAgICAgICAgXCJDT01QSUxFUl9WX0JJTkRfT0JKRUNUX09SREVSXCIsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgICAgICAgICAgIGxvY1xuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKGlzQ29tcGF0RW5hYmxlZChcbiAgICAgICAgICAgICAgICBcIkNPTVBJTEVSX1ZfQklORF9PQkpFQ1RfT1JERVJcIixcbiAgICAgICAgICAgICAgICBjb250ZXh0XG4gICAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgICBtZXJnZUFyZ3MudW5zaGlmdChleHApO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBtZXJnZUFyZ3MucHVzaChleHApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwdXNoTWVyZ2VBcmcoe1xuICAgICAgICAgICAgICB0eXBlOiAxNCxcbiAgICAgICAgICAgICAgbG9jLFxuICAgICAgICAgICAgICBjYWxsZWU6IGNvbnRleHQuaGVscGVyKFRPX0hBTkRMRVJTKSxcbiAgICAgICAgICAgICAgYXJndW1lbnRzOiBpc0NvbXBvbmVudCA/IFtleHBdIDogW2V4cCwgYHRydWVgXVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnRleHQub25FcnJvcihcbiAgICAgICAgICAgIGNyZWF0ZUNvbXBpbGVyRXJyb3IoXG4gICAgICAgICAgICAgIGlzVkJpbmQgPyAzNCA6IDM1LFxuICAgICAgICAgICAgICBsb2NcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKGlzVkJpbmQgJiYgbW9kaWZpZXJzLmluY2x1ZGVzKFwicHJvcFwiKSkge1xuICAgICAgICBwYXRjaEZsYWcgfD0gMzI7XG4gICAgICB9XG4gICAgICBjb25zdCBkaXJlY3RpdmVUcmFuc2Zvcm0gPSBjb250ZXh0LmRpcmVjdGl2ZVRyYW5zZm9ybXNbbmFtZV07XG4gICAgICBpZiAoZGlyZWN0aXZlVHJhbnNmb3JtKSB7XG4gICAgICAgIGNvbnN0IHsgcHJvcHM6IHByb3BzMiwgbmVlZFJ1bnRpbWUgfSA9IGRpcmVjdGl2ZVRyYW5zZm9ybShwcm9wLCBub2Rl
15LCBjb250ZXh0KTtcbiAgICAgICAgIXNzciAmJiBwcm9wczIuZm9yRWFjaChhbmFseXplUGF0Y2hGbGFnKTtcbiAgICAgICAgaWYgKGlzVk9uICYmIGFyZyAmJiAhaXNTdGF0aWNFeHAoYXJnKSkge1xuICAgICAgICAgIHB1c2hNZXJnZUFyZyhjcmVhdGVPYmplY3RFeHByZXNzaW9uKHByb3BzMiwgZWxlbWVudExvYykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHByb3BlcnRpZXMucHVzaCguLi5wcm9wczIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuZWVkUnVudGltZSkge1xuICAgICAgICAgIHJ1bnRpbWVEaXJlY3RpdmVzLnB1c2gocHJvcCk7XG4gICAgICAgICAgaWYgKGlzU3ltYm9sKG5lZWRSdW50aW1lKSkge1xuICAgICAgICAgICAgZGlyZWN0aXZlSW1wb3J0TWFwLnNldChwcm9wLCBuZWVkUnVudGltZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKCFpc0J1aWx0SW5EaXJlY3RpdmUobmFtZSkpIHtcbiAgICAgICAgcnVudGltZURpcmVjdGl2ZXMucHVzaChwcm9wKTtcbiAgICAgICAgaWYgKGhhc0NoaWxkcmVuKSB7XG4gICAgICAgICAgc2hvdWxkVXNlQmxvY2sgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGxldCBwcm9wc0V4cHJlc3Npb24gPSB2b2lkIDA7XG4gIGlmIChtZXJnZUFyZ3MubGVuZ3RoKSB7XG4gICAgcHVzaE1lcmdlQXJnKCk7XG4gICAgaWYgKG1lcmdlQXJncy5sZW5ndGggPiAxKSB7XG4gICAgICBwcm9wc0V4cHJlc3Npb24gPSBjcmVhdGVDYWxsRXhwcmVzc2lvbihcbiAgICAgICAgY29udGV4dC5oZWxwZXIoTUVSR0VfUFJPUFMpLFxuICAgICAgICBtZXJnZUFyZ3MsXG4gICAgICAgIGVsZW1lbnRMb2NcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByb3BzRXhwcmVzc2lvbiA9IG1lcmdlQXJnc1swXTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvcGVydGllcy5sZW5ndGgpIHtcbiAgICBwcm9wc0V4cHJlc3Npb24gPSBjcmVhdGVPYmplY3RFeHByZXNzaW9uKFxuICAgICAgZGVkdXBlUHJvcGVydGllcyhwcm9wZXJ0aWVzKSxcbiAgICAgIGVsZW1lbnRMb2NcbiAgICApO1xuICB9XG4gIGlmIChoYXNEeW5hbWljS2V5cykge1xuICAgIHBhdGNoRmxhZyB8PSAxNjtcbiAgfSBlbHNlIHtcbiAgICBpZiAoaGFzQ2xhc3NCaW5kaW5nICYmICFpc0NvbXBvbmVudCkge1xuICAgICAgcGF0Y2hGbGFnIHw9IDI7XG4gICAgfVxuICAgIGlmIChoYXNTdHlsZUJpbmRpbmcgJiYgIWlzQ29tcG9uZW50KSB7XG4gICAgICBwYXRjaEZsYWcgfD0gNDtcbiAgICB9XG4gICAgaWYgKGR5bmFtaWNQcm9wTmFtZXMubGVuZ3RoKSB7XG4gICAgICBwYXRjaEZsYWcgfD0gODtcbiAgICB9XG4gICAgaWYgKGhhc0h5ZHJhdGlvbkV2ZW50QmluZGluZykge1xuICAgICAgcGF0Y2hGbGFnIHw9IDMyO1xuICAgIH1cbiAgfVxuICBpZiAoIXNob3VsZFVzZUJsb2NrICYmIChwYXRjaEZsYWcgPT09IDAgfHwgcGF0Y2hGbGFnID09PSAzMikgJiYgKGhhc1JlZiB8fCBoYXNWbm9kZUhvb2sgfHwgcnVudGltZURpcmVjdGl2ZXMubGVuZ3RoID4gMCkpIHtcbiAgICBwYXRjaEZsYWcgfD0gNTEyO1xuICB9XG4gIGlmICghY29udGV4dC5pblNTUiAmJiBwcm9wc0V4cHJlc3Npb24pIHtcbiAgICBzd2l0Y2ggKHByb3BzRXhwcmVzc2lvbi50eXBlKSB7XG4gICAgICBjYXNlIDE1OlxuICAgICAgICBsZXQgY2xhc3NLZXlJbmRleCA9IC0xO1xuICAgICAgICBsZXQgc3R5bGVLZXlJbmRleCA9IC0xO1xuICAgICAgICBsZXQgaGFzRHluYW1pY0tleSA9IGZhbHNlO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3BzRXhwcmVzc2lvbi5wcm9wZXJ0aWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgY29uc3Qga2V5ID0gcHJvcHNFeHByZXNzaW9uLnByb3BlcnRpZXNbaV0ua2V5O1xuICAgICAgICAgIGlmIChpc1N0YXRpY0V4cChrZXkpKSB7XG4gICAgICAgICAgICBpZiAoa2V5LmNvbnRlbnQgPT09IFwiY2xhc3NcIikge1xuICAgICAgICAgICAgICBjbGFzc0tleUluZGV4ID0gaTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoa2V5LmNvbnRlbnQgPT09IFwic3R5bGVcIikge1xuICAgICAgICAgICAgICBzdHlsZUtleUluZGV4ID0gaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKCFrZXkuaXNIYW5kbGVyS2V5KSB7XG4gICAgICAgICAgICBoYXNEeW5hbWljS2V5ID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2xhc3NQcm9wID0gcHJvcHNFeHByZXNzaW9uLnByb3BlcnRpZXNbY2xhc3NLZXlJbmRleF07XG4gICAgICAgIGNvbnN0IHN0eWxlUHJvcCA9IHByb3BzRXhwcmVzc2lvbi5wcm9wZXJ0aWVzW3N0eWxlS2V5SW5kZXhdO1xuICAgICAgICBpZiAoIWhhc0R5bmFtaWNLZXkpIHtcbiAgICAgICAgICBpZiAoY2xhc3NQcm9wICYmICFpc1N0YXRpY0V4cChjbGFzc1Byb3AudmFsdWUpKSB7XG4gICAgICAgICAgICBjbGFzc1Byb3AudmFsdWUgPSBjcmVhdGVDYWxsRXhwcmVzc2lvbihcbiAgICAgICAgICAgICAgY29udGV4dC5oZWxwZXIoTk9STUFMSVpFX0NMQVNTKSxcbiAgICAgICAgICAgICAgW2NsYXNzUHJvcC52YWx1ZV1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzdHlsZVByb3AgJiYgLy8gdGhlIHN0YXRpYyBzdHlsZSBpcyBjb21waWxlZCBpbnRvIGFuIG9iamVjdCxcbiAgICAgICAgICAvLyBzbyB1c2UgYGhhc1N0eWxlQmluZGluZ2AgdG8gZW5zdXJlIHRoYXQgaXQgaXMgYSBkeW5hbWljIHN0eWxlIGJpbmRpbmdcbiAgICAgICAgICAoaGFzU3R5bGVCaW5kaW5nIHx8IHN0eWxlUHJvcC52YWx1ZS50eXBlID09PSA0ICYmIHN0eWxlUHJvcC52YWx1ZS5jb250ZW50LnRyaW0oKVswXSA9PT0gYFtgIHx8IC8vIHYtYmluZDpzdHlsZSBhbmQgc3R5bGUgYm90aCBleGlzdCxcbiAgICAgICAgICAvLyB2LWJpbmQ6c3R5bGUgd2l0aCBzdGF0aWMgbGl0ZXJhbCBvYmplY3RcbiAgICAgICAgICBzdHlsZVByb3AudmFsdWUudHlwZSA9PT0gMTcpKSB7XG4gICAgICAgICAgICBzdHlsZVByb3AudmFsdWUgPSBjcmVhdGVDYWxsRXhwcmVzc2lvbihcbiAgICAgICAgICAgICAgY29udGV4dC5oZWxwZXIoTk9STUFMSVpFX1NUWUxFKSxcbiAgICAgICAgICAgICAgW3N0eWxlUHJvcC52YWx1ZV1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgI
15HByb3BzRXhwcmVzc2lvbiA9IGNyZWF0ZUNhbGxFeHByZXNzaW9uKFxuICAgICAgICAgICAgY29udGV4dC5oZWxwZXIoTk9STUFMSVpFX1BST1BTKSxcbiAgICAgICAgICAgIFtwcm9wc0V4cHJlc3Npb25dXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTQ6XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcHJvcHNFeHByZXNzaW9uID0gY3JlYXRlQ2FsbEV4cHJlc3Npb24oXG4gICAgICAgICAgY29udGV4dC5oZWxwZXIoTk9STUFMSVpFX1BST1BTKSxcbiAgICAgICAgICBbXG4gICAgICAgICAgICBjcmVhdGVDYWxsRXhwcmVzc2lvbihjb250ZXh0LmhlbHBlcihHVUFSRF9SRUFDVElWRV9QUk9QUyksIFtcbiAgICAgICAgICAgICAgcHJvcHNFeHByZXNzaW9uXG4gICAgICAgICAgICBdKVxuICAgICAgICAgIF1cbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgcHJvcHM6IHByb3BzRXhwcmVzc2lvbixcbiAgICBkaXJlY3RpdmVzOiBydW50aW1lRGlyZWN0aXZlcyxcbiAgICBwYXRjaEZsYWcsXG4gICAgZHluYW1pY1Byb3BOYW1lcyxcbiAgICBzaG91bGRVc2VCbG9ja1xuICB9O1xufVxuZnVuY3Rpb24gZGVkdXBlUHJvcGVydGllcyhwcm9wZXJ0aWVzKSB7XG4gIGNvbnN0IGtub3duUHJvcHMgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuICBjb25zdCBkZWR1cGVkID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvcGVydGllcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHByb3AgPSBwcm9wZXJ0aWVzW2ldO1xuICAgIGlmIChwcm9wLmtleS50eXBlID09PSA4IHx8ICFwcm9wLmtleS5pc1N0YXRpYykge1xuICAgICAgZGVkdXBlZC5wdXNoKHByb3ApO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IG5hbWUgPSBwcm9wLmtleS5jb250ZW50O1xuICAgIGNvbnN0IGV4aXN0aW5nID0ga25vd25Qcm9wcy5nZXQobmFtZSk7XG4gICAgaWYgKGV4aXN0aW5nKSB7XG4gICAgICBpZiAobmFtZSA9PT0gXCJzdHlsZVwiIHx8IG5hbWUgPT09IFwiY2xhc3NcIiB8fCBpc09uKG5hbWUpKSB7XG4gICAgICAgIG1lcmdlQXNBcnJheShleGlzdGluZywgcHJvcCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGtub3duUHJvcHMuc2V0KG5hbWUsIHByb3ApO1xuICAgICAgZGVkdXBlZC5wdXNoKHByb3ApO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZGVkdXBlZDtcbn1cbmZ1bmN0aW9uIG1lcmdlQXNBcnJheShleGlzdGluZywgaW5jb21pbmcpIHtcbiAgaWYgKGV4aXN0aW5nLnZhbHVlLnR5cGUgPT09IDE3KSB7XG4gICAgZXhpc3RpbmcudmFsdWUuZWxlbWVudHMucHVzaChpbmNvbWluZy52YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgZXhpc3RpbmcudmFsdWUgPSBjcmVhdGVBcnJheUV4cHJlc3Npb24oXG4gICAgICBbZXhpc3RpbmcudmFsdWUsIGluY29taW5nLnZhbHVlXSxcbiAgICAgIGV4aXN0aW5nLmxvY1xuICAgICk7XG4gIH1cbn1cbmZ1bmN0aW9uIGJ1aWxkRGlyZWN0aXZlQXJncyhkaXIsIGNvbnRleHQpIHtcbiAgY29uc3QgZGlyQXJncyA9IFtdO1xuICBjb25zdCBydW50aW1lID0gZGlyZWN0aXZlSW1wb3J0TWFwLmdldChkaXIpO1xuICBpZiAocnVudGltZSkge1xuICAgIGRpckFyZ3MucHVzaChjb250ZXh0LmhlbHBlclN0cmluZyhydW50aW1lKSk7XG4gIH0gZWxzZSB7XG4gICAge1xuICAgICAgY29udGV4dC5oZWxwZXIoUkVTT0xWRV9ESVJFQ1RJVkUpO1xuICAgICAgY29udGV4dC5kaXJlY3RpdmVzLmFkZChkaXIubmFtZSk7XG4gICAgICBkaXJBcmdzLnB1c2godG9WYWxpZEFzc2V0SWQoZGlyLm5hbWUsIGBkaXJlY3RpdmVgKSk7XG4gICAgfVxuICB9XG4gIGNvbnN0IHsgbG9jIH0gPSBkaXI7XG4gIGlmIChkaXIuZXhwKSBkaXJBcmdzLnB1c2goZGlyLmV4cCk7XG4gIGlmIChkaXIuYXJnKSB7XG4gICAgaWYgKCFkaXIuZXhwKSB7XG4gICAgICBkaXJBcmdzLnB1c2goYHZvaWQgMGApO1xuICAgIH1cbiAgICBkaXJBcmdzLnB1c2goZGlyLmFyZyk7XG4gIH1cbiAgaWYgKE9iamVjdC5rZXlzKGRpci5tb2RpZmllcnMpLmxlbmd0aCkge1xuICAgIGlmICghZGlyLmFyZykge1xuICAgICAgaWYgKCFkaXIuZXhwKSB7XG4gICAgICAgIGRpckFyZ3MucHVzaChgdm9pZCAwYCk7XG4gICAgICB9XG4gICAgICBkaXJBcmdzLnB1c2goYHZvaWQgMGApO1xuICAgIH1cbiAgICBjb25zdCB0cnVlRXhwcmVzc2lvbiA9IGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oYHRydWVgLCBmYWxzZSwgbG9jKTtcbiAgICBkaXJBcmdzLnB1c2goXG4gICAgICBjcmVhdGVPYmplY3RFeHByZXNzaW9uKFxuICAgICAgICBkaXIubW9kaWZpZXJzLm1hcChcbiAgICAgICAgICAobW9kaWZpZXIpID0+IGNyZWF0ZU9iamVjdFByb3BlcnR5KG1vZGlmaWVyLCB0cnVlRXhwcmVzc2lvbilcbiAgICAgICAgKSxcbiAgICAgICAgbG9jXG4gICAgICApXG4gICAgKTtcbiAgfVxuICByZXR1cm4gY3JlYXRlQXJyYXlFeHByZXNzaW9uKGRpckFyZ3MsIGRpci5sb2MpO1xufVxuZnVuY3Rpb24gc3RyaW5naWZ5RHluYW1pY1Byb3BOYW1lcyhwcm9wcykge1xuICBsZXQgcHJvcHNOYW1lc1N0cmluZyA9IGBbYDtcbiAgZm9yIChsZXQgaSA9IDAsIGwgPSBwcm9wcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBwcm9wc05hbWVzU3RyaW5nICs9IEpTT04uc3RyaW5naWZ5KHByb3BzW2ldKTtcbiAgICBpZiAoaSA8IGwgLSAxKSBwcm9wc05hbWVzU3RyaW5nICs9IFwiLCBcIjtcbiAgfVxuICByZXR1cm4gcHJvcHNOYW1lc1N0cmluZyArIGBdYDtcbn1cbmZ1bmN0aW9uIGlzQ29tcG9uZW50VGFnKHRhZykge1xuICByZXR1cm4gdGFnID09PSBcImNvbXBvbmVudFwiIHx8IHRhZyA9PT0gXCJDb21wb25lbnRcIjtcbn1cblxuY29uc3QgdHJhbnNmb3JtU2xvdE91dGxldCA9IChub2RlLCBjb250ZXh0KSA9PiB7XG4gIGlmIChpc1Nsb3RPdXRsZXQobm9kZSkpIHtcbiAgICBjb25zdCB7IGNoaWxkcmVuLCBsb2MgfSA9IG5vZGU7XG4gICAgY29uc3QgeyBzbG90TmFtZSwgc2xvdFByb3BzIH0gPSBwcm9jZXNzU2xvdE91dGxldChub2RlLCBjb250ZXh0KTtcbiAgICBjb25zdCBzbG90QXJncyA9IFtcbiAgICAgIGNvbnRleHQucHJlZml4SWRlbnRpZmllcnMgPyBgX2N0eC4kc2xvdHNgIDogYCRzbG90c2AsXG4gICAgICBzbG90TmFtZSxcbiAgICAgIFwie31cIixcbiAgICAgIFwidW5kZWZpbmVkXCIsXG4gICAgICBcInRydWVcIlxuICAgIF07XG4gICAgbGV0IGV4cGVjdGVkTGVuID0gMjtcbiAgICBpZiAoc2xvdFByb3BzKSB7XG4gICAgICBzbG90QXJnc1syXSA9IHNsb3RQcm9wcztcbiAgICAgIGV4cGVjdGVkTGVuID0gMztcbiAgICB9XG4gICAgaWYgKGNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgc2xvdEFyZ3NbM10gPSBjcmVhdGVGdW5jdGlvbkV4cHJlc3Npb24oW10sIGNoaWxkcmVuLCBmYWxzZSwgZmFsc2UsIGxvYyk7XG4gICAgICBleHBlY3RlZExlbiA9IDQ7XG4gICAgfVxuICAgIGlmIChjb250ZXh0LnNjb3BlSWQgJiYgIWNvbnRleHQuc2xvdHRlZCkge1xuICAgICAgZXhwZWN0ZWRMZW4gPSA1O1xuICAgIH1cbiAgICBzbG90QXJncy5zcGxpY2UoZXhwZWN0ZWRMZW4pO1xuICAgIG5vZGUuY29kZWdlbk5vZGUgPSBjcmVhdGVDYWxsRXhwcmVzc2lvbihcbiAgICAgIGNvbnRleHQuaGVscGVyKFJFTkRFUl9TTE9UKSxcbiAgICAgIHNsb3RBcmdzLFxuICAgICAgbG9jXG4gICAgKTtcbiAgfVxufTtcbmZ1bmN0aW9uIHByb2Nlc3NTbG90T3V0bGV0KG5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IHNsb3ROYW1lID0gYFwiZGVmYXVsdFwiYDtcbiAgbGV0IHNsb3RQcm9wcyA9IHZvaWQgMDtcbiAgY29uc3Qgbm9uTmFtZVByb3BzID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5wcm9wcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHAgPSBub2RlLnByb3BzW2ldO1xuICAgIGlmIChwLnR5cGUgPT09IDYpIHtcbiAgICAgIGlmIChwLnZhbHVlKSB7XG4gICAgICAgIGlmIChwLm5hbWUgPT09IFwibmFtZVwiKSB7XG4gICAgICAgICAgc2xvdE5hbWUgPSBKU09OLnN0cmluZ2lmeShwLnZhbHVlLmNvbnRlbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgI
15HAubmFtZSA9IGNhbWVsaXplKHAubmFtZSk7XG4gICAgICAgICAgbm9uTmFtZVByb3BzLnB1c2gocCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHAubmFtZSA9PT0gXCJiaW5kXCIgJiYgaXNTdGF0aWNBcmdPZihwLmFyZywgXCJuYW1lXCIpKSB7XG4gICAgICAgIGlmIChwLmV4cCkge1xuICAgICAgICAgIHNsb3ROYW1lID0gcC5leHA7XG4gICAgICAgIH0gZWxzZSBpZiAocC5hcmcgJiYgcC5hcmcudHlwZSA9PT0gNCkge1xuICAgICAgICAgIGNvbnN0IG5hbWUgPSBjYW1lbGl6ZShwLmFyZy5jb250ZW50KTtcbiAgICAgICAgICBzbG90TmFtZSA9IHAuZXhwID0gY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihuYW1lLCBmYWxzZSwgcC5hcmcubG9jKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHAubmFtZSA9PT0gXCJiaW5kXCIgJiYgcC5hcmcgJiYgaXNTdGF0aWNFeHAocC5hcmcpKSB7XG4gICAgICAgICAgcC5hcmcuY29udGVudCA9IGNhbWVsaXplKHAuYXJnLmNvbnRlbnQpO1xuICAgICAgICB9XG4gICAgICAgIG5vbk5hbWVQcm9wcy5wdXNoKHApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAobm9uTmFtZVByb3BzLmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCB7IHByb3BzLCBkaXJlY3RpdmVzIH0gPSBidWlsZFByb3BzKFxuICAgICAgbm9kZSxcbiAgICAgIGNvbnRleHQsXG4gICAgICBub25OYW1lUHJvcHMsXG4gICAgICBmYWxzZSxcbiAgICAgIGZhbHNlXG4gICAgKTtcbiAgICBzbG90UHJvcHMgPSBwcm9wcztcbiAgICBpZiAoZGlyZWN0aXZlcy5sZW5ndGgpIHtcbiAgICAgIGNvbnRleHQub25FcnJvcihcbiAgICAgICAgY3JlYXRlQ29tcGlsZXJFcnJvcihcbiAgICAgICAgICAzNixcbiAgICAgICAgICBkaXJlY3RpdmVzWzBdLmxvY1xuICAgICAgICApXG4gICAgICApO1xuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIHNsb3ROYW1lLFxuICAgIHNsb3RQcm9wc1xuICB9O1xufVxuXG5jb25zdCB0cmFuc2Zvcm1PbiA9IChkaXIsIG5vZGUsIGNvbnRleHQsIGF1Z21lbnRvcikgPT4ge1xuICBjb25zdCB7IGxvYywgbW9kaWZpZXJzLCBhcmcgfSA9IGRpcjtcbiAgaWYgKCFkaXIuZXhwICYmICFtb2RpZmllcnMubGVuZ3RoKSB7XG4gICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoMzUsIGxvYykpO1xuICB9XG4gIGxldCBldmVudE5hbWU7XG4gIGlmIChhcmcudHlwZSA9PT0gNCkge1xuICAgIGlmIChhcmcuaXNTdGF0aWMpIHtcbiAgICAgIGxldCByYXdOYW1lID0gYXJnLmNvbnRlbnQ7XG4gICAgICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSAmJiByYXdOYW1lLnN0YXJ0c1dpdGgoXCJ2bm9kZVwiKSkge1xuICAgICAgICBjb250ZXh0Lm9uRXJyb3IoY3JlYXRlQ29tcGlsZXJFcnJvcig1MSwgYXJnLmxvYykpO1xuICAgICAgfVxuICAgICAgaWYgKHJhd05hbWUuc3RhcnRzV2l0aChcInZ1ZTpcIikpIHtcbiAgICAgICAgcmF3TmFtZSA9IGB2bm9kZS0ke3Jhd05hbWUuc2xpY2UoNCl9YDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGV2ZW50U3RyaW5nID0gbm9kZS50YWdUeXBlICE9PSAwIHx8IHJhd05hbWUuc3RhcnRzV2l0aChcInZub2RlXCIpIHx8ICEvW0EtWl0vLnRlc3QocmF3TmFtZSkgPyAoXG4gICAgICAgIC8vIGZvciBub24tZWxlbWVudCBhbmQgdm5vZGUgbGlmZWN5Y2xlIGV2ZW50IGxpc3RlbmVycywgYXV0byBjb252ZXJ0XG4gICAgICAgIC8vIGl0IHRvIGNhbWVsQ2FzZS4gU2VlIGlzc3VlICMyMjQ5XG4gICAgICAgIHRvSGFuZGxlcktleShjYW1lbGl6ZShyYXdOYW1lKSlcbiAgICAgICkgOiAoXG4gICAgICAgIC8vIHByZXNlcnZlIGNhc2UgZm9yIHBsYWluIGVsZW1lbnQgbGlzdGVuZXJzIHRoYXQgaGF2ZSB1cHBlcmNhc2VcbiAgICAgICAgLy8gbGV0dGVycywgYXMgdGhlc2UgbWF5IGJlIGN1c3RvbSBlbGVtZW50cycgY3VzdG9tIGV2ZW50c1xuICAgICAgICBgb246JHtyYXdOYW1lfWBcbiAgICAgICk7XG4gICAgICBldmVudE5hbWUgPSBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGV2ZW50U3RyaW5nLCB0cnVlLCBhcmcubG9jKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZXZlbnROYW1lID0gY3JlYXRlQ29tcG91bmRFeHByZXNzaW9uKFtcbiAgICAgICAgYCR7Y29udGV4dC5oZWxwZXJTdHJpbmcoVE9fSEFORExFUl9LRVkpfShgLFxuICAgICAgICBhcmcsXG4gICAgICAgIGApYFxuICAgICAgXSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGV2ZW50TmFtZSA9IGFyZztcbiAgICBldmVudE5hbWUuY2hpbGRyZW4udW5zaGlmdChgJHtjb250ZXh0LmhlbHBlclN0cmluZyhUT19IQU5ETEVSX0tFWSl9KGApO1xuICAgIGV2ZW50TmFtZS5jaGlsZHJlbi5wdXNoKGApYCk7XG4gIH1cbiAgbGV0IGV4cCA9IGRpci5leHA7XG4gIGlmIChleHAgJiYgIWV4cC5jb250ZW50LnRyaW0oKSkge1xuICAgIGV4cCA9IHZvaWQgMDtcbiAgfVxuICBsZXQgc2hvdWxkQ2FjaGUgPSBjb250ZXh0LmNhY2hlSGFuZGxlcnMgJiYgIWV4cCAmJiAhY29udGV4dC5pblZPbmNlO1xuICBpZiAoZXhwKSB7XG4gICAgY29uc3QgaXNNZW1iZXJFeHAgPSBpc01lbWJlckV4cHJlc3Npb24oZXhwKTtcbiAgICBjb25zdCBpc0lubGluZVN0YXRlbWVudCA9ICEoaXNNZW1iZXJFeHAgfHwgaXNGbkV4cHJlc3Npb24oZXhwKSk7XG4gICAgY29uc3QgaGFzTXVsdGlwbGVTdGF0ZW1lbnRzID0gZXhwLmNvbnRlbnQuaW5jbHVkZXMoYDtgKTtcbiAgICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSAmJiB0cnVlKSB7XG4gICAgICB2YWxpZGF0ZUJyb3dzZXJFeHByZXNzaW9uKFxuICAgICAgICBleHAsXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIGZhbHNlLFxuICAgICAgICBoYXNNdWx0aXBsZVN0YXRlbWVudHNcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChpc0lubGluZVN0YXRlbWVudCB8fCBzaG91bGRDYWNoZSAmJiBpc01lbWJlckV4cCkge1xuICAgICAgZXhwID0gY3JlYXRlQ29tcG91bmRFeHByZXNzaW9uKFtcbiAgICAgICAgYCR7aXNJbmxpbmVTdGF0ZW1lbnQgPyBgJGV2ZW50YCA6IGAke2BgfSguLi5hcmdzKWB9ID0+ICR7aGFzTXVsdGlwbGVTdGF0ZW1lbnRzID8gYHtgIDogYChgfWAsXG4gICAgICAgIGV4cCxcbiAgICAgICAgaGFzTXVsdGlwbGVTdGF0ZW1lbnRzID8gYH1gIDogYClgXG4gICAgICBdKTtcbiAgICB9XG4gI
15H1cbiAgbGV0IHJldCA9IHtcbiAgICBwcm9wczogW1xuICAgICAgY3JlYXRlT2JqZWN0UHJvcGVydHkoXG4gICAgICAgIGV2ZW50TmFtZSxcbiAgICAgICAgZXhwIHx8IGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oYCgpID0+IHt9YCwgZmFsc2UsIGxvYylcbiAgICAgIClcbiAgICBdXG4gIH07XG4gIGlmIChhdWdtZW50b3IpIHtcbiAgICByZXQgPSBhdWdtZW50b3IocmV0KTtcbiAgfVxuICBpZiAoc2hvdWxkQ2FjaGUpIHtcbiAgICByZXQucHJvcHNbMF0udmFsdWUgPSBjb250ZXh0LmNhY2hlKHJldC5wcm9wc1swXS52YWx1ZSk7XG4gIH1cbiAgcmV0LnByb3BzLmZvckVhY2goKHApID0+IHAua2V5LmlzSGFuZGxlcktleSA9IHRydWUpO1xuICByZXR1cm4gcmV0O1xufTtcblxuY29uc3QgdHJhbnNmb3JtVGV4dCA9IChub2RlLCBjb250ZXh0KSA9PiB7XG4gIGlmIChub2RlLnR5cGUgPT09IDAgfHwgbm9kZS50eXBlID09PSAxIHx8IG5vZGUudHlwZSA9PT0gMTEgfHwgbm9kZS50eXBlID09PSAxMCkge1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjb25zdCBjaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW47XG4gICAgICBsZXQgY3VycmVudENvbnRhaW5lciA9IHZvaWQgMDtcbiAgICAgIGxldCBoYXNUZXh0ID0gZmFsc2U7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkID0gY2hpbGRyZW5baV07XG4gICAgICAgIGlmIChpc1RleHQkMShjaGlsZCkpIHtcbiAgICAgICAgICBoYXNUZXh0ID0gdHJ1ZTtcbiAgICAgICAgICBmb3IgKGxldCBqID0gaSArIDE7IGogPCBjaGlsZHJlbi5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgY29uc3QgbmV4dCA9IGNoaWxkcmVuW2pdO1xuICAgICAgICAgICAgaWYgKGlzVGV4dCQxKG5leHQpKSB7XG4gICAgICAgICAgICAgIGlmICghY3VycmVudENvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRDb250YWluZXIgPSBjaGlsZHJlbltpXSA9IGNyZWF0ZUNvbXBvdW5kRXhwcmVzc2lvbihcbiAgICAgICAgICAgICAgICAgIFtjaGlsZF0sXG4gICAgICAgICAgICAgICAgICBjaGlsZC5sb2NcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGN1cnJlbnRDb250YWluZXIuY2hpbGRyZW4ucHVzaChgICsgYCwgbmV4dCk7XG4gICAgICAgICAgICAgIGNoaWxkcmVuLnNwbGljZShqLCAxKTtcbiAgICAgICAgICAgICAgai0tO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY3VycmVudENvbnRhaW5lciA9IHZvaWQgMDtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoIWhhc1RleHQgfHwgLy8gaWYgdGhpcyBpcyBhIHBsYWluIGVsZW1lbnQgd2l0aCBhIHNpbmdsZSB0ZXh0IGNoaWxkLCBsZWF2ZSBpdFxuICAgICAgLy8gYXMtaXMgc2luY2UgdGhlIHJ1bnRpbWUgaGFzIGRlZGljYXRlZCBmYXN0IHBhdGggZm9yIHRoaXMgYnkgZGlyZWN0bHlcbiAgICAgIC8vIHNldHRpbmcgdGV4dENvbnRlbnQgb2YgdGhlIGVsZW1lbnQuXG4gICAgICAvLyBmb3IgY29tcG9uZW50IHJvb3QgaXQncyBhbHdheXMgbm9ybWFsaXplZCBhbnl3YXkuXG4gICAgICBjaGlsZHJlbi5sZW5ndGggPT09IDEgJiYgKG5vZGUudHlwZSA9PT0gMCB8fCBub2RlLnR5cGUgPT09IDEgJiYgbm9kZS50YWdUeXBlID09PSAwICYmIC8vICMzNzU2XG4gICAgICAvLyBjdXN0b20gZGlyZWN0aXZlcyBjYW4gcG90ZW50aWFsbHkgYWRkIERPTSBlbGVtZW50cyBhcmJpdHJhcmlseSxcbiAgICAgIC8vIHdlIG5lZWQgdG8gYXZvaWQgc2V0dGluZyB0ZXh0Q29udGVudCBvZiB0aGUgZWxlbWVudCBhdCBydW50aW1lXG4gICAgICAvLyB0byBhdm9pZCBhY2NpZGVudGFsbHkgb3ZlcndyaXRpbmcgdGhlIERPTSBlbGVtZW50cyBhZGRlZFxuICAgICAgLy8gYnkgdGhlIHVzZXIgdGhyb3VnaCBjdXN0b20gZGlyZWN0aXZlcy5cbiAgICAgICFub2RlLnByb3BzLmZpbmQoXG4gICAgICAgIChwKSA9PiBwLnR5cGUgPT09IDcgJiYgIWNvbnRleHQuZGlyZWN0aXZlVHJhbnNmb3Jtc1twLm5hbWVdXG4gICAgICApICYmIC8vIGluIGNvbXBhdCBtb2RlLCA8dGVtcGxhdGU+IHRhZ3Mgd2l0aCBubyBzcGVjaWFsIGRpcmVjdGl2ZXNcbiAgICAgIC8vIHdpbGwgYmUgcmVuZGVyZWQgYXMgYSBmcmFnbWVudCBzbyBpdHMgY2hpbGRyZW4gbXVzdCBiZVxuICAgICAgLy8gY29udmVydGVkIGludG8gdm5vZGVzLlxuICAgICAgIShub2RlLnRhZyA9PT0gXCJ0ZW1wbGF0ZVwiKSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBjaGlsZCA9IGNoaWxkcmVuW2ldO1xuICAgICAgICBpZiAoaXNUZXh0JDEoY2hpbGQpIHx8IGNoaWxkLnR5cGUgPT09IDgpIHtcbiAgICAgICAgICBjb25zdCBjYWxsQXJncyA9IFtdO1xuICAgICAgICAgIGlmIChjaGlsZC50eXBlICE9PSAyIHx8IGNoaWxkLmNvbnRlbnQgIT09IFwiIFwiKSB7XG4gICAgICAgICAgICBjYWxsQXJncy5wdXNoKGNoaWxkKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFjb250ZXh0LnNzciAmJiBnZXRDb25zdGFudFR5cGUoY2hpbGQsIGNvbnRleHQpID09PSAwKSB7XG4gICAgICAgICAgICBjYWxsQXJncy5wdXNoKFxuICAgICAgICAgICAgICAxICsgKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgPyBgIC8qICR7UGF0Y2hGbGFnTmFtZXNbMV19ICovYCA6IGBgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2hpbGRyZW5baV0gPSB7XG4gICAgICAgICAgICB0eXBlOiAxMixcbiAgICAgICAgICAgIGNvbnRlbnQ6IGNoaWxkLFxuICAgICAgICAgICAgbG9jOiBjaGlsZC5sb2MsXG4gICAgICAgICAgICBjb2RlZ2VuTm9kZTogY3JlYXRlQ2FsbEV4cHJlc3Npb24oXG4gICAgICAgICAgICAgIGNvbnRleHQuaGVscGVyKENSRUFURV9URVhUKSxcbiAgICAgICAgICAgICAgY2FsbEFyZ3NcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxufTtcblxuY29uc3Qgc2VlbiQxID0gLyogQF9fUFVSRV9fICovIG5ldyBXZWFrU2V0KCk7XG5jb25zdCB0cmFuc2Zvcm1PbmNlID0gKG5vZGUsIGNvbnRleHQpID0+IHtcbiAgaWYgKG5vZGUudHlwZSA9PT0gMSAmJi
15BmaW5kRGlyKG5vZGUsIFwib25jZVwiLCB0cnVlKSkge1xuICAgIGlmIChzZWVuJDEuaGFzKG5vZGUpIHx8IGNvbnRleHQuaW5WT25jZSB8fCBjb250ZXh0LmluU1NSKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHNlZW4kMS5hZGQobm9kZSk7XG4gICAgY29udGV4dC5pblZPbmNlID0gdHJ1ZTtcbiAgICBjb250ZXh0LmhlbHBlcihTRVRfQkxPQ0tfVFJBQ0tJTkcpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjb250ZXh0LmluVk9uY2UgPSBmYWxzZTtcbiAgICAgIGNvbnN0IGN1ciA9IGNvbnRleHQuY3VycmVudE5vZGU7XG4gICAgICBpZiAoY3VyLmNvZGVnZW5Ob2RlKSB7XG4gICAgICAgIGN1ci5jb2RlZ2VuTm9kZSA9IGNvbnRleHQuY2FjaGUoXG4gICAgICAgICAgY3VyLmNvZGVnZW5Ob2RlLFxuICAgICAgICAgIHRydWVcbiAgICAgICAgICAvKiBpc1ZOb2RlICovXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxufTtcblxuY29uc3QgdHJhbnNmb3JtTW9kZWwgPSAoZGlyLCBub2RlLCBjb250ZXh0KSA9PiB7XG4gIGNvbnN0IHsgZXhwLCBhcmcgfSA9IGRpcjtcbiAgaWYgKCFleHApIHtcbiAgICBjb250ZXh0Lm9uRXJyb3IoXG4gICAgICBjcmVhdGVDb21waWxlckVycm9yKDQxLCBkaXIubG9jKVxuICAgICk7XG4gICAgcmV0dXJuIGNyZWF0ZVRyYW5zZm9ybVByb3BzKCk7XG4gIH1cbiAgY29uc3QgcmF3RXhwID0gZXhwLmxvYy5zb3VyY2U7XG4gIGNvbnN0IGV4cFN0cmluZyA9IGV4cC50eXBlID09PSA0ID8gZXhwLmNvbnRlbnQgOiByYXdFeHA7XG4gIGNvbnN0IGJpbmRpbmdUeXBlID0gY29udGV4dC5iaW5kaW5nTWV0YWRhdGFbcmF3RXhwXTtcbiAgaWYgKGJpbmRpbmdUeXBlID09PSBcInByb3BzXCIgfHwgYmluZGluZ1R5cGUgPT09IFwicHJvcHMtYWxpYXNlZFwiKSB7XG4gICAgY29udGV4dC5vbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoNDQsIGV4cC5sb2MpKTtcbiAgICByZXR1cm4gY3JlYXRlVHJhbnNmb3JtUHJvcHMoKTtcbiAgfVxuICBjb25zdCBtYXliZVJlZiA9IGZhbHNlO1xuICBpZiAoIWV4cFN0cmluZy50cmltKCkgfHwgIWlzTWVtYmVyRXhwcmVzc2lvbihleHApICYmICFtYXliZVJlZikge1xuICAgIGNvbnRleHQub25FcnJvcihcbiAgICAgIGNyZWF0ZUNvbXBpbGVyRXJyb3IoNDIsIGV4cC5sb2MpXG4gICAgKTtcbiAgICByZXR1cm4gY3JlYXRlVHJhbnNmb3JtUHJvcHMoKTtcbiAgfVxuICBjb25zdCBwcm9wTmFtZSA9IGFyZyA/IGFyZyA6IGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oXCJtb2RlbFZhbHVlXCIsIHRydWUpO1xuICBjb25zdCBldmVudE5hbWUgPSBhcmcgPyBpc1N0YXRpY0V4cChhcmcpID8gYG9uVXBkYXRlOiR7Y2FtZWxpemUoYXJnLmNvbnRlbnQpfWAgOiBjcmVhdGVDb21wb3VuZEV4cHJlc3Npb24oWydcIm9uVXBkYXRlOlwiICsgJywgYXJnXSkgOiBgb25VcGRhdGU6bW9kZWxWYWx1ZWA7XG4gIGxldCBhc3NpZ25tZW50RXhwO1xuICBjb25zdCBldmVudEFyZyA9IGNvbnRleHQuaXNUUyA/IGAoJGV2ZW50OiBhbnkpYCA6IGAkZXZlbnRgO1xuICB7XG4gICAgYXNzaWdubWVudEV4cCA9IGNyZWF0ZUNvbXBvdW5kRXhwcmVzc2lvbihbXG4gICAgICBgJHtldmVudEFyZ30gPT4gKChgLFxuICAgICAgZXhwLFxuICAgICAgYCkgPSAkZXZlbnQpYFxuICAgIF0pO1xuICB9XG4gIGNvbnN0IHByb3BzID0gW1xuICAgIC8vIG1vZGVsVmFsdWU6IGZvb1xuICAgIGNyZWF0ZU9iamVjdFByb3BlcnR5KHByb3BOYW1lLCBkaXIuZXhwKSxcbiAgICAvLyBcIm9uVXBkYXRlOm1vZGVsVmFsdWVcIjogJGV2ZW50ID0+IChmb28gPSAkZXZlbnQpXG4gICAgY3JlYXRlT2JqZWN0UHJvcGVydHkoZXZlbnROYW1lLCBhc3NpZ25tZW50RXhwKVxuICBdO1xuICBpZiAoZGlyLm1vZGlmaWVycy5sZW5ndGggJiYgbm9kZS50YWdUeXBlID09PSAxKSB7XG4gICAgY29uc3QgbW9kaWZpZXJzID0gZGlyLm1vZGlmaWVycy5tYXAoKG0pID0+IChpc1NpbXBsZUlkZW50aWZpZXIobSkgPyBtIDogSlNPTi5zdHJpbmdpZnkobSkpICsgYDogdHJ1ZWApLmpvaW4oYCwgYCk7XG4gICAgY29uc3QgbW9kaWZpZXJzS2V5ID0gYXJnID8gaXNTdGF0aWNFeHAoYXJnKSA/IGAke2FyZy5jb250ZW50fU1vZGlmaWVyc2AgOiBjcmVhdGVDb21wb3VuZEV4cHJlc3Npb24oW2FyZywgJyArIFwiTW9kaWZpZXJzXCInXSkgOiBgbW9kZWxNb2RpZmllcnNgO1xuICAgIHByb3BzLnB1c2goXG4gICAgICBjcmVhdGVPYmplY3RQcm9wZXJ0eShcbiAgICAgICAgbW9kaWZpZXJzS2V5LFxuICAgICAgICBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKFxuICAgICAgICAgIGB7ICR7bW9kaWZpZXJzfSB9YCxcbiAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICBkaXIubG9jLFxuICAgICAgICAgIDJcbiAgICAgICAgKVxuICAgICAgKVxuICAgICk7XG4gIH1cbiAgcmV0dXJuIGNyZWF0ZVRyYW5zZm9ybVByb3BzKHByb3BzKTtcbn07XG5mdW5jdGlvbiBjcmVhdGVUcmFuc2Zvcm1Qcm9wcyhwcm9wcyA9IFtdKSB7XG4gIHJldHVybiB7IHByb3BzIH07XG59XG5cbmNvbnN0IHZhbGlkRGl2aXNpb25DaGFyUkUgPSAvW1xcdykuK1xcLV8kXFxdXS87XG5jb25zdCB0cmFuc2Zvcm1GaWx0ZXIgPSAobm9kZSwgY29udGV4dCkgPT4ge1xuICBpZiAoIWlzQ29tcGF0RW5hYmxlZChcIkNPTVBJTEVSX0ZJTFRFUlNcIiwgY29udGV4dCkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKG5vZGUudHlwZSA9PT0gNSkge1xuICAgIHJld3JpdGVGaWx0ZXIobm9kZS5jb250ZW50LCBjb250ZXh0KTtcbiAgfSBlbHNlIGlmIChub2RlLnR5cGUgPT09IDEpIHtcbiAgICBub2RlLnByb3BzLmZvckVhY2goKHByb3ApID0+IHtcbiAgICAgIGlmIChwcm9wLnR5cGUgPT09IDcgJiYgcHJvcC5uYW1lICE9PSBcImZvclwiICYmIHByb3AuZXhwKSB7XG4gICAgICAgIHJld3JpdGVGaWx0ZXIocHJvcC5leHAsIGNvbnRleHQpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuZnVuY3Rpb24gcmV3cml0ZUZpbHRlcihub2RlLCBjb250ZXh0KSB7XG4gIGlmIChub2RlLnR5cGUgPT09IDQpIHtcbiAgICBwYXJzZUZpbHRlcihub2RlLCBjb250ZXh0KTtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGNoaWxkID0gbm9kZS5jaGlsZHJlbltpXTtcbiAgICAgIGlmICh0eXBlb2YgY2hpbGQgIT09IFwib2JqZWN0XCIpIGNvbnRpbnVlO1xuICAgICAgaWYgKGNoaWxkLnR5cGUgPT09IDQpIHtcbiAgICAgICAgcGFyc2VGaWx0ZXIoY2hpbGQsIGNvbnRleHQpO1xuICAgICAgfSBlbHNlIGlmIChjaGlsZC50eXBlID09PSA4KSB7XG4gICAgICAgI
15HJld3JpdGVGaWx0ZXIobm9kZSwgY29udGV4dCk7XG4gICAgICB9IGVsc2UgaWYgKGNoaWxkLnR5cGUgPT09IDUpIHtcbiAgICAgICAgcmV3cml0ZUZpbHRlcihjaGlsZC5jb250ZW50LCBjb250ZXh0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmZ1bmN0aW9uIHBhcnNlRmlsdGVyKG5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgZXhwID0gbm9kZS5jb250ZW50O1xuICBsZXQgaW5TaW5nbGUgPSBmYWxzZTtcbiAgbGV0IGluRG91YmxlID0gZmFsc2U7XG4gIGxldCBpblRlbXBsYXRlU3RyaW5nID0gZmFsc2U7XG4gIGxldCBpblJlZ2V4ID0gZmFsc2U7XG4gIGxldCBjdXJseSA9IDA7XG4gIGxldCBzcXVhcmUgPSAwO1xuICBsZXQgcGFyZW4gPSAwO1xuICBsZXQgbGFzdEZpbHRlckluZGV4ID0gMDtcbiAgbGV0IGMsIHByZXYsIGksIGV4cHJlc3Npb24sIGZpbHRlcnMgPSBbXTtcbiAgZm9yIChpID0gMDsgaSA8IGV4cC5sZW5ndGg7IGkrKykge1xuICAgIHByZXYgPSBjO1xuICAgIGMgPSBleHAuY2hhckNvZGVBdChpKTtcbiAgICBpZiAoaW5TaW5nbGUpIHtcbiAgICAgIGlmIChjID09PSAzOSAmJiBwcmV2ICE9PSA5MikgaW5TaW5nbGUgPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKGluRG91YmxlKSB7XG4gICAgICBpZiAoYyA9PT0gMzQgJiYgcHJldiAhPT0gOTIpIGluRG91YmxlID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmIChpblRlbXBsYXRlU3RyaW5nKSB7XG4gICAgICBpZiAoYyA9PT0gOTYgJiYgcHJldiAhPT0gOTIpIGluVGVtcGxhdGVTdHJpbmcgPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKGluUmVnZXgpIHtcbiAgICAgIGlmIChjID09PSA0NyAmJiBwcmV2ICE9PSA5MikgaW5SZWdleCA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoYyA9PT0gMTI0ICYmIC8vIHBpcGVcbiAgICBleHAuY2hhckNvZGVBdChpICsgMSkgIT09IDEyNCAmJiBleHAuY2hhckNvZGVBdChpIC0gMSkgIT09IDEyNCAmJiAhY3VybHkgJiYgIXNxdWFyZSAmJiAhcGFyZW4pIHtcbiAgICAgIGlmIChleHByZXNzaW9uID09PSB2b2lkIDApIHtcbiAgICAgICAgbGFzdEZpbHRlckluZGV4ID0gaSArIDE7XG4gICAgICAgIGV4cHJlc3Npb24gPSBleHAuc2xpY2UoMCwgaSkudHJpbSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHVzaEZpbHRlcigpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzd2l0Y2ggKGMpIHtcbiAgICAgICAgY2FzZSAzNDpcbiAgICAgICAgICBpbkRvdWJsZSA9IHRydWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMzk6XG4gICAgICAgICAgaW5TaW5nbGUgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDk2OlxuICAgICAgICAgIGluVGVtcGxhdGVTdHJpbmcgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDQwOlxuICAgICAgICAgIHBhcmVuKys7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNDE6XG4gICAgICAgICAgcGFyZW4tLTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA5MTpcbiAgICAgICAgICBzcXVhcmUrKztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA5MzpcbiAgICAgICAgICBzcXVhcmUtLTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxMjM6XG4gICAgICAgICAgY3VybHkrKztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxMjU6XG4gICAgICAgICAgY3VybHktLTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmIChjID09PSA0Nykge1xuICAgICAgICBsZXQgaiA9IGkgLSAxO1xuICAgICAgICBsZXQgcDtcbiAgICAgICAgZm9yICg7IGogPj0gMDsgai0tKSB7XG4gICAgICAgICAgcCA9IGV4cC5jaGFyQXQoaik7XG4gICAgICAgICAgaWYgKHAgIT09IFwiIFwiKSBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXAgfHwgIXZhbGlkRGl2aXNpb25DaGFyUkUudGVzdChwKSkge1xuICAgICAgICAgIGluUmVnZXggPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmIChleHByZXNzaW9uID09PSB2b2lkIDApIHtcbiAgICBleHByZXNzaW9uID0gZXhwLnNsaWNlKDAsIGkpLnRyaW0oKTtcbiAgfSBlbHNlIGlmIChsYXN0RmlsdGVySW5kZXggIT09IDApIHtcbiAgICBwdXNoRmlsdGVyKCk7XG4gIH1cbiAgZnVuY3Rpb24gcHVzaEZpbHRlcigpIHtcbiAgICBmaWx0ZXJzLnB1c2goZXhwLnNsaWNlKGxhc3RGaWx0ZXJJbmRleCwgaSkudHJpbSgpKTtcbiAgICBsYXN0RmlsdGVySW5kZXggPSBpICsgMTtcbiAgfVxuICBpZiAoZmlsdGVycy5sZW5ndGgpIHtcbiAgICAhIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpICYmIHdhcm5EZXByZWNhdGlvbihcbiAgICAgIFwiQ09NUElMRVJfRklMVEVSU1wiLFxuICAgICAgY29udGV4dCxcbiAgICAgIG5vZGUubG9jXG4gICAgKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgZmlsdGVycy5sZW5ndGg7IGkrKykge1xuICAgICAgZXhwcmVzc2lvbiA9IHdyYXBGaWx0ZXIoZXhwcmVzc2lvbiwgZmlsdGVyc1tpXSwgY29udGV4dCk7XG4gICAgfVxuICAgIG5vZGUuY29udGVudCA9IGV4cHJlc3Npb247XG4gICAgbm9kZS5hc3QgPSB2b2lkIDA7XG4gIH1cbn1cbmZ1bmN0aW9uIHdyYXBGaWx0ZXIoZXhwLCBmaWx0ZXIsIGNvbnRleHQpIHtcbiAgY29udGV4dC5oZWxwZXIoUkVTT0xWRV9GSUxURVIpO1xuICBjb25zdCBpID0gZmlsdGVyLmluZGV4T2YoXCIoXCIpO1xuICBpZiAoaSA8IDApIHtcbiAgICBjb250ZXh0LmZpbHRlcnMuYWRkKGZpbHRlcik7XG4gICAgcmV0dXJuIGAke3RvVmFsaWRBc3NldElkKGZpbHRlciwgXCJmaWx0ZXJcIil9KCR7ZXhwfSlgO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IG5hbWUgPSBmaWx0ZXIuc2xpY2UoMCwgaSk7XG4gICAgY29uc3QgYXJncyA9IGZpbHRlci5zbGljZShpICsgMSk7XG4gICAgY29udGV4dC5maWx0ZXJzLmFkZChuYW1lKTtcbiAgICByZXR1cm4gYCR7dG9WYWxpZEFzc2V0SWQobmFtZSwgXCJmaWx0ZXJcIil9KCR7ZXhwfSR7YXJncyAhPT0gXCIpXCIgPyBcIixcIiArIGFyZ3MgOiBhcmdzfWA7XG4gIH1cbn1cblxuY29uc3Qgc2VlbiA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgV2Vha1NldCgpO1xuY29uc3QgdHJhbnNmb3JtTWVtbyA9IChub2RlLCBjb250ZXh0KSA9PiB7XG4gIGlmIChub2RlLnR5cGUgPT09IDEpIHtcbiAgICBjb25zdCBkaXIgPSBmaW5kRGlyKG5vZGUsIFwibWVtb1wiKTtcbiAgICBpZiAoIWRpciB8fCBzZWVuLmhhcyhub2RlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzZWVuLmFkZChub2RlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY29uc3QgY29kZWdlbk5vZGUgPSBub2RlLmNvZGVnZW5Ob2RlIHx8IGNvbnRleHQuY3VycmVudE5vZGUuY29kZWdlbk5vZGU7XG4gICAgICBpZiAoY29kZWdlbk5vZGUgJiYgY29
15kZWdlbk5vZGUudHlwZSA9PT0gMTMpIHtcbiAgICAgICAgaWYgKG5vZGUudGFnVHlwZSAhPT0gMSkge1xuICAgICAgICAgIGNvbnZlcnRUb0Jsb2NrKGNvZGVnZW5Ob2RlLCBjb250ZXh0KTtcbiAgICAgICAgfVxuICAgICAgICBub2RlLmNvZGVnZW5Ob2RlID0gY3JlYXRlQ2FsbEV4cHJlc3Npb24oY29udGV4dC5oZWxwZXIoV0lUSF9NRU1PKSwgW1xuICAgICAgICAgIGRpci5leHAsXG4gICAgICAgICAgY3JlYXRlRnVuY3Rpb25FeHByZXNzaW9uKHZvaWQgMCwgY29kZWdlbk5vZGUpLFxuICAgICAgICAgIGBfY2FjaGVgLFxuICAgICAgICAgIFN0cmluZyhjb250ZXh0LmNhY2hlZCsrKVxuICAgICAgICBdKTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG59O1xuXG5mdW5jdGlvbiBnZXRCYXNlVHJhbnNmb3JtUHJlc2V0KHByZWZpeElkZW50aWZpZXJzKSB7XG4gIHJldHVybiBbXG4gICAgW1xuICAgICAgdHJhbnNmb3JtT25jZSxcbiAgICAgIHRyYW5zZm9ybUlmLFxuICAgICAgdHJhbnNmb3JtTWVtbyxcbiAgICAgIHRyYW5zZm9ybUZvcixcbiAgICAgIC4uLlt0cmFuc2Zvcm1GaWx0ZXJdICxcbiAgICAgIC4uLiEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgPyBbdHJhbnNmb3JtRXhwcmVzc2lvbl0gOiBbXSxcbiAgICAgIHRyYW5zZm9ybVNsb3RPdXRsZXQsXG4gICAgICB0cmFuc2Zvcm1FbGVtZW50LFxuICAgICAgdHJhY2tTbG90U2NvcGVzLFxuICAgICAgdHJhbnNmb3JtVGV4dFxuICAgIF0sXG4gICAge1xuICAgICAgb246IHRyYW5zZm9ybU9uLFxuICAgICAgYmluZDogdHJhbnNmb3JtQmluZCxcbiAgICAgIG1vZGVsOiB0cmFuc2Zvcm1Nb2RlbFxuICAgIH1cbiAgXTtcbn1cbmZ1bmN0aW9uIGJhc2VDb21waWxlKHNvdXJjZSwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IG9uRXJyb3IgPSBvcHRpb25zLm9uRXJyb3IgfHwgZGVmYXVsdE9uRXJyb3I7XG4gIGNvbnN0IGlzTW9kdWxlTW9kZSA9IG9wdGlvbnMubW9kZSA9PT0gXCJtb2R1bGVcIjtcbiAge1xuICAgIGlmIChvcHRpb25zLnByZWZpeElkZW50aWZpZXJzID09PSB0cnVlKSB7XG4gICAgICBvbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoNDcpKTtcbiAgICB9IGVsc2UgaWYgKGlzTW9kdWxlTW9kZSkge1xuICAgICAgb25FcnJvcihjcmVhdGVDb21waWxlckVycm9yKDQ4KSk7XG4gICAgfVxuICB9XG4gIGNvbnN0IHByZWZpeElkZW50aWZpZXJzID0gZmFsc2U7XG4gIGlmIChvcHRpb25zLmNhY2hlSGFuZGxlcnMpIHtcbiAgICBvbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoNDkpKTtcbiAgfVxuICBpZiAob3B0aW9ucy5zY29wZUlkICYmICFpc01vZHVsZU1vZGUpIHtcbiAgICBvbkVycm9yKGNyZWF0ZUNvbXBpbGVyRXJyb3IoNTApKTtcbiAgfVxuICBjb25zdCByZXNvbHZlZE9wdGlvbnMgPSBleHRlbmQoe30sIG9wdGlvbnMsIHtcbiAgICBwcmVmaXhJZGVudGlmaWVyc1xuICB9KTtcbiAgY29uc3QgYXN0ID0gaXNTdHJpbmcoc291cmNlKSA/IGJhc2VQYXJzZShzb3VyY2UsIHJlc29sdmVkT3B0aW9ucykgOiBzb3VyY2U7XG4gIGNvbnN0IFtub2RlVHJhbnNmb3JtcywgZGlyZWN0aXZlVHJhbnNmb3Jtc10gPSBnZXRCYXNlVHJhbnNmb3JtUHJlc2V0KCk7XG4gIHRyYW5zZm9ybShcbiAgICBhc3QsXG4gICAgZXh0ZW5kKHt9LCByZXNvbHZlZE9wdGlvbnMsIHtcbiAgICAgIG5vZGVUcmFuc2Zvcm1zOiBbXG4gICAgICAgIC4uLm5vZGVUcmFuc2Zvcm1zLFxuICAgICAgICAuLi5vcHRpb25zLm5vZGVUcmFuc2Zvcm1zIHx8IFtdXG4gICAgICAgIC8vIHVzZXIgdHJhbnNmb3Jtc1xuICAgICAgXSxcbiAgICAgIGRpcmVjdGl2ZVRyYW5zZm9ybXM6IGV4dGVuZChcbiAgICAgICAge30sXG4gICAgICAgIGRpcmVjdGl2ZVRyYW5zZm9ybXMsXG4gICAgICAgIG9wdGlvbnMuZGlyZWN0aXZlVHJhbnNmb3JtcyB8fCB7fVxuICAgICAgICAvLyB1c2VyIHRyYW5zZm9ybXNcbiAgICAgIClcbiAgICB9KVxuICApO1xuICByZXR1cm4gZ2VuZXJhdGUoYXN0LCByZXNvbHZlZE9wdGlvbnMpO1xufVxuXG5jb25zdCBCaW5kaW5nVHlwZXMgPSB7XG4gIFwiREFUQVwiOiBcImRhdGFcIixcbiAgXCJQUk9QU1wiOiBcInByb3BzXCIsXG4gIFwiUFJPUFNfQUxJQVNFRFwiOiBcInByb3BzLWFsaWFzZWRcIixcbiAgXCJTRVRVUF9MRVRcIjogXCJzZXR1cC1sZXRcIixcbiAgXCJTRVRVUF9DT05TVFwiOiBcInNldHVwLWNvbnN0XCIsXG4gIFwiU0VUVVBfUkVBQ1RJVkVfQ09OU1RcIjogXCJzZXR1cC1yZWFjdGl2ZS1jb25zdFwiLFxuICBcIlNFVFVQX01BWUJFX1JFRlwiOiBcInNldHVwLW1heWJlLXJlZlwiLFxuICBcIlNFVFVQX1JFRlwiOiBcInNldHVwLXJlZlwiLFxuICBcIk9QVElPTlNcIjogXCJvcHRpb25zXCIsXG4gIFwiTElURVJBTF9DT05TVFwiOiBcImxpdGVyYWwtY29uc3RcIlxufTtcblxuY29uc3Qgbm9vcERpcmVjdGl2ZVRyYW5zZm9ybSA9ICgpID0+ICh7IHByb3BzOiBbXSB9KTtcblxuZXhwb3J0IHsgQkFTRV9UUkFOU0lUSU9OLCBCaW5kaW5nVHlwZXMsIENBTUVMSVpFLCBDQVBJVEFMSVpFLCBDUkVBVEVfQkxPQ0ssIENSRUFURV9DT01NRU5ULCBDUkVBVEVfRUxFTUVOVF9CTE9DSywgQ1JFQVRFX0VMRU1FTlRfVk5PREUsIENSRUFURV9TTE9UUywgQ1JFQVRFX1NUQVRJQywgQ1JFQVRFX1RFWFQsIENSRUFURV9WTk9ERSwgQ29tcGlsZXJEZXByZWNhdGlvblR5cGVzLCBDb25zdGFudFR5cGVzLCBFbGVtZW50VHlwZXMsIEVycm9yQ29kZXMsIEZSQUdNRU5ULCBHVUFSRF9SRUFDVElWRV9QUk9QUywgSVNfTUVNT19TQU1FLCBJU19SRUYsIEtFRVBfQUxJVkUsIE1FUkdFX1BST1BTLCBOT1JNQUxJWkVfQ0xBU1MsIE5PUk1BTElaRV9QUk9QUywgTk9STUFMSVpFX1NUWUxFLCBOYW1lc3BhY2VzLCBOb2RlVHlwZXMsIE9QRU5fQkxPQ0ssIFBPUF9TQ09QRV9JRCwgUFVTSF9TQ09QRV9JRCwgUkVOREVSX0xJU1QsIFJFTkRFUl9TTE9ULCBSRVNPTFZFX0NPTVBPTkVOVCwgUkVTT0xWRV9ESVJFQ1RJVkUsIFJFU09MVkVfRFlOQU1JQ19DT01QT05FTlQsIFJFU09MVkVfRklMVEVSLCBTRVRfQkxPQ0tfVFJBQ0tJTkcsIFNVU1BFTlNFLCBURUxFUE9SVCwgVE9fRElTUExBWV9TVFJJTkcsIFRPX0hBTkRMRVJTLCBUT19IQU5ETEVSX0tFWSwgVFNfTk9ERV9UWVBFUywgVU5SRUYsIFdJVEhfQ1RYLCBXSVRIX0RJUkVDVElWRVMsIFdJVEhfTUVNTywgYWR2YW5jZVBvc2l0aW9uV2l0aENsb25lLCBhZHZhbmNlUG9zaXRpb25XaXRoTXV0YXRpb24sIGFzc2VydCwgYmFzZUNvbXBpbGUsIGJhc2VQYXJzZSwgYnVpbGREaXJlY3RpdmVBcmdzLCBidWlsZFByb3BzLCBidWlsZFNsb3RzLCBjaGVja0NvbXBhdEVuYWJsZWQsIGNvbnZlcnRUb0Jsb2NrLCBjcmVhdGVBcnJheUV4cHJlc3Npb24sIGNyZWF0ZUFzc2lnbm1lbnRFeHByZXNzaW9uLCBjcmVhdGVCbG9ja1N0YXRlbWVudCwgY3JlYXRlQ2FjaG
15VFeHByZXNzaW9uLCBjcmVhdGVDYWxsRXhwcmVzc2lvbiwgY3JlYXRlQ29tcGlsZXJFcnJvciwgY3JlYXRlQ29tcG91bmRFeHByZXNzaW9uLCBjcmVhdGVDb25kaXRpb25hbEV4cHJlc3Npb24sIGNyZWF0ZUZvckxvb3BQYXJhbXMsIGNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbiwgY3JlYXRlSWZTdGF0ZW1lbnQsIGNyZWF0ZUludGVycG9sYXRpb24sIGNyZWF0ZU9iamVjdEV4cHJlc3Npb24sIGNyZWF0ZU9iamVjdFByb3BlcnR5LCBjcmVhdGVSZXR1cm5TdGF0ZW1lbnQsIGNyZWF0ZVJvb3QsIGNyZWF0ZVNlcXVlbmNlRXhwcmVzc2lvbiwgY3JlYXRlU2ltcGxlRXhwcmVzc2lvbiwgY3JlYXRlU3RydWN0dXJhbERpcmVjdGl2ZVRyYW5zZm9ybSwgY3JlYXRlVGVtcGxhdGVMaXRlcmFsLCBjcmVhdGVUcmFuc2Zvcm1Db250ZXh0LCBjcmVhdGVWTm9kZUNhbGwsIGVycm9yTWVzc2FnZXMsIGV4dHJhY3RJZGVudGlmaWVycywgZmluZERpciwgZmluZFByb3AsIGZvckFsaWFzUkUsIGdlbmVyYXRlLCBnZXRCYXNlVHJhbnNmb3JtUHJlc2V0LCBnZXRDb25zdGFudFR5cGUsIGdldE1lbW9lZFZOb2RlQ2FsbCwgZ2V0Vk5vZGVCbG9ja0hlbHBlciwgZ2V0Vk5vZGVIZWxwZXIsIGhhc0R5bmFtaWNLZXlWQmluZCwgaGFzU2NvcGVSZWYsIGhlbHBlck5hbWVNYXAsIGluamVjdFByb3AsIGlzQ29yZUNvbXBvbmVudCwgaXNGbkV4cHJlc3Npb24sIGlzRm5FeHByZXNzaW9uQnJvd3NlciwgaXNGbkV4cHJlc3Npb25Ob2RlLCBpc0Z1bmN0aW9uVHlwZSwgaXNJbkRlc3RydWN0dXJlQXNzaWdubWVudCwgaXNJbk5ld0V4cHJlc3Npb24sIGlzTWVtYmVyRXhwcmVzc2lvbiwgaXNNZW1iZXJFeHByZXNzaW9uQnJvd3NlciwgaXNNZW1iZXJFeHByZXNzaW9uTm9kZSwgaXNSZWZlcmVuY2VkSWRlbnRpZmllciwgaXNTaW1wbGVJZGVudGlmaWVyLCBpc1Nsb3RPdXRsZXQsIGlzU3RhdGljQXJnT2YsIGlzU3RhdGljRXhwLCBpc1N0YXRpY1Byb3BlcnR5LCBpc1N0YXRpY1Byb3BlcnR5S2V5LCBpc1RlbXBsYXRlTm9kZSwgaXNUZXh0JDEgYXMgaXNUZXh0LCBpc1ZTbG90LCBsb2NTdHViLCBub29wRGlyZWN0aXZlVHJhbnNmb3JtLCBwcm9jZXNzRXhwcmVzc2lvbiwgcHJvY2Vzc0ZvciwgcHJvY2Vzc0lmLCBwcm9jZXNzU2xvdE91dGxldCwgcmVnaXN0ZXJSdW50aW1lSGVscGVycywgcmVzb2x2ZUNvbXBvbmVudFR5cGUsIHN0cmluZ2lmeUV4cHJlc3Npb24sIHRvVmFsaWRBc3NldElkLCB0cmFja1Nsb3RTY29wZXMsIHRyYWNrVkZvclNsb3RTY29wZXMsIHRyYW5zZm9ybSwgdHJhbnNmb3JtQmluZCwgdHJhbnNmb3JtRWxlbWVudCwgdHJhbnNmb3JtRXhwcmVzc2lvbiwgdHJhbnNmb3JtTW9kZWwsIHRyYW5zZm9ybU9uLCB0cmF2ZXJzZU5vZGUsIHVud3JhcFRTTm9kZSwgd2Fsa0Jsb2NrRGVjbGFyYXRpb25zLCB3YWxrRnVuY3Rpb25QYXJhbXMsIHdhbGtJZGVudGlmaWVycywgd2FybkRlcHJlY2F0aW9uIH07XG4iLCIvKipcbiogQHZ1ZS9jb21waWxlci1kb20gdjMuNC4zOFxuKiAoYykgMjAxOC1wcmVzZW50IFl1eGkgKEV2YW4pIFlvdSBhbmQgVnVlIGNvbnRyaWJ1dG9yc1xuKiBAbGljZW5zZSBNSVRcbioqL1xuaW1wb3J0IHsgcmVnaXN0ZXJSdW50aW1lSGVscGVycywgY3JlYXRlU2ltcGxlRXhwcmVzc2lvbiwgY3JlYXRlQ29tcGlsZXJFcnJvciwgY3JlYXRlT2JqZWN0UHJvcGVydHksIGdldENvbnN0YW50VHlwZSwgY3JlYXRlQ2FsbEV4cHJlc3Npb24sIFRPX0RJU1BMQVlfU1RSSU5HLCB0cmFuc2Zvcm1Nb2RlbCBhcyB0cmFuc2Zvcm1Nb2RlbCQxLCBmaW5kUHJvcCwgaGFzRHluYW1pY0tleVZCaW5kLCBmaW5kRGlyLCBpc1N0YXRpY0FyZ09mLCB0cmFuc2Zvcm1PbiBhcyB0cmFuc2Zvcm1PbiQxLCBpc1N0YXRpY0V4cCwgY3JlYXRlQ29tcG91bmRFeHByZXNzaW9uLCBjaGVja0NvbXBhdEVuYWJsZWQsIG5vb3BEaXJlY3RpdmVUcmFuc2Zvcm0sIGJhc2VDb21waWxlLCBiYXNlUGFyc2UgfSBmcm9tICdAdnVlL2NvbXBpbGVyLWNvcmUnO1xuZXhwb3J0ICogZnJvbSAnQHZ1ZS9jb21waWxlci1jb3JlJztcbmltcG9ydCB7IGlzVm9pZFRhZywgaXNIVE1MVGFnLCBpc1NWR1RhZywgaXNNYXRoTUxUYWcsIHBhcnNlU3RyaW5nU3R5bGUsIGNhcGl0YWxpemUsIG1ha2VNYXAsIGV4dGVuZCB9IGZyb20gJ0B2dWUvc2hhcmVkJztcblxuY29uc3QgVl9NT0RFTF9SQURJTyA9IFN5bWJvbCghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpID8gYHZNb2RlbFJhZGlvYCA6IGBgKTtcbmNvbnN0IFZfTU9ERUxfQ0hFQ0tCT1ggPSBTeW1ib2woISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSA/IGB2TW9kZWxDaGVja2JveGAgOiBgYCk7XG5jb25zdCBWX01PREVMX1RFWFQgPSBTeW1ib2woISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSA/IGB2TW9kZWxUZXh0YCA6IGBgKTtcbmNvbnN0IFZfTU9ERUxfU0VMRUNUID0gU3ltYm9sKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgPyBgdk1vZGVsU2VsZWN0YCA6IGBgKTtcbmNvbnN0IFZfTU9ERUxfRFlOQU1JQyA9IFN5bWJvbCghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpID8gYHZNb2RlbER5bmFtaWNgIDogYGApO1xuY29uc3QgVl9PTl9XSVRIX01PRElGSUVSUyA9IFN5bWJvbCghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpID8gYHZPbk1vZGlmaWVyc0d1YXJkYCA6IGBgKTtcbmNvbnN0IFZfT05fV0lUSF9LRVlTID0gU3ltYm9sKCEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgPyBgdk9uS2V5c0d1YXJkYCA6IGBgKTtcbmNvbnN0IFZfU0hPVyA9IFN5bWJvbCghIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpID8gYHZTaG93YCA6IGBgKTtcbmNvbnN0IFRSQU5TSVRJT04gPSBTeW1ib2woISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSA/IGBUcmFuc2l0aW9uYCA6IGBgKTtcbmNvbnN0IFRSQU5TSVRJT05fR1JPVVAgPSBTeW1ib2woISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSA/IGBUcmFuc2l0aW9uR3JvdXBgIDogYGApO1xucmVnaXN0ZXJSdW50aW1lSGVscGVycyh7XG4gIFtWX01PREVMX1JBRElPXTogYHZNb2RlbFJhZGlvYCxcbiAgW1ZfTU9ERUxfQ0hFQ0tCT1hdOiBgdk1vZGVsQ2hlY2tib3hgLFxuICBbVl9NT0RFTF9URVhUXTogYHZNb2RlbFRleHRgLFxuICBbVl9NT0RFTF9TRUxFQ1RdOiBgdk1vZGVsU2VsZWN0YCxcbiAgW1ZfTU9ERUxfRFlOQU1JQ106IGB2TW9kZWxEeW5hbWljYCxcbiAgW1ZfT05fV0lUSF9NT0RJRklFUlNdOiBgd2l0aE1vZGlmaWVyc2AsXG4gIFtWX09OX1dJVEhfS0VZU106IGB3aXRoS2V5c2AsXG4gIFtWX1NIT1ddOiBgdlNob3dgLFxuICBbVFJBTlNJVElPTl06IGBUcmFuc2l0aW9uYCxcbiAgW1RSQU5TSVRJT05fR1JPVVBdOiBgVHJhbnNpdGlvbkdyb3VwYFxufSk7XG5cbmxldCBkZWNvZGVyO1xuZnVuY3Rpb24gZGVjb2RlSHRtbEJyb3dzZXIocmF3LCBhc0F0dHIgPSBmYWxzZSkge1xuICBpZiAoIWRlY29kZXIpIHtcbiAgICBkZWNvZGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgfVxuICBpZiAoYXNBdHRyKSB7XG4gICAgZGVjb2Rlci5pbm5lckhUTUwgPSBgPGRpdiBmb289XCIke3Jhdy5yZXBsYWNlKC9cIi9nLCBcIiZxdW90O1wiKX1cIj5gO1xuICAgIHJldHVybi
15BkZWNvZGVyLmNoaWxkcmVuWzBdLmdldEF0dHJpYnV0ZShcImZvb1wiKTtcbiAgfSBlbHNlIHtcbiAgICBkZWNvZGVyLmlubmVySFRNTCA9IHJhdztcbiAgICByZXR1cm4gZGVjb2Rlci50ZXh0Q29udGVudDtcbiAgfVxufVxuXG5jb25zdCBwYXJzZXJPcHRpb25zID0ge1xuICBwYXJzZU1vZGU6IFwiaHRtbFwiLFxuICBpc1ZvaWRUYWcsXG4gIGlzTmF0aXZlVGFnOiAodGFnKSA9PiBpc0hUTUxUYWcodGFnKSB8fCBpc1NWR1RhZyh0YWcpIHx8IGlzTWF0aE1MVGFnKHRhZyksXG4gIGlzUHJlVGFnOiAodGFnKSA9PiB0YWcgPT09IFwicHJlXCIsXG4gIGRlY29kZUVudGl0aWVzOiBkZWNvZGVIdG1sQnJvd3NlciAsXG4gIGlzQnVpbHRJbkNvbXBvbmVudDogKHRhZykgPT4ge1xuICAgIGlmICh0YWcgPT09IFwiVHJhbnNpdGlvblwiIHx8IHRhZyA9PT0gXCJ0cmFuc2l0aW9uXCIpIHtcbiAgICAgIHJldHVybiBUUkFOU0lUSU9OO1xuICAgIH0gZWxzZSBpZiAodGFnID09PSBcIlRyYW5zaXRpb25Hcm91cFwiIHx8IHRhZyA9PT0gXCJ0cmFuc2l0aW9uLWdyb3VwXCIpIHtcbiAgICAgIHJldHVybiBUUkFOU0lUSU9OX0dST1VQO1xuICAgIH1cbiAgfSxcbiAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvcGFyc2luZy5odG1sI3RyZWUtY29uc3RydWN0aW9uLWRpc3BhdGNoZXJcbiAgZ2V0TmFtZXNwYWNlKHRhZywgcGFyZW50LCByb290TmFtZXNwYWNlKSB7XG4gICAgbGV0IG5zID0gcGFyZW50ID8gcGFyZW50Lm5zIDogcm9vdE5hbWVzcGFjZTtcbiAgICBpZiAocGFyZW50ICYmIG5zID09PSAyKSB7XG4gICAgICBpZiAocGFyZW50LnRhZyA9PT0gXCJhbm5vdGF0aW9uLXhtbFwiKSB7XG4gICAgICAgIGlmICh0YWcgPT09IFwic3ZnXCIpIHtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFyZW50LnByb3BzLnNvbWUoXG4gICAgICAgICAgKGEpID0+IGEudHlwZSA9PT0gNiAmJiBhLm5hbWUgPT09IFwiZW5jb2RpbmdcIiAmJiBhLnZhbHVlICE9IG51bGwgJiYgKGEudmFsdWUuY29udGVudCA9PT0gXCJ0ZXh0L2h0bWxcIiB8fCBhLnZhbHVlLmNvbnRlbnQgPT09IFwiYXBwbGljYXRpb24veGh0bWwreG1sXCIpXG4gICAgICAgICkpIHtcbiAgICAgICAgICBucyA9IDA7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoL15tKD86W2lvbnNdfHRleHQpJC8udGVzdChwYXJlbnQudGFnKSAmJiB0YWcgIT09IFwibWdseXBoXCIgJiYgdGFnICE9PSBcIm1hbGlnbm1hcmtcIikge1xuICAgICAgICBucyA9IDA7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChwYXJlbnQgJiYgbnMgPT09IDEpIHtcbiAgICAgIGlmIChwYXJlbnQudGFnID09PSBcImZvcmVpZ25PYmplY3RcIiB8fCBwYXJlbnQudGFnID09PSBcImRlc2NcIiB8fCBwYXJlbnQudGFnID09PSBcInRpdGxlXCIpIHtcbiAgICAgICAgbnMgPSAwO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAobnMgPT09IDApIHtcbiAgICAgIGlmICh0YWcgPT09IFwic3ZnXCIpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9XG4gICAgICBpZiAodGFnID09PSBcIm1hdGhcIikge1xuICAgICAgICByZXR1cm4gMjtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5zO1xuICB9XG59O1xuXG5jb25zdCB0cmFuc2Zvcm1TdHlsZSA9IChub2RlKSA9PiB7XG4gIGlmIChub2RlLnR5cGUgPT09IDEpIHtcbiAgICBub2RlLnByb3BzLmZvckVhY2goKHAsIGkpID0+IHtcbiAgICAgIGlmIChwLnR5cGUgPT09IDYgJiYgcC5uYW1lID09PSBcInN0eWxlXCIgJiYgcC52YWx1ZSkge1xuICAgICAgICBub2RlLnByb3BzW2ldID0ge1xuICAgICAgICAgIHR5cGU6IDcsXG4gICAgICAgICAgbmFtZTogYGJpbmRgLFxuICAgICAgICAgIGFyZzogY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihgc3R5bGVgLCB0cnVlLCBwLmxvYyksXG4gICAgICAgICAgZXhwOiBwYXJzZUlubGluZUNTUyhwLnZhbHVlLmNvbnRlbnQsIHAubG9jKSxcbiAgICAgICAgICBtb2RpZmllcnM6IFtdLFxuICAgICAgICAgIGxvYzogcC5sb2NcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcbmNvbnN0IHBhcnNlSW5saW5lQ1NTID0gKGNzc1RleHQsIGxvYykgPT4ge1xuICBjb25zdCBub3JtYWxpemVkID0gcGFyc2VTdHJpbmdTdHlsZShjc3NUZXh0KTtcbiAgcmV0dXJuIGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oXG4gICAgSlNPTi5zdHJpbmdpZnkobm9ybWFsaXplZCksXG4gICAgZmFsc2UsXG4gICAgbG9jLFxuICAgIDNcbiAgKTtcbn07XG5cbmZ1bmN0aW9uIGNyZWF0ZURPTUNvbXBpbGVyRXJyb3IoY29kZSwgbG9jKSB7XG4gIHJldHVybiBjcmVhdGVDb21waWxlckVycm9yKFxuICAgIGNvZGUsXG4gICAgbG9jLFxuICAgICEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgfHwgZmFsc2UgPyBET01FcnJvck1lc3NhZ2VzIDogdm9pZCAwXG4gICk7XG59XG5jb25zdCBET01FcnJvckNvZGVzID0ge1xuICBcIlhfVl9IVE1MX05PX0VYUFJFU1NJT05cIjogNTMsXG4gIFwiNTNcIjogXCJYX1ZfSFRNTF9OT19FWFBSRVNTSU9OXCIsXG4gIFwiWF9WX0hUTUxfV0lUSF9DSElMRFJFTlwiOiA1NCxcbiAgXCI1NFwiOiBcIlhfVl9IVE1MX1dJVEhfQ0hJTERSRU5cIixcbiAgXCJYX1ZfVEVYVF9OT19FWFBSRVNTSU9OXCI6IDU1LFxuICBcIjU1XCI6IFwiWF9WX1RFWFRfTk9fRVhQUkVTU0lPTlwiLFxuICBcIlhfVl9URVhUX1dJVEhfQ0hJTERSRU5cIjogNTYsXG4gIFwiNTZcIjogXCJYX1ZfVEVYVF9XSVRIX0NISUxEUkVOXCIsXG4gIFwiWF9WX01PREVMX09OX0lOVkFMSURfRUxFTUVOVFwiOiA1NyxcbiAgXCI1N1wiOiBcIlhfVl9NT0RFTF9PTl9JTlZBTElEX0VMRU1FTlRcIixcbiAgXCJYX1ZfTU9ERUxfQVJHX09OX0VMRU1FTlRcIjogNTgsXG4gIFwiNThcIjogXCJYX1ZfTU9ERUxfQVJHX09OX0VMRU1FTlRcIixcbiAgXCJYX1ZfTU9ERUxfT05fRklMRV9JTlBVVF9FTEVNRU5UXCI6IDU5LFxuICBcIjU5XCI6IFwiWF9WX01PREVMX09OX0ZJTEVfSU5QVVRfRUxFTUVOVFwiLFxuICBcIlhfVl9NT0RFTF9VTk5FQ0VTU0FSWV9WQUxVRVwiOiA2MCxcbiAgXCI2MFwiOiBcIlhfVl9NT0RFTF9VTk5FQ0VTU0FSWV9WQUxVRVwiLFxuICBcIlhfVl9TSE9XX05P
15X0VYUFJFU1NJT05cIjogNjEsXG4gIFwiNjFcIjogXCJYX1ZfU0hPV19OT19FWFBSRVNTSU9OXCIsXG4gIFwiWF9UUkFOU0lUSU9OX0lOVkFMSURfQ0hJTERSRU5cIjogNjIsXG4gIFwiNjJcIjogXCJYX1RSQU5TSVRJT05fSU5WQUxJRF9DSElMRFJFTlwiLFxuICBcIlhfSUdOT1JFRF9TSURFX0VGRkVDVF9UQUdcIjogNjMsXG4gIFwiNjNcIjogXCJYX0lHTk9SRURfU0lERV9FRkZFQ1RfVEFHXCIsXG4gIFwiX19FWFRFTkRfUE9JTlRfX1wiOiA2NCxcbiAgXCI2NFwiOiBcIl9fRVhURU5EX1BPSU5UX19cIlxufTtcbmNvbnN0IERPTUVycm9yTWVzc2FnZXMgPSB7XG4gIFs1M106IGB2LWh0bWwgaXMgbWlzc2luZyBleHByZXNzaW9uLmAsXG4gIFs1NF06IGB2LWh0bWwgd2lsbCBvdmVycmlkZSBlbGVtZW50IGNoaWxkcmVuLmAsXG4gIFs1NV06IGB2LXRleHQgaXMgbWlzc2luZyBleHByZXNzaW9uLmAsXG4gIFs1Nl06IGB2LXRleHQgd2lsbCBvdmVycmlkZSBlbGVtZW50IGNoaWxkcmVuLmAsXG4gIFs1N106IGB2LW1vZGVsIGNhbiBvbmx5IGJlIHVzZWQgb24gPGlucHV0PiwgPHRleHRhcmVhPiBhbmQgPHNlbGVjdD4gZWxlbWVudHMuYCxcbiAgWzU4XTogYHYtbW9kZWwgYXJndW1lbnQgaXMgbm90IHN1cHBvcnRlZCBvbiBwbGFpbiBlbGVtZW50cy5gLFxuICBbNTldOiBgdi1tb2RlbCBjYW5ub3QgYmUgdXNlZCBvbiBmaWxlIGlucHV0cyBzaW5jZSB0aGV5IGFyZSByZWFkLW9ubHkuIFVzZSBhIHYtb246Y2hhbmdlIGxpc3RlbmVyIGluc3RlYWQuYCxcbiAgWzYwXTogYFVubmVjZXNzYXJ5IHZhbHVlIGJpbmRpbmcgdXNlZCBhbG9uZ3NpZGUgdi1tb2RlbC4gSXQgd2lsbCBpbnRlcmZlcmUgd2l0aCB2LW1vZGVsJ3MgYmVoYXZpb3IuYCxcbiAgWzYxXTogYHYtc2hvdyBpcyBtaXNzaW5nIGV4cHJlc3Npb24uYCxcbiAgWzYyXTogYDxUcmFuc2l0aW9uPiBleHBlY3RzIGV4YWN0bHkgb25lIGNoaWxkIGVsZW1lbnQgb3IgY29tcG9uZW50LmAsXG4gIFs2M106IGBUYWdzIHdpdGggc2lkZSBlZmZlY3QgKDxzY3JpcHQ+IGFuZCA8c3R5bGU+KSBhcmUgaWdub3JlZCBpbiBjbGllbnQgY29tcG9uZW50IHRlbXBsYXRlcy5gXG59O1xuXG5jb25zdCB0cmFuc2Zvcm1WSHRtbCA9IChkaXIsIG5vZGUsIGNvbnRleHQpID0+IHtcbiAgY29uc3QgeyBleHAsIGxvYyB9ID0gZGlyO1xuICBpZiAoIWV4cCkge1xuICAgIGNvbnRleHQub25FcnJvcihcbiAgICAgIGNyZWF0ZURPTUNvbXBpbGVyRXJyb3IoNTMsIGxvYylcbiAgICApO1xuICB9XG4gIGlmIChub2RlLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgIGNvbnRleHQub25FcnJvcihcbiAgICAgIGNyZWF0ZURPTUNvbXBpbGVyRXJyb3IoNTQsIGxvYylcbiAgICApO1xuICAgIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID0gMDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHByb3BzOiBbXG4gICAgICBjcmVhdGVPYmplY3RQcm9wZXJ0eShcbiAgICAgICAgY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihgaW5uZXJIVE1MYCwgdHJ1ZSwgbG9jKSxcbiAgICAgICAgZXhwIHx8IGNyZWF0ZVNpbXBsZUV4cHJlc3Npb24oXCJcIiwgdHJ1ZSlcbiAgICAgIClcbiAgICBdXG4gIH07XG59O1xuXG5jb25zdCB0cmFuc2Zvcm1WVGV4dCA9IChkaXIsIG5vZGUsIGNvbnRleHQpID0+IHtcbiAgY29uc3QgeyBleHAsIGxvYyB9ID0gZGlyO1xuICBpZiAoIWV4cCkge1xuICAgIGNvbnRleHQub25FcnJvcihcbiAgICAgIGNyZWF0ZURPTUNvbXBpbGVyRXJyb3IoNTUsIGxvYylcbiAgICApO1xuICB9XG4gIGlmIChub2RlLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgIGNvbnRleHQub25FcnJvcihcbiAgICAgIGNyZWF0ZURPTUNvbXBpbGVyRXJyb3IoNTYsIGxvYylcbiAgICApO1xuICAgIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID0gMDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHByb3BzOiBbXG4gICAgICBjcmVhdGVPYmplY3RQcm9wZXJ0eShcbiAgICAgICAgY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihgdGV4dENvbnRlbnRgLCB0cnVlKSxcbiAgICAgICAgZXhwID8gZ2V0Q29uc3RhbnRUeXBlKGV4cCwgY29udGV4dCkgPiAwID8gZXhwIDogY3JlYXRlQ2FsbEV4cHJlc3Npb24oXG4gICAgICAgICAgY29udGV4dC5oZWxwZXJTdHJpbmcoVE9fRElTUExBWV9TVFJJTkcpLFxuICAgICAgICAgIFtleHBdLFxuICAgICAgICAgIGxvY1xuICAgICAgICApIDogY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihcIlwiLCB0cnVlKVxuICAgICAgKVxuICAgIF1cbiAgfTtcbn07XG5cbmNvbnN0IHRyYW5zZm9ybU1vZGVsID0gKGRpciwgbm9kZSwgY29udGV4dCkgPT4ge1xuICBjb25zdCBiYXNlUmVzdWx0ID0gdHJhbnNmb3JtTW9kZWwkMShkaXIsIG5vZGUsIGNvbnRleHQpO1xuICBpZiAoIWJhc2VSZXN1bHQucHJvcHMubGVuZ3RoIHx8IG5vZGUudGFnVHlwZSA9PT0gMSkge1xuICAgIHJldHVybiBiYXNlUmVzdWx0O1xuICB9XG4gIGlmIChkaXIuYXJnKSB7XG4gICAgY29udGV4dC5vbkVycm9yKFxuICAgICAgY3JlYXRlRE9NQ29tcGlsZXJFcnJvcihcbiAgICAgICAgNTgsXG4gICAgICAgIGRpci5hcmcubG9jXG4gICAgICApXG4gICAgKTtcbiAgfVxuICBmdW5jdGlvbiBjaGVja0R1cGxpY2F0ZWRWYWx1ZSgpIHtcbiAgICBjb25zdCB2YWx1ZSA9IGZpbmREaXIobm9kZSwgXCJiaW5kXCIpO1xuICAgIGlmICh2YWx1ZSAmJiBpc1N0YXRpY0FyZ09mKHZhbHVlLmFyZywgXCJ2YWx1ZVwiKSkge1xuICAgICAgY29udGV4dC5vbkVycm9yKFxuICAgICAgICBjcmVhdGVET01Db21waWxlckVycm9yKFxuICAgICAgICAgIDYwLFxuICAgICAgICAgIHZhbHVlLmxvY1xuICAgICAgICApXG4gICAgICApO1xuICAgIH1cbiAgfVxuICBjb25zdCB7IHRhZyB9ID0gbm9kZTtcbiAgY29uc3QgaXNDdXN0b21FbGVtZW50ID0gY29udGV4dC5pc0N1c3RvbUVsZW1lbnQodGFnKTtcbiAgaWYgKHRhZyA9PT0gXCJpbnB1dFwiIHx8IHRhZyA9PT0gXCJ0ZXh0YXJlYVwiIHx8IHRhZyA9PT0gXCJzZWxlY3RcIiB8fCBpc0N1c3RvbUVsZW1lbnQpIHtcbiAgICBsZXQgZGlyZWN0aXZlVG9Vc2UgPSBWX01PREVMX1RFWFQ7XG4gICAgbGV0IGlzSW52YWxpZFR5cGUgPSBmYWxzZTtcbiAgICBpZiAodGFnID09PSBcImlucHV0XCIgfHwgaXNDdXN0b21FbGVtZW50KSB7XG4gICAgICBjb25zdCB0eXBlID0gZmluZFByb3Aobm9kZSwgYHR5cGVgKTtcbiAgICAgIGlmICh0eXBlKSB7XG4gICAgICAgIGlmICh0eXBlLnR5cGUgPT09IDcpIHtcbiAgICAgICAgICBkaXJlY3RpdmVUb1VzZSA9IFZfTU9ERUxfRFlOQU1JQztcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlLnZhbHVlKSB7XG4gICAgICAgICAgc3dpdGNoICh0eXBlLnZhbHVlLmNvbnRlbnQpIHtcbiAgICAgICAgICAgIGNhc2UgXCJyYWR
15pb1wiOlxuICAgICAgICAgICAgICBkaXJlY3RpdmVUb1VzZSA9IFZfTU9ERUxfUkFESU87XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcImNoZWNrYm94XCI6XG4gICAgICAgICAgICAgIGRpcmVjdGl2ZVRvVXNlID0gVl9NT0RFTF9DSEVDS0JPWDtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwiZmlsZVwiOlxuICAgICAgICAgICAgICBpc0ludmFsaWRUeXBlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgY29udGV4dC5vbkVycm9yKFxuICAgICAgICAgICAgICAgIGNyZWF0ZURPTUNvbXBpbGVyRXJyb3IoXG4gICAgICAgICAgICAgICAgICA1OSxcbiAgICAgICAgICAgICAgICAgIGRpci5sb2NcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSAmJiBjaGVja0R1cGxpY2F0ZWRWYWx1ZSgpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoaGFzRHluYW1pY0tleVZCaW5kKG5vZGUpKSB7XG4gICAgICAgIGRpcmVjdGl2ZVRvVXNlID0gVl9NT0RFTF9EWU5BTUlDO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSAmJiBjaGVja0R1cGxpY2F0ZWRWYWx1ZSgpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGFnID09PSBcInNlbGVjdFwiKSB7XG4gICAgICBkaXJlY3RpdmVUb1VzZSA9IFZfTU9ERUxfU0VMRUNUO1xuICAgIH0gZWxzZSB7XG4gICAgICAhIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpICYmIGNoZWNrRHVwbGljYXRlZFZhbHVlKCk7XG4gICAgfVxuICAgIGlmICghaXNJbnZhbGlkVHlwZSkge1xuICAgICAgYmFzZVJlc3VsdC5uZWVkUnVudGltZSA9IGNvbnRleHQuaGVscGVyKGRpcmVjdGl2ZVRvVXNlKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29udGV4dC5vbkVycm9yKFxuICAgICAgY3JlYXRlRE9NQ29tcGlsZXJFcnJvcihcbiAgICAgICAgNTcsXG4gICAgICAgIGRpci5sb2NcbiAgICAgIClcbiAgICApO1xuICB9XG4gIGJhc2VSZXN1bHQucHJvcHMgPSBiYXNlUmVzdWx0LnByb3BzLmZpbHRlcihcbiAgICAocCkgPT4gIShwLmtleS50eXBlID09PSA0ICYmIHAua2V5LmNvbnRlbnQgPT09IFwibW9kZWxWYWx1ZVwiKVxuICApO1xuICByZXR1cm4gYmFzZVJlc3VsdDtcbn07XG5cbmNvbnN0IGlzRXZlbnRPcHRpb25Nb2RpZmllciA9IC8qIEBfX1BVUkVfXyAqLyBtYWtlTWFwKGBwYXNzaXZlLG9uY2UsY2FwdHVyZWApO1xuY29uc3QgaXNOb25LZXlNb2RpZmllciA9IC8qIEBfX1BVUkVfXyAqLyBtYWtlTWFwKFxuICAvLyBldmVudCBwcm9wYWdhdGlvbiBtYW5hZ2VtZW50XG4gIGBzdG9wLHByZXZlbnQsc2VsZixjdHJsLHNoaWZ0LGFsdCxtZXRhLGV4YWN0LG1pZGRsZWBcbik7XG5jb25zdCBtYXliZUtleU1vZGlmaWVyID0gLyogQF9fUFVSRV9fICovIG1ha2VNYXAoXCJsZWZ0LHJpZ2h0XCIpO1xuY29uc3QgaXNLZXlib2FyZEV2ZW50ID0gLyogQF9fUFVSRV9fICovIG1ha2VNYXAoXG4gIGBvbmtleXVwLG9ua2V5ZG93bixvbmtleXByZXNzYCxcbiAgdHJ1ZVxuKTtcbmNvbnN0IHJlc29sdmVNb2RpZmllcnMgPSAoa2V5LCBtb2RpZmllcnMsIGNvbnRleHQsIGxvYykgPT4ge1xuICBjb25zdCBrZXlNb2RpZmllcnMgPSBbXTtcbiAgY29uc3Qgbm9uS2V5TW9kaWZpZXJzID0gW107XG4gIGNvbnN0IGV2ZW50T3B0aW9uTW9kaWZpZXJzID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbW9kaWZpZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgbW9kaWZpZXIgPSBtb2RpZmllcnNbaV07XG4gICAgaWYgKG1vZGlmaWVyID09PSBcIm5hdGl2ZVwiICYmIGNoZWNrQ29tcGF0RW5hYmxlZChcbiAgICAgIFwiQ09NUElMRVJfVl9PTl9OQVRJVkVcIixcbiAgICAgIGNvbnRleHQsXG4gICAgICBsb2NcbiAgICApKSB7XG4gICAgICBldmVudE9wdGlvbk1vZGlmaWVycy5wdXNoKG1vZGlmaWVyKTtcbiAgICB9IGVsc2UgaWYgKGlzRXZlbnRPcHRpb25Nb2RpZmllcihtb2RpZmllcikpIHtcbiAgICAgIGV2ZW50T3B0aW9uTW9kaWZpZXJzLnB1c2gobW9kaWZpZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAobWF5YmVLZXlNb2RpZmllcihtb2RpZmllcikpIHtcbiAgICAgICAgaWYgKGlzU3RhdGljRXhwKGtleSkpIHtcbiAgICAgICAgICBpZiAoaXNLZXlib2FyZEV2ZW50KGtleS5jb250ZW50KSkge1xuICAgICAgICAgICAga2V5TW9kaWZpZXJzLnB1c2gobW9kaWZpZXIpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBub25LZXlNb2RpZmllcnMucHVzaChtb2RpZmllcik7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGtleU1vZGlmaWVycy5wdXNoKG1vZGlmaWVyKTtcbiAgICAgICAgICBub25LZXlNb2RpZmllcnMucHVzaChtb2RpZmllcik7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChpc05vbktleU1vZGlmaWVyKG1vZGlmaWVyKSkge1xuICAgICAgICAgIG5vbktleU1vZGlmaWVycy5wdXNoKG1vZGlmaWVyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBrZXlNb2RpZmllcnMucHVzaChtb2RpZmllcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBrZXlNb2RpZmllcnMsXG4gICAgbm9uS2V5TW9kaWZpZXJzLFxuICAgIGV2ZW50T3B0aW9uTW9kaWZpZXJzXG4gI
15H07XG59O1xuY29uc3QgdHJhbnNmb3JtQ2xpY2sgPSAoa2V5LCBldmVudCkgPT4ge1xuICBjb25zdCBpc1N0YXRpY0NsaWNrID0gaXNTdGF0aWNFeHAoa2V5KSAmJiBrZXkuY29udGVudC50b0xvd2VyQ2FzZSgpID09PSBcIm9uY2xpY2tcIjtcbiAgcmV0dXJuIGlzU3RhdGljQ2xpY2sgPyBjcmVhdGVTaW1wbGVFeHByZXNzaW9uKGV2ZW50LCB0cnVlKSA6IGtleS50eXBlICE9PSA0ID8gY3JlYXRlQ29tcG91bmRFeHByZXNzaW9uKFtcbiAgICBgKGAsXG4gICAga2V5LFxuICAgIGApID09PSBcIm9uQ2xpY2tcIiA/IFwiJHtldmVudH1cIiA6IChgLFxuICAgIGtleSxcbiAgICBgKWBcbiAgXSkgOiBrZXk7XG59O1xuY29uc3QgdHJhbnNmb3JtT24gPSAoZGlyLCBub2RlLCBjb250ZXh0KSA9PiB7XG4gIHJldHVybiB0cmFuc2Zvcm1PbiQxKGRpciwgbm9kZSwgY29udGV4dCwgKGJhc2VSZXN1bHQpID0+IHtcbiAgICBjb25zdCB7IG1vZGlmaWVycyB9ID0gZGlyO1xuICAgIGlmICghbW9kaWZpZXJzLmxlbmd0aCkgcmV0dXJuIGJhc2VSZXN1bHQ7XG4gICAgbGV0IHsga2V5LCB2YWx1ZTogaGFuZGxlckV4cCB9ID0gYmFzZVJlc3VsdC5wcm9wc1swXTtcbiAgICBjb25zdCB7IGtleU1vZGlmaWVycywgbm9uS2V5TW9kaWZpZXJzLCBldmVudE9wdGlvbk1vZGlmaWVycyB9ID0gcmVzb2x2ZU1vZGlmaWVycyhrZXksIG1vZGlmaWVycywgY29udGV4dCwgZGlyLmxvYyk7XG4gICAgaWYgKG5vbktleU1vZGlmaWVycy5pbmNsdWRlcyhcInJpZ2h0XCIpKSB7XG4gICAgICBrZXkgPSB0cmFuc2Zvcm1DbGljayhrZXksIGBvbkNvbnRleHRtZW51YCk7XG4gICAgfVxuICAgIGlmIChub25LZXlNb2RpZmllcnMuaW5jbHVkZXMoXCJtaWRkbGVcIikpIHtcbiAgICAgIGtleSA9IHRyYW5zZm9ybUNsaWNrKGtleSwgYG9uTW91c2V1cGApO1xuICAgIH1cbiAgICBpZiAobm9uS2V5TW9kaWZpZXJzLmxlbmd0aCkge1xuICAgICAgaGFuZGxlckV4cCA9IGNyZWF0ZUNhbGxFeHByZXNzaW9uKGNvbnRleHQuaGVscGVyKFZfT05fV0lUSF9NT0RJRklFUlMpLCBbXG4gICAgICAgIGhhbmRsZXJFeHAsXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KG5vbktleU1vZGlmaWVycylcbiAgICAgIF0pO1xuICAgIH1cbiAgICBpZiAoa2V5TW9kaWZpZXJzLmxlbmd0aCAmJiAvLyBpZiBldmVudCBuYW1lIGlzIGR5bmFtaWMsIGFsd2F5cyB3cmFwIHdpdGgga2V5cyBndWFyZFxuICAgICghaXNTdGF0aWNFeHAoa2V5KSB8fCBpc0tleWJvYXJkRXZlbnQoa2V5LmNvbnRlbnQpKSkge1xuICAgICAgaGFuZGxlckV4cCA9IGNyZWF0ZUNhbGxFeHByZXNzaW9uKGNvbnRleHQuaGVscGVyKFZfT05fV0lUSF9LRVlTKSwgW1xuICAgICAgICBoYW5kbGVyRXhwLFxuICAgICAgICBKU09OLnN0cmluZ2lmeShrZXlNb2RpZmllcnMpXG4gICAgICBdKTtcbiAgICB9XG4gICAgaWYgKGV2ZW50T3B0aW9uTW9kaWZpZXJzLmxlbmd0aCkge1xuICAgICAgY29uc3QgbW9kaWZpZXJQb3N0Zml4ID0gZXZlbnRPcHRpb25Nb2RpZmllcnMubWFwKGNhcGl0YWxpemUpLmpvaW4oXCJcIik7XG4gICAgICBrZXkgPSBpc1N0YXRpY0V4cChrZXkpID8gY3JlYXRlU2ltcGxlRXhwcmVzc2lvbihgJHtrZXkuY29udGVudH0ke21vZGlmaWVyUG9zdGZpeH1gLCB0cnVlKSA6IGNyZWF0ZUNvbXBvdW5kRXhwcmVzc2lvbihbYChgLCBrZXksIGApICsgXCIke21vZGlmaWVyUG9zdGZpeH1cImBdKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHByb3BzOiBbY3JlYXRlT2JqZWN0UHJvcGVydHkoa2V5LCBoYW5kbGVyRXhwKV1cbiAgICB9O1xuICB9KTtcbn07XG5cbmNvbnN0IHRyYW5zZm9ybVNob3cgPSAoZGlyLCBub2RlLCBjb250ZXh0KSA9PiB7XG4gIGNvbnN0IHsgZXhwLCBsb2MgfSA9IGRpcjtcbiAgaWYgKCFleHApIHtcbiAgICBjb250ZXh0Lm9uRXJyb3IoXG4gICAgICBjcmVhdGVET01Db21waWxlckVycm9yKDYxLCBsb2MpXG4gICAgKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHByb3BzOiBbXSxcbiAgICBuZWVkUnVudGltZTogY29udGV4dC5oZWxwZXIoVl9TSE9XKVxuICB9O1xufTtcblxuY29uc3QgdHJhbnNmb3JtVHJhbnNpdGlvbiA9IChub2RlLCBjb250ZXh0KSA9PiB7XG4gIGlmIChub2RlLnR5cGUgPT09IDEgJiYgbm9kZS50YWdUeXBlID09PSAxKSB7XG4gICAgY29uc3QgY29tcG9uZW50ID0gY29udGV4dC5pc0J1aWx0SW5Db21wb25lbnQobm9kZS50YWcpO1xuICAgIGlmIChjb21wb25lbnQgPT09IFRSQU5TSVRJT04pIHtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGlmICghbm9kZS5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGhhc011bHRpcGxlQ2hpbGRyZW4obm9kZSkpIHtcbiAgICAgICAgICBjb250ZXh0Lm9uRXJyb3IoXG4gICAgICAgICAgICBjcmVhdGVET01Db21waWxlckVycm9yKFxuICAgICAgICAgICAgICA2MixcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHN0YXJ0OiBub2RlLmNoaWxkcmVuWzBdLmxvYy5zdGFydCxcbiAgICAgICAgICAgICAgICBlbmQ6IG5vZGUuY2hpbGRyZW5bbm9kZS5jaGlsZHJlbi5sZW5ndGggLSAxXS5sb2MuZW5kLFxuICAgICAgICAgICAgICAgIHNvdXJjZTogXCJcIlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjaGlsZCA9IG5vZGUuY2hpbGRyZW5bMF07XG4gICAgICAgIGlmIChjaGlsZC50eXBlID09PSAxKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBwIG9mIGNoaWxkLnByb3BzKSB7XG4gICAgICAgICAgICBpZiAocC50eXBlID09PSA3ICYmIHAubmFtZSA9PT0gXCJzaG93XCIpIHtcbiAgICAgICAgICAgICAgbm9kZS5wcm9wcy5wdXNoKHtcbiAgICAgICAgICAgICAgICB0eXBlOiA2LFxuICAgICAgICAgICAgICAgIG5hbWU6IFwicGVyc2lzdGVkXCIsXG4gICAgICAgICAgICAgICAgbmFtZUxvYzogbm9kZS5sb2MsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHZvaWQgMCxcbiAgICAgICAgICAgICAgICBsb2M6IG5vZGUubG9jXG4gICAgICAgICAgICAgI
15H0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gIH1cbn07XG5mdW5jdGlvbiBoYXNNdWx0aXBsZUNoaWxkcmVuKG5vZGUpIHtcbiAgY29uc3QgY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbi5maWx0ZXIoXG4gICAgKGMpID0+IGMudHlwZSAhPT0gMyAmJiAhKGMudHlwZSA9PT0gMiAmJiAhYy5jb250ZW50LnRyaW0oKSlcbiAgKTtcbiAgY29uc3QgY2hpbGQgPSBjaGlsZHJlblswXTtcbiAgcmV0dXJuIGNoaWxkcmVuLmxlbmd0aCAhPT0gMSB8fCBjaGlsZC50eXBlID09PSAxMSB8fCBjaGlsZC50eXBlID09PSA5ICYmIGNoaWxkLmJyYW5jaGVzLnNvbWUoaGFzTXVsdGlwbGVDaGlsZHJlbik7XG59XG5cbmNvbnN0IGlnbm9yZVNpZGVFZmZlY3RUYWdzID0gKG5vZGUsIGNvbnRleHQpID0+IHtcbiAgaWYgKG5vZGUudHlwZSA9PT0gMSAmJiBub2RlLnRhZ1R5cGUgPT09IDAgJiYgKG5vZGUudGFnID09PSBcInNjcmlwdFwiIHx8IG5vZGUudGFnID09PSBcInN0eWxlXCIpKSB7XG4gICAgISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSAmJiBjb250ZXh0Lm9uRXJyb3IoXG4gICAgICBjcmVhdGVET01Db21waWxlckVycm9yKFxuICAgICAgICA2MyxcbiAgICAgICAgbm9kZS5sb2NcbiAgICAgIClcbiAgICApO1xuICAgIGNvbnRleHQucmVtb3ZlTm9kZSgpO1xuICB9XG59O1xuXG5jb25zdCBET01Ob2RlVHJhbnNmb3JtcyA9IFtcbiAgdHJhbnNmb3JtU3R5bGUsXG4gIC4uLiEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgPyBbdHJhbnNmb3JtVHJhbnNpdGlvbl0gOiBbXVxuXTtcbmNvbnN0IERPTURpcmVjdGl2ZVRyYW5zZm9ybXMgPSB7XG4gIGNsb2FrOiBub29wRGlyZWN0aXZlVHJhbnNmb3JtLFxuICBodG1sOiB0cmFuc2Zvcm1WSHRtbCxcbiAgdGV4dDogdHJhbnNmb3JtVlRleHQsXG4gIG1vZGVsOiB0cmFuc2Zvcm1Nb2RlbCxcbiAgLy8gb3ZlcnJpZGUgY29tcGlsZXItY29yZVxuICBvbjogdHJhbnNmb3JtT24sXG4gIC8vIG92ZXJyaWRlIGNvbXBpbGVyLWNvcmVcbiAgc2hvdzogdHJhbnNmb3JtU2hvd1xufTtcbmZ1bmN0aW9uIGNvbXBpbGUoc3JjLCBvcHRpb25zID0ge30pIHtcbiAgcmV0dXJuIGJhc2VDb21waWxlKFxuICAgIHNyYyxcbiAgICBleHRlbmQoe30sIHBhcnNlck9wdGlvbnMsIG9wdGlvbnMsIHtcbiAgICAgIG5vZGVUcmFuc2Zvcm1zOiBbXG4gICAgICAgIC8vIGlnbm9yZSA8c2NyaXB0PiBhbmQgPHRhZz5cbiAgICAgICAgLy8gdGhpcyBpcyBub3QgcHV0IGluc2lkZSBET01Ob2RlVHJhbnNmb3JtcyBiZWNhdXNlIHRoYXQgbGlzdCBpcyB1c2VkXG4gICAgICAgIC8vIGJ5IGNvbXBpbGVyLXNzciB0byBnZW5lcmF0ZSB2bm9kZSBmYWxsYmFjayBicmFuY2hlc1xuICAgICAgICBpZ25vcmVTaWRlRWZmZWN0VGFncyxcbiAgICAgICAgLi4uRE9NTm9kZVRyYW5zZm9ybXMsXG4gICAgICAgIC4uLm9wdGlvbnMubm9kZVRyYW5zZm9ybXMgfHwgW11cbiAgICAgIF0sXG4gICAgICBkaXJlY3RpdmVUcmFuc2Zvcm1zOiBleHRlbmQoXG4gICAgICAgIHt9LFxuICAgICAgICBET01EaXJlY3RpdmVUcmFuc2Zvcm1zLFxuICAgICAgICBvcHRpb25zLmRpcmVjdGl2ZVRyYW5zZm9ybXMgfHwge31cbiAgICAgICksXG4gICAgICB0cmFuc2Zvcm1Ib2lzdDogbnVsbCBcbiAgICB9KVxuICApO1xufVxuZnVuY3Rpb24gcGFyc2UodGVtcGxhdGUsIG9wdGlvbnMgPSB7fSkge1xuICByZXR1cm4gYmFzZVBhcnNlKHRlbXBsYXRlLCBleHRlbmQoe30sIHBhcnNlck9wdGlvbnMsIG9wdGlvbnMpKTtcbn1cblxuZXhwb3J0IHsgRE9NRGlyZWN0aXZlVHJhbnNmb3JtcywgRE9NRXJyb3JDb2RlcywgRE9NRXJyb3JNZXNzYWdlcywgRE9NTm9kZVRyYW5zZm9ybXMsIFRSQU5TSVRJT04sIFRSQU5TSVRJT05fR1JPVVAsIFZfTU9ERUxfQ0hFQ0tCT1gsIFZfTU9ERUxfRFlOQU1JQywgVl9NT0RFTF9SQURJTywgVl9NT0RFTF9TRUxFQ1QsIFZfTU9ERUxfVEVYVCwgVl9PTl9XSVRIX0tFWVMsIFZfT05fV0lUSF9NT0RJRklFUlMsIFZfU0hPVywgY29tcGlsZSwgY3JlYXRlRE9NQ29tcGlsZXJFcnJvciwgcGFyc2UsIHBhcnNlck9wdGlvbnMsIHRyYW5zZm9ybVN0eWxlIH07XG4iLCIvKipcbiogdnVlIHYzLjQuMzhcbiogKGMpIDIwMTgtcHJlc2VudCBZdXhpIChFdmFuKSBZb3UgYW5kIFZ1ZSBjb250cmlidXRvcnNcbiogQGxpY2Vuc2UgTUlUXG4qKi9cbmltcG9ydCAqIGFzIHJ1bnRpbWVEb20gZnJvbSAnQHZ1ZS9ydW50aW1lLWRvbSc7XG5pbXBvcnQgeyBpbml0Q3VzdG9tRm9ybWF0dGVyLCByZWdpc3RlclJ1bnRpbWVDb21waWxlciwgd2FybiB9IGZyb20gJ0B2dWUvcnVudGltZS1kb20nO1xuZXhwb3J0ICogZnJvbSAnQHZ1ZS9ydW50aW1lLWRvbSc7XG5pbXBvcnQgeyBjb21waWxlIH0gZnJvbSAnQHZ1ZS9jb21waWxlci1kb20nO1xuaW1wb3J0IHsgaXNTdHJpbmcsIE5PT1AsIGV4dGVuZCwgZ2VuZXJhdGVDb2RlRnJhbWUsIEVNUFRZX09CSiB9IGZyb20gJ0B2dWUvc2hhcmVkJztcblxuZnVuY3Rpb24gaW5pdERldigpIHtcbiAge1xuICAgIGluaXRDdXN0b21Gb3JtYXR0ZXIoKTtcbiAgfVxufVxuXG5pZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSkge1xuICBpbml0RGV2KCk7XG59XG5jb25zdCBjb21waWxlQ2FjaGUgPSAvKiBAX19QVVJFX18gKi8gbmV3IFdlYWtNYXAoKTtcbmZ1bmN0aW9uIGdldENhY2hlKG9wdGlvbnMpIHtcbiAgbGV0IGMgPSBjb21waWxlQ2FjaGUuZ2V0KG9wdGlvbnMgIT0gbnVsbCA/IG9wdGlvbnMgOiBFTVBUWV9PQkopO1xuICBpZiAoIWMpIHtcbiAgICBjID0gLyogQF9fUFVSRV9fICovIE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgY29tcGlsZUNhY2hlLnNldChvcHRpb25zICE9IG51bGwgPyBvcHRpb25zIDogRU1QVFlfT0JKLCBjKTtcbiAgfVxuICByZXR1cm4gYztcbn1cbmZ1bmN0aW9uIGNvbXBpbGVUb0Z1bmN0aW9uKHRlbXBsYXRlLCBvcHRpb25zKSB7XG4gIGlmICghaXNTdHJpbmcodGVtcGxhdGUpKSB7XG4gICAgaWYgKHRlbXBsYXRlLm5vZGVUeXBlKSB7XG4gICAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRlLmlubmVySFRNTDtcbiAgICB9IGVsc2Uge1xuICAgICAgISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSAmJiB3YXJuKGBpbnZhbGlkIHRlbXBsYXRlIG9wdGlvbjogYCwgdGVtcGxhdGUpO1xuICAgICAgcmV0dXJuIE5PT1A7XG4gICAgfVxuICB9XG4gIGNvbnN0IGtleSA9IHRlbXBsYXRlO1xuICBjb25zdCBjYWNoZSA9IGdldENhY2hlKG9wdGlvbnMpO1xuICBjb25zdCBjYWNoZWQgPSBjYWNoZVtrZXldO1xuICBpZiAoY2FjaGVkKSB7XG4gICAgcmV0dXJuIGNhY2hlZDtcbiAgfVxuICBpZiAodGVtcGxhdGVbMF0gPT09IFwiI1wiKSB7XG4gICAgY29uc3QgZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRlbXBsYXRlKTtcbiAgICBpZiAoISEocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSAmJiAhZWwpIHtcbiAgICAgIHdhcm4oYFRlbXBsYXRlIGVsZW1lbnQgbm90IGZvdW5kIG9yIGlzIGVtcHR5OiAke3RlbXBsYXRlfWApO1xuICAgIH1cbiAgICB0ZW1wbGF0ZSA9IGVsID8gZWwuaW5uZXJIVE1MIDogYGA7XG4gIH1cbiAgY29uc3Qgb3B0cyA9IGV4dGVuZChcbiAgICB7XG4gICAgICBob2lzdFN0YXRpYzogdHJ1ZSxcbiAgICAgIG9uRXJyb3I6ICEhKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikgPyBvbkVycm9yIDogdm9pZCAwLFxuICAgICAgb25XYXJuOiAhIShwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9k
15dWN0aW9uXCIpID8gKGUpID0+IG9uRXJyb3IoZSwgdHJ1ZSkgOiBOT09QXG4gICAgfSxcbiAgICBvcHRpb25zXG4gICk7XG4gIGlmICghb3B0cy5pc0N1c3RvbUVsZW1lbnQgJiYgdHlwZW9mIGN1c3RvbUVsZW1lbnRzICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgb3B0cy5pc0N1c3RvbUVsZW1lbnQgPSAodGFnKSA9PiAhIWN1c3RvbUVsZW1lbnRzLmdldCh0YWcpO1xuICB9XG4gIGNvbnN0IHsgY29kZSB9ID0gY29tcGlsZSh0ZW1wbGF0ZSwgb3B0cyk7XG4gIGZ1bmN0aW9uIG9uRXJyb3IoZXJyLCBhc1dhcm5pbmcgPSBmYWxzZSkge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBhc1dhcm5pbmcgPyBlcnIubWVzc2FnZSA6IGBUZW1wbGF0ZSBjb21waWxhdGlvbiBlcnJvcjogJHtlcnIubWVzc2FnZX1gO1xuICAgIGNvbnN0IGNvZGVGcmFtZSA9IGVyci5sb2MgJiYgZ2VuZXJhdGVDb2RlRnJhbWUoXG4gICAgICB0ZW1wbGF0ZSxcbiAgICAgIGVyci5sb2Muc3RhcnQub2Zmc2V0LFxuICAgICAgZXJyLmxvYy5lbmQub2Zmc2V0XG4gICAgKTtcbiAgICB3YXJuKGNvZGVGcmFtZSA/IGAke21lc3NhZ2V9XG4ke2NvZGVGcmFtZX1gIDogbWVzc2FnZSk7XG4gIH1cbiAgY29uc3QgcmVuZGVyID0gbmV3IEZ1bmN0aW9uKFwiVnVlXCIsIGNvZGUpKHJ1bnRpbWVEb20pO1xuICByZW5kZXIuX3JjID0gdHJ1ZTtcbiAgcmV0dXJuIGNhY2hlW2tleV0gPSByZW5kZXI7XG59XG5yZWdpc3RlclJ1bnRpbWVDb21waWxlcihjb21waWxlVG9GdW5jdGlvbik7XG5cbmV4cG9ydCB7IGNvbXBpbGVUb0Z1bmN0aW9uIGFzIGNvbXBpbGUgfTtcbiIsImltcG9ydCB7XHJcbiAgY3JlYXRlQXBwLFxyXG4gIHJlZixcclxuICByZWFjdGl2ZSxcclxuICBvbk1vdW50ZWQsXHJcbiAgbmV4dFRpY2ssXHJcbn0gZnJvbSAndnVlL2Rpc3QvdnVlLmVzbS1idW5kbGVyLmpzJztcclxuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcclxuXHJcbmNvbnN0IHJlc2VydmUgPSAoKSA9PiB7XHJcbiAgY29uc3QgYXBwID0gY3JlYXRlQXBwKHtcclxuICAgIHNldHVwKCkge1xyXG4gICAgICBjb25zdCBzdG9yZVB1bGxkb3duID0gcmVmKCcnKTtcclxuICAgICAgY29uc3QgZGF0ZUxpc3QgPSByZWYoJycpO1xyXG4gICAgICBjb25zdCBkYXRlSW5uZXIgPSByZWYoJycpO1xyXG4gICAgICBjb25zdCBkYXRlSXRlbXMgPSBbXTtcclxuICAgICAgY29uc3Qgc3RvcmVJRCA9IHJlZignJyk7XHJcbiAgICAgIGNvbnN0IG5leHRFbmFibGUgPSByZWYodHJ1ZSk7XHJcbiAgICAgIGNvbnN0IHByZXZFbmFibGUgPSByZWYoZmFsc2UpO1xyXG4gICAgICBjb25zdCBzdG9yZURhdGEgPSByZWYoKTtcclxuICAgICAgY29uc3QgdGltZUxpc3QgPSByZWYoW10pO1xyXG4gICAgICBjb25zdCByZXNlcnZlRGF0YUluaXRpYWwgPSB7XHJcbiAgICAgICAgZGF0ZTogJycsXHJcbiAgICAgICAgdGltZTogJycsXHJcbiAgICAgICAgZGF5SUQ6ICcnLFxyXG4gICAgICB9O1xyXG4gICAgICBjb25zdCByZXNlcnZlRGF0YSA9IHJlYWN0aXZlKHsgLi4ucmVzZXJ2ZURhdGFJbml0aWFsIH0pO1xyXG4gICAgICBjb25zdCBhcGlVcmwgPSAnL2FzeW5jL2Zyb250L3Jlc2VydmVfZm9ybSc7XHJcbiAgICAgIGNvbnN0IGhlYWRlcnMgPSBsb2NhdGlvbi5ob3N0LmluY2x1ZGVzKCdiaWtla2FuLmpwJylcclxuICAgICAgICA/IHtcclxuICAgICAgICAgICAgJ1gtQ1NSRi1UT0tFTic6IGRvY3VtZW50XHJcbiAgICAgICAgICAgICAgLnF1ZXJ5U2VsZWN0b3IoJ21ldGFbbmFtZT1cImNzcmYtdG9rZW5cIl0nKVxyXG4gICAgICAgICAgICAgIC5nZXRBdHRyaWJ1dGUoJ2NvbnRlbnQnKSxcclxuICAgICAgICAgIH1cclxuICAgICAgICA6IHt9O1xyXG5cclxuICAgICAgbGV0IG1heCxcclxuICAgICAgICByYW5nZSA9ICcnO1xyXG4gICAgICBsZXQgcHJvZ3Jlc3MgPSByZWYoMCk7XHJcbiAgICAgIGNvbnN0IGRhdGVNb3ZlSW5pdCA9ICgpID0+IHtcclxuICAgICAgICBtYXggPSBNYXRoLmNlaWwoXHJcbiAgICAgICAgICBkYXRlTGlzdC52YWx1ZS
155jbGllbnRXaWR0aCAtIGRhdGVJbm5lci52YWx1ZS5zY3JvbGxXaWR0aFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmFuZ2UgPSBkYXRlSXRlbXNbMF0uY2xpZW50V2lkdGg7XHJcbiAgICAgIH07XHJcblxyXG4gICAgICBjb25zdCBhZGREYXRlSXRlbSA9IChlbCkgPT4ge1xyXG4gICAgICAgIGlmIChlbCkge1xyXG4gICAgICAgICAgZGF0ZUl0ZW1zLnB1c2goZWwpO1xyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuXHJcbiAgICAgIGNvbnN0IG9uU2VsZWN0U3RvcmUgPSBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgT2JqZWN0LmFzc2lnbihyZXNlcnZlRGF0YSwgcmVzZXJ2ZURhdGFJbml0aWFsKTtcclxuICAgICAgICBkYXRlSXRlbXMubGVuZ3RoID0gMDtcclxuXHJcbiAgICAgICAgaWYgKHN0b3JlSUQudmFsdWUpIHtcclxuICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGF4aW9zXHJcbiAgICAgICAgICAgIC5nZXQoYXBpVXJsLCB7XHJcbiAgICAgICAgICAgICAgcGFyYW1zOiB7IGlkOiBzdG9yZUlELnZhbHVlIH0sXHJcbiAgICAgICAgICAgICAgaGVhZGVycyxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLmNhdGNoKCh7IHJlc3BvbnNlIH0pID0+IHJlc3BvbnNlKTtcclxuICAgICAgICAgIHN0b3JlRGF0YS52YWx1ZSA9IHJlcztcclxuICAgICAgICAgIHN0b3JlRGF0YS52YWx1ZS5kYXRhID1cclxuICAgICAgICAgICAgcmVzLnN0YXR1cyA9PT0gMjAwID8gc3RvcmVEYXRhLnZhbHVlLmRhdGEuZGF0YSA6ICcnO1xyXG4gICAgICAgICAgbmV4dFRpY2soKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIW1heCkgZGF0ZU1vdmVJbml0KCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHN0b3JlRGF0YS52YWx1ZS5kYXRhKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgc3RvcmVEYXRhLnZhbHVlID0gJyc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG5cclxuICAgICAgY29uc3Qgb25Nb3ZlID0gKHRyaWdnZXIpID0+IHtcclxuICAgICAgICBpZiAodHJpZ2dlciA9PT0gJ25leHQnKSB7XHJcbiAgICAgICAgICBwcmV2RW5hYmxlLnZhbHVlID0gdHJ1ZTtcclxuICAgICAgICAgIHByb2dyZXNzLnZhbHVlIC09IHJhbmdlO1xyXG4gICAgICAgICAgbmV4dEVuYWJsZS52YWx1ZSA9ICEobWF4ID49IHByb2dyZXNzLnZhbHVlKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRyaWdnZXIgPT09ICdwcmV2Jykge1xyXG4gICAgICAgICAgbmV4dEVuYWJsZS52YWx1ZSA9IHRydWU7XHJcbiAgICAgICAgICBwcm9ncmVzcy52YWx1ZSArPSByYW5nZTtcclxuICAgICAgICAgIHByZXZFbmFibGUudmFsdWUgPSAhKDAgPD0gcHJvZ3Jlc3MudmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuXHJcbiAgICAgIGNvbnN0IG9uU2VsZWN0RGF0ZSA9IChkYXRlLCBvcGVuLCBjbG9zZSkgPT4ge1xyXG4gICAgICAgIHRpbWVMaXN0LnZhbHVlLnNwbGljZSgwKTtcclxuICAgICAgICByZXNlcnZlRGF0YS5kYXRlID0gZGF0ZTtcclxuICAgICAgICByZXNlcnZlRGF0YS50aW1lID0gJyc7XHJcbiAgICAgICAgZ2V0QnVzaW5lc3NIb3VycyhvcGVuLCBjbG9zZSk7XHJcbiAgICAgIH07XHJcblxyXG4gICAgICBjb25zdCBnZXRCdXNpbmVzc0hvdXJzID0gKHN0YXJ0LCBlbmQpID0+IHtcclxuICAgICAgICBjb25zdCBzdGFydERhdGUgPSBuZXcgRGF0ZShgMjAyMy0wMS0wMVQke3N0YXJ0fTowMGApO1xyXG4gICAgICAgIGNvbnN0IGVuZERhdGUgPSBuZXcgRGF0ZShgMjAyMy0wMS0wMVQke2VuZH06MDBgKTtcclxuICAgICAgICBsZXQgZGlmZiA9IHN0YXJ0RGF0ZS5nZXRUaW1lKCkgLSBlbmREYXRlLmdldFRpbWUoKTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhkaWZmKTtcclxuICAgICAgICBkaWZmID0gTWF0aC5mbG9vcihNYXRoLmFicyhkaWZmIC8gKDYwICogMzAgKiAxMDAwKSkpO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGRpZmYpO1xyXG4gICAgICAgIGNvbnN0IGZvcm1hdE9wdCA9IHsgaG91cjEyOiBmYWxzZSwgaG91cjogJzItZGlnaXQnLCBtaW51dGU6ICcyLWRpZ2l0JyB9O1xyXG5cclxuICAgICAgICB0aW1lTGlzdC52YWx1ZSA9IFsuLi5BcnJheShkaWZmICsgMSldLnJlZHVjZSgocHJldiwgY3JyLCBpKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBkID0gcHJldltpIC0gMV0gPyBuZXcgRGF0ZShwcmV2W2kgLSAxXS5lbmQpIDogc3RhcnREYXRlO1xyXG4gICAgICAgICAgY29uc3QgcyA9IGQudG9Mb2NhbGVTdHJpbmcoKTtcclxuICAgICAgICAgIGNvbnN0IHNmb3JtYXQgPSBkLnRvTG9jYWxlU3RyaW5nKCdlbicsIGZvcm1hdE9wdCk7XHJcbiAgICAgICAgICBkLnNldE1pbnV0ZXMoZC5nZXRNaW51dGVzKCkgKyAzMCk7XHJcbiAgICAgICAgICBjb25zdCBlID0gZC50b0xvY2FsZVN0cmluZygpO1xyXG4gICAgICAgICAgY29uc3QgZWZvcm1hdCA9IGQudG9Mb2NhbGVTdHJpbmcoJ2VuJywgZm9ybWF0T3B0KTtcclxuICAgICAgICAgIGlmIChkIDw9IGVuZERhdGUpIHtcclxuICAgICAgICAgICAgcHJldi5wdXNoKHtcclxuICAgICAgICAgICAgICBzdGFydDogcyxcclxuICAgICAgICAgICAgICBlbmQ6IGUsXHJcbiAgICAgICAgICAgICAgZm9ybWF0OiBgJHtzZm9ybWF0feOAnCR7ZWZvcm1hdH1gLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiBwcmV2O1xyXG4gICAgICAgIH0sIFtdKTtcclxuICAgICAgfTtcclxuXHJcbiAgICAgIG9uTW91bnRlZCgoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgbXEgPSB3aW5kb3cubWF0Y2hNZWRpYSgnKG1heC13aWR0aDogNzY4cHgpJyk7XHJcbiAgICAgICAgbXEuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKGUpID0+IHtcclxuICAgICAgICAgIGlmIChlLm1hdGNoZXMpIHtcclxuICAgICAgICAgICAgcHJldkVuYWJsZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBuZXh0RW5hYmxlLnZhbHVlID0gdHJ1ZTtcclxuICAgICAgICAgICAgcHJvZ3Jlc3MudmFsdWUgPSAwO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZGF0ZU1vdmVJbml0KCk7XHJcbiAgICAgICAgICAgIGRhdGVMaXN0LnZhbHVlLnNjcm9sbExlZnQgPSAwO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgI
15H0pO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgZGF0ZUxpc3QsXHJcbiAgICAgICAgZGF0ZUlubmVyLFxyXG4gICAgICAgIC8vIGRhdGVJdGVtcyxcclxuICAgICAgICBhZGREYXRlSXRlbSxcclxuICAgICAgICBzdG9yZVB1bGxkb3duLFxyXG4gICAgICAgIHN0b3JlSUQsXHJcbiAgICAgICAgdGltZUxpc3QsXHJcbiAgICAgICAgcmVzZXJ2ZURhdGEsXHJcbiAgICAgICAgb25TZWxlY3RTdG9yZSxcclxuICAgICAgICBvblNlbGVjdERhdGUsXHJcbiAgICAgICAgb25Nb3ZlLFxyXG4gICAgICAgIHByb2dyZXNzLFxyXG4gICAgICAgIG5leHRFbmFibGUsXHJcbiAgICAgICAgcHJldkVuYWJsZSxcclxuICAgICAgICBzdG9yZURhdGEsXHJcbiAgICAgICAgZ2V0QnVzaW5lc3NIb3VycyxcclxuICAgICAgfTtcclxuICAgIH0sXHJcbiAgfSk7XHJcblxyXG4gIGFwcC5jb21wb25lbnQoJ3N0b3JlRGF5Jywge1xyXG4gICAgdGVtcGxhdGU6IGBcclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICA6cmVmPVwiZGF0ZUl0ZW1cIlxyXG4gICAgICAgICAgY2xhc3M9XCJwLWZvcm0tZGF0ZV9faXRlbVwiXHJcbiAgICAgICAgICA6Y2xhc3M9XCJbeydpcy1zZWxlY3RlZCc6IHJlc2VydmVEYXRlID09PSBkYXRlfSwgeydpcy1kaXNhYmxlJzogaXNUZWwgfHwgaXNDbG9zZWQgfV1cclxuICAgICAgICBcIj5cclxuICAgICAgICAgIDxwIGNsYXNzPVwicC1mb3JtLWRhdGVfX2l0ZW0tZGF5XCIgOmNsYXNzPVwiW2RheXNbZGF5SWRdLm1vZCwgeydwLWZvcm0tZGF0ZV9faXRlbS1kYXktLWhvbGlkYXknOiBpc0hvbGlkYXl9XVwiPnt7IGRheXNbTnVtYmVyKGRheUlkKV0ubmFtZSB9fTwvcD5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWZvcm0tZGF0ZV9faXRlbS13cmFwXCI+XHJcbiAgICAgICAgICAgIDxwIGNsYXNzPVwicC1mb3JtLWRhdGVfX2l0ZW0tbnVtXCI+e3sgbmV3IERhdGUoZGF0ZSkudG9Mb2NhbGVEYXRlU3RyaW5nKCdqYS1KUCcsIHsgbW9udGg6ICcyLWRpZ2l0JywgZGF5OiAnMi1kaWdpdCd9KSB9fTwvcD5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZm9ybS1kYXRlX19pdGVtLW1hcmtcIj5cclxuICAgICAgICAgICAgICA8c3ZnIHYtaWY9XCJpc0Nsb3NlZFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Ym94PVwiMCAwIDE0IDJcIiBjbGFzcz1cInAtZm9ybS1kYXRlX19pdGVtLWJsYW5rXCIgYXJpYS1sYWJlbD1cIuWumuS8keaXpVwiPlxyXG4gICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjJcIiB4PVwiMFwiIHk9XCIwXCI+PC9yZWN0PlxyXG4gICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgIDxzdmcgdi1lbHNlLWlmPVwiaXNUZWxcIiBjbGFzcz1cInAtZm9ybS1kYXRlX19pdGVtLXRlbFwiIGFyaWEtbGFiZWw9XCLpm7voqbHjgafjgYrllY/jgYTlkIjjgo/jgZvjgY/jgaDjgZXjgYRcIj48dXNlIHhsaW5rOmhyZWY9XCIjdGVsXCIgLz48L3N2Zz5cclxuICAgICAgICAgICAgICA8c3ZnIHYtZWxzZSB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld2JveD1cIjAgMCA4IDhcIiBjbGFzcz1cInAtZm9ybS1kYXRlX19pdGVtLWNpcmNsZVwiIGFyaWEtbGFiZWw9XCLllrbmpa3ml6VcIj5cclxuICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCI0XCIgY3k9XCI0XCIgcj1cIjRcIj48L2NpcmNsZT5cclxuICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgYCxcclxuICAgIHByb3BzOiBbJ2RhdGUnLCAnZGF5SWQnLCAnaXNDbG9zZWQnLCAnaXNIb2xpZGF5JywgJ2lzVGVsJywgJ3Jlc2VydmVEYXRlJ10sXHJcbiAgICBzZXR1cChwcm9wcywgeyBlbWl0IH0pIHtcclxuICAgICAgY29uc3QgZGF5cyA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuYW1lOiAn5pelJyxcclxuICAgICAgICAgIG1vZDogJ3AtZm9ybS1kYXRlX19pdGVtLWRheS0tc3VuJyxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIG5hbWU6ICfmnIgnLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmFtZTogJ+eBqycsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuYW1lOiAn5rC0JyxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIG5hbWU6ICfmnKgnLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmFtZTogJ+mHkScsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuYW1lOiAn5ZyfJyxcclxuICAgICAgICAgIG1vZDogJ3AtZm9ybS1kYXRlX19pdGVtLWRheS0tc2F0JyxcclxuICAgICAgICB9LFxyXG4gICAgICBdO1xyXG4gICAgICBjb25zdCBkYXRlSXRlbSA9IChlbCkgPT4ge1xyXG4gICAgICAgIGVtaXQoJ2RhdGUtaXRlbScsIGVsKTtcclxuICAgICAgfTtcclxuXHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgZGF5cyxcclxuICAgICAgICBkYXRlSXRlbSxcclxuICAgICAgfTtcclxuICAgIH0sXHJcbiAgfSk7XHJcblxyXG4gIGFwcC5tb3VudCgnI2RhdGUnKTtcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IHJlc2VydmU7XHJcbiIsImNsYXNzIFRhYiB7XHJcbiAgY29uc3RydWN0b3IodGFiLCBvcHQpIHtcclxuICAgIHRoaXMuZGVmYXVsdCA9IHtcclxuICAgICAgaGVpZ2h0OiB0cnVlLFxyXG4gICAgfTtcclxuICAgIHRoaXMudGFiID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0YWIpO1xyXG4gICAgdGhpcy50YWJUcmlnZ2VycyA9IHRoaXMudGFiLnF1ZXJ5U2VsZWN0b3JBbGwoJy5qcy10YWItdHJpZ2dlcicpO1xyXG4gICAgdGhpcy50YWJQYW5lbCA9IHRoaXMudGFiLnF1ZXJ5U2VsZWN0b3IoJy5qcy10YWItcGFuZWwnKTtcclxuICAgIHRoaXMudGFiUGFuZWxzID0gdGhpcy50YWIucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtdGFiLXBhbmVsXScpO1xyXG4gICAgdGhpcy5vcHQgPSBPYmplY3QuYXNzaWduKHRoaXMuZGVmYXVsdCwgb3B0KTtcclxuICAgIHRoaXMuaW5pdCgpO1xyXG4gIH1cclxuICBpbml0KCkge1xyXG4gICAgaWYgKHRoaXMub3B0LmhlaWdodCkge1xyXG4gICAgICBmb3IgKGNvbnN0IHRyaWdnZXIgb2YgdGhpcy50YWJUcmlnZ2Vycykge1xyXG4gICAgICAgIGlmICh0cmlnZ2VyLmdldEF0dHJpYnV0ZSgnYXJpYS1zZWxlY3RlZCcpID09PSAndHJ1ZScpIHtcclxuICAgICAgICAgIGNvbnN0IGlkID0gdHJpZ2dlci5nZXRBdHRyaWJ1dGUoJ2FyaWEtY29udHJvbHMnKTtcclxuICAgICAgICAgI
15HRoaXMudGFiUGFuZWwuc3R5bGUuaGVpZ2h0ID1cclxuICAgICAgICAgICAgdGhpcy50YWIucXVlcnlTZWxlY3RvcihgW2RhdGEtdGFiLXBhbmVsPVwiJHtpZH1cIl1gKS5vZmZzZXRIZWlnaHQgK1xyXG4gICAgICAgICAgICAncHgnO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGZvciAoY29uc3QgdHJpZ2dlciBvZiB0aGlzLnRhYlRyaWdnZXJzKSB7XHJcbiAgICAgIHRyaWdnZXIuYWRkRXZlbnRMaXN0ZW5lcihcclxuICAgICAgICAnY2xpY2snLFxyXG4gICAgICAgICgpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGlkID0gdHJpZ2dlci5nZXRBdHRyaWJ1dGUoJ2FyaWEtY29udHJvbHMnKTtcclxuICAgICAgICAgIGNvbnN0IHBhbmVsID0gdGhpcy50YWIucXVlcnlTZWxlY3RvcihgW2RhdGEtdGFiLXBhbmVsPVwiJHtpZH1cIl1gKTtcclxuICAgICAgICAgIGlmIChwYW5lbCkge1xyXG4gICAgICAgICAgICB0aGlzLnJlc2V0KCk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm9wdC5oZWlnaHQpIHtcclxuICAgICAgICAgICAgICB0aGlzLnRhYlBhbmVsLnN0eWxlLmhlaWdodCA9IHBhbmVsLm9mZnNldEhlaWdodCArICdweCc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcGFuZWwuc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsIGZhbHNlKTtcclxuICAgICAgICAgICAgdHJpZ2dlci5zZXRBdHRyaWJ1dGUoJ2FyaWEtc2VsZWN0ZWQnLCB0cnVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHsgcGFkZGl2ZTogdHJ1ZSB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5yZXNpemUuYmluZCh0aGlzKSwge1xyXG4gICAgICBwYXNzaXZlOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHJlc2V0KCkge1xyXG4gICAgZm9yIChjb25zdCB0cmlnZ2VyIG9mIHRoaXMudGFiVHJpZ2dlcnMpIHtcclxuICAgICAgdHJpZ2dlci5zZXRBdHRyaWJ1dGUoJ2FyaWEtc2VsZWN0ZWQnLCBmYWxzZSk7XHJcbiAgICB9XHJcbiAgICBmb3IgKGNvbnN0IHBhbmVsIG9mIHRoaXMudGFiUGFuZWxzKSB7XHJcbiAgICAgIHBhbmVsLnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCB0cnVlKTtcclxuICAgIH1cclxuICB9XHJcbiAgcmVzaXplKCkge1xyXG4gICAgY29uc3QgY3VycmVudFBhbmVsID0gdGhpcy50YWIucXVlcnlTZWxlY3RvcihcclxuICAgICAgJ1tkYXRhLXRhYi1wYW5lbF1bYXJpYS1oaWRkZW49XCJmYWxzZVwiXSdcclxuICAgICk7XHJcbiAgICBpZiAodGhpcy5vcHQuaGVpZ2h0KSB7XHJcbiAgICAgIHRoaXMudGFiUGFuZWwuc3R5bGUuaGVpZ2h0ID0gY3VycmVudFBhbmVsLm9mZnNldEhlaWdodCArICdweCc7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGRlc3Ryb3koKSB7XHJcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5yZXNpemUuYmluZCh0aGlzKSwge1xyXG4gICAgICBwYXNzaXZlOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnRhYlBhbmVsLnN0eWxlLmhlaWdodCA9ICcnO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IHsgVGFiIH07XHJcbiIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZh
15dWx0ID0gYXNzZXJ0U3RyaW5nO1xuZnVuY3Rpb24gX3R5cGVvZihvKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgcmV0dXJuIF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykgeyByZXR1cm4gdHlwZW9mIG87IH0gOiBmdW5jdGlvbiAobykgeyByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbzsgfSwgX3R5cGVvZihvKTsgfVxuZnVuY3Rpb24gYXNzZXJ0U3RyaW5nKGlucHV0KSB7XG4gIHZhciBpc1N0cmluZyA9IHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycgfHwgaW5wdXQgaW5zdGFuY2VvZiBTdHJpbmc7XG4gIGlmICghaXNTdHJpbmcpIHtcbiAgICB2YXIgaW52YWxpZFR5cGUgPSBfdHlwZW9mKGlucHV0KTtcbiAgICBpZiAoaW5wdXQgPT09IG51bGwpIGludmFsaWRUeXBlID0gJ251bGwnO2Vsc2UgaWYgKGludmFsaWRUeXBlID09PSAnb2JqZWN0JykgaW52YWxpZFR5cGUgPSBpbnB1dC5jb25zdHJ1Y3Rvci5uYW1lO1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJFeHBlY3RlZCBhIHN0cmluZyBidXQgcmVjZWl2ZWQgYSBcIi5jb25jYXQoaW52YWxpZFR5cGUpKTtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG5tb2R1bGUuZXhwb3J0cy5kZWZh
15dWx0ID0gZXhwb3J0cy5kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdG9EYXRlO1xudmFyIF9hc3NlcnRTdHJpbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWwvYXNzZXJ0U3RyaW5nXCIpKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5mdW5jdGlvbiB0b0RhdGUoZGF0ZSkge1xuICAoMCwgX2Fzc2VydFN0cmluZy5kZWZhdWx0KShkYXRlKTtcbiAgZGF0ZSA9IERhdGUucGFyc2UoZGF0ZSk7XG4gIHJldHVybiAhaXNOYU4oZGF0ZSkgPyBuZXcgRGF0ZShkYXRlKSA6IG51bGw7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBleHBvcnRzLmRlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmZhcnNpTG9jYWxlcyA9IGV4cG9ydHMuZW5nbGlzaExvY2FsZXMgPSBleHBvcnRzLmRvdERlY2ltYWwgPSBleHBvcnRzLmRlY2ltYWwgPSBleHBvcnRzLmNvbW1hRGVjaW1hbCA9IGV4cG9ydHMuYmVuZ2FsaUxvY2FsZXMgPSBleHBvcnRzLmFyYWJpY0xvY2FsZXMgPSBleHBvcnRzLmFscGhhbnVtZXJpYyA9IGV4cG9ydHMuYWxwaGEgPSB2b2lkIDA7XG52YXIgYWxwaGEgPSBleHBvcnRzLmFscGhhID0ge1xuICAnZW4tVVMnOiAvXltBLVpdKyQvaSxcbiAgJ2F6LUFaJzogL15bQS1WWFlaw4fGj8SexLDEscOWxZ7DnF0rJC9pLFxuICAnYmctQkcnOiAvXlvQkC3Qr10rJC9pLFxuICAnY3MtQ1onOiAvXltBLVrDgcSMxI7DicSaw43Fh8OTxZjFoMWkw5rFrsOdxb1dKyQvaSxcbiAgJ2RhLURLJzogL15bQS1aw4bDmMOFXSskL2ksXG4gICdkZS1ERSc6IC9eW0EtWsOEw5bDnMOfXSskL2ksXG4gICdlbC1HUic6IC9eW86RLc+OXSskL2ksXG4gICdlcy1FUyc6IC9eW0EtWsOBw4nDjcORw5PDmsOcXSskL2ksXG4gICdmYS1JUic6IC9eW9in2KjZvtiq2KvYrNqG2K3Yrtiv2LDYs
15diy2pjYs9i02LXYtti32LjYudi62YHZgtqp2q/ZhNmF2YbZiNmH24xdKyQvaSxcbiAgJ2ZpLUZJJzogL15bQS1aw4XDhMOWXSskL2ksXG4gICdmci1GUic6IC9eW0EtWsOAw4LDhsOHw4nDiMOKw4vDj8OOw5TFksOZw5vDnMW4XSskL2ksXG4gICdpdC1JVCc6IC9eW0EtWsOAw4nDiMOMw47Dk8OSw5ldKyQvaSxcbiAgJ2phLUpQJzogL15b44GBLeOCk+OCoS3jg7bvvaYt776f5LiALem+oOODvOODu+OAguOAgV0rJC9pLFxuICAnbmItTk8nOiAvXltBLVrDhsOYw4VdKyQvaSxcbiAgJ25sLU5MJzogL15bQS1aw4HDicOLw4/Dk8OWw5zDml0rJC9pLFxuICAnbm4tTk8nOiAvXltBLVrDhsOYw4VdKyQvaSxcbiAgJ2h1LUhVJzogL15bQS1aw4HDicONw5PDlsWQw5rDnMWwXSskL2ksXG4gICdwbC1QTCc6IC9eW0EtWsSExIbEmMWaxYHFg8OTxbvFuV0rJC9pLFxuICAncHQtUFQnOiAvXltBLVrDg8OBw4DDgsOEw4fDicOKw4vDjcOPw5XDk8OUw5bDmsOcXSskL2ksXG4gICdydS1SVSc6IC9eW9CQLdCv0IFdKyQvaSxcbiAgJ2trLUtaJzogL15b0JAt0K/QgVxcdTA0RDhcXHUwNEIwXFx1MDQwNlxcdTA0QTJcXHUwNDkyXFx1MDRBRVxcdTA0OUFcXHUwNEU4XFx1MDRCQV0rJC9pLFxuICAnc2wtU0knOiAvXltBLVrEjMSGxJDFoMW9XSskL2ksXG4gICdzay1TSyc6IC9eW0EtWsOBxIzEjsOJw43Fh8OTxaDFpMOaw53FvcS5xZTEvcOEw5RdKyQvaSxcbiAgJ3NyLVJTQGxhdGluJzogL15bQS1axIzEhsW9xaDEkF0rJC9pLFxuICAnc3ItUlMnOiAvXlvQkC3Qr9CC0IjQidCK0IvQj10rJC9pLFxuICAnc3YtU0UnOiAvXltBLVrDhcOEw5ZdKyQvaSxcbiAgJ3RoLVRIJzogL15b4LiBLeC5kFxcc10rJC9pLFxuICAndHItVFInOiAvXltBLVrDh8SexLDEscOWxZ7DnF0rJC9pLFxuICAndWstVUEnOiAvXlvQkC3QqdCs0K7Qr9CESdCH0pDRll0rJC9pLFxuICAndmktVk4nOiAvXltBLVrDgMOB4bqg4bqiw4PDguG6puG6pOG6rOG6qOG6qsSC4bqw4bqu4bq24bqy4bq0xJDDiMOJ4bq44bq64bq8w4rhu4Dhur7hu4bhu4Lhu4TDjMON4buK4buIxKjDksOT4buM4buOw5XDlOG7kuG7kOG7mOG7lOG7lsag4buc4bua4bui4bue4bugw5nDmuG7pOG7psWoxq/hu6rhu6jhu7Dhu6zhu67hu7LDneG7tOG7tuG7uF0rJC9pLFxuICAna28tS1InOiAvXlvjhLEt44WO44WPLeOFo+qwgC3tnqNdKiQvLFxuICAna3UtSVEnOiAvXlvYptin2KjZvtiq2Kzahtit2K7Yr9ix2pXYstqY2LPYtNi52LrZgdqk2YLaqdqv2YTatdmF2YbZiNuG2r7blduM247Ziti32KTYq9ii2KXYo9mD2LbYtdip2LjYsF0rJC9pLFxuICBhcjogL15b2KHYotij2KTYpdim2KfYqNip2KrYq9is2K3Yrtiv2LDYs
15diy2LPYtNi12LbYt9i42LnYutmB2YLZg9mE2YXZhtmH2YjZidmK2YvZjNmN2Y7Zj9mQ2ZHZktmwXSskLyxcbiAgaGU6IC9eW9eQLdeqXSskLyxcbiAgZmE6IC9eWyfYotin2KHYo9ik2KbYqNm+2KrYq9is2obYrdiu2K/YsNix2LLamNiz2LTYtdi22LfYuNi52LrZgdmC2qnar9mE2YXZhtmI2YfYqduMJ10rJC9pLFxuICBibjogL15bJ+CmgOCmgeCmguCmg+CmheCmhuCmh+CmiOCmieCmiuCmi+CmjOCmj+CmkOCmk+CmlOCmleCmluCml+CmmOCmmeCmmuCmm+CmnOCmneCmnuCmn+CmoOCmoeCmouCmo+CmpOCmpeCmpuCmp+CmqOCmquCmq+CmrOCmreCmruCmr+CmsOCmsuCmtuCmt+CmuOCmueCmvOCmveCmvuCmv+CngOCngeCnguCng+CnhOCnh+CniOCni+CnjOCnjeCnjuCnl+CnnOCnneCnn+CnoOCnoeCnouCno+CnsOCnseCnsuCns+CntOCnteCntuCnt+CnuOCnueCnuuCnuyddKyQvLFxuICBlbzogL15bQUJDxIhELUfEnEjEpElKxLRLLVBSU8WcVFXFrFZaXSskL2ksXG4gICdoaS1JTic6IC9eW1xcdTA5MDAtXFx1MDk2MV0rW1xcdTA5NzItXFx1MDk3Rl0qJC9pLFxuICAnc2ktTEsnOiAvXltcXHUwRDgwLVxcdTBERkZdKyQvXG59O1xudmFyIGFscGhhbnVtZXJpYyA9IGV4cG9ydHMuYWxwaGFudW1lcmljID0ge1xuICAnZW4tVVMnOiAvXlswLTlBLVpdKyQvaSxcbiAgJ2F6LUFaJzogL15bMC05QS1WWFlaw4fGj8SexLDEscOWxZ7DnF0rJC9pLFxuICAnYmctQkcnOiAvXlswLTnQkC3Qr10rJC9pLFxuICAnY3MtQ1onOiAvXlswLTlBLVrDgcSMxI7DicSaw43Fh8OTxZjFoMWkw5rFrsOdxb1dKyQvaSxcbiAgJ2RhLURLJzogL15bMC05QS1aw4bDmMOFXSskL2ksXG4gICdkZS1ERSc6IC9eWzAtOUEtWsOEw5bDnMOfXSskL2ksXG4gICdlbC1HUic6IC9eWzAtOc6RLc+JXSskL2ksXG4gICdlcy1FUyc6IC9eWzAtOUEtWsOBw4nDjcORw5PDmsOcXSskL2ksXG4gICdmaS1GSSc6IC9eWzAtOUEtWsOFw4TDll0rJC9pLFxuICAnZnItRlInOiAvXlswLTlBLVrDgMOCw4bDh8OJw4jDisOLw4/DjsOUxZLDmcObw5zFuF0rJC9pLFxuICAnaXQtSVQnOiAvXlswLTlBLVrDgMOJw4jDjMOOw5PDksOZXSskL2ksXG4gICdqYS1KUCc6IC9eWzAtOe+8kC3vvJnjgYEt44KT44KhLeODtu+9pi3vvp/kuIAt6b6g44O844O744CC44CBXSskL2ksXG4gICdodS1IVSc6IC9eWzAtOUEtWsOBw4nDjcOTw5bFkMOaw5zFsF0rJC9pLFxuICAnbmItTk8nOiAvXlswLTlBLVrDhsOYw4VdKyQvaSxcbiAgJ25sLU5MJzogL15bMC05QS1aw4HDicOLw4/Dk8OWw5zDml0rJC9pLFxuICAnbm4tTk8nOiAvXlswLTlBLVrDhsOYw4VdKyQvaSxcbiAgJ3BsLVBMJzogL15bMC05QS1axITEhsSYxZrFgcWDw5PFu8W5XSskL2ksXG4gICdwdC1QVCc6IC9eWzAtOUEtWsODw4HDgMOCw4TDh8OJw4rDi8ONw4/DlcOTw5TDlsOaw5xdKyQvaSxcbiAgJ3J1LVJVJzogL15bMC050JAt0K/QgV0rJC9pLFxuICAna2stS1onOiAvXlswLTnQkC3Qr9CBXFx1MDREOFxcdTA0QjBcXHUwNDA2XFx1MDRBMlxcdTA0OTJcXHUwNEFFXFx1MDQ5QVxcdTA0RThcXHUwNEJBXSskL2ksXG4gICdzbC1TSSc6IC9eWzAtOUEtWsSMxIbEkMWgxb1dKyQvaSxcbiAgJ3NrLVNLJzogL15bMC05QS1aw4HEjMSOw4nDjcWHw5PFoMWkw5rDncW9xLnFlMS9w4TDlF0rJC9pLFxuICAnc3ItUlNAbGF0aW4nOiAvXlswLTlBLVrEjMSGxb3FoMSQXSskL2ksXG4gICdzci1SUyc6IC9eWzAtOdCQLdCv0ILQiNCJ0IrQi9CPXSskL2ksXG4gICdzdi1TRSc6IC9eWzAtOUEtWsOFw4TDll0rJC9pLFxuICAndGgtVEgnOiAvXlvguIEt4LmZXFxzXSskL2ksXG4gICd0ci1UUic6IC9eWzAtOUEtWsOHxJ7EsMSxw5bFnsOcXSskL2ksXG4gICd1ay1VQSc6IC9eWzAtOdCQLdCp0KzQrtCv0IRJ0IfSkNGWXSskL2ksXG4gICdrby1LUic6IC9eWzAtOeOEsS3jhY7jhY8t44Wj6rCALe2eo10qJC8sXG4gICdrdS1JUSc6IC9eW9mg2aHZotmj2aTZpdmm2afZqNmpMC052KbYp9io2b7Yqtis2obYrdiu2K/YsdqV2LLamNiz2LTYudi62YHapNmC2qnar9mE2rXZhdmG2Yjbhtq+25XbjNuO2YrYt9ik2KvYotil2KPZg9i22LXYqdi42LBdKyQvaSxcbiAgJ3ZpLVZOJzogL15bMC05QS1aw4DDgeG6oOG6osODw4LhuqbhuqThuqzhuqjhuqrEguG6sOG6ruG6tuG6suG6tMSQw4jDieG6uOG6uuG6vMOK4buA4bq+4buG4buC4buEw4zDjeG7iuG7iMSow5LDk+G7jOG7jsOVw5Thu5Lhu5Dhu5jhu5Thu5bGoOG7nOG7muG7ouG7nuG7oMOZw5rhu6Thu6bFqMav4buq4buo4buw4bus4buu4buyw53hu7Thu7bhu7hdKyQvaSxcbiAgYXI6IC9eW9mg2aHZotmj2aTZpdmm2afZqNmpMC052KHYotij2KTYpdim2KfYqNip2KrYq9is2K3Yrtiv2LDYs
15diy2LPYtNi12LbYt9i42LnYutmB2YLZg9mE2YXZhtmH2YjZidmK2YvZjNmN2Y7Zj9mQ2ZHZktmwXSskLyxcbiAgaGU6IC9eWzAtOdeQLdeqXSskLyxcbiAgZmE6IC9eWycwLTnYotin2KHYo9ik2KbYqNm+2KrYq9is2obYrdiu2K/YsNix2LLamNiz2LTYtdi22LfYuNi52LrZgdmC2qnar9mE2YXZhtmI2YfYqduM27Hbstuz27Tbtdu227fbuNu527AnXSskL2ksXG4gIGJuOiAvXlsn4KaA4KaB4KaC4KaD4KaF4KaG4KaH4KaI4KaJ4KaK4KaL4KaM4KaP4KaQ4KaT4KaU4KaV4KaW4KaX4KaY4KaZ4Kaa4Kab4Kac4Kad4Kae4Kaf4Kag4Kah4Kai4Kaj4Kak4Kal4Kam4Kan4Kao4Kaq4Kar4Kas4Kat4Kau4Kav4Kaw4Kay4Ka24Ka34Ka44Ka54Ka84Ka94Ka+4Ka/4KeA4KeB4KeC4KeD4KeE4KeH4KeI4KeL4KeM4KeN4KeO4KeX4Kec4Ked4Kef4Keg4Keh4Kei4Kej4Kem4Ken4Keo4Kep4Keq4Ker4Kes4Ket4Keu4Kev4Kew4Kex4Key4Kez4Ke04Ke14Ke24Ke34Ke44Ke54Ke64Ke7J10rJC8sXG4gIGVvOiAvXlswLTlBQkPEiEQtR8ScSMSkSUrEtEstUFJTxZxUVcWsVlpdKyQvaSxcbiAgJ2hpLUlOJzogL15bXFx1MDkwMC1cXHUwOTYzXStbXFx1MDk2Ni1cXHUwOTdGXSokL2ksXG4gICdzaS1MSyc6IC9eWzAtOVxcdTBEODAtXFx1MERGRl0rJC9cbn07XG52YXIgZGVjaW1hbCA9IGV4cG9ydHMuZGVjaW1hbCA9IHtcbiAgJ2VuLVVTJzogJy4nLFxuICBhcjogJ9mrJ1xufTtcbnZhciBlbmdsaXNoTG9jYWxlcyA9IGV4cG9ydHMuZW5nbGlzaExvY2FsZXMgPSBbJ0FVJywgJ0dCJywgJ0hLJywgJ0lOJywgJ05aJywgJ1pBJywgJ1pNJ107XG5mb3IgKHZhciBsb2NhbGUsIGkgPSAwOyBpIDwgZW5nbGlzaExvY2FsZXMubGVuZ3RoOyBpKyspIHtcbiAgbG9jYWxlID0gXCJlbi1cIi5jb25jYXQoZW5nbGlzaExvY2FsZXNbaV0pO1xuICBhbHBoYVtsb2NhbGVdID0gYWxwaGFbJ2VuLVVTJ107XG4gIGFscGhhbnVtZXJpY1tsb2NhbGVdID0gYWxwaGFudW1lcmljWydlbi1VUyddO1xuICBkZWNpbWFsW2xvY2FsZV0gPSBkZWNpbWFsWydlbi1VUyddO1xufVxuXG4vLyBTb3VyY2U6IGh0dHA6Ly93d3cubG9jYWxlcGxhbmV0LmNvbS9qYXZhL1xudmFyIGFyYWJpY0xvY2FsZXMgPSBleHBvcnRzLmFyYWJpY0xvY2FsZXMgPSBbJ0FFJywgJ0JIJywgJ0RaJywgJ0VHJywgJ0lRJywgJ0pPJywgJ0tXJywgJ0xCJywgJ0xZJywgJ01BJywgJ1FNJywgJ1FBJywgJ1NBJywgJ1NEJywgJ1NZJywgJ1ROJywgJ1lFJ107XG5mb3IgKHZhciBfbG9jYWxlLCBfaSA9IDA7IF9pIDwgYXJhYmljTG9jYWxlcy5sZW5ndGg7IF9pKyspIHtcbiAgX2xvY2FsZSA9IFwiYXItXCIuY29uY2F0KGFyYWJpY0xvY2FsZXNbX2ldKTtcbiAgYWxwaGFbX2xvY2FsZV0gPSBhbHBoYS5hcjtcbiAgYWxwaGFudW1lcmljW19sb2NhbGVdID0gYWxwaGFudW1lcmljLmFyO1xuICBkZWNpbWFsW19sb2NhbGVdID0gZGVjaW1hbC5hcjtcbn1cbnZhciBmYXJzaUxvY2FsZXMgPSBleHBvcnRzLmZhcnNpTG9jYWxlcyA9IFsnSVInLCAnQUYnXTtcbmZvciAodmFyIF9sb2NhbGUyLCBfaTIgPSAwOyBfaTIgPCBmYXJzaUxvY2FsZXMubGVuZ3RoOyBfaTIrKykge1xuICBfbG9jYWxlMiA9IFwiZmEtXCIuY29uY2F0KGZhcnNpTG9jYWxlc1tfaTJdKTtcbiAgYWxwaGFudW1lcmljW19sb2NhbGUyXSA9IGFscGhhbnVtZXJpYy5mYTtcbiAgZGVjaW1hbFtfbG9jYWxlMl0gPSBkZWNpbWFsLmFyO1xufVxudmFyIGJlbmdhbGlMb2NhbGVzID0gZXhwb3J0cy5iZW5nYWxpTG9jYWxlcyA9IFsnQkQnLCAnSU4nXTtcbmZvciAodmFyIF9sb2NhbGUzLCBfaTMgPSAwOyBfaTMgPCBiZW5nYWxpTG9jYWxlcy5sZW5ndGg7IF9pMysrKSB7XG4gIF9sb2NhbGUzID0gXCJibi1cIi5jb25jYXQoYmVuZ2FsaUxvY2FsZXNbX2kzXSk7XG4gIGFscGhhW19sb2NhbGUzXSA9IGFscGhhLmJuO1xuICBhbHBoYW51bWVyaWNbX2xvY2FsZTNdID0gYWxwaGFudW1lcmljLmJuO1xuICBkZWNpbWFsW19sb2NhbGUzXSA9IGRlY2ltYWxbJ2VuLVVTJ107XG59XG5cbi8vIFNvdXJjZTogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGVjaW1hbF9tYXJrXG52YXIgZG90RGVjaW1hbCA9IGV4cG9ydHMuZG90RGVjaW1hbCA9IFsnYXItRUcnLCAnYXItTEInLCAnYXItTFknXTtcbnZhciBjb21tYURlY2ltYWwgPSBleHBvcnRzLmNvbW1hRGVjaW1hbCA9IFsnYmctQkcnLCAnY3MtQ1onLCAnZGEtREsnLCAnZGUtREUnLCAnZWwtR1InLCAnZW4tWk0nLCAnZW8nLCAnZXMtRVMnLCAnZnItQ0EnLCAnZnItRlInLCAnaWQtSUQnLCAnaXQtSVQnLCAna3UtSVEnLCAnaGktSU4nLCAnaHUtSFUnLCAnbmItTk8nLCAnbm4tTk8nLCAnbmwtTkwnLCAncGwtUEwnLCAncHQtUFQnLCAncnUtUlUnLCAna2stS1onLCAnc2ktTEsnLCAnc2wtU0knLCAnc3ItUlNAbGF0aW4nLCAnc3ItUlMnLCAnc3YtU0UnLCAndHItVFInLCAndWstVUEnLCAndmktVk4nXTtcbmZvciAodmFyIF9pNCA9IDA7IF9pNCA8IGRvdERlY2ltYWwubGVuZ3RoOyBfaTQrKykge1xuICBkZWNpbWFsW2RvdERlY2ltYWxbX2k0XV0gPSBkZWNpbWFsWydlbi1VUyddO1xufVxuZm9yICh2YXIgX2k1ID0gMDsgX2k1IDwgY29tbWFEZWNpbWFsLmxlbmd0aDsgX2k1KyspIHtcbiAgZGVjaW1hbFtjb21tYURlY2ltYWxbX2k1XV0gPSAnLCc7XG59XG5hbHBoYVsnZnItQ0EnXSA9IGFscGhhWydmci1GUiddO1xuYWxwaGFudW1lcmljWydmci1DQSddID0gYWxwaGFudW1lcmljWydmci1GUiddO1xuYWxwaGFbJ3B0LUJSJ10gPSBhbHBoYVsncHQtUFQnXTtcbmFscGhhbnVtZXJpY1sncHQtQlInXSA9IGFscGhhbnVtZXJpY1sncHQtUFQnXTtcbmRlY2ltYWxbJ3B0LUJSJ10gPSBkZWNpbWFsWydwdC1QVCddO1xuXG4vLyBzZWUgIzg2MlxuYWxwaGFbJ3BsLVBsJ10gPSBhbHBoYVsncGwtUEwnXTtcbmFscGhhbnVtZXJpY1sncGwtUGwnXSA9IGFscGhhbnVtZXJpY1sncGwtUEwnXTtcbmRlY2ltYWxbJ3BsLVBsJ10gPSBkZWNpbWFsWydwbC1QTCddO1xuXG4vLyBzZWUgIzE0NTVcbmFscGhhWydmYS1BRiddID0gYWxwaGEuZmE7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc0Zsb2F0O1xuZXhwb3J0cy5sb2NhbGVzID0gdm9pZCAwO1xudmFyIF9hc3NlcnRTdHJpbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWwvYXNzZXJ0U3RyaW5nXCIpKTtcbnZhciBfYWxwaGEgPSByZXF1aXJlKFwiLi9hbHBoYVwiKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybi
15BvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5mdW5jdGlvbiBpc0Zsb2F0KHN0ciwgb3B0aW9ucykge1xuICAoMCwgX2Fzc2VydFN0cmluZy5kZWZhdWx0KShzdHIpO1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgdmFyIGZsb2F0ID0gbmV3IFJlZ0V4cChcIl4oPzpbLStdKT8oPzpbMC05XSspPyg/OlxcXFxcIi5jb25jYXQob3B0aW9ucy5sb2NhbGUgPyBfYWxwaGEuZGVjaW1hbFtvcHRpb25zLmxvY2FsZV0gOiAnLicsIFwiWzAtOV0qKT8oPzpbZUVdW1xcXFwrXFxcXC1dPyg/OlswLTldKykpPyRcIikpO1xuICBpZiAoc3RyID09PSAnJyB8fCBzdHIgPT09ICcuJyB8fCBzdHIgPT09ICcsJyB8fCBzdHIgPT09ICctJyB8fCBzdHIgPT09ICcrJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgdmFsdWUgPSBwYXJzZUZsb2F0KHN0ci5yZXBsYWNlKCcsJywgJy4nKSk7XG4gIHJldHVybiBmbG9hdC50ZXN0KHN0cikgJiYgKCFvcHRpb25zLmhhc093blByb3BlcnR5KCdtaW4nKSB8fCB2YWx1ZSA+PSBvcHRpb25zLm1pbikgJiYgKCFvcHRpb25zLmhhc093blByb3BlcnR5KCdtYXgnKSB8fCB2YWx1ZSA8PSBvcHRpb25zLm1heCkgJiYgKCFvcHRpb25zLmhhc093blByb3BlcnR5KCdsdCcpIHx8IHZhbHVlIDwgb3B0aW9ucy5sdCkgJiYgKCFvcHRpb25zLmhhc093blByb3BlcnR5KCdndCcpIHx8IHZhbHVlID4gb3B0aW9ucy5ndCk7XG59XG52YXIgbG9jYWxlcyA9IGV4cG9ydHMubG9jYWxlcyA9IE9iamVjdC5rZXlzKF9hbHBoYS5kZWNpbWFsKTsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHRvRmxvYXQ7XG52YXIgX2lzRmxvYXQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2lzRmxvYXRcIikpO1xuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cbmZ1bmN0aW9uIHRvRmxvYXQoc3RyKSB7XG4gIGlmICghKDAsIF9pc0Zsb2F0LmRlZmF1bHQpKHN0cikpIHJldHVybiBOYU47XG4gIHJldHVybiBwYXJzZUZsb2F0KHN0cik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBleHBvcnRzLmRlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB0b0ludDtcbnZhciBfYXNzZXJ0U3RyaW5nID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlsL2Fzc2VydFN0cmluZ1wiKSk7XG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuZnVuY3Rpb24gdG9JbnQoc3RyLCByYWRpeCkge1xuICAoMCwgX2Fzc2VydFN0cmluZy5kZWZh
15dWx0KShzdHIpO1xuICByZXR1cm4gcGFyc2VJbnQoc3RyLCByYWRpeCB8fCAxMCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBleHBvcnRzLmRlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB0b0Jvb2xlYW47XG52YXIgX2Fzc2VydFN0cmluZyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vdXRpbC9hc3NlcnRTdHJpbmdcIikpO1xuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cbmZ1bmN0aW9uIHRvQm9vbGVhbihzdHIsIHN0cmljdCkge1xuICAoMCwgX2Fzc2VydFN0cmluZy5kZWZhdWx0KShzdHIpO1xuICBpZiAoc3RyaWN0KSB7XG4gICAgcmV0dXJuIHN0ciA9PT0gJzEnIHx8IC9edHJ1ZSQvaS50ZXN0KHN0cik7XG4gIH1cbiAgcmV0dXJuIHN0ciAhPT0gJzAnICYmICEvXmZhbHNlJC9pLnRlc3Qoc3RyKSAmJiBzdHIgIT09ICcnO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG5tb2R1bGUuZXhwb3J0cy5kZWZhdWx0ID0gZXhwb3J0cy5kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZh
15dWx0ID0gZXF1YWxzO1xudmFyIF9hc3NlcnRTdHJpbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWwvYXNzZXJ0U3RyaW5nXCIpKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5mdW5jdGlvbiBlcXVhbHMoc3RyLCBjb21wYXJpc29uKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nLmRlZmF1bHQpKHN0cik7XG4gIHJldHVybiBzdHIgPT09IGNvbXBhcmlzb247XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBleHBvcnRzLmRlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB0b1N0cmluZztcbmZ1bmN0aW9uIF90eXBlb2YobykgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IHJldHVybiBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9IDogZnVuY3Rpb24gKG8pIHsgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87IH0sIF90eXBlb2Yobyk7IH1cbmZ1bmN0aW9uIHRvU3RyaW5nKGlucHV0KSB7XG4gIGlmIChfdHlwZW9mKGlucHV0KSA9PT0gJ29iamVjdCcgJiYgaW5wdXQgIT09IG51bGwpIHtcbiAgICBpZiAodHlwZW9mIGlucHV0LnRvU3RyaW5nID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBpbnB1dCA9IGlucHV0LnRvU3RyaW5nKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlucHV0ID0gJ1tvYmplY3QgT2JqZWN0XSc7XG4gICAgfVxuICB9IGVsc2UgaWYgKGlucHV0ID09PSBudWxsIHx8IHR5cGVvZiBpbnB1dCA9PT0gJ3VuZGVmaW5lZCcgfHwgaXNOYU4oaW5wdXQpICYmICFpbnB1dC5sZW5ndGgpIHtcbiAgICBpbnB1dCA9ICcnO1xuICB9XG4gIHJldHVybiBTdHJpbmcoaW5wdXQpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG5tb2R1bGUuZXhwb3J0cy5kZWZh
15dWx0ID0gZXhwb3J0cy5kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gbWVyZ2U7XG5mdW5jdGlvbiBtZXJnZSgpIHtcbiAgdmFyIG9iaiA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDoge307XG4gIHZhciBkZWZhdWx0cyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkO1xuICBmb3IgKHZhciBrZXkgaW4gZGVmYXVsdHMpIHtcbiAgICBpZiAodHlwZW9mIG9ialtrZXldID09PSAndW5kZWZpbmVkJykge1xuICAgICAgb2JqW2tleV0gPSBkZWZhdWx0c1trZXldO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb2JqO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG5tb2R1bGUuZXhwb3J0cy5kZWZhdWx0ID0gZXhwb3J0cy5kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gY29udGFpbnM7XG52YXIgX2Fzc2VydFN0cmluZyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vdXRpbC9hc3NlcnRTdHJpbmdcIikpO1xudmFyIF90b1N0cmluZyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vdXRpbC90b1N0cmluZ1wiKSk7XG52YXIgX21lcmdlID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlsL21lcmdlXCIpKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG52YXIgZGVmYXVsQ29udGFpbnNPcHRpb25zID0ge1xuICBpZ25vcmVDYXNlOiBmYWxzZSxcbiAgbWluT2NjdXJyZW5jZXM6IDFcbn07XG5mdW5jdGlvbiBjb250YWlucyhzdHIsIGVsZW0sIG9wdGlvbnMpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcuZGVmYXVsdCkoc3RyKTtcbiAgb3B0aW9ucyA9ICgwLCBfbWVyZ2UuZGVmYXVsdCkob3B0aW9ucywgZGVmYXVsQ29udGFpbnNPcHRpb25zKTtcbiAgaWYgKG9wdGlvbnMuaWdub3JlQ2FzZSkge1xuICAgIHJldHVybiBzdHIudG9Mb3dlckNhc2UoKS5zcGxpdCgoMCwgX3RvU3RyaW5nLmRlZmF1bHQpKGVsZW0pLnRvTG93ZXJDYXNlKCkpLmxlbmd0aCA+IG9wdGlvbnMubWluT2NjdXJyZW5jZXM7XG4gIH1cbiAgcmV0dXJuIHN0ci5zcGxpdCgoMCwgX3RvU3RyaW5nLmRlZmF1bHQpKGVsZW0pKS5sZW5ndGggPiBvcHRpb25zLm1pbk9jY3VycmVuY2VzO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG5tb2R1bGUuZXhwb3J0cy5kZWZh
15dWx0ID0gZXhwb3J0cy5kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gbWF0Y2hlcztcbnZhciBfYXNzZXJ0U3RyaW5nID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlsL2Fzc2VydFN0cmluZ1wiKSk7XG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuZnVuY3Rpb24gbWF0Y2hlcyhzdHIsIHBhdHRlcm4sIG1vZGlmaWVycykge1xuICAoMCwgX2Fzc2VydFN0cmluZy5kZWZhdWx0KShzdHIpO1xuICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHBhdHRlcm4pICE9PSAnW29iamVjdCBSZWdFeHBdJykge1xuICAgIHBhdHRlcm4gPSBuZXcgUmVnRXhwKHBhdHRlcm4sIG1vZGlmaWVycyk7XG4gIH1cbiAgcmV0dXJuICEhc3RyLm1hdGNoKHBhdHRlcm4pO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG5tb2R1bGUuZXhwb3J0cy5kZWZhdWx0ID0gZXhwb3J0cy5kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNCeXRlTGVuZ3RoO1xudmFyIF9hc3NlcnRTdHJpbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWwvYXNzZXJ0U3RyaW5nXCIpKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5mdW5jdGlvbiBfdHlwZW9mKG8pIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7IHJldHVybiB0eXBlb2YgbzsgfSA6IGZ1bmN0aW9uIChvKSB7IHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvOyB9LCBfdHlwZW9mKG8pOyB9XG4vKiBlc2xpbnQtZGlzYWJsZSBwcmVmZXItcmVzdC1wYXJhbXMgKi9cbmZ1bmN0aW9uIGlzQnl0ZUxlbmd0aChzdHIsIG9wdGlvbnMpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcuZGVmYXVsdCkoc3RyKTtcbiAgdmFyIG1pbjtcbiAgdmFyIG1heDtcbiAgaWYgKF90eXBlb2Yob3B0aW9ucykgPT09ICdvYmplY3QnKSB7XG4gICAgbWluID0gb3B0aW9ucy5taW4gfHwgMDtcbiAgICBtYXggPSBvcHRpb25zLm1heDtcbiAgfSBlbHNlIHtcbiAgICAvLyBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eTogaXNCeXRlTGVuZ3RoKHN0ciwgbWluIFssIG1heF0pXG4gICAgbWluID0gYXJndW1lbnRzWzFdO1xuICAgIG1heCA9IGFyZ3VtZW50c1syXTtcbiAgfVxuICB2YXIgbGVuID0gZW5jb2RlVVJJKHN0cikuc3BsaXQoLyUuLnwuLykubGVuZ3RoIC0gMTtcbiAgcmV0dXJuIGxlbiA+PSBtaW4gJiYgKHR5cGVvZiBtYXggPT09ICd1bmRlZmluZWQnIHx8IGxlbiA8PSBtYXgpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG5tb2R1bGUuZXhwb3J0cy5kZWZh
15dWx0ID0gZXhwb3J0cy5kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNGUUROO1xudmFyIF9hc3NlcnRTdHJpbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWwvYXNzZXJ0U3RyaW5nXCIpKTtcbnZhciBfbWVyZ2UgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWwvbWVyZ2VcIikpO1xuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cbnZhciBkZWZhdWx0X2ZxZG5fb3B0aW9ucyA9IHtcbiAgcmVxdWlyZV90bGQ6IHRydWUsXG4gIGFsbG93X3VuZGVyc2NvcmVzOiBmYWxzZSxcbiAgYWxsb3dfdHJhaWxpbmdfZG90OiBmYWxzZSxcbiAgYWxsb3dfbnVtZXJpY190bGQ6IGZhbHNlLFxuICBhbGxvd193aWxkY2FyZDogZmFsc2UsXG4gIGlnbm9yZV9tYXhfbGVuZ3RoOiBmYWxzZVxufTtcbmZ1bmN0aW9uIGlzRlFETihzdHIsIG9wdGlvbnMpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcuZGVmYXVsdCkoc3RyKTtcbiAgb3B0aW9ucyA9ICgwLCBfbWVyZ2UuZGVmYXVsdCkob3B0aW9ucywgZGVmYXVsdF9mcWRuX29wdGlvbnMpO1xuXG4gIC8qIFJlbW92ZSB0aGUgb3B0aW9uYWwgdHJhaWxpbmcgZG90IGJlZm9yZSBjaGVja2luZyB2YWxpZGl0eSAqL1xuICBpZiAob3B0aW9ucy5hbGxvd190cmFpbGluZ19kb3QgJiYgc3RyW3N0ci5sZW5ndGggLSAxXSA9PT0gJy4nKSB7XG4gICAgc3RyID0gc3RyLnN1YnN0cmluZygwLCBzdHIubGVuZ3RoIC0gMSk7XG4gIH1cblxuICAvKiBSZW1vdmUgdGhlIG9wdGlvbmFsIHdpbGRjYXJkIGJlZm9yZSBjaGVja2luZyB2YWxpZGl0eSAqL1xuICBpZiAob3B0aW9ucy5hbGxvd193aWxkY2FyZCA9PT0gdHJ1ZSAmJiBzdHIuaW5kZXhPZignKi4nKSA9PT0gMCkge1xuICAgIHN0ciA9IHN0ci5zdWJzdHJpbmcoMik7XG4gIH1cbiAgdmFyIHBhcnRzID0gc3RyLnNwbGl0KCcuJyk7XG4gIHZhciB0bGQgPSBwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXTtcbiAgaWYgKG9wdGlvbnMucmVxdWlyZV90bGQpIHtcbiAgICAvLyBkaXNhbGxvdyBmcWRucyB3aXRob3V0IHRsZFxuICAgIGlmIChwYXJ0cy5sZW5ndGggPCAyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICghb3B0aW9ucy5hbGxvd19udW1lcmljX3RsZCAmJiAhL14oW2EtelxcdTAwQTEtXFx1MDBBOFxcdTAwQUEtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZFRl17Mix9fHhuW2EtejAtOS1dezIsfSkkL2kudGVzdCh0bGQpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gZGlzYWxsb3cgc3BhY2VzXG4gICAgaWYgKC9cXHMvLnRlc3QodGxkKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8vIHJlamVjdCBudW1lcmljIFRMRHNcbiAgaWYgKCFvcHRpb25zLmFsbG93X251bWVyaWNfdGxkICYmIC9eXFxkKyQvLnRlc3QodGxkKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gcGFydHMuZXZlcnkoZnVuY3Rpb24gKHBhcnQpIHtcbiAgICBpZiAocGFydC5sZW5ndGggPiA2MyAmJiAhb3B0aW9ucy5pZ25vcmVfbWF4X2xlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIS9eW2Etel9cXHUwMGExLVxcdWZmZmYwLTktXSskL2kudGVzdChwYXJ0KSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIGRpc2FsbG93IGZ1bGwtd2lkdGggY2hhcnNcbiAgICBpZiAoL1tcXHVmZjAxLVxcdWZmNWVdLy50ZXN0KHBhcnQpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gZGlzYWxsb3cgcGFydHMgc3RhcnRpbmcgb3IgZW5kaW5nIHdpdGggaHlwaGVuXG4gICAgaWYgKC9eLXwtJC8udGVzdChwYXJ0KSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIW9wdGlvbnMuYWxsb3dfdW5kZXJzY29yZXMgJiYgL18vLnRlc3QocGFydCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG5tb2R1bGUuZXhwb3J0cy5kZWZh
15dWx0ID0gZXhwb3J0cy5kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNJUDtcbnZhciBfYXNzZXJ0U3RyaW5nID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlsL2Fzc2VydFN0cmluZ1wiKSk7XG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuLyoqXG4xMS4zLiAgRXhhbXBsZXNcblxuICAgVGhlIGZvbGxvd2luZyBhZGRyZXNzZXNcblxuICAgICAgICAgICAgIGZlODA6OjEyMzQgKG9uIHRoZSAxc3QgbGluayBvZiB0aGUgbm9kZSlcbiAgICAgICAgICAgICBmZjAyOjo1Njc4IChvbiB0aGUgNXRoIGxpbmsgb2YgdGhlIG5vZGUpXG4gICAgICAgICAgICAgZmYwODo6OWFiYyAob24gdGhlIDEwdGggb3JnYW5pemF0aW9uIG9mIHRoZSBub2RlKVxuXG4gICB3b3VsZCBiZSByZXByZXNlbnRlZCBhcyBmb2xsb3dzOlxuXG4gICAgICAgICAgICAgZmU4MDo6MTIzNCUxXG4gICAgICAgICAgICAgZmYwMjo6NTY3OCU1XG4gICAgICAgICAgICAgZmYwODo6OWFiYyUxMFxuXG4gICAoSGVyZSB3ZSBhc3N1bWUgYSBuYXR1cmFsIHRyYW5zbGF0aW9uIGZyb20gYSB6b25lIGluZGV4IHRvIHRoZVxuICAgPHpvbmVfaWQ+IHBhcnQsIHdoZXJlIHRoZSBOdGggem9uZSBvZiBhbnkgc2NvcGUgaXMgdHJhbnNsYXRlZCBpbnRvXG4gICBcIk5cIi4pXG5cbiAgIElmIHdlIHVzZSBpbnRlcmZhY2UgbmFtZXMgYXMgPHpvbmVfaWQ+LCB0aG9zZSBhZGRyZXNzZXMgY291bGQgYWxzbyBiZVxuICAgcmVwcmVzZW50ZWQgYXMgZm9sbG93czpcblxuICAgICAgICAgICAgZmU4MDo6MTIzNCVuZTBcbiAgICAgICAgICAgIGZmMDI6OjU2NzglcHZjMS4zXG4gICAgICAgICAgICBmZjA4Ojo5YWJjJWludGVyZmFjZTEwXG5cbiAgIHdoZXJlIHRoZSBpbnRlcmZhY2UgXCJuZTBcIiBiZWxvbmdzIHRvIHRoZSAxc3QgbGluaywgXCJwdmMxLjNcIiBiZWxvbmdzXG4gICB0byB0aGUgNXRoIGxpbmssIGFuZCBcImludGVyZmFjZTEwXCIgYmVsb25ncyB0byB0aGUgMTB0aCBvcmdhbml6YXRpb24uXG4gKiAqICovXG52YXIgSVB2NFNlZ21lbnRGb3JtYXQgPSAnKD86WzAtOV18WzEtOV1bMC05XXwxWzAtOV1bMC05XXwyWzAtNF1bMC05XXwyNVswLTVdKSc7XG52YXIgSVB2NEFkZHJlc3NGb3JtYXQgPSBcIihcIi5jb25jYXQoSVB2NFNlZ21lbnRGb3JtYXQsIFwiWy5dKXszfVwiKS5jb25jYXQoSVB2NFNlZ21lbnRGb3JtYXQpO1xudmFyIElQdjRBZGRyZXNzUmVnRXhwID0gbmV3IFJlZ0V4cChcIl5cIi5jb25jYXQoSVB2NEFkZHJlc3NGb3JtYXQsIFwiJFwiKSk7XG52YXIgSVB2NlNlZ21lbnRGb3JtYXQgPSAnKD86WzAtOWEtZkEtRl17MSw0fSknO1xudmFyIElQdjZBZGRyZXNzUmVnRXhwID0gbmV3IFJlZ0V4cCgnXignICsgXCIoPzpcIi5jb25jYXQoSVB2NlNlZ21lbnRGb3JtYXQsIFwiOil7N30oPzpcIikuY29uY2F0KElQdjZTZWdtZW50Rm9ybWF0LCBcInw6KXxcIikgKyBcIig/OlwiLmNvbmNhdChJUHY2U2VnbWVudEZvcm1hdCwgXCI6KXs2fSg/OlwiKS5jb25jYXQoSVB2NEFkZHJlc3NGb3JtYXQsIFwifDpcIikuY29uY2F0KElQdjZTZWdtZW50Rm9ybWF0LCBcInw6KXxcIikgKyBcIig/OlwiLmNvbmNhdChJUHY2U2VnbWVudEZvcm1hdCwgXCI6KXs1fSg/OjpcIikuY29uY2F0KElQdjRBZGRyZXNzRm9ybWF0LCBcInwoOlwiKS5jb25jYXQoSVB2NlNlZ21lbnRGb3JtYXQsIFwiKXsxLDJ9fDopfFwiKSArIFwiKD86XCIuY29uY2F0KElQdjZTZWdtZW50Rm9ybWF0LCBcIjopezR9KD86KDpcIikuY29uY2F0KElQdjZTZWdtZW50Rm9ybWF0LCBcIil7MCwxfTpcIikuY29uY2F0KElQdjRBZGRyZXNzRm9ybWF0LCBcInwoOlwiKS5jb25jYXQoSVB2NlNlZ21lbnRGb3JtYXQsIFwiKXsxLDN9fDopfFwiKSArIFwiKD86XCIuY29uY2F0KElQdjZTZWdtZW50Rm9ybWF0LCBcIjopezN9KD86KDpcIikuY29uY2F0KElQdjZTZWdtZW50Rm9ybWF0LCBcIil7MCwyfTpcIikuY29uY2F0KElQdjRBZGRyZXNzRm9ybWF0LCBcInwoOlwiKS5jb25jYXQoSVB2NlNlZ21lbnRGb3JtYXQsIFwiKXsxLDR9fDopfFwiKSArIFwiKD86XCIuY29uY2F0KElQdjZTZWdtZW50Rm9ybWF0LCBcIjopezJ9KD86KDpcIikuY29uY2F0KElQdjZTZWdtZW50Rm9ybWF0LCBcIil7MCwzfTpcIikuY29uY2F0KElQdjRBZGRyZXNzRm9ybWF0LCBcInwoOlwiKS5jb25jYXQoSVB2NlNlZ21lbnRGb3JtYXQsIFwiKXsxLDV9fDopfFwiKSArIFwiKD86XCIuY29uY2F0KElQdjZTZWdtZW50Rm9ybWF0LCBcIjopezF9KD86KDpcIikuY29uY2F0KElQdjZTZWdtZW50Rm9ybWF0LCBcIil7MCw0fTpcIikuY29uY2F0KElQdjRBZGRyZXNzRm9ybWF0LCBcInwoOlwiKS5jb25jYXQoSVB2NlNlZ21lbnRGb3JtYXQsIFwiKXsxLDZ9fDopfFwiKSArIFwiKD86OigoPzo6XCIuY29uY2F0KElQdjZTZWdtZW50Rm9ybWF0LCBcIil7MCw1fTpcIikuY29uY2F0KElQdjRBZGRyZXNzRm9ybWF0LCBcInwoPzo6XCIpLmNvbmNhdChJUHY2U2VnbWVudEZvcm1hdCwgXCIpezEsN318OikpXCIpICsgJykoJVswLTlhLXpBLVotLjpdezEsfSk/JCcpO1xuZnVuY3Rpb24gaXNJUChzdHIpIHtcbiAgdmFyIHZlcnNpb24gPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6ICcnO1xuICAoMCwgX2Fzc2VydFN0cmluZy5kZWZh
15dWx0KShzdHIpO1xuICB2ZXJzaW9uID0gU3RyaW5nKHZlcnNpb24pO1xuICBpZiAoIXZlcnNpb24pIHtcbiAgICByZXR1cm4gaXNJUChzdHIsIDQpIHx8IGlzSVAoc3RyLCA2KTtcbiAgfVxuICBpZiAodmVyc2lvbiA9PT0gJzQnKSB7XG4gICAgcmV0dXJuIElQdjRBZGRyZXNzUmVnRXhwLnRlc3Qoc3RyKTtcbiAgfVxuICBpZiAodmVyc2lvbiA9PT0gJzYnKSB7XG4gICAgcmV0dXJuIElQdjZBZGRyZXNzUmVnRXhwLnRlc3Qoc3RyKTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBleHBvcnRzLmRlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc0VtYWlsO1xudmFyIF9hc3NlcnRTdHJpbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWwvYXNzZXJ0U3RyaW5nXCIpKTtcbnZhciBfaXNCeXRlTGVuZ3RoID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9pc0J5dGVMZW5ndGhcIikpO1xudmFyIF9pc0ZRRE4gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2lzRlFETlwiKSk7XG52YXIgX2lzSVAgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2lzSVBcIikpO1xudmFyIF9tZXJnZSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vdXRpbC9tZXJnZVwiKSk7XG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxudmFyIGRlZmF1bHRfZW1haWxfb3B0aW9ucyA9IHtcbiAgYWxsb3dfZGlzcGxheV9uYW1lOiBmYWxzZSxcbiAgYWxsb3dfdW5kZXJzY29yZXM6IGZhbHNlLFxuICByZXF1aXJlX2Rpc3BsYXlfbmFtZTogZmFsc2UsXG4gIGFsbG93X3V0ZjhfbG9jYWxfcGFydDogdHJ1ZSxcbiAgcmVxdWlyZV90bGQ6IHRydWUsXG4gIGJsYWNrbGlzdGVkX2NoYXJzOiAnJyxcbiAgaWdub3JlX21heF9sZW5ndGg6IGZhbHNlLFxuICBob3N0X2JsYWNrbGlzdDogW10sXG4gIGhvc3Rfd2hpdGVsaXN0OiBbXVxufTtcblxuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tY29udHJvbC1yZWdleCAqL1xudmFyIHNwbGl0TmFtZUFkZHJlc3MgPSAvXihbXlxceDAwLVxceDFGXFx4N0YtXFx4OUZcXGNYXSspPC9pO1xudmFyIGVtYWlsVXNlclBhcnQgPSAvXlthLXpcXGQhI1xcJCUmJ1xcKlxcK1xcLVxcLz1cXD9cXF5fYHtcXHx9fl0rJC9pO1xudmFyIGdtYWlsVXNlclBhcnQgPSAvXlthLXpcXGRdKyQvO1xudmFyIHF1b3RlZEVtYWlsVXNlciA9IC9eKFtcXHNcXHgwMS1cXHgwOFxceDBiXFx4MGNcXHgwZS1cXHgxZlxceDdmXFx4MjFcXHgyMy1cXHg1YlxceDVkLVxceDdlXXwoXFxcXFtcXHgwMS1cXHgwOVxceDBiXFx4MGNcXHgwZC1cXHg3Zl0pKSokL2k7XG52YXIgZW1haWxVc2VyVXRmOFBhcnQgPSAvXlthLXpcXGQhI1xcJCUmJ1xcKlxcK1xcLVxcLz1cXD9cXF5fYHtcXHx9flxcdTAwQTEtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZFRl0rJC9pO1xudmFyIHF1b3RlZEVtYWlsVXNlclV0ZjggPSAvXihbXFxzXFx4MDEtXFx4MDhcXHgwYlxceDBjXFx4MGUtXFx4MWZcXHg3ZlxceDIxXFx4MjMtXFx4NWJcXHg1ZC1cXHg3ZVxcdTAwQTAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZFRl18KFxcXFxbXFx4MDEtXFx4MDlcXHgwYlxceDBjXFx4MGQtXFx4N2ZcXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdKSkqJC9pO1xudmFyIGRlZmF1bHRNYXhFbWFpbExlbmd0aCA9IDI1NDtcbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiAqL1xuLyogZXNsaW50LWVuYWJsZSBuby1jb250cm9sLXJlZ2V4ICovXG5cbi8qKlxuICogVmFsaWRhdGUgZGlzcGxheSBuYW1lIGFjY29yZGluZyB0byB0aGUgUkZDMjgyMjogaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzI4MjIjYXBwZW5kaXgtQS4xLjJcbiAqIEBwYXJhbSB7U3RyaW5nfSBkaXNwbGF5X25hbWVcbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVEaXNwbGF5TmFtZShkaXNwbGF5X25hbWUpIHtcbiAgdmFyIGRpc3BsYXlfbmFtZV93aXRob3V0X3F1b3RlcyA9IGRpc3BsYXlfbmFtZS5yZXBsYWNlKC9eXCIoLispXCIkLywgJyQxJyk7XG4gIC8vIGRpc3BsYXkgbmFtZSB3aXRoIG9ubHkgc3BhY2VzIGlzIG5vdCB2YWxpZFxuICBpZiAoIWRpc3BsYXlfbmFtZV93aXRob3V0X3F1b3Rlcy50cmltKCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBjaGVjayB3aGV0aGVyIGRpc3BsYXkgbmFtZSBjb250YWlucyBpbGxlZ2FsIGNoYXJhY3RlclxuICB2YXIgY29udGFpbnNfaWxsZWdhbCA9IC9bXFwuXCI7PD5dLy50ZXN0KGRpc3BsYXlfbmFtZV93aXRob3V0X3F1b3Rlcyk7XG4gIGlmIChjb250YWluc19pbGxlZ2FsKSB7XG4gICAgLy8gaWYgY29udGFpbnMgaWxsZWdhbCBjaGFyYWN0ZXJzLFxuICAgIC8vIG11c3QgdG8gYmUgZW5jbG9zZWQgaW4gZG91YmxlLXF1b3Rlcywgb3RoZXJ3aXNlIGl0J3Mgbm90IGEgdmFsaWQgZGlzcGxheSBuYW1lXG4gICAgaWYgKGRpc3BsYXlfbmFtZV93aXRob3V0X3F1b3RlcyA9PT0gZGlzcGxheV9uYW1lKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gdGhlIHF1b3RlcyBpbiBkaXNwbGF5IG5hbWUgbXVzdCBzdGFydCB3aXRoIGNoYXJhY3RlciBzeW1ib2wgXFxcbiAgICB2YXIgYWxsX3N0YXJ0X3dpdGhfYmFja19zbGFzaCA9IGRpc3BsYXlfbmFtZV93aXRob3V0X3F1b3Rlcy5zcGxpdCgnXCInKS5sZW5ndGggPT09IGRpc3BsYXlfbmFtZV93aXRob3V0X3F1b3Rlcy5zcGxpdCgnXFxcXFwiJykubGVuZ3RoO1xuICAgIGlmICghYWxsX3N0YXJ0X3dpdGhfYmFja19zbGFzaCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cbmZ1bmN0aW9uIGlzRW1haWwoc3RyLCBvcHRpb25zKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nLmRlZmF1bHQpKHN0cik7XG4gIG9wdGlvbnMgPSAoMCwgX21lcmdlLmRlZmF1bHQpKG9wdGlvbnMsIGRlZmF1bHRfZW1haWxfb3B0aW9ucyk7XG4gIGlmIChvcHRpb25zLnJlcXVpcmVfZGlzcGxheV9uYW1lIHx8IG9wdGlvbnMuYWxsb3dfZGlzcGxheV9uYW1lKSB7XG4gICAgdmFyIGRpc3BsYXlfZW1haWwgPSBzdHIubWF0Y2goc3BsaXROYW1lQWRkcmVzcyk7XG4gICAgaWYgKGRpc3BsYXlfZW1haWwpIHtcbiAgICAgIHZhciBkaXNwbGF5X25hbWUgPSBkaXNwbGF5X2VtYWlsWzFdO1xuXG4gICAgICAvLyBSZW1vdmUgZGlzcGxheSBuYW1lIGFuZCBhbmdsZSBicmFja2V0cyB0byBnZXQgZW1haWwgYWRkcmVzc1xuICAgICAgLy8gQ2FuIGJlIGRvbmUgaW4gdGhlIHJlZ2V4IGJ1dCB3aWxsIGludHJvZHVjZSBhIFJlRE9TIChTZWUgICMxNTk3IGZvciBtb3JlIGluZm8pXG4gICAgICBzdHIgPSBzdHIucmVwbGFjZShkaXNwbGF5X25hbWUsICcnKS5yZXBsYWNlKC8oXjx8PiQpL2csICcnKTtcblxuICAgICAgLy8gc29tZXRpbWVzIG5lZWQgdG8gdHJpbSB0aGUgbGFzdCBzcGFjZSB0byBnZXQgdGhlIGRpc3BsYXkgbmFtZVxuICAgICAgLy8gYmVjYXVzZSB0aGVyZSBtYXkgYmUgYSBzcGFjZSBiZXR3ZWVuIGRpc3BsYXkgbmFtZSBhbmQgZW1haWwgYWRkcmVzc1xuICAgICAgLy8gZWcuIG15bmFtZSA8YWRkcmVzc0BnbWFpbC5jb20+XG4gICAgICAvLyB0aGUgZGlzcGxheSBuYW1lIGlzIGBteW5hbWVgIGluc3RlYWQgb2YgYG15bmFtZSBgLCBzbyBuZWVkIHRvIHRyaW0gdGhlIGxhc3Qgc3BhY2VcbiAgICAgIGlmIChkaXNwbGF5X25hbWUuZW5kc1dpdGgoJyAnKSkge1xuICAgICAgICBkaXNwbGF5X25hbWUgPSBkaXNwbGF5X25hbWUuc2xpY2UoMCwgLTEpO1xuICAgICAgfVxuICAgICAgaWYgKCF2YWxpZGF0ZURpc3BsYXlOYW1lKGRpc3BsYXlfbmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAob3B0aW9ucy5yZXF1aXJlX2Rpc3BsYXlfbmFtZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICBpZiAoIW9wdGlvbnMuaWdub3JlX21heF9sZW5ndGggJiYgc3RyLmxlbmd0aCA+IGRlZmF1bHRNYXhFbWFpbExlbmd0aCkge1xuICAgIHJldHVybi
15BmYWxzZTtcbiAgfVxuICB2YXIgcGFydHMgPSBzdHIuc3BsaXQoJ0AnKTtcbiAgdmFyIGRvbWFpbiA9IHBhcnRzLnBvcCgpO1xuICB2YXIgbG93ZXJfZG9tYWluID0gZG9tYWluLnRvTG93ZXJDYXNlKCk7XG4gIGlmIChvcHRpb25zLmhvc3RfYmxhY2tsaXN0LmluY2x1ZGVzKGxvd2VyX2RvbWFpbikpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKG9wdGlvbnMuaG9zdF93aGl0ZWxpc3QubGVuZ3RoID4gMCAmJiAhb3B0aW9ucy5ob3N0X3doaXRlbGlzdC5pbmNsdWRlcyhsb3dlcl9kb21haW4pKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciB1c2VyID0gcGFydHMuam9pbignQCcpO1xuICBpZiAob3B0aW9ucy5kb21haW5fc3BlY2lmaWNfdmFsaWRhdGlvbiAmJiAobG93ZXJfZG9tYWluID09PSAnZ21haWwuY29tJyB8fCBsb3dlcl9kb21haW4gPT09ICdnb29nbGVtYWlsLmNvbScpKSB7XG4gICAgLypcbiAgICAgIFByZXZpb3VzbHkgd2UgcmVtb3ZlZCBkb3RzIGZvciBnbWFpbCBhZGRyZXNzZXMgYmVmb3JlIHZhbGlkYXRpbmcuXG4gICAgICBUaGlzIHdhcyByZW1vdmVkIGJlY2F1c2UgaXQgYWxsb3dzIGBtdWx0aXBsZS4uZG90c0BnbWFpbC5jb21gXG4gICAgICB0byBiZSByZXBvcnRlZCBhcyB2YWxpZCwgYnV0IGl0IGlzIG5vdC5cbiAgICAgIEdtYWlsIG9ubHkgbm9ybWFsaXplcyBzaW5nbGUgZG90cywgcmVtb3ZpbmcgdGhlbSBmcm9tIGhlcmUgaXMgcG9pbnRsZXNzLFxuICAgICAgc2hvdWxkIGJlIGRvbmUgaW4gbm9ybWFsaXplRW1haWxcbiAgICAqL1xuICAgIHVzZXIgPSB1c2VyLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAvLyBSZW1vdmluZyBzdWItYWRkcmVzcyBmcm9tIHVzZXJuYW1lIGJlZm9yZSBnbWFpbCB2YWxpZGF0aW9uXG4gICAgdmFyIHVzZXJuYW1lID0gdXNlci5zcGxpdCgnKycpWzBdO1xuXG4gICAgLy8gRG90cyBhcmUgbm90IGluY2x1ZGVkIGluIGdtYWlsIGxlbmd0aCByZXN0cmljdGlvblxuICAgIGlmICghKDAsIF9pc0J5dGVMZW5ndGguZGVmYXVsdCkodXNlcm5hbWUucmVwbGFjZSgvXFwuL2csICcnKSwge1xuICAgICAgbWluOiA2LFxuICAgICAgbWF4OiAzMFxuICAgIH0pKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHZhciBfdXNlcl9wYXJ0cyA9IHVzZXJuYW1lLnNwbGl0KCcuJyk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBfdXNlcl9wYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKCFnbWFpbFVzZXJQYXJ0LnRlc3QoX3VzZXJfcGFydHNbaV0pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKG9wdGlvbnMuaWdub3JlX21heF9sZW5ndGggPT09IGZhbHNlICYmICghKDAsIF9pc0J5dGVMZW5ndGguZGVmYXVsdCkodXNlciwge1xuICAgIG1heDogNjRcbiAgfSkgfHwgISgwLCBfaXNCeXRlTGVuZ3RoLmRlZmF1bHQpKGRvbWFpbiwge1xuICAgIG1heDogMjU0XG4gIH0pKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoISgwLCBfaXNGUUROLmRlZmF1bHQpKGRvbWFpbiwge1xuICAgIHJlcXVpcmVfdGxkOiBvcHRpb25zLnJlcXVpcmVfdGxkLFxuICAgIGlnbm9yZV9tYXhfbGVuZ3RoOiBvcHRpb25zLmlnbm9yZV9tYXhfbGVuZ3RoLFxuICAgIGFsbG93X3VuZGVyc2NvcmVzOiBvcHRpb25zLmFsbG93X3VuZGVyc2NvcmVzXG4gIH0pKSB7XG4gICAgaWYgKCFvcHRpb25zLmFsbG93X2lwX2RvbWFpbikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoISgwLCBfaXNJUC5kZWZhdWx0KShkb21haW4pKSB7XG4gICAgICBpZiAoIWRvbWFpbi5zdGFydHNXaXRoKCdbJykgfHwgIWRvbWFpbi5lbmRzV2l0aCgnXScpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHZhciBub0JyYWNrZXRkb21haW4gPSBkb21haW4uc2xpY2UoMSwgLTEpO1xuICAgICAgaWYgKG5vQnJhY2tldGRvbWFpbi5sZW5ndGggPT09IDAgfHwgISgwLCBfaXNJUC5kZWZhdWx0KShub0JyYWNrZXRkb21haW4pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKHVzZXJbMF0gPT09ICdcIicpIHtcbiAgICB1c2VyID0gdXNlci5zbGljZSgxLCB1c2VyLmxlbmd0aCAtIDEpO1xuICAgIHJldHVybiBvcHRpb25zLmFsbG93X3V0ZjhfbG9jYWxfcGFydCA/IHF1b3RlZEVtYWlsVXNlclV0ZjgudGVzdCh1c2VyKSA6IHF1b3RlZEVtYWlsVXNlci50ZXN0KHVzZXIpO1xuICB9XG4gIHZhciBwYXR0ZXJuID0gb3B0aW9ucy5hbGxvd191dGY4X2xvY2FsX3BhcnQgPyBlbWFpbFVzZXJVdGY4UGFydCA6IGVtYWlsVXNlclBhcnQ7XG4gIHZhciB1c2VyX3BhcnRzID0gdXNlci5zcGxpdCgnLicpO1xuICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgdXNlcl9wYXJ0cy5sZW5ndGg7IF9pKyspIHtcbiAgICBpZiAoIXBhdHRlcm4udGVzdCh1c2VyX3BhcnRzW19pXSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgaWYgKG9wdGlvbnMuYmxhY2tsaXN0ZWRfY2hhcnMpIHtcbiAgICBpZiAodXNlci5zZWFyY2gobmV3IFJlZ0V4cChcIltcIi5jb25jYXQob3B0aW9ucy5ibGFja2xpc3RlZF9jaGFycywgXCJdK1wiKSwgJ2cnKSkgIT09IC0xKSByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBleHBvcnRzLmRlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc1VSTDtcbnZhciBfYXNzZXJ0U3RyaW5nID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlsL2Fzc2VydFN0cmluZ1wiKSk7XG52YXIgX2lzRlFETiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vaXNGUUROXCIpKTtcbnZhciBfaXNJUCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vaXNJUFwiKSk7XG52YXIgX21lcmdlID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlsL21lcmdlXCIpKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybi
15BvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5mdW5jdGlvbiBfc2xpY2VkVG9BcnJheShhcnIsIGkpIHsgcmV0dXJuIF9hcnJheVdpdGhIb2xlcyhhcnIpIHx8IF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHx8IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShhcnIsIGkpIHx8IF9ub25JdGVyYWJsZVJlc3QoKTsgfVxuZnVuY3Rpb24gX25vbkl0ZXJhYmxlUmVzdCgpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTsgfVxuZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KG8sIG1pbkxlbikgeyBpZiAoIW8pIHJldHVybjsgaWYgKHR5cGVvZiBvID09PSBcInN0cmluZ1wiKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgdmFyIG4gPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykuc2xpY2UoOCwgLTEpOyBpZiAobiA9PT0gXCJPYmplY3RcIiAmJiBvLmNvbnN0cnVjdG9yKSBuID0gby5jb25zdHJ1Y3Rvci5uYW1lOyBpZiAobiA9PT0gXCJNYXBcIiB8fCBuID09PSBcIlNldFwiKSByZXR1cm4gQXJyYXkuZnJvbShvKTsgaWYgKG4gPT09IFwiQXJndW1lbnRzXCIgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB9XG5mdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShhcnIsIGxlbikgeyBpZiAobGVuID09IG51bGwgfHwgbGVuID4gYXJyLmxlbmd0aCkgbGVuID0gYXJyLmxlbmd0aDsgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkobGVuKTsgaSA8IGxlbjsgaSsrKSBhcnIyW2ldID0gYXJyW2ldOyByZXR1cm4gYXJyMjsgfVxuZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KHIsIGwpIHsgdmFyIHQgPSBudWxsID09IHIgPyBudWxsIDogXCJ1bmRlZmluZWRcIiAhPSB0eXBlb2YgU3ltYm9sICYmIHJbU3ltYm9sLml0ZXJhdG9yXSB8fCByW1wiQEBpdGVyYXRvclwiXTsgaWYgKG51bGwgIT0gdCkgeyB2YXIgZSwgbiwgaSwgdSwgYSA9IFtdLCBmID0gITAsIG8gPSAhMTsgdHJ5IHsgaWYgKGkgPSAodCA9IHQuY2FsbChyKSkubmV4dCwgMCA9PT0gbCkgeyBpZiAoT2JqZWN0KHQpICE9PSB0KSByZXR1cm47IGYgPSAhMTsgfSBlbHNlIGZvciAoOyAhKGYgPSAoZSA9IGkuY2FsbCh0KSkuZG9uZSkgJiYgKGEucHVzaChlLnZhbHVlKSwgYS5sZW5ndGggIT09IGwpOyBmID0gITApOyB9IGNhdGNoIChyKSB7IG8gPSAhMCwgbiA9IHI7IH0gZmluYWxseSB7IHRyeSB7IGlmICghZiAmJiBudWxsICE9IHQucmV0dXJuICYmICh1ID0gdC5yZXR1cm4oKSwgT2JqZWN0KHUpICE9PSB1KSkgcmV0dXJuOyB9IGZpbmFsbHkgeyBpZiAobykgdGhyb3cgbjsgfSB9IHJldHVybiBhOyB9IH1cbmZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycjsgfVxuLypcbm9wdGlvbnMgZm9yIGlzVVJMIG1ldGhvZFxuXG5yZXF1aXJlX3Byb3RvY29sIC0gaWYgc2V0IGFzIHRydWUgaXNVUkwgd2lsbCByZXR1cm4gZmFsc2UgaWYgcHJvdG9jb2wgaXMgbm90IHByZXNlbnQgaW4gdGhlIFVSTFxucmVxdWlyZV92YWxpZF9wcm90b2NvbCAtIGlzVVJMIHdpbGwgY2hlY2sgaWYgdGhlIFVSTCdzIHByb3RvY29sIGlzIHByZXNlbnQgaW4gdGhlIHByb3RvY29scyBvcHRpb25cbnByb3RvY29scyAtIHZhbGlkIHByb3RvY29scyBjYW4gYmUgbW9kaWZpZWQgd2l0aCB0aGlzIG9wdGlvblxucmVxdWlyZV9ob3N0IC0gaWYgc2V0IGFzIGZhbHNlIGlzVVJMIHdpbGwgbm90IGNoZWNrIGlmIGhvc3QgaXMgcHJlc2VudCBpbiB0aGUgVVJMXG5yZXF1aXJlX3BvcnQgLSBpZiBzZXQgYXMgdHJ1ZSBpc1VSTCB3aWxsIGNoZWNrIGlmIHBvcnQgaXMgcHJlc2VudCBpbiB0aGUgVVJMXG5hbGxvd19wcm90b2NvbF9yZWxhdGl2ZV91cmxzIC0gaWYgc2V0IGFzIHRydWUgcHJvdG9jb2wgcmVsYXRpdmUgVVJMcyB3aWxsIGJlIGFsbG93ZWRcbnZhbGlkYXRlX2xlbmd0aCAtIGlmIHNldCBhcyBmYWxzZSBpc1VSTCB3aWxsIHNraXAgc3RyaW5nIGxlbmd0aCB2YWxpZGF0aW9uIChJRSBtYXhpbXVtIGlzIDIwODMpXG5cbiovXG5cbnZhciBkZWZhdWx0X3VybF9vcHRpb25zID0ge1xuICBwcm90b2NvbHM6IFsnaHR0cCcsICdodHRwcycsICdmdHAnXSxcbiAgcmVxdWlyZV90bGQ6IHRydWUsXG4gIHJlcXVpcmVfcHJvdG9jb2w6IGZhbHNlLFxuICByZXF1aXJlX2hvc3Q6IHRydWUsXG4gIHJlcXVpcmVfcG9ydDogZmFsc2UsXG4gIHJlcXVpcmVfdmFsaWRfcHJvdG9jb2w6IHRydWUsXG4gIGFsbG93X3VuZGVyc2NvcmVzOiBmYWxzZSxcbiAgYWxsb3dfdHJhaWxpbmdfZG90OiBmYWxzZSxcbiAgYWxsb3dfcHJvdG9jb2xfcmVsYXRpdmVfdXJsczogZmFsc2UsXG4gIGFsbG93X2ZyYWdtZW50czogdHJ1ZSxcbiAgYWxsb3dfcXVlcnlfY29tcG9uZW50czogdHJ1ZSxcbiAgdmFsaWRhdGVfbGVuZ3RoOiB0cnVlXG59O1xudmFyIHdyYXBwZWRfaXB2NiA9IC9eXFxbKFteXFxdXSspXFxdKD86OihbMC05XSspKT8kLztcbmZ1bmN0aW9uIGlzUmVnRXhwKG9iaikge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iaikgPT09ICdbb2JqZWN0IFJlZ0V4cF0nO1xufVxuZnVuY3Rpb24gY2hlY2tIb3N0KGhvc3QsIG1hdGNoZXMpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYXRjaGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG1hdGNoID0gbWF0Y2hlc1tpXTtcbiAgICBpZiAoaG9zdCA9PT0gbWF0Y2ggfHwgaXNSZWdFeHAobWF0Y2gpICYmIG1hdGNoLnRlc3QoaG9zdCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5mdW5jdGlvbiBpc1VSTCh1cmwsIG9wdGlvbnMpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcuZGVmYXVsdCkodXJsKTtcbiAgaWYgKCF1cmwgfHwgL1tcXHM8Pl0vLnRlc3QodXJsKSkge1xuICAgIHJldHVybi
15BmYWxzZTtcbiAgfVxuICBpZiAodXJsLmluZGV4T2YoJ21haWx0bzonKSA9PT0gMCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBvcHRpb25zID0gKDAsIF9tZXJnZS5kZWZhdWx0KShvcHRpb25zLCBkZWZhdWx0X3VybF9vcHRpb25zKTtcbiAgaWYgKG9wdGlvbnMudmFsaWRhdGVfbGVuZ3RoICYmIHVybC5sZW5ndGggPj0gMjA4Mykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoIW9wdGlvbnMuYWxsb3dfZnJhZ21lbnRzICYmIHVybC5pbmNsdWRlcygnIycpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICghb3B0aW9ucy5hbGxvd19xdWVyeV9jb21wb25lbnRzICYmICh1cmwuaW5jbHVkZXMoJz8nKSB8fCB1cmwuaW5jbHVkZXMoJyYnKSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHByb3RvY29sLCBhdXRoLCBob3N0LCBob3N0bmFtZSwgcG9ydCwgcG9ydF9zdHIsIHNwbGl0LCBpcHY2O1xuICBzcGxpdCA9IHVybC5zcGxpdCgnIycpO1xuICB1cmwgPSBzcGxpdC5zaGlmdCgpO1xuICBzcGxpdCA9IHVybC5zcGxpdCgnPycpO1xuICB1cmwgPSBzcGxpdC5zaGlmdCgpO1xuICBzcGxpdCA9IHVybC5zcGxpdCgnOi8vJyk7XG4gIGlmIChzcGxpdC5sZW5ndGggPiAxKSB7XG4gICAgcHJvdG9jb2wgPSBzcGxpdC5zaGlmdCgpLnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKG9wdGlvbnMucmVxdWlyZV92YWxpZF9wcm90b2NvbCAmJiBvcHRpb25zLnByb3RvY29scy5pbmRleE9mKHByb3RvY29sKSA9PT0gLTEpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0gZWxzZSBpZiAob3B0aW9ucy5yZXF1aXJlX3Byb3RvY29sKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9IGVsc2UgaWYgKHVybC5zbGljZSgwLCAyKSA9PT0gJy8vJykge1xuICAgIGlmICghb3B0aW9ucy5hbGxvd19wcm90b2NvbF9yZWxhdGl2ZV91cmxzKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHNwbGl0WzBdID0gdXJsLnNsaWNlKDIpO1xuICB9XG4gIHVybCA9IHNwbGl0LmpvaW4oJzovLycpO1xuICBpZiAodXJsID09PSAnJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBzcGxpdCA9IHVybC5zcGxpdCgnLycpO1xuICB1cmwgPSBzcGxpdC5zaGlmdCgpO1xuICBpZiAodXJsID09PSAnJyAmJiAhb3B0aW9ucy5yZXF1aXJlX2hvc3QpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBzcGxpdCA9IHVybC5zcGxpdCgnQCcpO1xuICBpZiAoc3BsaXQubGVuZ3RoID4gMSkge1xuICAgIGlmIChvcHRpb25zLmRpc2FsbG93X2F1dGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHNwbGl0WzBdID09PSAnJykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBhdXRoID0gc3BsaXQuc2hpZnQoKTtcbiAgICBpZiAoYXV0aC5pbmRleE9mKCc6JykgPj0gMCAmJiBhdXRoLnNwbGl0KCc6JykubGVuZ3RoID4gMikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB2YXIgX2F1dGgkc3BsaXQgPSBhdXRoLnNwbGl0KCc6JyksXG4gICAgICBfYXV0aCRzcGxpdDIgPSBfc2xpY2VkVG9BcnJheShfYXV0aCRzcGxpdCwgMiksXG4gICAgICB1c2VyID0gX2F1dGgkc3BsaXQyWzBdLFxuICAgICAgcGFzc3dvcmQgPSBfYXV0aCRzcGxpdDJbMV07XG4gICAgaWYgKHVzZXIgPT09ICcnICYmIHBhc3N3b3JkID09PSAnJykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICBob3N0bmFtZSA9IHNwbGl0LmpvaW4oJ0AnKTtcbiAgcG9ydF9zdHIgPSBudWxsO1xuICBpcHY2ID0gbnVsbDtcbiAgdmFyIGlwdjZfbWF0Y2ggPSBob3N0bmFtZS5tYXRjaCh3cmFwcGVkX2lwdjYpO1xuICBpZiAoaXB2Nl9tYXRjaCkge1xuICAgIGhvc3QgPSAnJztcbiAgICBpcHY2ID0gaXB2Nl9tYXRjaFsxXTtcbiAgICBwb3J0X3N0ciA9IGlwdjZfbWF0Y2hbMl0gfHwgbnVsbDtcbiAgfSBlbHNlIHtcbiAgICBzcGxpdCA9IGhvc3RuYW1lLnNwbGl0KCc6Jyk7XG4gICAgaG9zdCA9IHNwbGl0LnNoaWZ0KCk7XG4gICAgaWYgKHNwbGl0Lmxlbmd0aCkge1xuICAgICAgcG9ydF9zdHIgPSBzcGxpdC5qb2luKCc6Jyk7XG4gICAgfVxuICB9XG4gIGlmIChwb3J0X3N0ciAhPT0gbnVsbCAmJiBwb3J0X3N0ci5sZW5ndGggPiAwKSB7XG4gICAgcG9ydCA9IHBhcnNlSW50KHBvcnRfc3RyLCAxMCk7XG4gICAgaWYgKCEvXlswLTldKyQvLnRlc3QocG9ydF9zdHIpIHx8IHBvcnQgPD0gMCB8fCBwb3J0ID4gNjU1MzUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0gZWxzZSBpZiAob3B0aW9ucy5yZXF1aXJlX3BvcnQpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKG9wdGlvbnMuaG9zdF93aGl0ZWxpc3QpIHtcbiAgICByZXR1cm4gY2hlY2tIb3N0KGhvc3QsIG9wdGlvbnMuaG9zdF93aGl0ZWxpc3QpO1xuICB9XG4gIGlmIChob3N0ID09PSAnJyAmJiAhb3B0aW9ucy5yZXF1aXJlX2hvc3QpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAoISgwLCBfaXNJUC5kZWZhdWx0KShob3N0KSAmJiAhKDAsIF9pc0ZRRE4uZGVmYXVsdCkoaG9zdCwgb3B0aW9ucykgJiYgKCFpcHY2IHx8ICEoMCwgX2lzSVAuZGVmYXVsdCkoaXB2NiwgNikpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGhvc3QgPSBob3N0IHx8IGlwdjY7XG4gIGlmIChvcHRpb25zLmhvc3RfYmxhY2tsaXN0ICYmIGNoZWNrSG9zdChob3N0LCBvcHRpb25zLmhvc3RfYmxhY2tsaXN0KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZh
15dWx0O1xubW9kdWxlLmV4cG9ydHMuZGVmYXVsdCA9IGV4cG9ydHMuZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzTUFDQWRkcmVzcztcbnZhciBfYXNzZXJ0U3RyaW5nID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlsL2Fzc2VydFN0cmluZ1wiKSk7XG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxudmFyIG1hY0FkZHJlc3M0OCA9IC9eKD86WzAtOWEtZkEtRl17Mn0oWy06XFxzXSkpKFswLTlhLWZBLUZdezJ9XFwxKXs0fShbMC05YS1mQS1GXXsyfSkkLztcbnZhciBtYWNBZGRyZXNzNDhOb1NlcGFyYXRvcnMgPSAvXihbMC05YS1mQS1GXSl7MTJ9JC87XG52YXIgbWFjQWRkcmVzczQ4V2l0aERvdHMgPSAvXihbMC05YS1mQS1GXXs0fVxcLil7Mn0oWzAtOWEtZkEtRl17NH0pJC87XG52YXIgbWFjQWRkcmVzczY0ID0gL14oPzpbMC05YS1mQS1GXXsyfShbLTpcXHNdKSkoWzAtOWEtZkEtRl17Mn1cXDEpezZ9KFswLTlhLWZBLUZdezJ9KSQvO1xudmFyIG1hY0FkZHJlc3M2NE5vU2VwYXJhdG9ycyA9IC9eKFswLTlhLWZBLUZdKXsxNn0kLztcbnZhciBtYWNBZGRyZXNzNjRXaXRoRG90cyA9IC9eKFswLTlhLWZBLUZdezR9XFwuKXszfShbMC05YS1mQS1GXXs0fSkkLztcbmZ1bmN0aW9uIGlzTUFDQWRkcmVzcyhzdHIsIG9wdGlvbnMpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcuZGVmYXVsdCkoc3RyKTtcbiAgaWYgKG9wdGlvbnMgIT09IG51bGwgJiYgb3B0aW9ucyAhPT0gdm9pZCAwICYmIG9wdGlvbnMuZXVpKSB7XG4gICAgb3B0aW9ucy5ldWkgPSBTdHJpbmcob3B0aW9ucy5ldWkpO1xuICB9XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBgbm9fY29sb25zYCBUT0RPOiByZW1vdmUgaXQgaW4gdGhlIG5leHQgbWFqb3JcbiAgKi9cbiAgaWYgKG9wdGlvbnMgIT09IG51bGwgJiYgb3B0aW9ucyAhPT0gdm9pZCAwICYmIG9wdGlvbnMubm9fY29sb25zIHx8IG9wdGlvbnMgIT09IG51bGwgJiYgb3B0aW9ucyAhPT0gdm9pZCAwICYmIG9wdGlvbnMubm9fc2VwYXJhdG9ycykge1xuICAgIGlmIChvcHRpb25zLmV1aSA9PT0gJzQ4Jykge1xuICAgICAgcmV0dXJuIG1hY0FkZHJlc3M0OE5vU2VwYXJhdG9ycy50ZXN0KHN0cik7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmV1aSA9PT0gJzY0Jykge1xuICAgICAgcmV0dXJuIG1hY0FkZHJlc3M2NE5vU2VwYXJhdG9ycy50ZXN0KHN0cik7XG4gICAgfVxuICAgIHJldHVybiBtYWNBZGRyZXNzNDhOb1NlcGFyYXRvcnMudGVzdChzdHIpIHx8IG1hY0FkZHJlc3M2NE5vU2VwYXJhdG9ycy50ZXN0KHN0cik7XG4gIH1cbiAgaWYgKChvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuZXVpKSA9PT0gJzQ4Jykge1xuICAgIHJldHVybiBtYWNBZGRyZXNzNDgudGVzdChzdHIpIHx8IG1hY0FkZHJlc3M0OFdpdGhEb3RzLnRlc3Qoc3RyKTtcbiAgfVxuICBpZiAoKG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5ldWkpID09PSAnNjQnKSB7XG4gICAgcmV0dXJuIG1hY0FkZHJlc3M2NC50ZXN0KHN0cikgfHwgbWFjQWRkcmVzczY0V2l0aERvdHMudGVzdChzdHIpO1xuICB9XG4gIHJldHVybiBpc01BQ0FkZHJlc3Moc3RyLCB7XG4gICAgZXVpOiAnNDgnXG4gIH0pIHx8IGlzTUFDQWRkcmVzcyhzdHIsIHtcbiAgICBldWk6ICc2NCdcbiAgfSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBleHBvcnRzLmRlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc0lQUmFuZ2U7XG52YXIgX2Fzc2VydFN0cmluZyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vdXRpbC9hc3NlcnRTdHJpbmdcIikpO1xudmFyIF9pc0lQID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9pc0lQXCIpKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG52YXIgc3VibmV0TWF5YmUgPSAvXlxcZHsxLDN9JC87XG52YXIgdjRTdWJuZXQgPSAzMjtcbnZhciB2NlN1Ym5ldCA9IDEyODtcbmZ1bmN0aW9uIGlzSVBSYW5nZShzdHIpIHtcbiAgdmFyIHZlcnNpb24gPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6ICcnO1xuICAoMCwgX2Fzc2VydFN0cmluZy5kZWZh
15dWx0KShzdHIpO1xuICB2YXIgcGFydHMgPSBzdHIuc3BsaXQoJy8nKTtcblxuICAvLyBwYXJ0c1swXSAtPiBpcCwgcGFydHNbMV0gLT4gc3VibmV0XG4gIGlmIChwYXJ0cy5sZW5ndGggIT09IDIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKCFzdWJuZXRNYXliZS50ZXN0KHBhcnRzWzFdKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIERpc2FsbG93IHByZWNlZGluZyAwIGkuZS4gMDEsIDAyLCAuLi5cbiAgaWYgKHBhcnRzWzFdLmxlbmd0aCA+IDEgJiYgcGFydHNbMV0uc3RhcnRzV2l0aCgnMCcpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBpc1ZhbGlkSVAgPSAoMCwgX2lzSVAuZGVmYXVsdCkocGFydHNbMF0sIHZlcnNpb24pO1xuICBpZiAoIWlzVmFsaWRJUCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIERlZmluZSB2YWxpZCBzdWJuZXQgYWNjb3JkaW5nIHRvIElQJ3MgdmVyc2lvblxuICB2YXIgZXhwZWN0ZWRTdWJuZXQgPSBudWxsO1xuICBzd2l0Y2ggKFN0cmluZyh2ZXJzaW9uKSkge1xuICAgIGNhc2UgJzQnOlxuICAgICAgZXhwZWN0ZWRTdWJuZXQgPSB2NFN1Ym5ldDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJzYnOlxuICAgICAgZXhwZWN0ZWRTdWJuZXQgPSB2NlN1Ym5ldDtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBleHBlY3RlZFN1Ym5ldCA9ICgwLCBfaXNJUC5kZWZhdWx0KShwYXJ0c1swXSwgJzYnKSA/IHY2U3VibmV0IDogdjRTdWJuZXQ7XG4gIH1cbiAgcmV0dXJuIHBhcnRzWzFdIDw9IGV4cGVjdGVkU3VibmV0ICYmIHBhcnRzWzFdID49IDA7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBleHBvcnRzLmRlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc0RhdGU7XG52YXIgX21lcmdlID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlsL21lcmdlXCIpKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5mdW5jdGlvbiBfc2xpY2VkVG9BcnJheShhcnIsIGkpIHsgcmV0dXJuIF9hcnJheVdpdGhIb2xlcyhhcnIpIHx8IF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHx8IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShhcnIsIGkpIHx8IF9ub25JdGVyYWJsZVJlc3QoKTsgfVxuZnVuY3Rpb24gX25vbkl0ZXJhYmxlUmVzdCgpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTsgfVxuZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KHIsIGwpIHsgdmFyIHQgPSBudWxsID09IHIgPyBudWxsIDogXCJ1bmRlZmluZWRcIiAhPSB0eXBlb2YgU3ltYm9sICYmIHJbU3ltYm9sLml0ZXJhdG9yXSB8fCByW1wiQEBpdGVyYXRvclwiXTsgaWYgKG51bGwgIT0gdCkgeyB2YXIgZSwgbiwgaSwgdSwgYSA9IFtdLCBmID0gITAsIG8gPSAhMTsgdHJ5IHsgaWYgKGkgPSAodCA9IHQuY2FsbChyKSkubmV4dCwgMCA9PT0gbCkgeyBpZiAoT2JqZWN0KHQpICE9PSB0KSByZXR1cm47IGYgPSAhMTsgfSBlbHNlIGZvciAoOyAhKGYgPSAoZSA9IGkuY2FsbCh0KSkuZG9uZSkgJiYgKGEucHVzaChlLnZhbHVlKSwgYS5sZW5ndGggIT09IGwpOyBmID0gITApOyB9IGNhdGNoIChyKSB7IG8gPSAhMCwgbiA9IHI7IH0gZmluYWxseSB7IHRyeSB7IGlmICghZiAmJiBudWxsICE9IHQucmV0dXJuICYmICh1ID0gdC5yZXR1cm4oKSwgT2JqZWN0KHUpICE9PSB1KSkgcmV0dXJuOyB9IGZpbmFsbHkgeyBpZiAobykgdGhyb3cgbjsgfSB9IHJldHVybiBhOyB9IH1cbmZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycjsgfVxuZnVuY3Rpb24gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIobywgYWxsb3dBcnJheUxpa2UpIHsgdmFyIGl0ID0gdHlwZW9mIFN5bWJvbCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl0gfHwgb1tcIkBAaXRlcmF0b3JcIl07IGlmICghaXQpIHsgaWYgKEFycmF5LmlzQXJyYXkobykgfHwgKGl0ID0gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KG8pKSB8fCBhbGxvd0FycmF5TGlrZSAmJiBvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgeyBpZiAoaXQpIG8gPSBpdDsgdmFyIGkgPSAwOyB2YXIgRiA9IGZ1bmN0aW9uIEYoKSB7fTsgcmV0dXJuIHsgczogRiwgbjogZnVuY3Rpb24gbigpIHsgaWYgKGkgPj0gby5sZW5ndGgpIHJldHVybiB7IGRvbmU6IHRydWUgfTsgcmV0dXJuIHsgZG9uZTogZmFsc2UsIHZhbHVlOiBvW2krK10gfTsgfSwgZTogZnVuY3Rpb24gZShfZSkgeyB0aHJvdyBfZTsgfSwgZjogRiB9OyB9IHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTsgfSB2YXIgbm9ybWFsQ29tcGxldGlvbiA9IHRydWUsIGRpZEVyciA9IGZhbHNlLCBlcnI7IHJldHVybiB7IHM6IGZ1bmN0aW9uIHMoKSB7IGl0ID0gaXQuY2FsbChvKTsgfSwgbjogZnVuY3Rpb24gbigpIHsgdmFyIHN0ZXAgPSBpdC5uZXh0KCk7IG5vcm1hbENvbXBsZXRpb24gPSBzdGVwLmRvbmU7IHJldHVybiBzdGVwOyB9LCBlOiBmdW5jdGlvbiBlKF9lMikgeyBkaWRFcnIgPSB0cnVlOyBlcnIgPSBfZTI7IH0sIGY6IGZ1bmN0aW9uIGYoKSB7IHRyeSB7IGlmICghbm9ybWFsQ29tcGxldGlvbiAmJiBpdC5yZXR1cm4gIT0gbnVsbCkgaXQucmV0dXJuKCk7IH0gZmluYWxseSB7IGlmIChkaWRFcnIpIHRocm93IGVycjsgfSB9IH07IH1cbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvLCBtaW5MZW4pIHsgaWYgKCFvKSByZXR1cm47IGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8s
15IG1pbkxlbik7IHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTsgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTsgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7IGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgfVxuZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHsgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgYXJyMltpXSA9IGFycltpXTsgcmV0dXJuIGFycjI7IH1cbnZhciBkZWZhdWx0X2RhdGVfb3B0aW9ucyA9IHtcbiAgZm9ybWF0OiAnWVlZWS9NTS9ERCcsXG4gIGRlbGltaXRlcnM6IFsnLycsICctJ10sXG4gIHN0cmljdE1vZGU6IGZhbHNlXG59O1xuZnVuY3Rpb24gaXNWYWxpZEZvcm1hdChmb3JtYXQpIHtcbiAgcmV0dXJuIC8oXih5ezR9fHl7Mn0pWy5cXC8tXShtezEsMn0pWy5cXC8tXShkezEsMn0pJCl8KF4obXsxLDJ9KVsuXFwvLV0oZHsxLDJ9KVsuXFwvLV0oKHl7NH18eXsyfSkkKSl8KF4oZHsxLDJ9KVsuXFwvLV0obXsxLDJ9KVsuXFwvLV0oKHl7NH18eXsyfSkkKSkvZ2kudGVzdChmb3JtYXQpO1xufVxuZnVuY3Rpb24gemlwKGRhdGUsIGZvcm1hdCkge1xuICB2YXIgemlwcGVkQXJyID0gW10sXG4gICAgbGVuID0gTWF0aC5taW4oZGF0ZS5sZW5ndGgsIGZvcm1hdC5sZW5ndGgpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgemlwcGVkQXJyLnB1c2goW2RhdGVbaV0sIGZvcm1hdFtpXV0pO1xuICB9XG4gIHJldHVybiB6aXBwZWRBcnI7XG59XG5mdW5jdGlvbiBpc0RhdGUoaW5wdXQsIG9wdGlvbnMpIHtcbiAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnc3RyaW5nJykge1xuICAgIC8vIEFsbG93IGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgZm9yIG9sZCBmb3JtYXQgaXNEYXRlKGlucHV0IFssIGZvcm1hdF0pXG4gICAgb3B0aW9ucyA9ICgwLCBfbWVyZ2UuZGVmYXVsdCkoe1xuICAgICAgZm9ybWF0OiBvcHRpb25zXG4gICAgfSwgZGVmYXVsdF9kYXRlX29wdGlvbnMpO1xuICB9IGVsc2Uge1xuICAgIG9wdGlvbnMgPSAoMCwgX21lcmdlLmRlZmF1bHQpKG9wdGlvbnMsIGRlZmF1bHRfZGF0ZV9vcHRpb25zKTtcbiAgfVxuICBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJyAmJiBpc1ZhbGlkRm9ybWF0KG9wdGlvbnMuZm9ybWF0KSkge1xuICAgIHZhciBmb3JtYXREZWxpbWl0ZXIgPSBvcHRpb25zLmRlbGltaXRlcnMuZmluZChmdW5jdGlvbiAoZGVsaW1pdGVyKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5mb3JtYXQuaW5kZXhPZihkZWxpbWl0ZXIpICE9PSAtMTtcbiAgICB9KTtcbiAgICB2YXIgZGF0ZURlbGltaXRlciA9IG9wdGlvbnMuc3RyaWN0TW9kZSA/IGZvcm1hdERlbGltaXRlciA6IG9wdGlvbnMuZGVsaW1pdGVycy5maW5kKGZ1bmN0aW9uIChkZWxpbWl0ZXIpIHtcbiAgICAgIHJldHVybiBpbnB1dC5pbmRleE9mKGRlbGltaXRlcikgIT09IC0xO1xuICAgIH0pO1xuICAgIHZhciBkYXRlQW5kRm9ybWF0ID0gemlwKGlucHV0LnNwbGl0KGRhdGVEZWxpbWl0ZXIpLCBvcHRpb25zLmZvcm1hdC50b0xvd2VyQ2FzZSgpLnNwbGl0KGZvcm1hdERlbGltaXRlcikpO1xuICAgIHZhciBkYXRlT2JqID0ge307XG4gICAgdmFyIF9pdGVyYXRvciA9IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKGRhdGVBbmRGb3JtYXQpLFxuICAgICAgX3N0ZXA7XG4gICAgdHJ5IHtcbiAgICAgIGZvciAoX2l0ZXJhdG9yLnMoKTsgIShfc3RlcCA9IF9pdGVyYXRvci5uKCkpLmRvbmU7KSB7XG4gICAgICAgIHZhciBfc3RlcCR2YWx1ZSA9IF9zbGljZWRUb0FycmF5KF9zdGVwLnZhbHVlLCAyKSxcbiAgICAgICAgICBkYXRlV29yZCA9IF9zdGVwJHZhbHVlWzBdLFxuICAgICAgICAgIGZvcm1hdFdvcmQgPSBfc3RlcCR2YWx1ZVsxXTtcbiAgICAgICAgaWYgKGRhdGVXb3JkLmxlbmd0aCAhPT0gZm9ybWF0V29yZC5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgZGF0ZU9ialtmb3JtYXRXb3JkLmNoYXJBdCgwKV0gPSBkYXRlV29yZDtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIF9pdGVyYXRvci5lKGVycik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIF9pdGVyYXRvci5mKCk7XG4gICAgfVxuICAgIHZhciBmdWxsWWVhciA9IGRhdGVPYmoueTtcblxuICAgIC8vIENoZWNrIGlmIHRoZSB5ZWFyIHN0YXJ0cyB3aXRoIGEgaHlwaGVuXG4gICAgaWYgKGZ1bGxZZWFyLnN0YXJ0c1dpdGgoJy0nKSkge1xuICAgICAgcmV0dXJuIGZhbHNlOyAvLyBIeXBoZW4gYmVmb3JlIHllYXIgaXMgbm90IGFsbG93ZWRcbiAgICB9XG4gICAgaWYgKGRhdGVPYmoueS5sZW5ndGggPT09IDIpIHtcbiAgICAgIHZhciBwYXJzZWRZZWFyID0gcGFyc2VJbnQoZGF0ZU9iai55LCAxMCk7XG4gICAgICBpZiAoaXNOYU4ocGFyc2VkWWVhcikpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgdmFyIGN1cnJlbnRZZWFyTGFzdFR3b0RpZ2l0cyA9IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSAlIDEwMDtcbiAgICAgIGlmIChwYXJzZWRZZWFyIDwgY3VycmVudFllYXJMYXN0VHdvRGlnaXRzKSB7XG4gICAgICAgIGZ1bGxZZWFyID0gXCIyMFwiLmNvbmNhdChkYXRlT2JqLnkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZnVsbFllYXIgPSBcIjE5XCIuY29uY2F0KGRhdGVPYmoueSk7XG4gICAgICB9XG4gICAgfVxuICAgIHZhciBtb250aCA9IGRhdGVPYmoubTtcbiAgICBpZiAoZGF0ZU9iai5tLmxlbmd0aCA9PT0gMSkge1xuICAgICAgbW9udGggPSBcIjBcIi5jb25jYXQoZGF0ZU9iai5tKTtcbiAgICB9XG4gICAgdmFyIGRheSA9IGRhdGVPYmouZDtcbiAgICBpZiAoZGF0ZU9iai5kLmxlbmd0aCA9PT0gMSkge1xuICAgICAgZGF5ID0gXCIwXCIuY29uY2F0KGRhdGVPYmouZCk7XG4gICAgfVxuICAgIHJldHVybi
15BuZXcgRGF0ZShcIlwiLmNvbmNhdChmdWxsWWVhciwgXCItXCIpLmNvbmNhdChtb250aCwgXCItXCIpLmNvbmNhdChkYXksIFwiVDAwOjAwOjAwLjAwMFpcIikpLmdldFVUQ0RhdGUoKSA9PT0gK2RhdGVPYmouZDtcbiAgfVxuICBpZiAoIW9wdGlvbnMuc3RyaWN0TW9kZSkge1xuICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaW5wdXQpID09PSAnW29iamVjdCBEYXRlXScgJiYgaXNGaW5pdGUoaW5wdXQpO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xubW9kdWxlLmV4cG9ydHMuZGVmYXVsdCA9IGV4cG9ydHMuZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzVGltZTtcbnZhciBfbWVyZ2UgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWwvbWVyZ2VcIikpO1xuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cbnZhciBkZWZhdWx0X3RpbWVfb3B0aW9ucyA9IHtcbiAgaG91ckZvcm1hdDogJ2hvdXIyNCcsXG4gIG1vZGU6ICdkZWZhdWx0J1xufTtcbnZhciBmb3JtYXRzID0ge1xuICBob3VyMjQ6IHtcbiAgICBkZWZhdWx0OiAvXihbMDFdP1swLTldfDJbMC0zXSk6KFswLTVdWzAtOV0pJC8sXG4gICAgd2l0aFNlY29uZHM6IC9eKFswMV0/WzAtOV18MlswLTNdKTooWzAtNV1bMC05XSk6KFswLTVdWzAtOV0pJC9cbiAgfSxcbiAgaG91cjEyOiB7XG4gICAgZGVmYXVsdDogL14oMD9bMS05XXwxWzAtMl0pOihbMC01XVswLTldKSAoQXxQKU0kLyxcbiAgICB3aXRoU2Vjb25kczogL14oMD9bMS05XXwxWzAtMl0pOihbMC01XVswLTldKTooWzAtNV1bMC05XSkgKEF8UClNJC9cbiAgfVxufTtcbmZ1bmN0aW9uIGlzVGltZShpbnB1dCwgb3B0aW9ucykge1xuICBvcHRpb25zID0gKDAsIF9tZXJnZS5kZWZhdWx0KShvcHRpb25zLCBkZWZhdWx0X3RpbWVfb3B0aW9ucyk7XG4gIGlmICh0eXBlb2YgaW5wdXQgIT09ICdzdHJpbmcnKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiBmb3JtYXRzW29wdGlvbnMuaG91ckZvcm1hdF1bb3B0aW9ucy5tb2RlXS50ZXN0KGlucHV0KTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZh
15dWx0O1xubW9kdWxlLmV4cG9ydHMuZGVmYXVsdCA9IGV4cG9ydHMuZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzQm9vbGVhbjtcbnZhciBfYXNzZXJ0U3RyaW5nID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlsL2Fzc2VydFN0cmluZ1wiKSk7XG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxudmFyIGRlZmF1bHRPcHRpb25zID0ge1xuICBsb29zZTogZmFsc2Vcbn07XG52YXIgc3RyaWN0Qm9vbGVhbnMgPSBbJ3RydWUnLCAnZmFsc2UnLCAnMScsICcwJ107XG52YXIgbG9vc2VCb29sZWFucyA9IFtdLmNvbmNhdChzdHJpY3RCb29sZWFucywgWyd5ZXMnLCAnbm8nXSk7XG5mdW5jdGlvbiBpc0Jvb2xlYW4oc3RyKSB7XG4gIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBkZWZhdWx0T3B0aW9ucztcbiAgKDAsIF9hc3NlcnRTdHJpbmcuZGVmYXVsdCkoc3RyKTtcbiAgaWYgKG9wdGlvbnMubG9vc2UpIHtcbiAgICByZXR1cm4gbG9vc2VCb29sZWFucy5pbmNsdWRlcyhzdHIudG9Mb3dlckNhc2UoKSk7XG4gIH1cbiAgcmV0dXJuIHN0cmljdEJvb2xlYW5zLmluY2x1ZGVzKHN0cik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBleHBvcnRzLmRlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc0xvY2FsZTtcbnZhciBfYXNzZXJ0U3RyaW5nID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlsL2Fzc2VydFN0cmluZ1wiKSk7XG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuLypcbiAgPSAzQUxQSEEgICAgICAgICAgICAgIDsgc2VsZWN0ZWQgSVNPIDYzOSBjb2Rlc1xuICAgICoyKFwiLVwiIDNBTFBIQSkgICAgICA7IHBlcm1hbmVudGx5IHJlc2VydmVkXG4gKi9cbnZhciBleHRsYW5nID0gJyhbQS1aYS16XXszfSgtW0EtWmEtel17M30pezAsMn0pJztcblxuLypcbiAgPSAyKjNBTFBIQSAgICAgICAgICAgIDsgc2hvcnRlc3QgSVNPIDYzOSBjb2RlXG4gICAgW1wiLVwiIGV4dGxhbmddICAgICAgIDsgc29tZXRpbWVzIGZvbGxvd2VkIGJ5XG4gICAgICAgICAgICAgICAgICAgICAgICA7IGV4dGVuZGVkIGxhbmd1YWdlIHN1YnRhZ3NcbiAgLyA0QUxQSEEgICAgICAgICAgICAgIDsgb3IgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2VcbiAgLyA1KjhBTFBIQSAgICAgICAgICAgIDsgb3IgcmVnaXN0ZXJlZCBsYW5ndWFnZSBzdWJ0YWdcbiAqL1xudmFyIGxhbmd1YWdlID0gXCIoKFthLXpBLVpdezIsM30oLVwiLmNvbmNhdChleHRsYW5nLCBcIik/KXwoW2EtekEtWl17NSw4fSkpXCIpO1xuXG4vKlxuICA9IDRBTFBIQSAgICAgICAgICAgICAgOyBJU08gMTU5MjQgY29kZVxuICovXG52YXIgc2NyaXB0ID0gJyhbQS1aYS16XXs0fSknO1xuXG4vKlxuICA9IDJBTFBIQSAgICAgICAgICAgICAgOyBJU08gMzE2Ni0xIGNvZGVcbiAgLyAzRElHSVQgICAgICAgICAgICAgIDsgVU4gTS40OSBjb2RlXG4gKi9cbnZhciByZWdpb24gPSAnKFtBLVphLXpdezJ9fFxcXFxkezN9KSc7XG5cbi8qXG4gID0gNSo4YWxwaGFudW0gICAgICAgICA7IHJlZ2lzdGVyZWQgdmFyaWFudHNcbiAgLyAoRElHSVQgM2FscGhhbnVtKVxuICovXG52YXIgdmFyaWFudCA9ICcoW0EtWmEtejAtOV17NSw4fXwoXFxcXGRbQS1aLWEtejAtOV17M30pKSc7XG5cbi8qXG4gID0gRElHSVQgICAgICAgICAgICAgICA7IDAgLSA5XG4gIC8gJXg0MS01NyAgICAgICAgICAgICA7IEEgLSBXXG4gIC8gJXg1OS01QSAgICAgICAgICAgICA7IFkgLSBaXG4gIC8gJXg2MS03NyAgICAgICAgICAgICA7IGEgLSB3XG4gIC8gJXg3OS03QSAgICAgICAgICAgICA7IHkgLSB6XG4gKi9cbnZhciBzaW5nbGV0b24gPSAnKFxcXFxkfFtBLVddfFtZLVpdfFthLXddfFt5LXpdKSc7XG5cbi8qXG4gID0gc2luZ2xldG9uIDEqKFwiLVwiICgyKjhhbHBoYW51bSkpXG4gICAgICAgICAgICAgICAgICAgICAgICA7IFNpbmdsZSBhbHBoYW51bWVyaWNzXG4gICAgICAgICAgICAgICAgICAgICAgICA7IFwieFwiIHJlc2VydmVkIGZvciBwcml2YXRlIHVzZVxuICovXG52YXIgZXh0ZW5zaW9uID0gXCIoXCIuY29uY2F0KHNpbmdsZXRvbiwgXCIoLVtBLVphLXowLTldezIsOH0pKylcIik7XG5cbi8qXG4gID0gXCJ4XCIgMSooXCItXCIgKDEqOGFscGhhbnVtKSlcbiAqL1xudmFyIHByaXZhdGV1c2UgPSAnKHgoLVtBLVphLXowLTldezEsOH0pKyknO1xuXG4vLyBpcnJlZ3VsYXIgdGFncyBkbyBub3QgbWF0Y2ggdGhlICdsYW5ndGFnJyBwcm9kdWN0aW9uIGFuZCB3b3VsZCBub3Rcbi8vIG90aGVyd2lzZSBiZSBjb25zaWRlcmVkICd3ZWxsLWZvcm1lZCcuIFRoZXNlIHRhZ3MgYXJlIGFsbCB2YWxpZCwgYnV0XG4vLyBtb3N0IGFyZSBkZXByZWNhdGVkIGluIGZhdm9yIG9mIG1vcmUgbW9kZXJuIHN1YnRhZ3Mgb3Igc3VidGFnIGNvbWJpbmF0aW9uXG5cbnZhciBpcnJlZ3VsYXIgPSAnKChlbi1HQi1vZWQpfChpLWFtaSl8KGktYm5uKXwoaS1kZWZhdWx0KXwoaS1lbm9jaGlhbil8JyArICcoaS1oYWspfChpLWtsaW5nb24pfChpLWx1eCl8KGktbWluZ28pfChpLW5hdmFqbyl8KGktcHduKXwoaS10YW8pfCcgKyAnKGktdGF5KXwoaS10c3UpfChzZ24tQkUtRlIpfChzZ24tQkUtTkwpfChzZ24tQ0gtREUpKSc7XG5cbi8vIHJlZ3VsYXIgdGFncyBtYXRjaCB0aGUgJ2xhbmd0YWcnIHByb2R1Y3Rpb24sIGJ1dCB0aGVpciBzdWJ0YWdzIGFyZSBub3Rcbi8vIGV4dGVuZGVkIGxhbmd1YWdlIG9yIHZhcmlhbnQgc3VidGFnczogdGhlaXIgbWVhbmluZyBpcyBkZWZpbmVkIGJ5XG4vLyB0aGVpciByZWdpc3RyYXRpb24gYW5kIGFsbCBvZiB0aGVzZSBhcmUgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBhIG
151vcmVcbi8vIG1vZGVybiBzdWJ0YWcgb3Igc2VxdWVuY2Ugb2Ygc3VidGFnc1xuXG52YXIgcmVndWxhciA9ICcoKGFydC1sb2piYW4pfChjZWwtZ2F1bGlzaCl8KG5vLWJvayl8KG5vLW55bil8KHpoLWd1b3l1KXwnICsgJyh6aC1oYWtrYSl8KHpoLW1pbil8KHpoLW1pbi1uYW4pfCh6aC14aWFuZykpJztcblxuLypcbiAgPSBpcnJlZ3VsYXIgICAgICAgICAgIDsgbm9uLXJlZHVuZGFudCB0YWdzIHJlZ2lzdGVyZWRcbiAgLyByZWd1bGFyICAgICAgICAgICAgIDsgZHVyaW5nIHRoZSBSRkMgMzA2NiBlcmFcblxuICovXG52YXIgZ3JhbmRmYXRoZXJlZCA9IFwiKFwiLmNvbmNhdChpcnJlZ3VsYXIsIFwifFwiKS5jb25jYXQocmVndWxhciwgXCIpXCIpO1xuXG4vKlxuICBSRkMgNTY0NiBkZWZpbmVzIGRlbGltaXRhdGlvbiBvZiBzdWJ0YWdzIHZpYSBhIGh5cGhlbjpcblxuICAgICAgXCJTdWJ0YWdcIiByZWZlcnMgdG8gYSBzcGVjaWZpYyBzZWN0aW9uIG9mIGEgdGFnLCBkZWxpbWl0ZWQgYnkgYVxuICAgICAgaHlwaGVuLCBzdWNoIGFzIHRoZSBzdWJ0YWdzICd6aCcsICdIYW50JywgYW5kICdDTicgaW4gdGhlIHRhZyBcInpoLVxuICAgICAgSGFudC1DTlwiLiAgRXhhbXBsZXMgb2Ygc3VidGFncyBpbiB0aGlzIGRvY3VtZW50IGFyZSBlbmNsb3NlZCBpblxuICAgICAgc2luZ2xlIHF1b3RlcyAoJ0hhbnQnKVxuXG4gIEhvd2V2ZXIsIHdlIG5lZWQgdG8gYWRkIFwiX1wiIHRvIG1haW50YWluIHRoZSBleGlzdGluZyBiZWhhdmlvdXIuXG4gKi9cbnZhciBkZWxpbWl0ZXIgPSAnKC18XyknO1xuXG4vKlxuICA9IGxhbmd1YWdlXG4gICAgW1wiLVwiIHNjcmlwdF1cbiAgICBbXCItXCIgcmVnaW9uXVxuICAgICooXCItXCIgdmFyaWFudClcbiAgICAqKFwiLVwiIGV4dGVuc2lvbilcbiAgICBbXCItXCIgcHJpdmF0ZXVzZV1cbiAqL1xudmFyIGxhbmd0YWcgPSBcIlwiLmNvbmNhdChsYW5ndWFnZSwgXCIoXCIpLmNvbmNhdChkZWxpbWl0ZXIpLmNvbmNhdChzY3JpcHQsIFwiKT8oXCIpLmNvbmNhdChkZWxpbWl0ZXIpLmNvbmNhdChyZWdpb24sIFwiKT8oXCIpLmNvbmNhdChkZWxpbWl0ZXIpLmNvbmNhdCh2YXJpYW50LCBcIikqKFwiKS5jb25jYXQoZGVsaW1pdGVyKS5jb25jYXQoZXh0ZW5zaW9uLCBcIikqKFwiKS5jb25jYXQoZGVsaW1pdGVyKS5jb25jYXQocHJpdmF0ZXVzZSwgXCIpP1wiKTtcblxuLypcbiAgUmVnZXggaW1wbGVtZW50YXRpb24gYmFzZWQgb24gQkNQIFJGQyA1NjQ2XG4gIFRhZ3MgZm9yIElkZW50aWZ5aW5nIExhbmd1YWdlc1xuICBodHRwczovL3d3dy5yZmMtZWRpdG9yLm9yZy9yZmMvcmZjNTY0Ni5odG1sXG4gKi9cbnZhciBsYW5ndWFnZVRhZ1JlZ2V4ID0gbmV3IFJlZ0V4cChcIiheXCIuY29uY2F0KHByaXZhdGV1c2UsIFwiJCl8KF5cIikuY29uY2F0KGdyYW5kZmF0aGVyZWQsIFwiJCl8KF5cIikuY29uY2F0KGxhbmd0YWcsIFwiJClcIikpO1xuZnVuY3Rpb24gaXNMb2NhbGUoc3RyKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nLmRlZmF1bHQpKHN0cik7XG4gIHJldHVybiBsYW5ndWFnZVRhZ1JlZ2V4LnRlc3Qoc3RyKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZh
15dWx0O1xubW9kdWxlLmV4cG9ydHMuZGVmYXVsdCA9IGV4cG9ydHMuZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzQWJhUm91dGluZztcbnZhciBfYXNzZXJ0U3RyaW5nID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlsL2Fzc2VydFN0cmluZ1wiKSk7XG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuLy8gaHR0cDovL3d3dy5icmFpbmphci5jb20vanMvdmFsaWRhdGlvbi9cbi8vIGh0dHBzOi8vd3d3LmFiYS5jb20vbmV3cy1yZXNlYXJjaC9yZXNlYXJjaC1hbmFseXNpcy9yb3V0aW5nLW51bWJlci1wb2xpY3ktcHJvY2VkdXJlc1xuLy8gc2VyaWVzIHJlc2VydmVkIGZvciBmdXR1cmUgdXNlIGFyZSBleGNsdWRlZFxudmFyIGlzUm91dGluZ1JlZyA9IC9eKD8hKDFbMy05XSl8KDIwKXwoM1szLTldKXwoNFswLTldKXwoNVswLTldKXwoNjApfCg3WzMtOV0pfCg4WzEtOV0pfCg5WzAtMl0pfCg5WzMtOV0pKVswLTldezl9JC87XG5mdW5jdGlvbiBpc0FiYVJvdXRpbmcoc3RyKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nLmRlZmF1bHQpKHN0cik7XG4gIGlmICghaXNSb3V0aW5nUmVnLnRlc3Qoc3RyKSkgcmV0dXJuIGZhbHNlO1xuICB2YXIgY2hlY2tTdW1WYWwgPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xuICAgIGlmIChpICUgMyA9PT0gMCkgY2hlY2tTdW1WYWwgKz0gc3RyW2ldICogMztlbHNlIGlmIChpICUgMyA9PT0gMSkgY2hlY2tTdW1WYWwgKz0gc3RyW2ldICogNztlbHNlIGNoZWNrU3VtVmFsICs9IHN0cltpXSAqIDE7XG4gIH1cbiAgcmV0dXJuIGNoZWNrU3VtVmFsICUgMTAgPT09IDA7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBleHBvcnRzLmRlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc0FscGhhO1xuZXhwb3J0cy5sb2NhbGVzID0gdm9pZCAwO1xudmFyIF9hc3NlcnRTdHJpbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWwvYXNzZXJ0U3RyaW5nXCIpKTtcbnZhciBfYWxwaGEgPSByZXF1aXJlKFwiLi9hbHBoYVwiKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5mdW5jdGlvbiBpc0FscGhhKF9zdHIpIHtcbiAgdmFyIGxvY2FsZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogJ2VuLVVTJztcbiAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IHt9O1xuICAoMCwgX2Fzc2VydFN0cmluZy5kZWZh
15dWx0KShfc3RyKTtcbiAgdmFyIHN0ciA9IF9zdHI7XG4gIHZhciBpZ25vcmUgPSBvcHRpb25zLmlnbm9yZTtcbiAgaWYgKGlnbm9yZSkge1xuICAgIGlmIChpZ25vcmUgaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgIHN0ciA9IHN0ci5yZXBsYWNlKGlnbm9yZSwgJycpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGlnbm9yZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHN0ciA9IHN0ci5yZXBsYWNlKG5ldyBSZWdFeHAoXCJbXCIuY29uY2F0KGlnbm9yZS5yZXBsYWNlKC9bLVtcXF17fSgpKis/LixcXFxcXiR8I1xcXFxzXS9nLCAnXFxcXCQmJyksIFwiXVwiKSwgJ2cnKSwgJycpOyAvLyBlc2NhcGUgcmVnZXggZm9yIGlnbm9yZVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2lnbm9yZSBzaG91bGQgYmUgaW5zdGFuY2Ugb2YgYSBTdHJpbmcgb3IgUmVnRXhwJyk7XG4gICAgfVxuICB9XG4gIGlmIChsb2NhbGUgaW4gX2FscGhhLmFscGhhKSB7XG4gICAgcmV0dXJuIF9hbHBoYS5hbHBoYVtsb2NhbGVdLnRlc3Qoc3RyKTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGxvY2FsZSAnXCIuY29uY2F0KGxvY2FsZSwgXCInXCIpKTtcbn1cbnZhciBsb2NhbGVzID0gZXhwb3J0cy5sb2NhbGVzID0gT2JqZWN0LmtleXMoX2FscGhhLmFscGhhKTsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzQWxwaGFudW1lcmljO1xuZXhwb3J0cy5sb2NhbGVzID0gdm9pZCAwO1xudmFyIF9hc3NlcnRTdHJpbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWwvYXNzZXJ0U3RyaW5nXCIpKTtcbnZhciBfYWxwaGEgPSByZXF1aXJlKFwiLi9hbHBoYVwiKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5mdW5jdGlvbiBpc0FscGhhbnVtZXJpYyhfc3RyKSB7XG4gIHZhciBsb2NhbGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6ICdlbi1VUyc7XG4gIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiB7fTtcbiAgKDAsIF9hc3NlcnRTdHJpbmcuZGVmYXVsdCkoX3N0cik7XG4gIHZhciBzdHIgPSBfc3RyO1xuICB2YXIgaWdub3JlID0gb3B0aW9ucy5pZ25vcmU7XG4gIGlmIChpZ25vcmUpIHtcbiAgICBpZiAoaWdub3JlIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgICBzdHIgPSBzdHIucmVwbGFjZShpZ25vcmUsICcnKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBpZ25vcmUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBzdHIgPSBzdHIucmVwbGFjZShuZXcgUmVnRXhwKFwiW1wiLmNvbmNhdChpZ25vcmUucmVwbGFjZSgvWy1bXFxde30oKSorPy4sXFxcXF4kfCNcXFxcc10vZywgJ1xcXFwkJicpLCBcIl1cIiksICdnJyksICcnKTsgLy8gZXNjYXBlIHJlZ2V4IGZvciBpZ25vcmVcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpZ25vcmUgc2hvdWxkIGJlIGluc3RhbmNlIG9mIGEgU3RyaW5nIG9yIFJlZ0V4cCcpO1xuICAgIH1cbiAgfVxuICBpZiAobG9jYWxlIGluIF9hbHBoYS5hbHBoYW51bWVyaWMpIHtcbiAgICByZXR1cm4gX2FscGhhLmFscGhhbnVtZXJpY1tsb2NhbGVdLnRlc3Qoc3RyKTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGxvY2FsZSAnXCIuY29uY2F0KGxvY2FsZSwgXCInXCIpKTtcbn1cbnZhciBsb2NhbGVzID0gZXhwb3J0cy5sb2NhbGVzID0gT2JqZWN0LmtleXMoX2FscGhhLmFscGhhbnVtZXJpYyk7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc051bWVyaWM7XG52YXIgX2Fzc2VydFN0cmluZyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vdXRpbC9hc3NlcnRTdHJpbmdcIikpO1xudmFyIF9hbHBoYSA9IHJlcXVpcmUoXCIuL2FscGhhXCIpO1xuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cbnZhciBudW1lcmljTm9TeW1ib2xzID0gL15bMC05XSskLztcbmZ1bmN0aW9uIGlzTnVtZXJpYyhzdHIsIG9wdGlvbnMpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcuZGVmYXVsdCkoc3RyKTtcbiAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5ub19zeW1ib2xzKSB7XG4gICAgcmV0dXJuIG51bWVyaWNOb1N5bWJvbHMudGVzdChzdHIpO1xuICB9XG4gIHJldHVybiBuZXcgUmVnRXhwKFwiXlsrLV0/KFswLTldKltcIi5jb25jYXQoKG9wdGlvbnMgfHwge30pLmxvY2FsZSA/IF9hbHBoYS5kZWNpbWFsW29wdGlvbnMubG9jYWxlXSA6ICcuJywgXCJdKT9bMC05XSskXCIpKS50ZXN0KHN0cik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBleHBvcnRzLmRlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc1Bhc3Nwb3J0TnVtYmVyO1xudmFyIF9hc3NlcnRTdHJpbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWwvYXNzZXJ0U3RyaW5nXCIpKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG4vKipcbiAqIFJlZmVyZW5jZTpcbiAqIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy8gLS0gV2lraXBlZGlhXG4gKiBodHRwczovL2RvY3MubWljcm9zb2Z0LmNvbS9lbi11cy9taWNyb3NvZnQtMzY1L2NvbXBsaWFuY2UvZXUtcGFzc3BvcnQtbnVtYmVyIC0tIEVVIFBhc3Nwb3J0IE51bWJlclxuICogaHR0cHM6Ly9jb3VudHJ5Y29kZS5vcmcvIC0tIENvdW50cnkgQ29kZXNcbiAqL1xudmFyIHBhc3Nwb3J0UmVnZXhCeUNvdW50cnlDb2RlID0ge1xuICBBTTogL15bQS1aXXsyfVxcZHs3fSQvLFxuICAvLyBBUk1FTklBXG4gIEFSOiAvXltBLVpdezN9XFxkezZ9JC8sXG4gIC8vIEFSR0VOVElOQVxuICBBVDogL15bQS1aXVxcZHs3fSQvLFxuICAvLyBBVVNUUklBXG4gIEFVOiAvXltBLVpdXFxkezd9JC8sXG4gIC8vIEFVU1RSQUxJQVxuICBBWjogL15bQS1aXXsxfVxcZHs4fSQvLFxuICAvLyBBWkVSQkFJSkFOXG4gIEJFOiAvXltBLVpdezJ9
15XFxkezZ9JC8sXG4gIC8vIEJFTEdJVU1cbiAgQkc6IC9eXFxkezl9JC8sXG4gIC8vIEJVTEdBUklBXG4gIEJSOiAvXltBLVpdezJ9XFxkezZ9JC8sXG4gIC8vIEJSQVpJTFxuICBCWTogL15bQS1aXXsyfVxcZHs3fSQvLFxuICAvLyBCRUxBUlVTXG4gIENBOiAvXltBLVpdezJ9XFxkezZ9JC8sXG4gIC8vIENBTkFEQVxuICBDSDogL15bQS1aXVxcZHs3fSQvLFxuICAvLyBTV0lUWkVSTEFORFxuICBDTjogL15HXFxkezh9JHxeRSg/IVtJT10pW0EtWjAtOV1cXGR7N30kLyxcbiAgLy8gQ0hJTkEgW0c9T3JkaW5hcnksIEU9RWxlY3Ryb25pY10gZm9sbG93ZWQgYnkgOC1kaWdpdHMsIG9yIEUgZm9sbG93ZWQgYnkgYW55IFVQUEVSQ0FTRSBsZXR0ZXIgKGV4Y2VwdCBJIGFuZCBPKSBmb2xsb3dlZCBieSA3IGRpZ2l0c1xuICBDWTogL15bQS1aXShcXGR7Nn18XFxkezh9KSQvLFxuICAvLyBDWVBSVVNcbiAgQ1o6IC9eXFxkezh9JC8sXG4gIC8vIENaRUNIIFJFUFVCTElDXG4gIERFOiAvXltDRkdISktMTU5QUlRWV1hZWjAtOV17OX0kLyxcbiAgLy8gR0VSTUFOWVxuICBESzogL15cXGR7OX0kLyxcbiAgLy8gREVOTUFSS1xuICBEWjogL15cXGR7OX0kLyxcbiAgLy8gQUxHRVJJQVxuICBFRTogL14oW0EtWl1cXGR7N318W0EtWl17Mn1cXGR7N30pJC8sXG4gIC8vIEVTVE9OSUEgKEsgZm9sbG93ZWQgYnkgNy1kaWdpdHMpLCBlLXBhc3Nwb3J0cyBoYXZlIDIgVVBQRVJDQVNFIGZvbGxvd2VkIGJ5IDcgZGlnaXRzXG4gIEVTOiAvXltBLVowLTldezJ9KFtBLVowLTldPylcXGR7Nn0kLyxcbiAgLy8gU1BBSU5cbiAgRkk6IC9eW0EtWl17Mn1cXGR7N30kLyxcbiAgLy8gRklOTEFORFxuICBGUjogL15cXGR7Mn1bQS1aXXsyfVxcZHs1fSQvLFxuICAvLyBGUkFOQ0VcbiAgR0I6IC9eXF
15xkezl9JC8sXG4gIC8vIFVOSVRFRCBLSU5HRE9NXG4gIEdSOiAvXltBLVpdezJ9XFxkezd9JC8sXG4gIC8vIEdSRUVDRVxuICBIUjogL15cXGR7OX0kLyxcbiAgLy8gQ1JPQVRJQVxuICBIVTogL15bQS1aXXsyfShcXGR7Nn18XFxkezd9KSQvLFxuICAvLyBIVU5HQVJZXG4gIElFOiAvXltBLVowLTldezJ9XFxkezd9JC8sXG4gIC8vIElSRUxBTkRcbiAgSU46IC9eW0EtWl17MX0tP1xcZHs3fSQvLFxuICAvLyBJTkRJQVxuICBJRDogL15bQS1DXVxcZHs3fSQvLFxuICAvLyBJTkRPTkVTSUFcbiAgSVI6IC9eW0EtWl1cXGR7OH0kLyxcbiAgLy8gSVJBTlxuICBJUzogL14oQSlcXGR7N30kLyxcbiAgLy8gSUNFTEFORFxuICBJVDogL15bQS1aMC05XXsyfVxcZHs3fSQvLFxuICAvLyBJVEFMWVxuICBKTTogL15bQWFdXFxkezd9JC8sXG4gIC8vIEpBTUFJQ0FcbiAgSlA6IC9eW0EtWl17Mn1cXGR7N30kLyxcbiAgLy8gSkFQQU5cbiAgS1I6IC9eW01TXVxcZHs4fSQvLFxuICAvLyBTT1VUSCBLT1JFQSwgUkVQVUJMSUMgT0YgS09SRUEsIFtTPVBTIFBhc3Nwb3J0cywgTT1QTSBQYXNzcG9ydHNdXG4gIEtaOiAvXlthLXpBLVpdXFxkezd9JC8sXG4gIC8vIEtBWkFLSFNUQU5cbiAgTEk6IC9eW2EtekEtWl1cXGR7NX0kLyxcbiAgLy8gTElFQ0hURU5TVEVJTlxuICBMVDogL15bQS1aMC05XXs4fSQvLFxuICAvLyBMSVRIVUFOSUFcbiAgTFU6IC9eW0EtWjAtOV17OH0kLyxcbiAgLy8gTFVYRU1CVVJHXG4gIExWOiAvXltBLVowLTldezJ9XFxkezd9JC8sXG4gIC8vIExBVFZJQVxuICBMWTogL15bQS1aMC05XXs4fSQvLFxuICAvLyBMSUJZQVxuICBNVDogL15cXGR7N30kLyxcbiAgLy8gTUFMVEFcbiAgTVo6IC9eKFtBLVpdezJ9XFxkezd9KXwoXFxkezJ9W0EtWl17Mn1cXGR7NX0pJC8sXG4gIC8vIE1PWkFNQklRVUVcbiAgTVk6IC9eW0FIS11cXGR7OH0kLyxcbiAgLy8gTUFMQVlTSUFcbiAgTVg6IC9eXFxkezEwLDExfSQvLFxuICAvLyBNRVhJQ09cbiAgTkw6IC9eW0EtWl17Mn1bQS1aMC05XXs2fVxcZCQvLFxuICAvLyBORVRIRVJMQU5EU1xuICBOWjogL14oW0xsXShbQWFdfFtEZF18W0ZmXXxbSGhdKXxbRWVdKFtBYV18W1BwXSl8W05uXSlcXGR7Nn0kLyxcbiAgLy8gTkVXIFpFQUxBTkRcbiAgUEg6IC9eKFtBLVpdKFxcZHs2fXxcXGR7N31bQS1aXSkpfChbQS1aXXsyfShcXGR7Nn18XFxkezd9KSkkLyxcbiAgLy8gUEhJTElQUElORVNcbiAgUEs6IC9eW0EtWl17Mn1cXGR7N30kLyxcbiAgLy8gUEFLSVNUQU5cbiAgUEw6IC9eW0EtWl17Mn1cXGR7N30kLyxcbiAgLy8gUE9MQU5EXG4gIFBUOiAvXltBLVpdXFxkezZ9JC8sXG4gIC8vIFBPUlRVR0FMXG4gIFJPOiAvXlxcZHs4LDl9JC8sXG4gIC8vIFJPTUFOSUFcbiAgUlU6IC9eXFxkezl9JC8sXG4gIC8vIFJVU1NJQU4gRkVERVJBVElPTlxuICBTRTogL15cXGR7OH0kLyxcbiAgLy8gU1dFREVOXG4gIFNMOiAvXihQKVtBLVpdXFxkezd9JC8sXG4gIC8vIFNMT1ZFTklBXG4gIFNLOiAvXlswLTlBLVpdXFxkezd9JC8sXG4gIC8vIFNMT1ZBS0lBXG4gIFRIOiAvXltBLVpdezEsMn1cXGR7Niw3fSQvLFxuICAvLyBUSEFJTEFORFxuICBUUjogL15bQS1aXVxcZHs4fSQvLFxuICAvLyBUVVJLRVlcbiAgVUE6IC9eW0EtWl17Mn1cXGR7Nn0kLyxcbiAgLy8gVUtSQUlORVxuICBVUzogL15cXGR7OX0kLyxcbiAgLy8gVU5JVEVEIFNUQVRFU1xuICBaQTogL15bVEFNRF1cXGR7OH0kLyAvLyBTT1VUSCBBRlJJQ0Fcbn07XG5cbi8qKlxuICogQ2hlY2sgaWYgc3RyIGlzIGEgdmFsaWQgcGFzc3BvcnQgbnVtYmVyXG4gKiByZWxhdGl2ZSB0byBwcm92aWRlZCBJU08gQ291bnRyeSBDb2RlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb3VudHJ5Q29kZVxuICogQHJldHVybiB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNQYXNzcG9ydE51bWJlcihzdHIsIGNvdW50cnlDb2RlKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nLmRlZmF1bHQpKHN0cik7XG4gIC8qKiBSZW1vdmUgQWxsIFdoaXRlc3BhY2VzLCBDb252ZXJ0IHRvIFVQUEVSQ0FTRSAqL1xuICB2YXIgbm9ybWFsaXplZFN0ciA9IHN0ci5yZXBsYWNlKC9cXHMvZywgJycpLnRvVXBwZXJDYXNlKCk7XG4gIHJldHVybiBjb3VudHJ5Q29kZS50b1VwcGVyQ2FzZSgpIGluIHBhc3Nwb3J0UmVnZXhCeUNvdW50cnlDb2RlICYmIHBhc3Nwb3J0UmVnZXhCeUNvdW50cnlDb2RlW2NvdW50cnlDb2RlXS50ZXN0KG5vcm1hbGl6ZWRTdHIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG5tb2R1bGUuZXhwb3J0cy5kZWZh
15dWx0ID0gZXhwb3J0cy5kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNJbnQ7XG52YXIgX2Fzc2VydFN0cmluZyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vdXRpbC9hc3NlcnRTdHJpbmdcIikpO1xuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cbnZhciBpbnQgPSAvXig/OlstK10/KD86MHxbMS05XVswLTldKikpJC87XG52YXIgaW50TGVhZGluZ1plcm9lcyA9IC9eWy0rXT9bMC05XSskLztcbmZ1bmN0aW9uIGlzSW50KHN0ciwgb3B0aW9ucykge1xuICAoMCwgX2Fzc2VydFN0cmluZy5kZWZhdWx0KShzdHIpO1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICAvLyBHZXQgdGhlIHJlZ2V4IHRvIHVzZSBmb3IgdGVzdGluZywgYmFzZWQgb24gd2hldGhlclxuICAvLyBsZWFkaW5nIHplcm9lcyBhcmUgYWxsb3dlZCBvciBub3QuXG4gIHZhciByZWdleCA9IG9wdGlvbnMuYWxsb3dfbGVhZGluZ196ZXJvZXMgPT09IGZhbHNlID8gaW50IDogaW50TGVhZGluZ1plcm9lcztcblxuICAvLyBDaGVjayBtaW4vbWF4L2x0L2d0XG4gIHZhciBtaW5DaGVja1Bhc3NlZCA9ICFvcHRpb25zLmhhc093blByb3BlcnR5KCdtaW4nKSB8fCBzdHIgPj0gb3B0aW9ucy5taW47XG4gIHZhciBtYXhDaGVja1Bhc3NlZCA9ICFvcHRpb25zLmhhc093blByb3BlcnR5KCdtYXgnKSB8fCBzdHIgPD0gb3B0aW9ucy5tYXg7XG4gIHZhciBsdENoZWNrUGFzc2VkID0gIW9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2x0JykgfHwgc3RyIDwgb3B0aW9ucy5sdDtcbiAgdmFyIGd0Q2hlY2tQYXNzZWQgPSAhb3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgnZ3QnKSB8fCBzdHIgPiBvcHRpb25zLmd0O1xuICByZXR1cm4gcmVnZXgudGVzdChzdHIpICYmIG1pbkNoZWNrUGFzc2VkICYmIG1heENoZWNrUGFzc2VkICYmIGx0Q2hlY2tQYXNzZWQgJiYgZ3RDaGVja1Bhc3NlZDtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZh
15dWx0O1xubW9kdWxlLmV4cG9ydHMuZGVmYXVsdCA9IGV4cG9ydHMuZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzUG9ydDtcbnZhciBfaXNJbnQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2lzSW50XCIpKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5mdW5jdGlvbiBpc1BvcnQoc3RyKSB7XG4gIHJldHVybiAoMCwgX2lzSW50LmRlZmF1bHQpKHN0ciwge1xuICAgIGFsbG93X2xlYWRpbmdfemVyb2VzOiBmYWxzZSxcbiAgICBtaW46IDAsXG4gICAgbWF4OiA2NTUzNVxuICB9KTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xubW9kdWxlLmV4cG9ydHMuZGVmYXVsdCA9IGV4cG9ydHMuZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzTG93ZXJjYXNlO1xudmFyIF9hc3NlcnRTdHJpbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWwvYXNzZXJ0U3RyaW5nXCIpKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5mdW5jdGlvbiBpc0xvd2VyY2FzZShzdHIpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcuZGVmYXVsdCkoc3RyKTtcbiAgcmV0dXJuIHN0ciA9PT0gc3RyLnRvTG93ZXJDYXNlKCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBleHBvcnRzLmRlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc1VwcGVyY2FzZTtcbnZhciBfYXNzZXJ0U3RyaW5nID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlsL2Fzc2VydFN0cmluZ1wiKSk7XG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuZnVuY3Rpb24gaXNVcHBlcmNhc2Uoc3RyKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nLmRlZmF1bHQpKHN0cik7XG4gIHJldHVybiBzdHIgPT09IHN0ci50b1VwcGVyQ2FzZSgpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG5tb2R1bGUuZXhwb3J0cy5kZWZh
15dWx0ID0gZXhwb3J0cy5kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNJTUVJO1xudmFyIF9hc3NlcnRTdHJpbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWwvYXNzZXJ0U3RyaW5nXCIpKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG52YXIgaW1laVJlZ2V4V2l0aG91dEh5cGVucyA9IC9eWzAtOV17MTV9JC87XG52YXIgaW1laVJlZ2V4V2l0aEh5cGVucyA9IC9eXFxkezJ9LVxcZHs2fS1cXGR7Nn0tXFxkezF9JC87XG5mdW5jdGlvbiBpc0lNRUkoc3RyLCBvcHRpb25zKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nLmRlZmF1bHQpKHN0cik7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gIC8vIGRlZmF1bHQgcmVnZXggZm9yIGNoZWNraW5nIGltZWkgaXMgdGhlIG9uZSB3aXRob3V0IGh5cGhlbnNcblxuICB2YXIgaW1laVJlZ2V4ID0gaW1laVJlZ2V4V2l0aG91dEh5cGVucztcbiAgaWYgKG9wdGlvbnMuYWxsb3dfaHlwaGVucykge1xuICAgIGltZWlSZWdleCA9IGltZWlSZWdleFdpdGhIeXBlbnM7XG4gIH1cbiAgaWYgKCFpbWVpUmVnZXgudGVzdChzdHIpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHN0ciA9IHN0ci5yZXBsYWNlKC8tL2csICcnKTtcbiAgdmFyIHN1bSA9IDAsXG4gICAgbXVsID0gMixcbiAgICBsID0gMTQ7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgdmFyIGRpZ2l0ID0gc3RyLnN1YnN0cmluZyhsIC0gaSAtIDEsIGwgLSBpKTtcbiAgICB2YXIgdHAgPSBwYXJzZUludChkaWdpdCwgMTApICogbXVsO1xuICAgIGlmICh0cCA+PSAxMCkge1xuICAgICAgc3VtICs9IHRwICUgMTAgKyAxO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdW0gKz0gdHA7XG4gICAgfVxuICAgIGlmIChtdWwgPT09IDEpIHtcbiAgICAgIG11bCArPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICBtdWwgLT0gMTtcbiAgICB9XG4gIH1cbiAgdmFyIGNoayA9ICgxMCAtIHN1bSAlIDEwKSAlIDEwO1xuICBpZiAoY2hrICE9PSBwYXJzZUludChzdHIuc3Vic3RyaW5nKDE0LCAxNSksIDEwKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZh
15dWx0O1xubW9kdWxlLmV4cG9ydHMuZGVmYXVsdCA9IGV4cG9ydHMuZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzQXNjaWk7XG52YXIgX2Fzc2VydFN0cmluZyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vdXRpbC9hc3NlcnRTdHJpbmdcIikpO1xuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnRyb2wtcmVnZXggKi9cbnZhciBhc2NpaSA9IC9eW1xceDAwLVxceDdGXSskLztcbi8qIGVzbGludC1lbmFibGUgbm8tY29udHJvbC1yZWdleCAqL1xuXG5mdW5jdGlvbiBpc0FzY2lpKHN0cikge1xuICAoMCwgX2Fzc2VydFN0cmluZy5kZWZhdWx0KShzdHIpO1xuICByZXR1cm4gYXNjaWkudGVzdChzdHIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG5tb2R1bGUuZXhwb3J0cy5kZWZhdWx0ID0gZXhwb3J0cy5kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNGdWxsV2lkdGg7XG5leHBvcnRzLmZ1bGxXaWR0aCA9IHZvaWQgMDtcbnZhciBfYXNzZXJ0U3RyaW5nID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlsL2Fzc2VydFN0cmluZ1wiKSk7XG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxudmFyIGZ1bGxXaWR0aCA9IGV4cG9ydHMuZnVsbFdpZHRoID0gL1teXFx1MDAyMC1cXHUwMDdFXFx1RkY2MS1cXHVGRjlGXFx1RkZBMC1cXHVGRkRDXFx1RkZFOC1cXHVGRkVFMC05YS16QS1aXS87XG5mdW5jdGlvbiBpc0Z1bGxXaWR0aChzdHIpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcuZGVmYXVsdCkoc3RyKTtcbiAgcmV0dXJuIGZ1bGxXaWR0aC50ZXN0KHN0cik7XG59IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc0hhbGZXaWR0aDtcbmV4cG9ydHMuaGFsZldpZHRoID0gdm9pZCAwO1xudmFyIF9hc3NlcnRTdHJpbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWwvYXNzZXJ0U3RyaW5nXCIpKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG52YXIgaGFsZldpZHRoID0gZXhwb3J0cy5oYWxmV2lkdGggPSAvW1xcdTAwMjAtXFx1MDA3RVxcdUZGNjEtXFx1RkY5RlxcdUZGQTAtXFx1RkZEQ1xcdUZGRTgtXFx1RkZFRTAtOWEtekEtWl0vO1xuZnVuY3Rpb24gaXNIYWxmV2lkdGgoc3RyKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nLmRlZmF1bHQpKHN0cik7XG4gIHJldHVybiBoYWxmV2lkdGgudGVzdChzdHIpO1xufSIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZh
15dWx0ID0gaXNWYXJpYWJsZVdpZHRoO1xudmFyIF9hc3NlcnRTdHJpbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWwvYXNzZXJ0U3RyaW5nXCIpKTtcbnZhciBfaXNGdWxsV2lkdGggPSByZXF1aXJlKFwiLi9pc0Z1bGxXaWR0aFwiKTtcbnZhciBfaXNIYWxmV2lkdGggPSByZXF1aXJlKFwiLi9pc0hhbGZXaWR0aFwiKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5mdW5jdGlvbiBpc1ZhcmlhYmxlV2lkdGgoc3RyKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nLmRlZmF1bHQpKHN0cik7XG4gIHJldHVybiBfaXNGdWxsV2lkdGguZnVsbFdpZHRoLnRlc3Qoc3RyKSAmJiBfaXNIYWxmV2lkdGguaGFsZldpZHRoLnRlc3Qoc3RyKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xubW9kdWxlLmV4cG9ydHMuZGVmYXVsdCA9IGV4cG9ydHMuZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzTXVsdGlieXRlO1xudmFyIF9hc3NlcnRTdHJpbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWwvYXNzZXJ0U3RyaW5nXCIpKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jb250cm9sLXJlZ2V4ICovXG52YXIgbXVsdGlieXRlID0gL1teXFx4MDAtXFx4N0ZdLztcbi8qIGVzbGludC1lbmFibGUgbm8tY29udHJvbC1yZWdleCAqL1xuXG5mdW5jdGlvbiBpc011bHRpYnl0ZShzdHIpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcuZGVmYXVsdCkoc3RyKTtcbiAgcmV0dXJuIG11bHRpYnl0ZS50ZXN0KHN0cik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBleHBvcnRzLmRlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBtdWx0aWxpbmVSZWdleHA7XG4vKipcbiAqIEJ1aWxkIFJlZ0V4cCBvYmplY3QgZnJvbSBhbiBhcnJheVxuICogb2YgbXVsdGlwbGUvbXVsdGktbGluZSByZWdleHAgcGFydHNcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBwYXJ0c1xuICogQHBhcmFtIHtzdHJpbmd9IGZsYWdzXG4gKiBAcmV0dXJuIHtvYmplY3R9IC0gUmVnRXhwIG9iamVjdFxuICovXG5mdW5jdGlvbiBtdWx0aWxpbmVSZWdleHAocGFydHMsIGZsYWdzKSB7XG4gIHZhciByZWdleHBBc1N0cmluZ0xpdGVyYWwgPSBwYXJ0cy5qb2luKCcnKTtcbiAgcmV0dXJuIG5ldyBSZWdFeHAocmVnZXhwQXNTdHJpbmdMaXRlcmFsLCBmbGFncyk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBleHBvcnRzLmRlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc1NlbVZlcjtcbnZhciBfYXNzZXJ0U3RyaW5nID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlsL2Fzc2VydFN0cmluZ1wiKSk7XG52YXIgX211bHRpbGluZVJlZ2V4ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlsL211bHRpbGluZVJlZ2V4XCIpKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG4vKipcbiAqIFJlZ3VsYXIgRXhwcmVzc2lvbiB0byBtYXRjaFxuICogc2VtYW50aWMgdmVyc2lvbmluZyAoU2VtVmVyKVxuICogYnVpbHQgZnJvbSBtdWx0aS1saW5lLCBtdWx0aS1wYXJ0cyByZWdleHBcbiAqIFJlZmVyZW5jZTogaHR0cHM6Ly9zZW12ZXIub3JnL1xuICovXG52YXIgc2VtYW50aWNWZXJzaW9uaW5nUmVnZXggPSAoMCwgX211bHRpbGluZVJlZ2V4LmRlZmF1bHQpKFsnXigwfFsxLTldXFxcXGQqKVxcXFwuKDB8WzEtOV1cXFxcZCopXFxcXC4oMHxbMS05XVxcXFxkKiknLCAnKD86LSgoPzowfFsxLTldXFxcXGQqfFxcXFxkKlthLXotXVswLTlhLXotXSopKD86XFxcXC4oPzowfFsxLTldXFxcXGQqfFxcXFxkKlthLXotXVswLTlhLXotXSopKSopKScsICc/KD86XFxcXCsoWzAtOWEtei1dKyg/OlxcXFwuWzAtOWEtei1dKykqKSk/JCddLCAnaScpO1xuZnVuY3Rpb24gaXNTZW1WZXIoc3RyKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nLmRlZmF1bHQpKHN0cik7XG4gIHJldHVybiBzZW1hbnRpY1ZlcnNpb25pbmdSZWdleC50ZXN0KHN0cik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBleHBvcnRzLmRlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc1N1cnJvZ2F0ZVBhaXI7XG52YXIgX2Fzc2VydFN0cmluZyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vdXRpbC9hc3NlcnRTdHJpbmdcIikpO1xuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cbnZhciBzdXJyb2dhdGVQYWlyID0gL1tcXHVEODAwLVxcdURCRkZdW1xcdURDMDAtXFx1REZGRl0vO1xuZnVuY3Rpb24gaXNTdXJyb2dhdGVQYWlyKHN0cikge1xuICAoMCwgX2Fzc2VydFN0cmluZy5kZWZh
15dWx0KShzdHIpO1xuICByZXR1cm4gc3Vycm9nYXRlUGFpci50ZXN0KHN0cik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBleHBvcnRzLmRlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG52YXIgaW5jbHVkZXMgPSBmdW5jdGlvbiBpbmNsdWRlcyhhcnIsIHZhbCkge1xuICByZXR1cm4gYXJyLnNvbWUoZnVuY3Rpb24gKGFyclZhbCkge1xuICAgIHJldHVybiB2YWwgPT09IGFyclZhbDtcbiAgfSk7XG59O1xudmFyIF9kZWZhdWx0ID0gZXhwb3J0cy5kZWZhdWx0ID0gaW5jbHVkZXM7XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBleHBvcnRzLmRlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc0RlY2ltYWw7XG52YXIgX21lcmdlID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlsL21lcmdlXCIpKTtcbnZhciBfYXNzZXJ0U3RyaW5nID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlsL2Fzc2VydFN0cmluZ1wiKSk7XG52YXIgX2luY2x1ZGVzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlsL2luY2x1ZGVzXCIpKTtcbnZhciBfYWxwaGEgPSByZXF1aXJlKFwiLi9hbHBoYVwiKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5mdW5jdGlvbiBkZWNpbWFsUmVnRXhwKG9wdGlvbnMpIHtcbiAgdmFyIHJlZ0V4cCA9IG5ldyBSZWdFeHAoXCJeWy0rXT8oWzAtOV0rKT8oXFxcXFwiLmNvbmNhdChfYWxwaGEuZGVjaW1hbFtvcHRpb25zLmxvY2FsZV0sIFwiWzAtOV17XCIpLmNvbmNhdChvcHRpb25zLmRlY2ltYWxfZGlnaXRzLCBcIn0pXCIpLmNvbmNhdChvcHRpb25zLmZvcmNlX2RlY2ltYWwgPyAnJyA6ICc/JywgXCIkXCIpKTtcbiAgcmV0dXJuIHJlZ0V4cDtcbn1cbnZhciBkZWZhdWx0X2RlY2ltYWxfb3B0aW9ucyA9IHtcbiAgZm9yY2VfZGVjaW1hbDogZmFsc2UsXG4gIGRlY2ltYWxfZGlnaXRzOiAnMSwnLFxuICBsb2NhbGU6ICdlbi1VUydcbn07XG52YXIgYmxhY2tsaXN0ID0gWycnLCAnLScsICcrJ107XG5mdW5jdGlvbiBpc0RlY2ltYWwoc3RyLCBvcHRpb25zKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nLmRlZmF1bHQpKHN0cik7XG4gIG9wdGlvbnMgPSAoMCwgX21lcmdlLmRlZmF1bHQpKG9wdGlvbnMsIGRlZmF1bHRfZGVjaW1hbF9vcHRpb25zKTtcbiAgaWYgKG9wdGlvbnMubG9jYWxlIGluIF9hbHBoYS5kZWNpbWFsKSB7XG4gICAgcmV0dXJuICEoMCwgX2luY2x1ZGVzLmRlZmF1bHQpKGJsYWNrbGlzdCwgc3RyLnJlcGxhY2UoLyAvZywgJycpKSAmJi
15BkZWNpbWFsUmVnRXhwKG9wdGlvbnMpLnRlc3Qoc3RyKTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGxvY2FsZSAnXCIuY29uY2F0KG9wdGlvbnMubG9jYWxlLCBcIidcIikpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG5tb2R1bGUuZXhwb3J0cy5kZWZhdWx0ID0gZXhwb3J0cy5kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNIZXhhZGVjaW1hbDtcbnZhciBfYXNzZXJ0U3RyaW5nID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlsL2Fzc2VydFN0cmluZ1wiKSk7XG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxudmFyIGhleGFkZWNpbWFsID0gL14oMHh8MGgpP1swLTlBLUZdKyQvaTtcbmZ1bmN0aW9uIGlzSGV4YWRlY2ltYWwoc3RyKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nLmRlZmF1bHQpKHN0cik7XG4gIHJldHVybiBoZXhhZGVjaW1hbC50ZXN0KHN0cik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBleHBvcnRzLmRlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc09jdGFsO1xudmFyIF9hc3NlcnRTdHJpbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWwvYXNzZXJ0U3RyaW5nXCIpKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG52YXIgb2N0YWwgPSAvXigwbyk/WzAtN10rJC9pO1xuZnVuY3Rpb24gaXNPY3RhbChzdHIpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcuZGVmYXVsdCkoc3RyKTtcbiAgcmV0dXJuIG9jdGFsLnRlc3Qoc3RyKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZh
15dWx0O1xubW9kdWxlLmV4cG9ydHMuZGVmYXVsdCA9IGV4cG9ydHMuZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzRGl2aXNpYmxlQnk7XG52YXIgX2Fzc2VydFN0cmluZyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vdXRpbC9hc3NlcnRTdHJpbmdcIikpO1xudmFyIF90b0Zsb2F0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi90b0Zsb2F0XCIpKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5mdW5jdGlvbiBpc0RpdmlzaWJsZUJ5KHN0ciwgbnVtKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nLmRlZmF1bHQpKHN0cik7XG4gIHJldHVybiAoMCwgX3RvRmxvYXQuZGVmYXVsdCkoc3RyKSAlIHBhcnNlSW50KG51bSwgMTApID09PSAwO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG5tb2R1bGUuZXhwb3J0cy5kZWZhdWx0ID0gZXhwb3J0cy5kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNIZXhDb2xvcjtcbnZhciBfYXNzZXJ0U3RyaW5nID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlsL2Fzc2VydFN0cmluZ1wiKSk7XG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxudmFyIGhleGNvbG9yID0gL14jPyhbMC05QS1GXXszfXxbMC05QS1GXXs0fXxbMC05QS1GXXs2fXxbMC05QS1GXXs4fSkkL2k7XG5mdW5jdGlvbiBpc0hleENvbG9yKHN0cikge1xuICAoMCwgX2Fzc2VydFN0cmluZy5kZWZh
15dWx0KShzdHIpO1xuICByZXR1cm4gaGV4Y29sb3IudGVzdChzdHIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG5tb2R1bGUuZXhwb3J0cy5kZWZhdWx0ID0gZXhwb3J0cy5kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNSZ2JDb2xvcjtcbnZhciBfYXNzZXJ0U3RyaW5nID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlsL2Fzc2VydFN0cmluZ1wiKSk7XG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxudmFyIHJnYkNvbG9yID0gL15yZ2JcXCgoKFswLTldfFsxLTldWzAtOV18MVswLTldWzAtOV18MlswLTRdWzAtOV18MjVbMC01XSksKXsyfShbMC05XXxbMS05XVswLTldfDFbMC05XVswLTldfDJbMC00XVswLTldfDI1WzAtNV0pXFwpJC87XG52YXIgcmdiYUNvbG9yID0gL15yZ2JhXFwoKChbMC05XXxbMS05XVswLTldfDFbMC05XVswLTldfDJbMC00XVswLTldfDI1WzAtNV0pLCl7M30oMD9cXC5cXGR8MShcXC4wKT98MChcXC4wKT8pXFwpJC87XG52YXIgcmdiQ29sb3JQZXJjZW50ID0gL15yZ2JcXCgoKFswLTldJXxbMS05XVswLTldJXwxMDAlKSwpezJ9KFswLTldJXxbMS05XVswLTldJXwxMDAlKVxcKSQvO1xudmFyIHJnYmFDb2xvclBlcmNlbnQgPSAvXnJnYmFcXCgoKFswLTldJXxbMS05XVswLTldJXwxMDAlKSwpezN9KDA/XFwuXFxkfDEoXFwuMCk/fDAoXFwuMCk/KVxcKSQvO1xuZnVuY3Rpb24gaXNSZ2JDb2xvcihzdHIpIHtcbiAgdmFyIGluY2x1ZGVQZXJjZW50VmFsdWVzID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB0cnVlO1xuICAoMCwgX2Fzc2VydFN0cmluZy5kZWZh
15dWx0KShzdHIpO1xuICBpZiAoIWluY2x1ZGVQZXJjZW50VmFsdWVzKSB7XG4gICAgcmV0dXJuIHJnYkNvbG9yLnRlc3Qoc3RyKSB8fCByZ2JhQ29sb3IudGVzdChzdHIpO1xuICB9XG4gIHJldHVybiByZ2JDb2xvci50ZXN0KHN0cikgfHwgcmdiYUNvbG9yLnRlc3Qoc3RyKSB8fCByZ2JDb2xvclBlcmNlbnQudGVzdChzdHIpIHx8IHJnYmFDb2xvclBlcmNlbnQudGVzdChzdHIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG5tb2R1bGUuZXhwb3J0cy5kZWZhdWx0ID0gZXhwb3J0cy5kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNIU0w7XG52YXIgX2Fzc2VydFN0cmluZyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vdXRpbC9hc3NlcnRTdHJpbmdcIikpO1xuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cbnZhciBoc2xDb21tYSA9IC9eaHNsYT9cXCgoKFxcK3xcXC0pPyhbMC05XSsoXFwuWzAtOV0rKT8oZShcXCt8XFwtKT9bMC05XSspP3xcXC5bMC05XSsoZShcXCt8XFwtKT9bMC05XSspPykpKGRlZ3xncmFkfHJhZHx0dXJuKT8oLChcXCt8XFwtKT8oWzAtOV0rKFxcLlswLTldKyk/KGUoXFwrfFxcLSk/WzAtOV0rKT98XFwuWzAtOV0rKGUoXFwrfFxcLSk/WzAtOV0rKT8pJSl7Mn0oLCgoXFwrfFxcLSk/KFswLTldKyhcXC5bMC05XSspPyhlKFxcK3xcXC0pP1swLTldKyk/fFxcLlswLTldKyhlKFxcK3xcXC0pP1swLTldKyk/KSU/KSk/XFwpJC9pO1xudmFyIGhzbFNwYWNlID0gL15oc2xhP1xcKCgoXFwrfFxcLSk/KFswLTldKyhcXC5bMC05XSspPyhlKFxcK3xcXC0pP1swLTldKyk/fFxcLlswLTldKyhlKFxcK3xcXC0pP1swLTldKyk/KSkoZGVnfGdyYWR8cmFkfHR1cm4pPyhcXHMoXFwrfFxcLSk/KFswLTldKyhcXC5bMC05XSspPyhlKFxcK3xcXC0pP1swLTldKyk/fFxcLlswLTldKyhlKFxcK3xcXC0pP1swLTldKyk/KSUpezJ9XFxzPyhcXC9cXHMoKFxcK3xcXC0pPyhbMC05XSsoXFwuWzAtOV0rKT8oZShcXCt8XFwtKT9bMC05XSspP3xcXC5bMC05XSsoZShcXCt8XFwtKT9bMC05XSspPyklPylcXHM/KT9cXCkkL2k7XG5mdW5jdGlvbiBpc0hTTChzdHIpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcuZGVmYXVsdCkoc3RyKTtcblxuICAvLyBTdHJpcCBkdXBsaWNhdGUgc3BhY2VzIGJlZm9yZSBjYWxsaW5nIHRoZSB2YWxpZGF0aW9uIHJlZ2V4IChTZWUgICMxNTk4IGZvciBtb3JlIGluZm8pXG4gIHZhciBzdHJpcHBlZFN0ciA9IHN0ci5yZXBsYWNlKC9cXHMrL2csICcgJykucmVwbGFjZSgvXFxzPyhoc2xhP1xcKHxcXCl8LClcXHM/L2lnLCAnJDEnKTtcbiAgaWYgKHN0cmlwcGVkU3RyLmluZGV4T2YoJywnKSAhPT0gLTEpIHtcbiAgICByZXR1cm4gaHNsQ29tbWEudGVzdChzdHJpcHBlZFN0cik7XG4gIH1cbiAgcmV0dXJuIGhzbFNwYWNlLnRlc3Qoc3RyaXBwZWRTdHIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG5tb2R1bGUuZXhwb3J0cy5kZWZh
15dWx0ID0gZXhwb3J0cy5kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNJU1JDO1xudmFyIF9hc3NlcnRTdHJpbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWwvYXNzZXJ0U3RyaW5nXCIpKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG4vLyBzZWUgaHR0cDovL2lzcmMuaWZwaS5vcmcvZW4vaXNyYy1zdGFuZGFyZC9jb2RlLXN5bnRheFxudmFyIGlzcmMgPSAvXltBLVpdezJ9WzAtOUEtWl17M31cXGR7Mn1cXGR7NX0kLztcbmZ1bmN0aW9uIGlzSVNSQyhzdHIpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcuZGVmYXVsdCkoc3RyKTtcbiAgcmV0dXJuIGlzcmMudGVzdChzdHIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG5tb2R1bGUuZXhwb3J0cy5kZWZhdWx0ID0gZXhwb3J0cy5kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNJQkFOO1xuZXhwb3J0cy5sb2NhbGVzID0gdm9pZCAwO1xudmFyIF9hc3NlcnRTdHJpbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWwvYXNzZXJ0U3RyaW5nXCIpKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG4vKipcbiAqIExpc3Qgb2YgY291bnRyeSBjb2RlcyB3aXRoXG4gKiBjb3JyZXNwb25kaW5nIElCQU4gcmVndWxhciBleHByZXNzaW9uXG4gKiBSZWZlcmVuY2U6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ludGVybmF0aW9uYWxfQmFua19BY2NvdW50X051bWJlclxuICovXG52YXIgaWJhblJlZ2V4VGhyb3VnaENvdW50cnlDb2RlID0ge1xuICBBRDogL14oQURbMC05XXsyfSlcXGR7OH1bQS1aMC05XXsxMn0kLyxcbiAgQUU6IC9eKEFFWzAtOV17Mn0pXFxkezN9XFxkezE2fSQvLFxuICBBTDogL14oQUxbMC05XXsyfSlcXGR7OH1bQS1aMC05XXsxNn0kLyxcbiAgQVQ6IC9eKEFUWzAtOV17Mn0pXFxkezE2fSQvLFxuICBBWjogL14oQVpbMC05XXsyfSlbQS1aMC05XXs0fVxcZHsyMH0kLyxcbiAgQkE6IC9eKEJBWzAtOV17Mn0pXFxkezE2fSQvLFxuICBCRTogL14oQkVbMC05XXsyfSlcXGR7MTJ9JC8sXG4gIEJHOiAvXihCR1swLTldezJ9KVtBLVpdezR9XFxkezZ9W0EtWjAtOV17OH0kLyxcbiAgQkg6IC9eKEJIWzAtOV17Mn0pW0EtWl17NH1bQS1aMC05XXsxNH0kLyxcbiAgQlI6IC9eKEJSWzAtOV17Mn0pXFxkezIzfVtBLVpdezF9W0EtWjAtOV17MX0kLyxcbiAgQlk6IC9eKEJZWzAtOV17Mn0pW0EtWjAtOV17NH1cXGR7MjB9JC8sXG4gIENIOiAvXihDSFswLTldezJ9KVxcZHs1fVtBLVowLTldezEyfSQvLFxuICBDUjogL14oQ1JbMC05XXsyfSlcXGR7MTh9JC8sXG4gIENZOiAvXihDWVswLTldezJ9KVxcZHs4fVtBLVowLTldezE2fSQvLFxuICBDWjogL14oQ1pbMC05XXsyfSlcXGR7MjB9JC8sXG4gIERFOiAvXihERVswLTldezJ9KVxcZHsxOH0kLyxcbiAgREs6IC9eKERLWzAtOV17Mn0pXFxkezE0fSQvLFxuICBETzogL14oRE9bMC05XXsyfSlbQS1aXXs0fVxcZHsyMH0kLyxcbiAgRFo6IC9eKERaXFxkezI0fSkkLyxcbiAgRUU6IC9eKEVFWzAtOV17Mn0pXFxkezE2fSQvLFxuICBFRzogL14oRUdbMC05XXsyfSlcXGR7MjV9JC8sXG4gIEVTOiAvXihFU1swLTldezJ9KVxcZHsyMH0kLyxcbiAgRkk6IC9eKEZJWzAtOV17Mn0pXFxkezE0fSQvLFxuICBGTzogL14oRk9bMC05XXsyfSlcXGR7MTR9JC8sXG4gIEZSOiAvXihGUlswLTldezJ9KVxcZHsxMH1bQS1aMC05XXsxMX1cXGR7Mn0kLyxcbiAgR0I6IC9eKEdCWzAtOV17Mn0pW0EtWl17NH1cXGR7MTR9JC8sXG4gIEdFOiAvXihHRVswLTldezJ9KVtBLVowLTldezJ9XFxkezE2fSQvLFxuICBHSTogL14oR0lbMC05XXsyfSlbQS1aXXs0fVtBLVowLTldezE1fSQvLFxuICBHTDogL14oR0xbMC05XXsyfSlcXGR7MTR9JC8sXG4gIEdSOiAvXihHUlswLTldezJ9KVxcZHs3fVtBLVowLTldezE2fSQvLFxuICBHVDogL14oR1RbMC05XXsyfSlbQS1aMC05XXs0fVtBLVowLTldezIwfSQvLFxuICBIUjogL14oSFJbMC05XXsyfSlcXGR7MTd9JC8sXG4gIEhVOiAvXihIVVswLTldezJ9KVxcZHsyNH0kLyxcbiAgSUU6IC9eKElFWzAtOV17Mn0pW0EtWjAtOV17NH1cXGR7MTR9JC8sXG4gIElMOiAvXihJTFswLTldezJ9KVxcZHsxOX0kLyxcbiAgSVE6IC9eKElRWzAtOV17Mn0pW0EtWl17NH1cXGR7MTV9JC8sXG4gIElSOiAvXihJUlswLTldezJ9KTBcXGR7Mn0wXFxkezE4fSQvLFxuICBJUzogL14oSVNbMC05XXsyfSlcXGR7MjJ9JC8sXG4gIElUOiAvXihJVFswLTldezJ9KVtBLVpdezF9XFxkezEwfVtBLVowLTldezEyfSQvLFxuICBKTzogL14oSk9bMC05XXsyfSlbQS1aXXs0fVxcZHsyMn0kLyxcbiAgS1c6IC9eKEtXWzAtOV17Mn0pW0EtWl17NH1bQS1aMC05XXsyMn0kLyxcbiAgS1o6IC9eKEtaWzAtOV17Mn0pXFxkezN9W0EtWjAtOV17MTN9JC8sXG4gIExCOiAvXihMQlswLTldezJ9KVxcZHs0fVtBLVowLTldezIwfSQvLFxuICBMQzogL14oTENbMC05XXsyfSlbQS1aXXs0fVtBLVowLTldezI0fSQvLFxuICBMSTogL14oTElbMC05XXsyfSlcXGR7NX1bQS1aMC05XXsxMn0kLyxcbiAgTFQ6IC9eKExUWzAtOV17Mn0pXFxkezE2fSQvLFxuICBMVTogL14oTFVbMC05XXsyfSlcXGR7M31bQS1aMC05XXsxM30kLyxcbiAgTFY6IC9eKExWWzAtOV17Mn0pW0EtWl17NH1bQS1aMC05XXsxM30kLyxcbiAgTUE6IC9eKE1BWzAtOV17MjZ9KSQvLFxuICBNQzogL14oTUNbMC05XXsyfSlcXGR7MTB9W0EtWjAtOV17MTF9XFxkezJ9JC8sXG4gIE1EOiAvXihNRFswLTldezJ9KVtBLVowLTldezIwfSQvLFxuICBNRTogL14oTUVbMC05XXsyfSlcXGR7MTh9JC8sXG4gIE1LOiAvXihNS1swLTldezJ9KVxcZHszfVtBLVowLTldezEwfVxcZHsyfSQvLFxuICBNUjogL14oTVJbMC05XXsyfSlcXGR7MjN9JC8sXG4gIE1UOiAvXihNVFswLTldezJ9KVtBLVpdezR9XFxkezV9W0EtWjAtOV17MTh9JC8sXG4gIE1VOiAvXihNVVswLTldezJ9KVtBLVpdezR9XFxkezE5fVtBLVpdezN9JC8sXG4gIE1aOiAvXihNWlswLTldezJ9KVxcZHsyMX0kLyxcbiAgTkw6IC9eKE5MWzAtOV17Mn0pW0EtWl17NH1cXGR7MTB9JC8sXG4gIE5POiAvXihOT1swLTldezJ9KVxcZHsxMX0kLyxcbiAgUEs6IC9eKFBLWzAtOV17Mn0pW0EtWjAtOV17NH1cXGR7MTZ9JC8sXG4gIFBMOiAvXihQTFswLTldezJ9KVxcZHsyNH0kLyxcbiAgUFM6IC9eKFBTWzAtOV17Mn0pW0EtWjAtOV17NH1cXGR7MjF9JC8sXG4gIFBUOiAvXihQVFswLTldezJ9KVxcZHsyMX0kLyxcbiAgUUE6IC9eKFFBWzAtOV17Mn0pW0EtWl17NH1bQS1aMC05XXsyMX0kLyxcbiAgUk86IC9eKFJPWzAtOV17Mn0pW0EtWl17NH1bQS1aMC05XXsxNn0kLyxcbiAgUlM6IC9eKFJTWzAtOV17Mn0pXFxkezE4fSQvLFxuICBTQTogL14oU0FbMC05XXsyfSlcXGR7Mn1bQS1aMC05XXsxOH0kLyxcbiAgU0M6IC9eKFNDWzAtOV17Mn0pW0EtWl17NH1cXGR7MjB9W0EtWl17M30kLyxcbiAgU0U6IC9eKFNFWzAtOV17Mn0pXFxkezIwfSQvLFxuICBTSTogL14oU0lbMC05XXsyfSlcXGR7MTV9JC8sXG4gIFNLOiAvXihTS1swLTldezJ9KVxcZHsyMH0kLyxcbiAgU006IC9eKFNNWzAtOV17Mn0pW0EtWl17MX1cXGR7MTB9W0EtWjAtOV17MTJ9JC8sXG4gIFNWOiAvXihTVlswLTldezJ9KVtBLVowLTldezR9XFxkezIwfSQvLFxuICBUTDogL14oVExbMC05XXsyfSlcXGR7MTl9JC8sXG4gIFROOiAvXihUTlswLTldezJ9KVxcZHsyMH0kLyxcbiAgVFI6IC9eKFRSWzAtOV17Mn0pXFxkezV9W0EtWjAtOV17MTd9JC8sXG4gIFVBOiAvXihVQVswLTldezJ9KVxcZHs2fVtBLVowLTldezE5fSQvLFxuICBWQTogL14oVkFbMC05XXsyfSlcXGR7MTh9JC8sXG4gIFZHOiAvXihWR1swLTldezJ9KVtBLVowLTldezR9XFxkezE2fSQvLFxuICBYSzogL14oWEtbMC05XXsyfSlcXGR7MTZ9JC9cbn07XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIGNvdW50cnkgY29kZXMgcGFzc2VkIGFyZSB2YWxpZCB1c2luZyB0aGVcbiAqIGliYW5SZWdleFRocm91Z2hDb3VudHJ5Q29kZSBhcyBhIHJlZmVyZW5jZVxuICpcbiAqIEBwYXJhbSB7YXJyYXl9IGNvdW50cnlDb2RlQXJyYXlcbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKi9cblxuZnVuY3Rpb24gaGFzT25seVZhbGlkQ291bnRyeUNvZGVzKGNvdW50cnlDb2RlQXJyYXkpIHtcbiAgdmFyIGNvdW50cnlDb2RlQXJyYXlGaWx0ZXJlZFdpdGhPYmplY3RJYmFuQ29kZSA9IGNvdW50cnlDb2RlQXJyYXkuZmlsdGVyKGZ1bmN0aW9uIChjb3VudHJ5Q29kZSkge1xuICAgIHJldHVybiAhKGNvdW50cnlDb2RlIGluIGliYW5SZWdleFRocm91Z2hDb3VudHJ5Q29kZSk7XG4gIH0pO1xuICBpZiAoY291bnRyeUNvZGVBcnJheUZpbHRlcmVkV2l0aE9iamVjdEliYW5Db2RlLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciBzdHJpbmcgaGFzIGNvcnJlY3QgdW5pdmVyc2FsIElCQU4gZm9ybWF0XG4gKiBUaGUgSUJBTiBjb25zaXN0cyBvZiB1cCB0byAzNCBhbHBoYW51bWVyaWMgY2hhcmFjdGVycywgYXMgZm9sbG93czpcbiAqIENvdW50cnkgQ29kZSB1c2luZyBJU08gMzE2Ni0xIGFscGhhLTIsIHR3byBsZXR0ZXJzXG4gKiBjaGVjayBkaWdpdHMsIHR3byBkaWdpdHMgYW5kXG4gKiBCYXNpYyBCYW5rIEFjY291bnQgTnVtYmVyIChCQkFOKSwgdXAgdG8gMzAgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMuXG4gKiBOT1RFOiBQZXJtaXR0ZWQgSUJBTiBjaGFyYWN0ZXJzIGFyZTogZGlnaXRzIFswLTldIGFuZCB0aGUgMjYgbGF0aW4gYWxwaGFiZXRpYyBbQS1aXVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHIgLSBzdHJpbmcgdW5kZXIgdmFsaWRhdGlvblxuICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnMgLSBvYmplY3QgdG8gcGFzcyB0aGUgY291bnRyaWVzIHRvIGJlIGVpdGhlciB3aGl0ZWxpc3RlZCBvciBibGFja2xpc3RlZFxuICogQHJldHVybi
15B7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaGFzVmFsaWRJYmFuRm9ybWF0KHN0ciwgb3B0aW9ucykge1xuICAvLyBTdHJpcCB3aGl0ZSBzcGFjZXMgYW5kIGh5cGhlbnNcbiAgdmFyIHN0cmlwcGVkU3RyID0gc3RyLnJlcGxhY2UoL1tcXHNcXC1dKy9naSwgJycpLnRvVXBwZXJDYXNlKCk7XG4gIHZhciBpc29Db3VudHJ5Q29kZSA9IHN0cmlwcGVkU3RyLnNsaWNlKDAsIDIpLnRvVXBwZXJDYXNlKCk7XG4gIHZhciBpc29Db3VudHJ5Q29kZUluSWJhblJlZ2V4Q29kZU9iamVjdCA9IChpc29Db3VudHJ5Q29kZSBpbiBpYmFuUmVnZXhUaHJvdWdoQ291bnRyeUNvZGUpO1xuICBpZiAob3B0aW9ucy53aGl0ZWxpc3QpIHtcbiAgICBpZiAoIWhhc09ubHlWYWxpZENvdW50cnlDb2RlcyhvcHRpb25zLndoaXRlbGlzdCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdmFyIGlzb0NvdW50cnlDb2RlSW5XaGl0ZUxpc3QgPSBvcHRpb25zLndoaXRlbGlzdC5pbmNsdWRlcyhpc29Db3VudHJ5Q29kZSk7XG4gICAgaWYgKCFpc29Db3VudHJ5Q29kZUluV2hpdGVMaXN0KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIGlmIChvcHRpb25zLmJsYWNrbGlzdCkge1xuICAgIHZhciBpc29Db3VudHJ5Q29kZUluQmxhY2tMaXN0ID0gb3B0aW9ucy5ibGFja2xpc3QuaW5jbHVkZXMoaXNvQ291bnRyeUNvZGUpO1xuICAgIGlmIChpc29Db3VudHJ5Q29kZUluQmxhY2tMaXN0KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiBpc29Db3VudHJ5Q29kZUluSWJhblJlZ2V4Q29kZU9iamVjdCAmJiBpYmFuUmVnZXhUaHJvdWdoQ291bnRyeUNvZGVbaXNvQ291bnRyeUNvZGVdLnRlc3Qoc3RyaXBwZWRTdHIpO1xufVxuXG4vKipcbiAgICogQ2hlY2sgd2hldGhlciBzdHJpbmcgaGFzIHZhbGlkIElCQU4gQ2hlY2tzdW1cbiAgICogYnkgcGVyZm9ybWluZyBiYXNpYyBtb2QtOTcgb3BlcmF0aW9uIGFuZFxuICAgKiB0aGUgcmVtYWluZGVyIHNob3VsZCBlcXVhbCAxXG4gICAqIC0tIFN0YXJ0IGJ5IHJlYXJyYW5naW5nIHRoZSBJQkFOIGJ5IG1vdmluZyB0aGUgZm91ciBpbml0aWFsIGNoYXJhY3RlcnMgdG8gdGhlIGVuZCBvZiB0aGUgc3RyaW5nXG4gICAqIC0tIFJlcGxhY2UgZWFjaCBsZXR0ZXIgaW4gdGhlIHN0cmluZyB3aXRoIHR3byBkaWdpdHMsIEEgLT4gMTAsIEIgPSAxMSwgWiA9IDM1XG4gICAqIC0tIEludGVycHJldCB0aGUgc3RyaW5nIGFzIGEgZGVjaW1hbCBpbnRlZ2VyIGFuZFxuICAgKiAtLSBjb21wdXRlIHRoZSByZW1haW5kZXIgb24gZGl2aXNpb24gYnkgOTcgKG1vZCA5NylcbiAgICogUmVmZXJlbmNlOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbnRlcm5hdGlvbmFsX0JhbmtfQWNjb3VudF9OdW1iZXJcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0clxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbmZ1bmN0aW9uIGhhc1ZhbGlkSWJhbkNoZWNrc3VtKHN0cikge1xuICB2YXIgc3RyaXBwZWRTdHIgPSBzdHIucmVwbGFjZSgvW15BLVowLTldKy9naSwgJycpLnRvVXBwZXJDYXNlKCk7IC8vIEtlZXAgb25seSBkaWdpdHMgYW5kIEEtWiBsYXRpbiBhbHBoYWJldGljXG4gIHZhciByZWFycmFuZ2VkID0gc3RyaXBwZWRTdHIuc2xpY2UoNCkgKyBzdHJpcHBlZFN0ci5zbGljZSgwLCA0KTtcbiAgdmFyIGFscGhhQ2Fwc1JlcGxhY2VkV2l0aERpZ2l0cyA9IHJlYXJyYW5nZWQucmVwbGFjZSgvW0EtWl0vZywgZnVuY3Rpb24gKGNoYXIpIHtcbiAgICByZXR1cm4gY2hhci5jaGFyQ29kZUF0KDApIC0gNTU7XG4gIH0pO1xuICB2YXIgcmVtYWluZGVyID0gYWxwaGFDYXBzUmVwbGFjZWRXaXRoRGlnaXRzLm1hdGNoKC9cXGR7MSw3fS9nKS5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgdmFsdWUpIHtcbiAgICByZXR1cm4gTnVtYmVyKGFjYyArIHZhbHVlKSAlIDk3O1xuICB9LCAnJyk7XG4gIHJldHVybiByZW1haW5kZXIgPT09IDE7XG59XG5mdW5jdGlvbiBpc0lCQU4oc3RyKSB7XG4gIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcbiAgKDAsIF9hc3NlcnRTdHJpbmcuZGVmYXVsdCkoc3RyKTtcbiAgcmV0dXJuIGhhc1ZhbGlkSWJhbkZvcm1hdChzdHIsIG9wdGlvbnMpICYmIGhhc1ZhbGlkSWJhbkNoZWNrc3VtKHN0cik7XG59XG52YXIgbG9jYWxlcyA9IGV4cG9ydHMubG9jYWxlcyA9IE9iamVjdC5rZXlzKGliYW5SZWdleFRocm91Z2hDb3VudHJ5Q29kZSk7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLkNvdW50cnlDb2RlcyA9IHZvaWQgMDtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzSVNPMzE2NjFBbHBoYTI7XG52YXIgX2Fzc2VydFN0cmluZyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vdXRpbC9hc3NlcnRTdHJpbmdcIikpO1xuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cbi8vIGZyb20gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPXzMxNjYtMV9hbHBoYS0yXG52YXIgdmFsaWRJU08zMTY2MUFscGhhMkNvdW50cmllc0NvZGVzID0gbmV3IFNldChbJ0FEJywgJ0FFJywgJ0FGJywgJ0FHJywgJ0FJJywgJ0FMJywgJ0FNJywgJ0FPJywgJ0FRJywgJ0FSJywgJ0FTJywgJ0FUJywgJ0FVJywgJ0FXJywgJ0FYJywgJ0FaJywgJ0JBJywgJ0JCJywgJ0JEJywgJ0JFJywgJ0JGJywgJ0JHJywgJ0JIJywgJ0JJJywgJ0JKJywgJ0JMJywgJ0JNJywgJ0JOJywgJ0JPJywgJ0JRJywgJ0JSJywgJ0JTJywgJ0JUJywgJ0JWJywgJ0JXJywgJ0JZJywgJ0JaJywgJ0NBJywgJ0NDJywgJ0NEJywgJ0NGJywgJ0NHJywgJ0NIJywgJ0NJJywgJ0NLJywgJ0NMJywgJ0NNJywgJ0NOJywgJ0NPJywgJ0NSJywgJ0NVJywgJ0NWJywgJ0NXJywgJ0NYJywgJ0NZJywgJ0NaJywgJ0RFJywgJ0RKJywgJ0RLJywgJ0RNJywgJ0RPJywgJ0RaJywgJ0VDJywgJ0VFJywgJ0VHJywgJ0VIJywgJ0VSJywgJ0VTJywgJ0VUJywgJ0ZJJywgJ0ZKJywgJ0ZLJywgJ0ZNJywgJ0ZPJywgJ0ZSJywgJ0dBJywgJ0dCJywgJ0dEJywgJ0dFJywgJ0dGJywgJ0dHJywgJ0dIJywgJ0dJJywgJ0dMJywgJ0dNJywgJ0dOJywgJ0dQJywgJ0dRJywgJ0dSJywgJ0dTJywgJ0dUJywgJ0dVJywgJ0dXJywgJ0dZJywgJ0hLJywgJ0hNJywgJ0hOJywgJ0hSJywgJ0hUJywgJ0hVJywgJ0lEJywgJ0lFJywgJ0lMJywgJ0lNJywgJ0lOJywgJ0lPJywgJ0lRJywgJ0lSJywgJ0lTJywgJ0lUJywgJ0pFJywgJ0pNJywgJ0pPJywgJ0pQJywgJ0tFJywgJ0tHJywgJ0tIJywgJ0tJJywgJ0tNJywgJ0tOJywgJ0tQJywgJ0tSJywgJ0tXJywgJ0tZJywgJ0taJywgJ0xBJywgJ0xCJywgJ0xDJywgJ0xJJywgJ0xLJywgJ0xSJywgJ0xTJywgJ0xUJywgJ0xVJywgJ0xWJywgJ0xZJywgJ01BJywgJ01DJywgJ01EJywgJ01FJywgJ01GJywgJ01HJywgJ01IJywgJ01LJywgJ01MJywgJ01NJywgJ01OJywgJ01PJywgJ01QJywgJ01RJywgJ01SJywgJ01TJywgJ01UJywgJ01VJywgJ01WJywgJ01XJywgJ01YJywgJ01ZJywgJ01aJywgJ05BJywgJ05DJywgJ05FJywgJ05GJywgJ05HJywgJ05JJywgJ05MJywgJ05PJywgJ05QJywgJ05SJywgJ05VJywgJ05aJywgJ09NJywgJ1BBJywgJ1BFJywgJ1BGJywgJ1BHJywgJ1BIJywgJ1BLJywgJ1BMJywgJ1BNJywgJ1BOJywgJ1BSJywgJ1BTJywgJ1BUJywgJ1BXJywgJ1BZJywgJ1FBJywgJ1JFJywgJ1JPJywgJ1JTJywgJ1JVJywgJ1JXJywgJ1NBJywgJ1NCJywgJ1NDJywgJ1NEJywgJ1NFJywgJ1NHJywgJ1NIJywgJ1NJJywgJ1NKJywgJ1NLJywgJ1NMJywgJ1NNJywgJ1NOJywgJ1NPJywgJ1NSJywgJ1NTJywgJ1NUJywgJ1NWJywgJ1NYJywgJ1NZJywgJ1NaJywgJ1RDJywgJ1REJywgJ1RGJywgJ1RHJywgJ1RIJywgJ1RKJywgJ1RLJywgJ1RMJywgJ1RNJywgJ1ROJywgJ1RPJywgJ1RSJywgJ1RUJywgJ1RWJywgJ1RXJywgJ1RaJywgJ1VBJywgJ1VHJ
15ywgJ1VNJywgJ1VTJywgJ1VZJywgJ1VaJywgJ1ZBJywgJ1ZDJywgJ1ZFJywgJ1ZHJywgJ1ZJJywgJ1ZOJywgJ1ZVJywgJ1dGJywgJ1dTJywgJ1lFJywgJ1lUJywgJ1pBJywgJ1pNJywgJ1pXJ10pO1xuZnVuY3Rpb24gaXNJU08zMTY2MUFscGhhMihzdHIpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcuZGVmYXVsdCkoc3RyKTtcbiAgcmV0dXJuIHZhbGlkSVNPMzE2NjFBbHBoYTJDb3VudHJpZXNDb2Rlcy5oYXMoc3RyLnRvVXBwZXJDYXNlKCkpO1xufVxudmFyIENvdW50cnlDb2RlcyA9IGV4cG9ydHMuQ291bnRyeUNvZGVzID0gdmFsaWRJU08zMTY2MUFscGhhMkNvdW50cmllc0NvZGVzOyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNCSUM7XG52YXIgX2Fzc2VydFN0cmluZyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vdXRpbC9hc3NlcnRTdHJpbmdcIikpO1xudmFyIF9pc0lTTzMxNjYxQWxwaGEgPSByZXF1aXJlKFwiLi9pc0lTTzMxNjYxQWxwaGEyXCIpO1xuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cbi8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT185MzYyXG52YXIgaXNCSUNSZWcgPSAvXltBLVphLXpdezZ9W0EtWmEtejAtOV17Mn0oW0EtWmEtejAtOV17M30pPyQvO1xuZnVuY3Rpb24gaXNCSUMoc3RyKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nLmRlZmF1bHQpKHN0cik7XG5cbiAgLy8gdG9VcHBlckNhc2UoKSBzaG91bGQgYmUgcmVtb3ZlZCB3aGVuIGEgbmV3IG1ham9yIHZlcnNpb24gZ29lcyBvdXQgdGh
15hdCBjaGFuZ2VzXG4gIC8vIHRoZSByZWdleCB0byBbQS1aXSAocGVyIHRoZSBzcGVjKS5cbiAgdmFyIGNvdW50cnlDb2RlID0gc3RyLnNsaWNlKDQsIDYpLnRvVXBwZXJDYXNlKCk7XG4gIGlmICghX2lzSVNPMzE2NjFBbHBoYS5Db3VudHJ5Q29kZXMuaGFzKGNvdW50cnlDb2RlKSAmJiBjb3VudHJ5Q29kZSAhPT0gJ1hLJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gaXNCSUNSZWcudGVzdChzdHIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG5tb2R1bGUuZXhwb3J0cy5kZWZhdWx0ID0gZXhwb3J0cy5kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNNRDU7XG52YXIgX2Fzc2VydFN0cmluZyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vdXRpbC9hc3NlcnRTdHJpbmdcIikpO1xuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cbnZhciBtZDUgPSAvXlthLWYwLTldezMyfSQvO1xuZnVuY3Rpb24gaXNNRDUoc3RyKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nLmRlZmF1bHQpKHN0cik7XG4gIHJldHVybiBtZDUudGVzdChzdHIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG5tb2R1bGUuZXhwb3J0cy5kZWZh
15dWx0ID0gZXhwb3J0cy5kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNIYXNoO1xudmFyIF9hc3NlcnRTdHJpbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWwvYXNzZXJ0U3RyaW5nXCIpKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG52YXIgbGVuZ3RocyA9IHtcbiAgbWQ1OiAzMixcbiAgbWQ0OiAzMixcbiAgc2hhMTogNDAsXG4gIHNoYTI1NjogNjQsXG4gIHNoYTM4NDogOTYsXG4gIHNoYTUxMjogMTI4LFxuICByaXBlbWQxMjg6IDMyLFxuICByaXBlbWQxNjA6IDQwLFxuICB0aWdlcjEyODogMzIsXG4gIHRpZ2VyMTYwOiA0MCxcbiAgdGlnZXIxOTI6IDQ4LFxuICBjcmMzMjogOCxcbiAgY3JjMzJiOiA4XG59O1xuZnVuY3Rpb24gaXNIYXNoKHN0ciwgYWxnb3JpdGhtKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nLmRlZmF1bHQpKHN0cik7XG4gIHZhciBoYXNoID0gbmV3IFJlZ0V4cChcIl5bYS1mQS1GMC05XXtcIi5jb25jYXQobGVuZ3Roc1thbGdvcml0aG1dLCBcIn0kXCIpKTtcbiAgcmV0dXJuIGhhc2gudGVzdChzdHIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG5tb2R1bGUuZXhwb3J0cy5kZWZhdWx0ID0gZXhwb3J0cy5kZWZh
15dWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNCYXNlNjQ7XG52YXIgX2Fzc2VydFN0cmluZyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vdXRpbC9hc3NlcnRTdHJpbmdcIikpO1xudmFyIF9tZXJnZSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vdXRpbC9tZXJnZVwiKSk7XG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxudmFyIG5vdEJhc2U2NCA9IC9bXkEtWjAtOStcXC89XS9pO1xudmFyIHVybFNhZmVCYXNlNjQgPSAvXltBLVowLTlfXFwtXSokL2k7XG52YXIgZGVmYXVsdEJhc2U2NE9wdGlvbnMgPSB7XG4gIHVybFNhZmU6IGZhbHNlXG59O1xuZnVuY3Rpb24gaXNCYXNlNjQoc3RyLCBvcHRpb25zKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nLmRlZmF1bHQpKHN0cik7XG4gIG9wdGlvbnMgPSAoMCwgX21lcmdlLmRlZmF1bHQpKG9wdGlvbnMsIGRlZmF1bHRCYXNlNjRPcHRpb25zKTtcbiAgdmFyIGxlbiA9IHN0ci5sZW5ndGg7XG4gIGlmIChvcHRpb25zLnVybFNhZmUpIHtcbiAgICByZXR1cm4gdXJsU2FmZUJhc2U2NC50ZXN0KHN0cik7XG4gIH1cbiAgaWYgKGxlbiAlIDQgIT09IDAgfHwgbm90QmFzZTY0LnRlc3Qoc3RyKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgZmlyc3RQYWRkaW5nQ2hhciA9IHN0ci5pbmRleE9mKCc9Jyk7XG4gIHJldHVybiBmaXJzdFBhZGRpbmdDaGFyID09PSAtMSB8fCBmaXJzdFBhZGRpbmdDaGFyID09PSBsZW4gLSAxIHx8IGZpcnN0UGFkZGluZ0NoYXIgPT09IGxlbiAtIDIgJiYgc3RyW2xlbiAtIDFdID09PSAnPSc7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBleHBvcnRzLmRlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc0pXVDtcbnZhciBfYXNzZXJ0U3RyaW5nID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlsL2Fzc2VydFN0cmluZ1wiKSk7XG52YXIgX2lzQmFzZSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vaXNCYXNlNjRcIikpO1xuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cbmZ1bmN0aW9uIGlzSldUKHN0cikge1xuICAoMCwgX2Fzc2VydFN0cmluZy5kZWZh
15dWx0KShzdHIpO1xuICB2YXIgZG90U3BsaXQgPSBzdHIuc3BsaXQoJy4nKTtcbiAgdmFyIGxlbiA9IGRvdFNwbGl0Lmxlbmd0aDtcbiAgaWYgKGxlbiAhPT0gMykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gZG90U3BsaXQucmVkdWNlKGZ1bmN0aW9uIChhY2MsIGN1cnJFbGVtKSB7XG4gICAgcmV0dXJuIGFjYyAmJiAoMCwgX2lzQmFzZS5kZWZhdWx0KShjdXJyRWxlbSwge1xuICAgICAgdXJsU2FmZTogdHJ1ZVxuICAgIH0pO1xuICB9LCB0cnVlKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xubW9kdWxlLmV4cG9ydHMuZGVmYXVsdCA9IGV4cG9ydHMuZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzSlNPTjtcbnZhciBfYXNzZXJ0U3RyaW5nID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlsL2Fzc2VydFN0cmluZ1wiKSk7XG52YXIgX21lcmdlID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlsL21lcmdlXCIpKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5mdW5jdGlvbiBfdHlwZW9mKG8pIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7IHJldHVybiB0eXBlb2YgbzsgfSA6IGZ1bmN0aW9uIChvKSB7IHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvOyB9LCBfdHlwZW9mKG8pOyB9XG52YXIgZGVmYXVsdF9qc29uX29wdGlvbnMgPSB7XG4gIGFsbG93X3ByaW1pdGl2ZXM6IGZhbHNlXG59O1xuZnVuY3Rpb24gaXNKU09OKHN0ciwgb3B0aW9ucykge1xuICAoMCwgX2Fzc2VydFN0cmluZy5kZWZh
15dWx0KShzdHIpO1xuICB0cnkge1xuICAgIG9wdGlvbnMgPSAoMCwgX21lcmdlLmRlZmF1bHQpKG9wdGlvbnMsIGRlZmF1bHRfanNvbl9vcHRpb25zKTtcbiAgICB2YXIgcHJpbWl0aXZlcyA9IFtdO1xuICAgIGlmIChvcHRpb25zLmFsbG93X3ByaW1pdGl2ZXMpIHtcbiAgICAgIHByaW1pdGl2ZXMgPSBbbnVsbCwgZmFsc2UsIHRydWVdO1xuICAgIH1cbiAgICB2YXIgb2JqID0gSlNPTi5wYXJzZShzdHIpO1xuICAgIHJldHVybiBwcmltaXRpdmVzLmluY2x1ZGVzKG9iaikgfHwgISFvYmogJiYgX3R5cGVvZihvYmopID09PSAnb2JqZWN0JztcbiAgfSBjYXRjaCAoZSkgey8qIGlnbm9yZSAqL31cbiAgcmV0dXJuIGZhbHNlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG5tb2R1bGUuZXhwb3J0cy5kZWZhdWx0ID0gZXhwb3J0cy5kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNFbXB0eTtcbnZhciBfYXNzZXJ0U3RyaW5nID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlsL2Fzc2VydFN0cmluZ1wiKSk7XG52YXIgX21lcmdlID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlsL21lcmdlXCIpKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG52YXIgZGVmYXVsdF9pc19lbXB0eV9vcHRpb25zID0ge1xuICBpZ25vcmVfd2hpdGVzcGFjZTogZmFsc2Vcbn07XG5mdW5jdGlvbiBpc0VtcHR5KHN0ciwgb3B0aW9ucykge1xuICAoMCwgX2Fzc2VydFN0cmluZy5kZWZh
15dWx0KShzdHIpO1xuICBvcHRpb25zID0gKDAsIF9tZXJnZS5kZWZhdWx0KShvcHRpb25zLCBkZWZhdWx0X2lzX2VtcHR5X29wdGlvbnMpO1xuICByZXR1cm4gKG9wdGlvbnMuaWdub3JlX3doaXRlc3BhY2UgPyBzdHIudHJpbSgpLmxlbmd0aCA6IHN0ci5sZW5ndGgpID09PSAwO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG5tb2R1bGUuZXhwb3J0cy5kZWZhdWx0ID0gZXhwb3J0cy5kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNMZW5ndGg7XG52YXIgX2Fzc2VydFN0cmluZyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vdXRpbC9hc3NlcnRTdHJpbmdcIikpO1xuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cbmZ1bmN0aW9uIF90eXBlb2YobykgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IHJldHVybiBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9IDogZnVuY3Rpb24gKG8pIHsgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87IH0sIF90eXBlb2Yobyk7IH1cbi8qIGVzbGludC1kaXNhYmxlIHByZWZlci1yZXN0LXBhcmFtcyAqL1xuZnVuY3Rpb24gaXNMZW5ndGgoc3RyLCBvcHRpb25zKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nLmRlZmF1bHQpKHN0cik7XG4gIHZhciBtaW47XG4gIHZhciBtYXg7XG4gIGlmIChfdHlwZW9mKG9wdGlvbnMpID09PSAnb2JqZWN0Jykge1xuICAgIG1pbiA9IG9wdGlvbnMubWluIHx8IDA7XG4gICAgbWF4ID0gb3B0aW9ucy5tYXg7XG4gIH0gZWxzZSB7XG4gICAgLy8gYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6IGlzTGVuZ3RoKHN0ciwgbWluIFssIG1heF0pXG4gICAgbWluID0gYXJndW1lbnRzWzFdIHx8IDA7XG4gICAgbWF4ID0gYXJndW1lbnRzWzJdO1xuICB9XG4gIHZhciBwcmVzZW50YXRpb25TZXF1ZW5jZXMgPSBzdHIubWF0Y2goLyhcXHVGRTBGfFxcdUZFMEUpL2cpIHx8IFtdO1xuICB2YXIgc3Vycm9nYXRlUGFpcnMgPSBzdHIubWF0Y2goL1tcXHVEODAwLVxcdURCRkZdW1xcdURDMDAtXFx1REZGRl0vZykgfHwgW107XG4gIHZhciBsZW4gPSBzdHIubGVuZ3RoIC0gcHJlc2VudGF0aW9uU2VxdWVuY2VzLmxlbmd0aCAtIHN1cnJvZ2F0ZVBhaXJzLmxlbmd0aDtcbiAgcmV0dXJuIGxlbiA+PSBtaW4gJiYgKHR5cGVvZiBtYXggPT09ICd1bmRlZmluZWQnIHx8IGxlbiA8PSBtYXgpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG5tb2R1bGUuZXhwb3J0cy5kZWZh
15dWx0ID0gZXhwb3J0cy5kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNVVUlEO1xudmFyIF9hc3NlcnRTdHJpbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWwvYXNzZXJ0U3RyaW5nXCIpKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG52YXIgdXVpZCA9IHtcbiAgMTogL15bMC05QS1GXXs4fS1bMC05QS1GXXs0fS0xWzAtOUEtRl17M30tWzAtOUEtRl17NH0tWzAtOUEtRl17MTJ9JC9pLFxuICAyOiAvXlswLTlBLUZdezh9LVswLTlBLUZdezR9LTJbMC05QS1GXXszfS1bMC05QS1GXXs0fS1bMC05QS1GXXsxMn0kL2ksXG4gIDM6IC9eWzAtOUEtRl17OH0tWzAtOUEtRl17NH0tM1swLTlBLUZdezN9LVswLTlBLUZdezR9LVswLTlBLUZdezEyfSQvaSxcbiAgNDogL15bMC05QS1GXXs4fS1bMC05QS1GXXs0fS00WzAtOUEtRl17M30tWzg5QUJdWzAtOUEtRl17M30tWzAtOUEtRl17MTJ9JC9pLFxuICA1OiAvXlswLTlBLUZdezh9LVswLTlBLUZdezR9LTVbMC05QS1GXXszfS1bODlBQl1bMC05QS1GXXszfS1bMC05QS1GXXsxMn0kL2ksXG4gIDc6IC9eWzAtOUEtRl17OH0tWzAtOUEtRl17NH0tN1swLTlBLUZdezN9LVs4OUFCXVswLTlBLUZdezN9LVswLTlBLUZdezEyfSQvaSxcbiAgYWxsOiAvXlswLTlBLUZdezh9LVswLTlBLUZdezR9LVswLTlBLUZdezR9LVswLTlBLUZdezR9LVswLTlBLUZdezEyfSQvaVxufTtcbmZ1bmN0aW9uIGlzVVVJRChzdHIsIHZlcnNpb24pIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcuZGVmYXVsdCkoc3RyKTtcbiAgdmFyIHBhdHRlcm4gPSB1dWlkWyFbdW5kZWZpbmVkLCBudWxsXS5pbmNsdWRlcyh2ZXJzaW9uKSA/IHZlcnNpb24gOiAnYWxsJ107XG4gIHJldHVybiAhIXBhdHRlcm4gJiYgcGF0dGVybi50ZXN0KHN0cik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBleHBvcnRzLmRlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc01vbmdvSWQ7XG52YXIgX2Fzc2VydFN0cmluZyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vdXRpbC9hc3NlcnRTdHJpbmdcIikpO1xudmFyIF9pc0hleGFkZWNpbWFsID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9pc0hleGFkZWNpbWFsXCIpKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5mdW5jdGlvbiBpc01vbmdvSWQoc3RyKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nLmRlZmF1bHQpKHN0cik7XG4gIHJldHVybiAoMCwgX2lzSGV4YWRlY2ltYWwuZGVmYXVsdCkoc3RyKSAmJiBzdHIubGVuZ3RoID09PSAyNDtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZh
15dWx0O1xubW9kdWxlLmV4cG9ydHMuZGVmYXVsdCA9IGV4cG9ydHMuZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzQWZ0ZXI7XG52YXIgX3RvRGF0ZSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vdG9EYXRlXCIpKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5mdW5jdGlvbiBpc0FmdGVyKGRhdGUsIG9wdGlvbnMpIHtcbiAgLy8gRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OlxuICAvLyBpc0FmdGVyKHN0ciBbLCBkYXRlXSksIGkuZS4gYG9wdGlvbnNgIGNvdWxkIGJlIHVzZWQgYXMgYXJndW1lbnQgZm9yIHRoZSBsZWdhY3kgYGRhdGVgXG4gIHZhciBjb21wYXJpc29uRGF0ZSA9IChvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuY29tcGFyaXNvbkRhdGUpIHx8IG9wdGlvbnMgfHwgRGF0ZSgpLnRvU3RyaW5nKCk7XG4gIHZhciBjb21wYXJpc29uID0gKDAsIF90b0RhdGUuZGVmYXVsdCkoY29tcGFyaXNvbkRhdGUpO1xuICB2YXIgb3JpZ2luYWwgPSAoMCwgX3RvRGF0ZS5kZWZhdWx0KShkYXRlKTtcbiAgcmV0dXJuICEhKG9yaWdpbmFsICYmIGNvbXBhcmlzb24gJiYgb3JpZ2luYWwgPiBjb21wYXJpc29uKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZh
15dWx0O1xubW9kdWxlLmV4cG9ydHMuZGVmYXVsdCA9IGV4cG9ydHMuZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzQmVmb3JlO1xudmFyIF9hc3NlcnRTdHJpbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWwvYXNzZXJ0U3RyaW5nXCIpKTtcbnZhciBfdG9EYXRlID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi90b0RhdGVcIikpO1xuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cbmZ1bmN0aW9uIGlzQmVmb3JlKHN0cikge1xuICB2YXIgZGF0ZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogU3RyaW5nKG5ldyBEYXRlKCkpO1xuICAoMCwgX2Fzc2VydFN0cmluZy5kZWZhdWx0KShzdHIpO1xuICB2YXIgY29tcGFyaXNvbiA9ICgwLCBfdG9EYXRlLmRlZmF1bHQpKGRhdGUpO1xuICB2YXIgb3JpZ2luYWwgPSAoMCwgX3RvRGF0ZS5kZWZhdWx0KShzdHIpO1xuICByZXR1cm4gISEob3JpZ2luYWwgJiYgY29tcGFyaXNvbiAmJiBvcmlnaW5hbCA8IGNvbXBhcmlzb24pO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG5tb2R1bGUuZXhwb3J0cy5kZWZh
15dWx0ID0gZXhwb3J0cy5kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNJbjtcbnZhciBfYXNzZXJ0U3RyaW5nID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlsL2Fzc2VydFN0cmluZ1wiKSk7XG52YXIgX3RvU3RyaW5nID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlsL3RvU3RyaW5nXCIpKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5mdW5jdGlvbiBfdHlwZW9mKG8pIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7IHJldHVybiB0eXBlb2YgbzsgfSA6IGZ1bmN0aW9uIChvKSB7IHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvOyB9LCBfdHlwZW9mKG8pOyB9XG5mdW5jdGlvbiBpc0luKHN0ciwgb3B0aW9ucykge1xuICAoMCwgX2Fzc2VydFN0cmluZy5kZWZhdWx0KShzdHIpO1xuICB2YXIgaTtcbiAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvcHRpb25zKSA9PT0gJ1tvYmplY3QgQXJyYXldJykge1xuICAgIHZhciBhcnJheSA9IFtdO1xuICAgIGZvciAoaSBpbiBvcHRpb25zKSB7XG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZ290d2FybG9zdC9pc3RhbmJ1bC9ibG9iL21hc3Rlci9pZ25vcmluZy1jb2RlLWZvci1jb3ZlcmFnZS5tZCNpZ25vcmluZy1jb2RlLWZvci1jb3ZlcmFnZS1wdXJwb3Nlc1xuICAgICAgLy8gaXN0YW5idWwgaWdub3JlIGVsc2VcbiAgICAgIGlmICh7fS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9wdGlvbnMsIGkpKSB7XG4gICAgICAgIGFycmF5W2ldID0gKDAsIF90b1N0cmluZy5kZWZh
15dWx0KShvcHRpb25zW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFycmF5LmluZGV4T2Yoc3RyKSA+PSAwO1xuICB9IGVsc2UgaWYgKF90eXBlb2Yob3B0aW9ucykgPT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIG9wdGlvbnMuaGFzT3duUHJvcGVydHkoc3RyKTtcbiAgfSBlbHNlIGlmIChvcHRpb25zICYmIHR5cGVvZiBvcHRpb25zLmluZGV4T2YgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gb3B0aW9ucy5pbmRleE9mKHN0cikgPj0gMDtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBleHBvcnRzLmRlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc0x1aG5OdW1iZXI7XG52YXIgX2Fzc2VydFN0cmluZyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vdXRpbC9hc3NlcnRTdHJpbmdcIikpO1xuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cbmZ1bmN0aW9uIGlzTHVobk51bWJlcihzdHIpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcuZGVmYXVsdCkoc3RyKTtcbiAgdmFyIHNhbml0aXplZCA9IHN0ci5yZXBsYWNlKC9bLSBdKy9nLCAnJyk7XG4gIHZhciBzdW0gPSAwO1xuICB2YXIgZGlnaXQ7XG4gIHZhciB0bXBOdW07XG4gIHZhciBzaG91bGREb3VibGU7XG4gIGZvciAodmFyIGkgPSBzYW5pdGl6ZWQubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBkaWdpdCA9IHNhbml0aXplZC5zdWJzdHJpbmcoaSwgaSArIDEpO1xuICAgIHRtcE51bSA9IHBhcnNlSW50KGRpZ2l0LCAxMCk7XG4gICAgaWYgKHNob3VsZERvdWJsZSkge1xuICAgICAgdG1wTnVtICo9IDI7XG4gICAgICBpZiAodG1wTnVtID49IDEwKSB7XG4gICAgICAgIHN1bSArPSB0bXBOdW0gJSAxMCArIDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdW0gKz0gdG1wTnVtO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzdW0gKz0gdG1wTnVtO1xuICAgIH1cbiAgICBzaG91bGREb3VibGUgPSAhc2hvdWxkRG91YmxlO1xuICB9XG4gIHJldHVybiAhIShzdW0gJSAxMCA9PT0gMCA/IHNhbml0aXplZCA6IGZhbHNlKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZh
15dWx0O1xubW9kdWxlLmV4cG9ydHMuZGVmYXVsdCA9IGV4cG9ydHMuZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzQ3JlZGl0Q2FyZDtcbnZhciBfYXNzZXJ0U3RyaW5nID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlsL2Fzc2VydFN0cmluZ1wiKSk7XG52YXIgX2lzTHVobk51bWJlciA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vaXNMdWhuTnVtYmVyXCIpKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG52YXIgY2FyZHMgPSB7XG4gIGFtZXg6IC9eM1s0N11bMC05XXsxM30kLyxcbiAgZGluZXJzY2x1YjogL14zKD86MFswLTVdfFs2OF1bMC05XSlbMC05XXsxMX0kLyxcbiAgZGlzY292ZXI6IC9eNig/OjAxMXw1WzAtOV1bMC05XSlbMC05XXsxMiwxNX0kLyxcbiAgamNiOiAvXig/OjIxMzF8MTgwMHwzNVxcZHszfSlcXGR7MTF9JC8sXG4gIG1hc3RlcmNhcmQ6IC9eNVsxLTVdWzAtOV17Mn18KDIyMlsxLTldfDIyWzMtOV1bMC05XXwyWzMtNl1bMC05XXsyfXwyN1swMV1bMC05XXwyNzIwKVswLTldezEyfSQvLFxuICAvLyAvXlsyNV1bMS03XVswLTldezE0fSQvO1xuICB1bmlvbnBheTogL14oNlsyN11bMC05XXsxNH18Xig4MVswLTldezE0LDE3fSkpJC8sXG4gIHZpc2E6IC9eKD86NFswLTldezEyfSkoPzpbMC05XXszLDZ9KT8kL1xufTtcbnZhciBhbGxDYXJkcyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHRtcENhcmRzQXJyYXkgPSBbXTtcbiAgZm9yICh2YXIgY2FyZFByb3ZpZGVyIGluIGNhcmRzKSB7XG4gICAgLy8gaXN0YW5idWwgaWdub3JlIGVsc2VcbiAgICBpZiAoY2FyZHMuaGFzT3duUHJvcGVydHkoY2FyZFByb3ZpZGVyKSkge1xuICAgICAgdG1wQ2FyZHNBcnJheS5wdXNoKGNhcmRzW2NhcmRQcm92aWRlcl0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdG1wQ2FyZHNBcnJheTtcbn0oKTtcbmZ1bmN0aW9uIGlzQ3JlZGl0Q2FyZChjYXJkKSB7XG4gIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcbiAgKDAsIF9hc3NlcnRTdHJpbmcuZGVmYXVsdCkoY2FyZCk7XG4gIHZhciBwcm92aWRlciA9IG9wdGlvbnMucHJvdmlkZXI7XG4gIHZhciBzYW5pdGl6ZWQgPSBjYXJkLnJlcGxhY2UoL1stIF0rL2csICcnKTtcbiAgaWYgKHByb3ZpZGVyICYmIHByb3ZpZGVyLnRvTG93ZXJDYXNlKCkgaW4gY2FyZHMpIHtcbiAgICAvLyBzcGVjaWZpYyBwcm92aWRlciBpbiB0aGUgbGlzdFxuICAgIGlmICghY2FyZHNbcHJvdmlkZXIudG9Mb3dlckNhc2UoKV0udGVzdChzYW5pdGl6ZWQpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9IGVsc2UgaWYgKHByb3ZpZGVyICYmICEocHJvdmlkZXIudG9Mb3dlckNhc2UoKSBpbiBjYXJkcykpIHtcbiAgICAvKiBzcGVjaWZpYyBwcm92aWRlciBub3QgaW4gdGhlIGxpc3QgKi9cbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJcIi5jb25jYXQocHJvdmlkZXIsIFwiIGlzIG5vdCBhIHZhbGlkIGNyZWRpdCBjYXJkIHByb3ZpZGVyLlwiKSk7XG4gIH0gZWxzZSBpZiAoIWFsbENhcmRzLnNvbWUoZnVuY3Rpb24gKGNhcmRQcm92aWRlcikge1xuICAgIHJldHVybiBjYXJkUHJvdmlkZXIudGVzdChzYW5pdGl6ZWQpO1xuICB9KSkge1xuICAgIC8vIG5vIHNwZWNpZmljIHByb3ZpZGVyXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiAoMCwgX2lzTHVobk51bWJlci5kZWZhdWx0KShjYXJkKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZh
15dWx0O1xubW9kdWxlLmV4cG9ydHMuZGVmYXVsdCA9IGV4cG9ydHMuZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzSWRlbnRpdHlDYXJkO1xudmFyIF9hc3NlcnRTdHJpbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWwvYXNzZXJ0U3RyaW5nXCIpKTtcbnZhciBfaXNJbnQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2lzSW50XCIpKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG52YXIgdmFsaWRhdG9ycyA9IHtcbiAgUEw6IGZ1bmN0aW9uIFBMKHN0cikge1xuICAgICgwLCBfYXNzZXJ0U3RyaW5nLmRlZmF1bHQpKHN0cik7XG4gICAgdmFyIHdlaWdodE9mRGlnaXRzID0ge1xuICAgICAgMTogMSxcbiAgICAgIDI6IDMsXG4gICAgICAzOiA3LFxuICAgICAgNDogOSxcbiAgICAgIDU6IDEsXG4gICAgICA2OiAzLFxuICAgICAgNzogNyxcbiAgICAgIDg6IDksXG4gICAgICA5OiAxLFxuICAgICAgMTA6IDMsXG4gICAgICAxMTogMFxuICAgIH07XG4gICAgaWYgKHN0ciAhPSBudWxsICYmIHN0ci5sZW5ndGggPT09IDExICYmICgwLCBfaXNJbnQuZGVmYXVsdCkoc3RyLCB7XG4gICAgICBhbGxvd19sZWFkaW5nX3plcm9lczogdHJ1ZVxuICAgIH0pKSB7XG4gICAgICB2Y
15XIgZGlnaXRzID0gc3RyLnNwbGl0KCcnKS5zbGljZSgwLCAtMSk7XG4gICAgICB2YXIgc3VtID0gZGlnaXRzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBkaWdpdCwgaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIGFjYyArIE51bWJlcihkaWdpdCkgKiB3ZWlnaHRPZkRpZ2l0c1tpbmRleCArIDFdO1xuICAgICAgfSwgMCk7XG4gICAgICB2YXIgbW9kdWxvID0gc3VtICUgMTA7XG4gICAgICB2YXIgbGFzdERpZ2l0ID0gTnVtYmVyKHN0ci5jaGFyQXQoc3RyLmxlbmd0aCAtIDEpKTtcbiAgICAgIGlmIChtb2R1bG8gPT09IDAgJiYgbGFzdERpZ2l0ID09PSAwIHx8IGxhc3REaWdpdCA9PT0gMTAgLSBtb2R1bG8pIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSxcbiAgRVM6IGZ1bmN0aW9uIEVTKHN0cikge1xuICAgICgwLCBfYXNzZXJ0U3RyaW5nLmRlZmF1bHQpKHN0cik7XG4gICAgdmFyIEROSSA9IC9eWzAtOVgtWl1bMC05XXs3fVtUUldBR01ZRlBEWEJOSlpTUVZITENLRV0kLztcbiAgICB2YXIgY2hhcnNWYWx1ZSA9IHtcbiAgICAgIFg6IDAsXG4gICAgICBZOiAxLFxuICAgICAgWjogMlxuICAgIH07XG4gICAgdmFyIGNvbnRyb2xEaWdpdHMgPSBbJ1QnLCAnUicsICdXJywgJ0EnLCAnRycsICdNJywgJ1knLCAnRicsICdQJywgJ0QnLCAnWCcsICdCJywgJ04nLCAnSicsICdaJywgJ1MnLCAnUScsICdWJywgJ0gnLCAnTCcsICdDJywgJ0snLCAnRSddO1xuXG4gICAgLy8gc2FuaXRpemUgdXNlciBpbnB1dFxuICAgIHZhciBzYW5pdGl6ZWQgPSBzdHIudHJpbSgpLnRvVXBwZXJDYXNlKCk7XG5cbiAgICAvLyB2YWxpZGF0ZSB0aGUgZGF0YSBzdHJ1Y3R1cmVcbiAgICBpZiAoIUROSS50ZXN0KHNhbml0aXplZCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyB2YWxpZGF0ZSB0aGUgY29udHJvbCBkaWdpdFxuICAgIHZhciBudW1iZXIgPSBzYW5pdGl6ZWQuc2xpY2UoMCwgLTEpLnJlcGxhY2UoL1tYLFksWl0vZywgZnVuY3Rpb24gKGNoYXIpIHtcbiAgICAgIHJldHVybiBjaGFyc1ZhbHVlW2NoYXJdO1xuICAgIH0pO1xuICAgIHJldHVybiBzYW5pdGl6ZWQuZW5kc1dpdGgoY29udHJvbERpZ2l0c1tudW1iZXIgJSAyM10pO1xuICB9LFxuICBGSTogZnVuY3Rpb24gRkkoc3RyKSB7XG4gICAgLy8gaHR0cHM6Ly9kdnYuZmkvZW4vcGVyc29uYWwtaWRlbnRpdHktY29kZSM6fjp0ZXh0PWNvbnRyb2wlMjBjaGFyYWN0ZXIlMjBmb3IlMjBhLSxwZXJzb25hbCwtaWRlbnRpdHklMjBjb2RlJTIwY2FsY3VsYXRlZFxuICAgICgwLCBfYXNzZXJ0U3RyaW5nLmRlZmF1bHQpKHN0cik7XG4gICAgaWYgKHN0ci5sZW5ndGggIT09IDExKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICghc3RyLm1hdGNoKC9eXFxkezZ9W1xcLUFcXCtdXFxkezN9WzAtOUFCQ0RFRkhKS0xNTlBSU1RVVldYWV17MX0kLykpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdmFyIGNoZWNrRGlnaXRzID0gJzAxMjM0NTY3ODlBQkNERUZISktMTU5QUlNUVVZXWFknO1xuICAgIHZhciBpZEFzTnVtYmVyID0gcGFyc2VJbnQoc3RyLnNsaWNlKDAsIDYpLCAxMCkgKiAxMDAwICsgcGFyc2VJbnQoc3RyLnNsaWNlKDcsIDEwKSwgMTApO1xuICAgIHZhciByZW1haW5kZXIgPSBpZEFzTnVtYmVyICUgMzE7XG4gICAgdmFyIGNoZWNrRGlnaXQgPSBjaGVja0RpZ2l0c1tyZW1haW5kZXJdO1xuICAgIHJldHVybiBjaGVja0RpZ2l0ID09PSBzdHIuc2xpY2UoMTAsIDExKTtcbiAgfSxcbiAgSU46IGZ1bmN0aW9uIElOKHN0cikge1xuICAgIHZhciBETkkgPSAvXlsxLTldXFxkezN9XFxzP1xcZHs0fVxccz9cXGR7NH0kLztcblxuICAgIC8vIG11bHRpcGxpY2F0aW9uIHRhYmxlXG4gICAgdmFyIGQgPSBbWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDldLCBbMSwgMiwgMywgNCwgMCwgNiwgNywgOCwgOSwgNV0sIFsyLCAzLCA0LCAwLCAxLCA3LCA4LCA5LCA1LCA2XSwgWzMsIDQsIDAsIDEsIDIsIDgsIDksIDUsIDYsIDddLCBbNCwgMCwgMSwgMiwgMywgOSwgNSwgNiwgNywgOF0sIFs1LCA5LCA4LCA3LCA2LCAwLCA0LCAzLCAyLCAxXSwgWzYsIDUsIDksIDgsIDcsIDEsIDAsIDQsIDMsIDJdLCBbNywgNiwgNSwgOSwgOCwgMiwgMSwgMCwgNCwgM10sIFs4LCA3LCA2LCA1LCA5LCAzLCAyLCAxLCAwLCA0XSwgWzksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDBdXTtcblxuICAgIC8vIHBlcm11dGF0aW9uIHRhYmxlXG4gICAgdmFyIHAgPSBbWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDldLCBbMSwgNSwgNywgNiwgMiwgOCwgMywgMCwgOSwgNF0sIFs1LCA4LCAwLCAzLCA3LCA5LCA2LCAxLCA0LCAyXSwgWzgsIDksIDEsIDYsIDAsIDQsIDMsIDUsIDIsIDddLCBbOSwgNCwgNSwgMywgMSwgMiwgNiwgOCwgNywgMF0sIFs0LCAyLCA4LCA2LCA1LCA3LCAzLCA5LCAwLCAxXSwgWzIsIDcsIDksIDMsIDgsIDAsIDYsIDQsIDEsIDVdLCBbNywgMCwgNCwgNiwgOSwgMSwgMywgMiwgNSwgOF1dO1xuXG4gICAgLy8gc2FuaXRpemUgdXNlciBpbnB1dFxuICAgIHZhciBzYW5pdGl6ZWQgPSBzdHIudHJpbSgpO1xuXG4gICAgLy8gdmFsaWRhdGUgdGhlIGRhdGEgc3RydWN0dXJlXG4gICAgaWYgKCFETkkudGVzdChzYW5pdGl6ZWQpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHZhciBjID0gMDtcbiAgICB2YXIgaW52ZXJ0ZWRBcnJheSA9IHNhbml0aXplZC5yZXBsYWNlKC9cXHMvZywgJycpLnNwbGl0KCcnKS5tYXAoTnVtYmVyKS5yZXZlcnNlKCk7XG4gICAgaW52ZXJ0ZWRBcnJheS5mb3JFYWNoKGZ1bmN0aW9uICh2YWwsIGkpIHtcbiAgICAgIGMgPSBkW2NdW3BbaSAlIDhdW3ZhbF1dO1xuICAgIH0pO1xuICAgIHJldHVybiBjID09PSAwO1xuICB9LFxuICBJUjogZnVuY3Rpb24gSVIoc3RyKSB7XG4gICAgaWYgKCFzdHIubWF0Y2goL15cXGR7MTB9JC8pKSByZXR1cm4gZmFsc2U7XG4gICAgc3RyID0gXCIwMDAwXCIuY29uY2F0KHN0cikuc2xpY2Uoc3RyLmxlbmd0aCAtIDYpO1xuICAgIGlmIChwYXJzZUludChzdHIuc2xpY2UoMywgOSksIDEwKSA9PT0gMCkgcmV0dXJuIGZhbHNlO1xuICAgIHZhciBsYXN0TnVtYmVyID0gcGFyc2VJbnQoc3RyLnNsaWNlKDksIDEwKSwgMTApO1xuICAgIHZhciBzdW0gPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgOTsgaSsrKSB7XG4gICAgICBzdW0gKz0gcGFyc2VJbnQoc3RyLnNsaWNlKGksIGkgKyAxKSwgMTApICogKDEwIC0gaSk7XG4gICAgfVxuICAgIHN1bSAlPSAxMTtcbiAgICByZXR1cm4gc3VtIDwgMiAmJiBsYXN0TnVtYmVyID09PSBzdW0gfHwgc3VtID49IDIgJiYgbGFzdE51bWJlciA9PT0gMTEgLSBzdW07XG4gIH0sXG4gIElUOiBmdW5jdGlvbiBJVChzdHIpIHtcbiAgICBpZiAoc3RyLmxlbmd0aCAhPT0gOSkgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChzdHIgPT09ICdDQTAwMDAwQUEnKSByZXR1cm4gZmFsc2U7IC8vIGh0dHBzOi8vaXQud2lraXBlZGlhLm9yZy93aWtpL0NhcnRhX2QlMjdpZGVudGl0JUMzJUEwX2VsZXR0cm9uaWNhX2l0YWxpYW5hXG4gICAgcmV0dXJuIHN0ci5zZWFyY2goL0NbQS1aXVxcZHs1fVtBLVpdezJ9L2kpID4gLTE7XG4gIH0sXG4gIE5POiBmdW5jdGlvbiBOTyhzdHIpIHtcbiAgICB2YXIgc2FuaXRpemVkID0gc3RyLnRyaW0oKTtcbiAgICBpZiAoaXNOYU4oT
15nVtYmVyKHNhbml0aXplZCkpKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKHNhbml0aXplZC5sZW5ndGggIT09IDExKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKHNhbml0aXplZCA9PT0gJzAwMDAwMDAwMDAwJykgcmV0dXJuIGZhbHNlO1xuXG4gICAgLy8gaHR0cHM6Ly9uby53aWtpcGVkaWEub3JnL3dpa2kvRiVDMyVCOGRzZWxzbnVtbWVyXG4gICAgdmFyIGYgPSBzYW5pdGl6ZWQuc3BsaXQoJycpLm1hcChOdW1iZXIpO1xuICAgIHZhciBrMSA9ICgxMSAtICgzICogZlswXSArIDcgKiBmWzFdICsgNiAqIGZbMl0gKyAxICogZlszXSArIDggKiBmWzRdICsgOSAqIGZbNV0gKyA0ICogZls2XSArIDUgKiBmWzddICsgMiAqIGZbOF0pICUgMTEpICUgMTE7XG4gICAgdmFyIGsyID0gKDExIC0gKDUgKiBmWzBdICsgNCAqIGZbMV0gKyAzICogZlsyXSArIDIgKiBmWzNdICsgNyAqIGZbNF0gKyA2ICogZls1XSArIDUgKiBmWzZdICsgNCAqIGZbN10gKyAzICogZls4XSArIDIgKiBrMSkgJSAxMSkgJSAxMTtcbiAgICBpZiAoazEgIT09IGZbOV0gfHwgazIgIT09IGZbMTBdKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0sXG4gIFRIOiBmdW5jdGlvbiBUSChzdHIpIHtcbiAgICBpZiAoIXN0ci5tYXRjaCgvXlsxLThdXFxkezEyfSQvKSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgLy8gdmFsaWRhdGUgY2hlY2sgZGlnaXRcbiAgICB2YXIgc3VtID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEyOyBpKyspIHtcbiAgICAgIHN1bSArPSBwYXJzZUludChzdHJbaV0sIDEwKSAqICgxMyAtIGkpO1xuICAgIH1cbiAgICByZXR1cm4gc3RyWzEyXSA9PT0gKCgxMSAtIHN1bSAlIDExKSAlIDEwKS50b1N0cmluZygpO1xuICB9LFxuICBMSzogZnVuY3Rpb24gTEsoc3RyKSB7XG4gICAgdmFyIG9sZF9uaWMgPSAvXlsxLTldXFxkezh9W3Z4XSQvaTtcbiAgICB2YXIgbmV3X25pYyA9IC9eWzEtOV1cXGR7MTF9JC9pO1xuICAgIGlmIChzdHIubGVuZ3RoID09PSAxMCAmJiBvbGRfbmljLnRlc3Qoc3RyKSkgcmV0dXJuIHRydWU7ZWxzZSBpZiAoc3RyLmxlbmd0aCA9PT0gMTIgJiYgbmV3X25pYy50ZXN0KHN0cikpIHJldHVybiB0cnVlO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSxcbiAgJ2hlLUlMJzogZnVuY3Rpb24gaGVJTChzdHIpIHtcbiAgICB2YXIgRE5JID0gL15cXGR7OX0kLztcblxuICAgIC8vIHNhbml0aXplIHVzZXIgaW5wdXRcbiAgICB2YXIgc2FuaXRpemVkID0gc3RyLnRyaW0oKTtcblxuICAgIC8vIHZhbGlkYXRlIHRoZSBkYXRhIHN0cnVjdHVyZVxuICAgIGlmICghRE5JLnRlc3Qoc2FuaXRpemVkKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB2YXIgaWQgPSBzYW5pdGl6ZWQ7XG4gICAgdmFyIHN1bSA9IDAsXG4gICAgICBpbmNOdW07XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpZC5sZW5ndGg7IGkrKykge1xuICAgICAgaW5jTnVtID0gTnVtYmVyKGlkW2ldKSAqIChpICUgMiArIDEpOyAvLyBNdWx0aXBseSBudW1iZXIgYnkgMSBvciAyXG4gICAgICBzdW0gKz0gaW5jTnVtID4gOSA/IGluY051bSAtIDkgOiBpbmNOdW07IC8vIFN1bSB0aGUgZGlnaXRzIHVwIGFuZCBhZGQgdG8gdG90YWxcbiAgICB9XG4gICAgcmV0dXJuIHN1bSAlIDEwID09PSAwO1xuICB9LFxuICAnYXItTFknOiBmdW5jdGlvbiBhckxZKHN0cikge1xuICAgIC8vIExpYnlhIE5hdGlvbmFsIElkZW50aXR5IE51bWJlciBOSU4gaXMgMTIgZGlnaXRzLCB0aGUgZmlyc3QgZGlnaXQgaXMgZWl0aGVyIDEgb3IgMlxuICAgIHZhciBOSU4gPSAvXigxfDIpXFxkezExfSQvO1xuXG4gICAgLy8gc2FuaXRpemUgdXNlciBpbnB1dFxuICAgIHZhciBzYW5pdGl6ZWQgPSBzdHIudHJpbSgpO1xuXG4gICAgLy8gdmFsaWRhdGUgdGhlIGRhdGEgc3RydWN0dXJlXG4gICAgaWYgKCFOSU4udGVzdChzYW5pdGl6ZWQpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9LFxuICAnYXItVE4nOiBmdW5jdGlvbiBhclROKHN0cikge1xuICAgIHZhciBETkkgPSAvXlxcZHs4fSQvO1xuXG4gICAgLy8gc2FuaXRpemUgdXNlciBpbnB1dFxuICAgIHZhciBzYW5pdGl6ZWQgPSBzdHIudHJpbSgpO1xuXG4gICAgLy8gdmFsaWRhdGUgdGhlIGRhdGEgc3RydWN0dXJlXG4gICAgaWYgKCFETkkudGVzdChzYW5pdGl6ZWQpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9LFxuICAnemgtQ04nOiBmdW5jdGlvbiB6aENOKHN0cikge1xuICAgIHZhciBwcm92aW5jZXNBbmRDaXRpZXMgPSBbJzExJyxcbiAgICAvLyDljJfkuqxcbiAgICAnMTInLFxuICAgIC8vIOWkqea0pVxuICAgICcxMycsXG4gICAgLy8g5rKz5YyXXG4gICAgJzE0JyxcbiAgICAvLyDlsbHopb9cbiAgICAnMTUnLFxuICAgIC8vIOWGheiSmeWPpFxuICAgICcyMScsXG4gICAgLy8g6L695a6BXG4gICAgJzIyJyxcbiAgICAvLyDlkInmnpdcbiAgICAnMjMnLFxuICAgIC8vIOm7kem+meaxn1xuICAgICczMScsXG4gICAgLy8g5LiK5rW3XG4gICAgJzMyJyxcbiAgICAvLyDmsZ/oi49cbiAgICAnMzMnLFxuICAgIC8vIOa1meaxn1xuICAgICczNCcsXG4gICAgLy8g5a6J5b69XG4gICAgJzM1JyxcbiAgICAvLyDnpo/lu7pcbiAgICAnMzYnLFxuICAgIC8vIOaxn+ilv1xuICAgICczNycsXG4gICAgLy8g5bGx5LicXG4gICAgJzQxJyxcbiAgICAvLyDmsrPljZdcbiAgICAnNDInLFxuICAgIC8vIOa5luWMl1xuICAgICc0MycsXG4gICAgLy8g5rmW5Y2XXG4gICAgJzQ0JyxcbiAgICAvLyDlub/kuJxcbiAgICAnNDUnLFxuICAgIC8vIOW5v+ilv1xuICAgICc0NicsXG4gICAgLy8g5rW35Y2XXG4gICAgJzUwJyxcbiAgICAvLyDph43luoZcbiAgICAnNTEnLFxuICAgIC8vIOWbm+W3nVxuICAgICc1MicsXG4gICAgLy8g6LS15beeXG4gICAgJzUzJyxcbiAgICAvLyDkupHljZdcbiAgICAnNTQnLFxuICAgIC8vIOilv+iXj1xuICAgICc2MScsXG4gICAgLy8g6ZmV6KW/XG4gICAgJzYyJyxcbiAgICAvLyDnlJjogoNcbiAgICAnNjMnLFxuICAgIC8vIOmdkua1t1xuICAgICc2NCcsXG4gICAgLy8g5a6B5aSPXG4gICAgJzY1JyxcbiAgICAvLyDmlrDnloZcbiAgICAnNzEnLFxuICAgIC8vIOWPsOa5vlxuICAgICc4MScsXG4gICAgLy8g6aaZ5rivXG4gICAgJzgyJyxcbiAgICAvLyDmvrPpl6hcbiAgICAnOTEnIC8vIOWbveWkllxuICAgIF07XG4gICAgdmFyIHBvd2VycyA9IFsnNycsICc5JywgJzEwJywgJzUnLCAnOCcsICc0JywgJzInLCAnMScsICc2JywgJzMnLCAnNycsICc5JywgJzEwJywgJzUnLCAnOCcsICc0JywgJzInXTtcbiAgICB2YXIgcGFyaXR5Qml0ID0gWycxJywgJzAnLCAnWCcsICc5JywgJzgnLCAnNycsICc2JywgJzUnLCAnNCcsICczJywgJzInXTtcbiAgICB2YXIgY2hlY2tBZGRyZXNzQ29kZSA9IGZ1bmN0aW9uIGNoZWNrQWRkcmVzc0NvZGUoYWRkcmVzc0NvZGUpIHtcbiAgICAgIHJldHVybi
15Bwcm92aW5jZXNBbmRDaXRpZXMuaW5jbHVkZXMoYWRkcmVzc0NvZGUpO1xuICAgIH07XG4gICAgdmFyIGNoZWNrQmlydGhEYXlDb2RlID0gZnVuY3Rpb24gY2hlY2tCaXJ0aERheUNvZGUoYmlyRGF5Q29kZSkge1xuICAgICAgdmFyIHl5eXkgPSBwYXJzZUludChiaXJEYXlDb2RlLnN1YnN0cmluZygwLCA0KSwgMTApO1xuICAgICAgdmFyIG1tID0gcGFyc2VJbnQoYmlyRGF5Q29kZS5zdWJzdHJpbmcoNCwgNiksIDEwKTtcbiAgICAgIHZhciBkZCA9IHBhcnNlSW50KGJpckRheUNvZGUuc3Vic3RyaW5nKDYpLCAxMCk7XG4gICAgICB2YXIgeGRhdGEgPSBuZXcgRGF0ZSh5eXl5LCBtbSAtIDEsIGRkKTtcbiAgICAgIGlmICh4ZGF0YSA+IG5ldyBEYXRlKCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuICAgICAgfSBlbHNlIGlmICh4ZGF0YS5nZXRGdWxsWWVhcigpID09PSB5eXl5ICYmIHhkYXRhLmdldE1vbnRoKCkgPT09IG1tIC0gMSAmJiB4ZGF0YS5nZXREYXRlKCkgPT09IGRkKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgdmFyIGdldFBhcml0eUJpdCA9IGZ1bmN0aW9uIGdldFBhcml0eUJpdChpZENhcmRObykge1xuICAgICAgdmFyIGlkMTcgPSBpZENhcmROby5zdWJzdHJpbmcoMCwgMTcpO1xuICAgICAgdmFyIHBvd2VyID0gMDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTc7IGkrKykge1xuICAgICAgICBwb3dlciArPSBwYXJzZUludChpZDE3LmNoYXJBdChpKSwgMTApICogcGFyc2VJbnQocG93ZXJzW2ldLCAxMCk7XG4gICAgICB9XG4gICAgICB2Y
15XIgbW9kID0gcG93ZXIgJSAxMTtcbiAgICAgIHJldHVybiBwYXJpdHlCaXRbbW9kXTtcbiAgICB9O1xuICAgIHZhciBjaGVja1Bhcml0eUJpdCA9IGZ1bmN0aW9uIGNoZWNrUGFyaXR5Qml0KGlkQ2FyZE5vKSB7XG4gICAgICByZXR1cm4gZ2V0UGFyaXR5Qml0KGlkQ2FyZE5vKSA9PT0gaWRDYXJkTm8uY2hhckF0KDE3KS50b1VwcGVyQ2FzZSgpO1xuICAgIH07XG4gICAgdmFyIGNoZWNrMTVJZENhcmRObyA9IGZ1bmN0aW9uIGNoZWNrMTVJZENhcmRObyhpZENhcmRObykge1xuICAgICAgdmFyIGNoZWNrID0gL15bMS05XVxcZHs3fSgoMFsxLTldKXwoMVswLTJdKSkoKDBbMS05XSl8KFsxLTJdWzAtOV0pfCgzWzAtMV0pKVxcZHszfSQvLnRlc3QoaWRDYXJkTm8pO1xuICAgICAgaWYgKCFjaGVjaykgcmV0dXJuIGZhbHNlO1xuICAgICAgdmFyIGFkZHJlc3NDb2RlID0gaWRDYXJkTm8uc3Vic3RyaW5nKDAsIDIpO1xuICAgICAgY2hlY2sgPSBjaGVja0FkZHJlc3NDb2RlKGFkZHJlc3NDb2RlKTtcbiAgICAgIGlmICghY2hlY2spIHJldHVybiBmYWxzZTtcbiAgICAgIHZhciBiaXJEYXlDb2RlID0gXCIxOVwiLmNvbmNhdChpZENhcmROby5zdWJzdHJpbmcoNiwgMTIpKTtcbiAgICAgIGNoZWNrID0gY2hlY2tCaXJ0aERheUNvZGUoYmlyRGF5Q29kZSk7XG4gICAgICBpZiAoIWNoZWNrKSByZXR1cm4gZmFsc2U7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuICAgIHZhciBjaGVjazE4SWRDYXJkTm8gPSBmdW5jdGlvbiBjaGVjazE4SWRDYXJkTm8oaWRDYXJkTm8pIHtcbiAgICAgIHZhciBjaGVjayA9IC9eWzEtOV1cXGR7NX1bMS05XVxcZHszfSgoMFsxLTldKXwoMVswLTJdKSkoKDBbMS05XSl8KFsxLTJdWzAtOV0pfCgzWzAtMV0pKVxcZHszfShcXGR8eHxYKSQvLnRlc3QoaWRDYXJkTm8pO1xuICAgICAgaWYgKCFjaGVjaykgcmV0dXJuIGZhbHNlO1xuICAgICAgdmFyIGFkZHJlc3NDb2RlID0gaWRDYXJkTm8uc3Vic3RyaW5nKDAsIDIpO1xuICAgICAgY2hlY2sgPSBjaGVja0FkZHJlc3NDb2RlKGFkZHJlc3NDb2RlKTtcbiAgICAgIGlmICghY2hlY2spIHJldHVybiBmYWxzZTtcbiAgICAgIHZhciBiaXJEYXlDb2RlID0gaWRDYXJkTm8uc3Vic3RyaW5nKDYsIDE0KTtcbiAgICAgIGNoZWNrID0gY2hlY2tCaXJ0aERheUNvZGUoYmlyRGF5Q29kZSk7XG4gICAgICBpZiAoIWNoZWNrKSByZXR1cm4gZmFsc2U7XG4gICAgICByZXR1cm4gY2hlY2tQYXJpdHlCaXQoaWRDYXJkTm8pO1xuICAgIH07XG4gICAgdmFyIGNoZWNrSWRDYXJkTm8gPSBmdW5jdGlvbiBjaGVja0lkQ2FyZE5vKGlkQ2FyZE5vKSB7XG4gICAgICB2Y
15XIgY2hlY2sgPSAvXlxcZHsxNX18KFxcZHsxN30oXFxkfHh8WCkpJC8udGVzdChpZENhcmRObyk7XG4gICAgICBpZiAoIWNoZWNrKSByZXR1cm4gZmFsc2U7XG4gICAgICBpZiAoaWRDYXJkTm8ubGVuZ3RoID09PSAxNSkge1xuICAgICAgICByZXR1cm4gY2hlY2sxNUlkQ2FyZE5vKGlkQ2FyZE5vKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjaGVjazE4SWRDYXJkTm8oaWRDYXJkTm8pO1xuICAgIH07XG4gICAgcmV0dXJuIGNoZWNrSWRDYXJkTm8oc3RyKTtcbiAgfSxcbiAgJ3poLUhLJzogZnVuY3Rpb24gemhISyhzdHIpIHtcbiAgICAvLyBzYW5pdGl6ZSB1c2VyIGlucHV0XG4gICAgc3RyID0gc3RyLnRyaW0oKTtcblxuICAgIC8vIEhLSUQgbnVtYmVyIHN0YXJ0cyB3aXRoIDEgb3IgMiBsZXR0ZXJzLCBmb2xsb3dlZCBieSA2IGRpZ2l0cyxcbiAgICAvLyB0aGVuIGEgY2hlY2tzdW0gY29udGFpbmVkIGluIHNxdWFyZSAvIHJvdW5kIGJyYWNrZXRzIG9yIG5vdGhpbmdcbiAgICB2YXIgcmVnZXhIS0lEID0gL15bQS1aXXsxLDJ9WzAtOV17Nn0oKFxcKFswLTlBXVxcKSl8KFxcW1swLTlBXVxcXSl8KFswLTlBXSkpJC87XG4gICAgdmFyIHJlZ2V4SXNEaWdpdCA9IC9eWzAtOV0kLztcblxuICAgIC8vIGNvbnZlcnQgdGhlIHVzZXIgaW5wdXQgdG8gYWxsIHVwcGVyY2FzZSBhbmQgYXBwbHkgcmVnZXhcbiAgICBzdHIgPSBzdHIudG9VcHBlckNhc2UoKTtcbiAgICBpZiAoIXJlZ2V4SEtJRC50ZXN0KHN0cikpIHJldHVybiBmYWxzZTtcbiAgICBzdHIgPSBzdHIucmVwbGFjZSgvXFxbfFxcXXxcXCh8XFwpL2csICcnKTtcbiAgICBpZiAoc3RyLmxlbmd0aCA9PT0gOCkgc3RyID0gXCIzXCIuY29uY2F0KHN0cik7XG4gICAgdmFyIGNoZWNrU3VtVmFsID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8PSA3OyBpKyspIHtcbiAgICAgIHZhciBjb252ZXJ0ZWRDaGFyID0gdm9pZCAwO1xuICAgICAgaWYgKCFyZWdleElzRGlnaXQudGVzdChzdHJbaV0pKSBjb252ZXJ0ZWRDaGFyID0gKHN0cltpXS5jaGFyQ29kZUF0KDApIC0gNTUpICUgMTE7ZWxzZSBjb252ZXJ0ZWRDaGFyID0gc3RyW2ldO1xuICAgICAgY2hlY2tTdW1WYWwgKz0gY29udmVydGVkQ2hhciAqICg5IC0gaSk7XG4gICAgfVxuICAgIGNoZWNrU3VtVmFsICU9IDExO1xuICAgIHZhciBjaGVja1N1bUNvbnZlcnRlZDtcbiAgICBpZiAoY2hlY2tTdW1WYWwgPT09IDApIGNoZWNrU3VtQ29udmVydGVkID0gJzAnO2Vsc2UgaWYgKGNoZWNrU3VtVmFsID09PSAxKSBjaGVja1N1bUNvbnZlcnRlZCA9ICdBJztlbHNlIGNoZWNrU3VtQ29udmVydGVkID0gU3RyaW5nKDExIC0gY2hlY2tTdW1WYWwpO1xuICAgIGlmIChjaGVja1N1bUNvbnZlcnRlZCA9PT0gc3RyW3N0ci5sZW5ndGggLSAxXSkgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LFxuICAnemgtVFcnOiBmdW5jdGlvbiB6aFRXKHN0cikge1xuICAgIHZhciBBTFBIQUJFVF9DT0RFUyA9IHtcbiAgICAgIEE6IDEwLFxuICAgICAgQjogMTEsXG4gICAgICBDOiAxMixcbiAgICAgIEQ6IDEzLFxuICAgICAgRTogMTQsXG4gICAgICBGOiAxNSxcbiAgICAgIEc6IDE2LFxuICAgICAgSDogMTcsXG4gICAgICBJOiAzNCxcbiAgICAgIEo6IDE4LFxuICAgICAgSzogMTksXG4gICAgICBMOiAyMCxcbiAgICAgIE06IDIxLFxuICAgICAgTjogMjIsXG4gICAgICBPOiAzNSxcbiAgICAgIFA6IDIzLFxuICAgICAgUTogMjQsXG4gICAgICBSOiAyNSxcbiAgICAgIFM6IDI2LFxuICAgICAgVDogMjcsXG4gICAgICBVOiAyOCxcbiAgICAgIFY6IDI5LFxuICAgICAgVzogMzIsXG4gICAgICBYOiAzMCxcbiAgICAgIFk6IDMxLFxuICAgICAgWjogMzNcbiAgICB9O1xuICAgIHZhciBzYW5pdGl6ZWQgPSBzdHIudHJpbSgpLnRvVXBwZXJDYXNlKCk7XG4gICAgaWYgKCEvXltBLVpdWzAtOV17OX0kLy50ZXN0KHNhbml0aXplZCkpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShzYW5pdGl6ZWQpLnJlZHVjZShmdW5jdGlvbiAoc3VtLCBudW1iZXIsIGluZGV4KSB7XG4gICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgdmFyIGNvZGUgPSBBTFBIQUJFVF9DT0RFU1tudW1iZXJdO1xuICAgICAgICByZXR1cm4gY29kZSAlIDEwICogOSArIE1hdGguZmxvb3IoY29kZSAvIDEwKTtcbiAgICAgIH1cbiAgICAgIGlmIChpbmRleCA9PT0gOSkge1xuICAgICAgICByZXR1cm4gKDEwIC0gc3VtICUgMTAgLSBOdW1iZXIobnVtYmVyKSkgJSAxMCA9PT0gMDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzdW0gKyBOdW1iZXIobnVtYmVyKSAqICg5IC0gaW5kZXgpO1xuICAgIH0sIDApO1xuICB9XG59O1xuZnVuY3Rpb24gaXNJZGVudGl0eUNhcmQoc3RyLCBsb2NhbGUpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcuZGVmYXVsdCkoc3RyKTtcbiAgaWYgKGxvY2FsZSBpbiB2YWxpZGF0b3JzKSB7XG4gICAgcmV0dXJuIHZhbGlkYXRvcnNbbG9jYWxlXShzdHIpO1xuICB9IGVsc2UgaWYgKGxvY2FsZSA9PT0gJ2FueScpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gdmFsaWRhdG9ycykge1xuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2dvdHdhcmxvc3QvaXN0YW5idWwvYmxvYi9tYXN0ZXIvaWdub3JpbmctY29kZS1mb3ItY292ZXJhZ2UubWQjaWdub3JpbmctY29kZS1mb3ItY292ZXJhZ2UtcHVycG9zZXNcbiAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBlbHNlXG4gICAgICBpZiAodmFsaWRhdG9ycy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIHZhciB2YWxpZGF0b3IgPSB2YWxpZGF0b3JzW2tleV07XG4gICAgICAgIGlmICh2YWxpZGF0b3Ioc3RyKSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGxvY2FsZSAnXCIuY29uY2F0KGxvY2FsZSwgXCInXCIpKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZh
15dWx0O1xubW9kdWxlLmV4cG9ydHMuZGVmYXVsdCA9IGV4cG9ydHMuZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzRUFOO1xudmFyIF9hc3NlcnRTdHJpbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWwvYXNzZXJ0U3RyaW5nXCIpKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG4vKipcbiAqIFRoZSBtb3N0IGNvbW1vbmx5IHVzZWQgRUFOIHN0YW5kYXJkIGlzXG4gKiB0aGUgdGhpcnRlZW4tZGlnaXQgRUFOLTEzLCB3aGlsZSB0aGVcbiAqIGxlc3MgY29tbW9ubHkgdXNlZCA4LWRpZ2l0IEVBTi04IGJhcmNvZGUgd2FzXG4gKiBpbnRyb2R1Y2VkIGZvciB1c2Ugb24gc21hbGwgcGFja2FnZXMuXG4gKiBBbHNvIEVBTi9VQ0MtMTQgaXMgdXNlZCBmb3IgR3JvdXBpbmcgb2YgaW5kaXZpZHVhbFxuICogdHJhZGUgaXRlbXMgYWJvdmUgdW5pdCBsZXZlbChJbnRlcm1lZGlhdGUsIENhcnRvbiBvciBQYWxsZXQpLlxuICogRm9yIG1vcmUgaW5mbyBhYm91dCBFQU4tMTQgY2hlY2tvdXQ6IGh0dHBzOi8vd3d3Lmd0aW4uaW5mby9pdGYtMTQtYmFyY29kZXMvXG4gKiBFQU4gY29uc2lzdHMgb2Y6XG4gKiBHUzEgcHJlZml4LCBtYW51ZmFjdHVyZXIgY29kZSwgcHJvZHVjdCBjb2RlIGFuZCBjaGVjayBkaWdpdFxuICogUmVmZXJlbmNlOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbnRlcm5hdGlvbmFsX0FydGljbGVfTnVtYmVyXG4gKiBSZWZlcmVuY2U6IGh0dHBzOi8vd3d3Lmd0aW4uaW5mby9cbiAqL1xuXG4vKipcbiAqIERlZmluZSBFQU4gTGVuZ2h0czsgOCBmb3IgRUFOLTg7IDEzIGZvciBFQU4tMTM7IDE0IGZvciBFQU4tMTRcbiAqIGFuZCBSZWd1bGFyIEV4cHJlc3Npb24gZm9yIHZhbGlkIEVBTnMgKEVBTi04LCBFQU4tMTMsIEVBTi0xNCksXG4gKiB3aXRoIGV4YWN0IG51bWJlcmljIG1hdGNoaW5nIG9mIDggb3IgMTMgb3IgMTQgZGlnaXRzIFswLTldXG4gKi9cbnZhciBMRU5HVEhfRUFOXzggPSA4O1xudmFyIExFTkdUSF9FQU5fMTQgPSAxNDtcbnZhciB2YWxpZEVhblJlZ2V4ID0gL14oXFxkezh9fFxcZHsxM318XFxkezE0fSkkLztcblxuLyoqXG4gKiBHZXQgcG9zaXRpb24gd2VpZ2h0IGdpdmVuOlxuICogRUFOIGxlbmd0aCBhbmQgZGlnaXQgaW5kZXgvcG9zaXRpb25cbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gbGVuZ3RoXG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZnVuY3Rpb24gZ2V0UG9zaXRpb25XZWlnaHRUaHJvdWdoTGVuZ3RoQW5kSW5kZXgobGVuZ3RoLCBpbmRleCkge1xuICBpZiAobGVuZ3RoID09PSBMRU5HVEhfRUFOXzggfHwgbGVuZ3RoID09PSBMRU5HVEhfRUFOXzE0KSB7XG4gICAgcmV0dXJuIGluZGV4ICUgMiA9PT0gMCA/IDMgOiAxO1xuICB9XG4gIHJldHVybiBpbmRleCAlIDIgPT09IDAgPyAxIDogMztcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGUgRUFOIENoZWNrIERpZ2l0XG4gKiBSZWZlcmVuY2U6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ludGVybmF0aW9uYWxfQXJ0aWNsZV9OdW1iZXIjQ2FsY3VsYXRpb25fb2ZfY2hlY2tzdW1fZGlnaXRcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gZWFuXG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmZ1bmN0aW9uIGNhbGN1bGF0ZUNoZWNrRGlnaXQoZWFuKSB7XG4gIHZhciBjaGVja3N1bSA9IGVhbi5zbGljZSgwLCAtMSkuc3BsaXQoJycpLm1hcChmdW5jdGlvbiAoY2hhciwgaW5kZXgpIHtcbiAgICByZXR1cm4gTnVtYmVyKGNoYXIpICogZ2V0UG9zaXRpb25XZWlnaHRUaHJvdWdoTGVuZ3RoQW5kSW5kZXgoZWFuLmxlbmd0aCwgaW5kZXgpO1xuICB9KS5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcGFydGlhbFN1bSkge1xuICAgIHJldHVybiBhY2MgKyBwYXJ0aWFsU3VtO1xuICB9LCAwKTtcbiAgdmFyIHJlbWFpbmRlciA9IDEwIC0gY2hlY2tzdW0gJSAxMDtcbiAgcmV0dXJuIHJlbWFpbmRlciA8IDEwID8gcmVtYWluZGVyIDogMDtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBzdHJpbmcgaXMgdmFsaWQgRUFOOlxuICogTWF0Y2hlcyBFQU4tOC9FQU4tMTMvRUFOLTE0IHJlZ2V4XG4gKiBIYXMgdmFsaWQgY2hlY2sgZGlnaXQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0clxuICogQHJldHVybiB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNFQU4oc3RyKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nLmRlZmF1bHQpKHN0cik7XG4gIHZhciBhY3R1YWxDaGVja0RpZ2l0ID0gTnVtYmVyKHN0ci5zbGljZSgtMSkpO1xuICByZXR1cm4gdmFsaWRFYW5SZWdleC50ZXN0KHN0cikgJiYgYWN0dWFsQ2hlY2tEaWdpdCA9PT0gY2FsY3VsYXRlQ2hlY2tEaWdpdChzdHIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG5tb2R1bGUuZXhwb3J0cy5kZWZh
15dWx0ID0gZXhwb3J0cy5kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNJU0lOO1xudmFyIF9hc3NlcnRTdHJpbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWwvYXNzZXJ0U3RyaW5nXCIpKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG52YXIgaXNpbiA9IC9eW0EtWl17Mn1bMC05QS1aXXs5fVswLTldJC87XG5cbi8vIHRoaXMgbGluayBkZXRhaWxzIGhvdyB0aGUgY2hlY2sgZGlnaXQgaXMgY2FsY3VsYXRlZDpcbi8vIGh0dHBzOi8vd3d3LmlzaW4ub3JnL2lzaW4tZm9ybWF0Ly4gaXQgaXMgYSBsaXR0bGUgYml0XG4vLyBvZGQgaW4gdGhhdCBpdCB3b3JrcyB3aXRoIGRpZ2l0cywgbm90IG51bWJlcnMuIGluIG9yZGVyXG4vLyB0byBtYWtlIG9ubHkgb25lIHBhc3MgdGhyb3VnaCB0aGUgSVNJTiBjaGFyYWN0ZXJzLCB0aGVcbi8vIGVhY2ggYWxwaGEgY2hhcmFjdGVyIGlzIGhhbmRsZWQgYXMgMiBjaGFyYWN0ZXJzIHdpdGhpblxuLy8gdGhlIGxvb3AuXG5cbmZ1bmN0aW9uIGlzSVNJTihzdHIpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcuZGVmYXVsdCkoc3RyKTtcbiAgaWYgKCFpc2luLnRlc3Qoc3RyKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgZG91YmxlID0gdHJ1ZTtcbiAgdmFyIHN1bSA9IDA7XG4gIC8vIGNvbnZlcnQgdmFsdWVzXG4gIGZvciAodmFyIGkgPSBzdHIubGVuZ3RoIC0gMjsgaSA+PSAwOyBpLS0pIHtcbiAgICBpZiAoc3RyW2ldID49ICdBJ
15yAmJiBzdHJbaV0gPD0gJ1onKSB7XG4gICAgICB2YXIgdmFsdWUgPSBzdHJbaV0uY2hhckNvZGVBdCgwKSAtIDU1O1xuICAgICAgdmFyIGxvID0gdmFsdWUgJSAxMDtcbiAgICAgIHZhciBoaSA9IE1hdGgudHJ1bmModmFsdWUgLyAxMCk7XG4gICAgICAvLyBsZXR0ZXJzIGhhdmUgdHdvIGRpZ2l0cywgc28gaGFuZGxlIHRoZSBsb3cgb3JkZXJcbiAgICAgIC8vIGFuZCBoaWdoIG9yZGVyIGRpZ2l0cyBzZXBhcmF0ZWx5LlxuICAgICAgZm9yICh2YXIgX2kgPSAwLCBfYXJyID0gW2xvLCBoaV07IF9pIDwgX2Fyci5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgdmFyIGRpZ2l0ID0gX2FycltfaV07XG4gICAgICAgIGlmIChkb3VibGUpIHtcbiAgICAgICAgICBpZiAoZGlnaXQgPj0gNSkge1xuICAgICAgICAgICAgc3VtICs9IDEgKyAoZGlnaXQgLSA1KSAqIDI7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN1bSArPSBkaWdpdCAqIDI7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN1bSArPSBkaWdpdDtcbiAgICAgICAgfVxuICAgICAgICBkb3VibGUgPSAhZG91YmxlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgX2RpZ2l0ID0gc3RyW2ldLmNoYXJDb2RlQXQoMCkgLSAnMCcuY2hhckNvZGVBdCgwKTtcbiAgICAgIGlmIChkb3VibGUpIHtcbiAgICAgICAgaWYgKF9kaWdpdCA+PSA1KSB7XG4gICAgICAgICAgc3VtICs9IDEgKyAoX2RpZ2l0IC0gNSkgKiAyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN1bSArPSBfZGlnaXQgKiAyO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdW0gKz0gX2RpZ2l0O1xuICAgICAgfVxuICAgICAgZG91YmxlID0gIWRvdWJsZTtcbiAgICB9XG4gIH1cbiAgdmFyIGNoZWNrID0gTWF0aC50cnVuYygoc3VtICsgOSkgLyAxMCkgKiAxMCAtIHN1bTtcbiAgcmV0dXJuICtzdHJbc3RyLmxlbmd0aCAtIDFdID09PSBjaGVjaztcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZh
15dWx0O1xubW9kdWxlLmV4cG9ydHMuZGVmYXVsdCA9IGV4cG9ydHMuZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzSVNCTjtcbnZhciBfYXNzZXJ0U3RyaW5nID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlsL2Fzc2VydFN0cmluZ1wiKSk7XG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxudmFyIHBvc3NpYmxlSXNibjEwID0gL14oPzpbMC05XXs5fVh8WzAtOV17MTB9KSQvO1xudmFyIHBvc3NpYmxlSXNibjEzID0gL14oPzpbMC05XXsxM30pJC87XG52YXIgZmFjdG9yID0gWzEsIDNdO1xuZnVuY3Rpb24gaXNJU0JOKGlzYm4sIG9wdGlvbnMpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcuZGVmYXVsdCkoaXNibik7XG5cbiAgLy8gRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OlxuICAvLyBpc0lTQk4oc3RyIFssIHZlcnNpb25dKSwgaS5lLiBgb3B0aW9uc2AgY291bGQgYmUgdXNlZCBhcyBhcmd1bWVudCBmb3IgdGhlIGxlZ2FjeSBgdmVyc2lvbmBcbiAgdmFyIHZlcnNpb24gPSBTdHJpbmcoKG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy52ZXJzaW9uKSB8fCBvcHRpb25zKTtcbiAgaWYgKCEob3B0aW9ucyAhPT0gbnVsbCAmJiBvcHRpb25zICE9PSB2b2lkIDAgJiYgb3B0aW9ucy52ZXJzaW9uIHx8IG9wdGlvbnMpKSB7XG4gICAgcmV0dXJuIGlzSVNCTihpc2JuLCB7XG4gICAgICB2ZXJzaW9uOiAxMFxuICAgIH0pIHx8IGlzSVNCTihpc2JuLCB7XG4gICAgICB2ZXJzaW9uOiAxM1xuICAgIH0pO1xuICB9XG4gIHZhciBzYW5pdGl6ZWRJc2JuID0gaXNibi5yZXBsYWNlKC9bXFxzLV0rL2csICcnKTtcbiAgdmFyIGNoZWNrc3VtID0gMDtcbiAgaWYgKHZlcnNpb24gPT09ICcxMCcpIHtcbiAgICBpZiAoIXBvc3NpYmxlSXNibjEwLnRlc3Qoc2FuaXRpemVkSXNibikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2ZXJzaW9uIC0gMTsgaSsrKSB7XG4gICAgICBjaGVja3N1bSArPSAoaSArIDEpICogc2FuaXRpemVkSXNibi5jaGFyQXQoaSk7XG4gICAgfVxuICAgIGlmIChzYW5pdGl6ZWRJc2JuLmNoYXJBdCg5KSA9PT0gJ1gnKSB7XG4gICAgICBjaGVja3N1bSArPSAxMCAqIDEwO1xuICAgIH0gZWxzZSB7XG4gICAgICBjaGVja3N1bSArPSAxMCAqIHNhbml0aXplZElzYm4uY2hhckF0KDkpO1xuICAgIH1cbiAgICBpZiAoY2hlY2tzdW0gJSAxMSA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9IGVsc2UgaWYgKHZlcnNpb24gPT09ICcxMycpIHtcbiAgICBpZiAoIXBvc3NpYmxlSXNibjEzLnRlc3Qoc2FuaXRpemVkSXNibikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IDEyOyBfaSsrKSB7XG4gICAgICBjaGVja3N1bSArPSBmYWN0b3JbX2kgJSAyXSAqIHNhbml0aXplZElzYm4uY2hhckF0KF9pKTtcbiAgICB9XG4gICAgaWYgKHNhbml0aXplZElzYm4uY2hhckF0KDEyKSAtICgxMCAtIGNoZWNrc3VtICUgMTApICUgMTAgPT09IDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBleHBvcnRzLmRlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc0lTU047XG52YXIgX2Fzc2VydFN0cmluZyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vdXRpbC9hc3NlcnRTdHJpbmdcIikpO1xuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cbnZhciBpc3NuID0gJ15cXFxcZHs0fS0/XFxcXGR7M31bXFxcXGRYXSQnO1xuZnVuY3Rpb24gaXNJU1NOKHN0cikge1xuICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG4gICgwLCBfYXNzZXJ0U3RyaW5nLmRlZmF1bHQpKHN0cik7XG4gIHZhciB0ZXN0SXNzbiA9IGlzc247XG4gIHRlc3RJc3NuID0gb3B0aW9ucy5yZXF1aXJlX2h5cGhlbiA/IHRlc3RJc3NuLnJlcGxhY2UoJz8nLCAnJykgOiB0ZXN0SXNzbjtcbiAgdGVzdElzc24gPSBvcHRpb25zLmNhc2Vfc2Vuc2l0aXZlID8gbmV3IFJlZ0V4cCh0ZXN0SXNzbikgOiBuZXcgUmVnRXhwKHRlc3RJc3NuLCAnaScpO1xuICBpZiAoIXRlc3RJc3NuLnRlc3Qoc3RyKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgZGlnaXRzID0gc3RyLnJlcGxhY2UoJy0nLCAnJykudG9VcHBlckNhc2UoKTtcbiAgdmFyIGNoZWNrc3VtID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaWdpdHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZGlnaXQgPSBkaWdpdHNbaV07XG4gICAgY2hlY2tzdW0gKz0gKGRpZ2l0ID09PSAnWCcgPyAxMCA6ICtkaWdpdCkgKiAoOCAtIGkpO1xuICB9XG4gIHJldHVybiBjaGVja3N1bSAlIDExID09PSAwO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG5tb2R1bGUuZXhwb3J0cy5kZWZh
15dWx0ID0gZXhwb3J0cy5kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5pc283MDY0Q2hlY2sgPSBpc283MDY0Q2hlY2s7XG5leHBvcnRzLmx1aG5DaGVjayA9IGx1aG5DaGVjaztcbmV4cG9ydHMucmV2ZXJzZU11bHRpcGx5QW5kU3VtID0gcmV2ZXJzZU11bHRpcGx5QW5kU3VtO1xuZXhwb3J0cy52ZXJob2VmZkNoZWNrID0gdmVyaG9lZmZDaGVjaztcbi8qKlxuICogQWxnb3JpdGhtaWMgdmFsaWRhdGlvbiBmdW5jdGlvbnNcbiAqIE1heSBiZSB1c2VkIGFzIGlzIG9yIGltcGxlbWVudGVkIGluIHRoZSB3b3JrZmxvdyBvZiBvdGhlciB2YWxpZGF0b3JzLlxuICovXG5cbi8qXG4gKiBJU08gNzA2NCB2YWxpZGF0aW9uIGZ1bmN0aW9uXG4gKiBDYWxsZWQgd2l0aCBhIHN0cmluZyBvZiBudW1iZXJzIChpbmNsLiBjaGVjayBkaWdpdClcbiAqIHRvIHZhbGlkYXRlIGFjY29yZGluZyB0byBJU08gNzA2NCAoTU9EIDExLCAxMCkuXG4gKi9cbmZ1bmN0aW9uIGlzbzcwNjRDaGVjayhzdHIpIHtcbiAgdmFyIGNoZWNrdmFsdWUgPSAxMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgY2hlY2t2YWx1ZSA9IChwYXJzZUludChzdHJbaV0sIDEwKSArIGNoZWNrdmFsdWUpICUgMTAgPT09IDAgPyAxMCAqIDIgJSAxMSA6IChwYXJzZUludChzdHJbaV0sIDEwKSArIGNoZWNrdmFsdWUpICUgMTAgKiAyICUgMTE7XG4gIH1cbiAgY2hlY2t2YWx1ZSA9IGNoZWNrdmFsdWUgPT09IDEgPyAwIDogMTEgLSBjaGVja3ZhbHVlO1xuICByZXR1cm4gY2hlY2t2YWx1ZSA9PT0gcGFyc2VJbnQoc3RyWzEwXSwgMTApO1xufVxuXG4vKlxuICogTHVobiAobW9kIDEwKSB2YWxpZGF0aW9uIGZ1bmN0aW9uXG4gKiBDYWxsZWQgd2l0aCBhIHN0cmluZyBvZiBudW1iZXJzIChpbmNsLiBjaGVjayBkaWdpdClcbiAqIHRvIHZhbGlkYXRlIGFjY29yZGluZyB0byB0aGUgTHVobiBhbGdvcml0aG0uXG4gKi9cbmZ1bmN0aW9uIGx1aG5DaGVjayhzdHIpIHtcbiAgdmFyIGNoZWNrc3VtID0gMDtcbiAgdmFyIHNlY29uZCA9IGZhbHNlO1xuICBmb3IgKHZhciBpID0gc3RyLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgaWYgKHNlY29uZCkge1xuICAgICAgdmFyIHByb2R1Y3QgPSBwYXJzZUludChzdHJbaV0sIDEwKSAqIDI7XG4gICAgICBpZiAocHJvZHVjdCA+IDkpIHtcbiAgICAgICAgLy8gc3VtIGRpZ2l0cyBvZiBwcm9kdWN0IGFuZCBhZGQgdG8gY2hlY2tzdW1cbiAgICAgICAgY2hlY2tzdW0gKz0gcHJvZHVjdC50b1N0cmluZygpLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgICByZXR1cm4gcGFyc2VJbnQoYSwgMTApO1xuICAgICAgICB9KS5yZWR1Y2UoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgICByZXR1cm4gYSArIGI7XG4gICAgICAgIH0sIDApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2hlY2tzdW0gKz0gcHJvZHVjdDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY2hlY2tzdW0gKz0gcGFyc2VJbnQoc3RyW2ldLCAxMCk7XG4gICAgfVxuICAgIHNlY29uZCA9ICFzZWNvbmQ7XG4gIH1cbiAgcmV0dXJuIGNoZWNrc3VtICUgMTAgPT09IDA7XG59XG5cbi8qXG4gKiBSZXZlcnNlIFRJTiBtdWx0aXBsaWNhdGlvbiBhbmQgc3VtbWF0aW9uIGhlbHBlciBmdW5jdGlvblxuICogQ2FsbGVkIHdpdGggYW4gYXJyYXkgb2Ygc2luZ2xlLWRpZ2l0IGludGVnZXJzIGFuZCBhIGJhc2UgbXVsdGlwbGllclxuICogdG8gY2FsY3VsYXRlIHRoZSBzdW0gb2YgdGhlIGRpZ2l0cyBtdWx0aXBsaWVkIGluIHJldmVyc2UuXG4gKiBOb3JtYWxseSB1c2VkIGluIHZhcmlhdGlvbnMgb2YgTU9EIDExIGFsZ29yaXRobWljIGNoZWNrcy5cbiAqL1xuZnVuY3Rpb24gcmV2ZXJzZU11bHRpcGx5QW5kU3VtKGRpZ2l0cywgYmFzZSkge1xuICB2YXIgdG90YWwgPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGRpZ2l0cy5sZW5ndGg7IGkrKykge1xuICAgIHRvdGFsICs9IGRpZ2l0c1tpXSAqIChiYXNlIC0gaSk7XG4gIH1cbiAgcmV0dXJuIHRvdGFsO1xufVxuXG4vKlxuICogVmVyaG9lZmYgdmFsaWRhdGlvbiBoZWxwZXIgZnVuY3Rpb25cbiAqIENhbGxlZCB3aXRoIGEgc3RyaW5nIG9mIG51bWJlcnNcbiAqIHRvIHZhbGlkYXRlIGFjY29yZGluZyB0byB0aGUgVmVyaG9lZmYgYWxnb3JpdGhtLlxuICovXG5mdW5jdGlvbiB2ZXJob2VmZkNoZWNrKHN0cikge1xuICB2YXIgZF90YWJsZSA9IFtbMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOV0sIFsxLCAyLCAzLCA0LCAwLCA2LCA3LCA4LCA5LCA1XSwgWzIsIDMsIDQsIDAsIDEsIDcsIDgsIDksIDUsIDZdLCBbMywgNCwgMCwgMSwgMiwgOCwgOSwgNSwgNiwgN10sIFs0LCAwLCAxLCAyLCAzLCA5LCA1LCA2LCA3LCA4XSwgWzUsIDksIDgsIDcsIDYsIDAsIDQsIDMsIDIsIDFdLCBbNiwgNSwgOSwgOCwgNywgMSwgMCwgNCwgMywgMl0sIFs3LCA2LCA1LCA5LCA4LCAyLCAxLCAwLCA0LCAzXSwgWzgsIDcsIDYsIDUsIDksIDMsIDIsIDEsIDAsIDRdLCBbOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMF1dO1xuICB2YXIgcF90YWJsZSA9IFtbMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOV0sIFsxLCA1LCA3LCA2LCAyLCA4LCAzLCAwLCA5LCA0XSwgWzUsIDgsIDAsIDMsIDcsIDksIDYsIDEsIDQsIDJdLCBbOCwgOSwgMSwgNiwgMCwgNCwgMywgNSwgMiwgN10sIFs5LCA0LCA1LCAzLCAxLCAyLCA2LCA4LCA3LCAwXSwgWzQsIDIsIDgsIDYsIDUsIDcsIDMsIDksIDAsIDFdLCBbMiwgNywgOSwgMywgOCwgMCwgNiwgNCwgMSwgNV0sIFs3LCAwLCA0LCA2LCA5LCAxLCAzLCAyLCA1LCA4XV07XG5cbiAgLy8gQ29weSAodG8gcHJldmVudCByZXBsYWNlbWVudCkgYW5kIHJldmVyc2VcbiAgdmFyIHN0cl9jb3B5ID0gc3RyLnNwbGl0KCcnKS5yZXZlcnNlKCkuam9pbignJyk7XG4gIHZhciBjaGVja3N1bSA9IDA7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyX2NvcHkubGVuZ3RoOyBpKyspIHtcbiAgICBjaGVja3N1bSA9IGRfdGFibGVbY2hlY2tzdW1dW3BfdGFibGVbaSAlIDhdW3BhcnNlSW50KHN0cl9jb3B5W2ldLCAxMCldXTtcbiAgfVxuICByZXR1cm4gY2hlY2tzdW0gPT09IDA7XG59IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmZ1bmN0aW9uIF90eXBlb2YobykgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IHJldHVybi
15BfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9IDogZnVuY3Rpb24gKG8pIHsgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87IH0sIF90eXBlb2Yobyk7IH1cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc1RheElEO1xudmFyIF9hc3NlcnRTdHJpbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWwvYXNzZXJ0U3RyaW5nXCIpKTtcbnZhciBhbGdvcml0aG1zID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcIi4vdXRpbC9hbGdvcml0aG1zXCIpKTtcbnZhciBfaXNEYXRlID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9pc0RhdGVcIikpO1xuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKGUpIHsgaWYgKFwiZnVuY3Rpb25cIiAhPSB0eXBlb2YgV2Vha01hcCkgcmV0dXJuIG51bGw7IHZhciByID0gbmV3IFdlYWtNYXAoKSwgdCA9IG5ldyBXZWFrTWFwKCk7IHJldHVybiAoX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKGUpIHsgcmV0dXJuIGUgPyB0IDogcjsgfSkoZSk7IH1cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKGUsIHIpIHsgaWYgKCFyICYmIGUgJiYgZS5fX2VzTW9kdWxlKSByZXR1cm4gZTsgaWYgKG51bGwgPT09IGUgfHwgXCJvYmplY3RcIiAhPSBfdHlwZW9mKGUpICYmIFwiZnVuY3Rpb25cIiAhPSB0eXBlb2YgZSkgcmV0dXJuIHsgZGVmYXVsdDogZSB9OyB2YXIgdCA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZShyKTsgaWYgKHQgJiYgdC5oYXMoZSkpIHJldHVybiB0LmdldChlKTsgdmFyIG4gPSB7IF9fcHJvdG9fXzogbnVsbCB9LCBhID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7IGZvciAodmFyIHUgaW4gZSkgaWYgKFwiZGVmYXVsdFwiICE9PSB1ICYmIHt9Lmhhc093blByb3BlcnR5LmNhbGwoZSwgdSkpIHsgdmFyIGkgPSBhID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCB1KSA6IG51bGw7IGkgJiYgKGkuZ2V0IHx8IGkuc2V0KSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCB1LCBpKSA6IG5bdV0gPSBlW3VdOyB9IHJldHVybiBuLmRlZmF1bHQgPSBlLCB0ICYmIHQuc2V0KGUsIG4pLCBuOyB9XG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuZnVuY3Rpb24gX3RvQ29uc3VtYWJsZUFycmF5KGFycikgeyByZXR1cm4gX2FycmF5V2l0aG91dEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheShhcnIpIHx8IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShhcnIpIHx8IF9ub25JdGVyYWJsZVNwcmVhZCgpOyB9XG5mdW5jdGlvbiBfbm9uSXRlcmFibGVTcHJlYWQoKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpOyB9XG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cbmZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXkoaXRlcikgeyBpZiAodHlwZW9mIFN5bWJvbCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBpdGVyW1N5bWJvbC5pdGVyYXRvcl0gIT0gbnVsbCB8fCBpdGVyW1wiQEBpdGVyYXRvclwiXSAhPSBudWxsKSByZXR1cm4gQXJyYXkuZnJvbShpdGVyKTsgfVxuZnVuY3Rpb24gX2FycmF5V2l0aG91dEhvbGVzKGFycikgeyBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkoYXJyKTsgfVxuZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHsgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgYXJyMltpXSA9IGFycltpXTsgcmV0dXJuIGFycjI7IH1cbi8qKlxuICogVElOIFZhbGlkYXRpb25cbiAqIFZhbGlkYXRlcyBUYXggSWRlbnRpZmljYXRpb24gTnVtYmVycyAoVElOcykgZnJvbSB0aGUgVVMsIEVVIG1lbWJlciBzdGF0ZXMgYW5kIHRoZSBVbml0ZWQgS2luZ2RvbS5cbiAqXG4gKiBFVS1VSzpcbiAqIE5hdGlvbmFsIFRJTiB2YWxpZGl0eSBpcyBjYWxjdWxhdGVkIHVzaW5nIHB1YmxpYyBhbGdvcml0aG1zIGFzIG1hZGUgYXZhaWxhYmxlIGJ5IERHIFRBWFVELlxuICpcbiAqIFNlZSBgaHR0cHM6Ly9lYy5ldXJvcGEuZXUvdGF4YXRpb25fY3VzdG9tcy90aW4vc3BlY3MvRlMtVElOJTIwQWxnb3JpdGhtcy1QdWJsaWMuZG9jeGAgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogVVM6XG4gKiBBbiBFbXBsb3llciBJZGVudGlmaWNhdGlvbiBOdW1iZXIgKEVJTiksIGFsc28ga25vd24gYXMgYSBGZWRlcmFsIFRheCBJZGVudGlmaWNhdGlvbiBOdW1iZXIsXG4gKiAgaXMgdXNlZCB0byBpZG
15VudGlmeSBhIGJ1c2luZXNzIGVudGl0eS5cbiAqXG4gKiBOT1RFUzpcbiAqICAtIFByZWZpeCA0NyBpcyBiZWluZyByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZVxuICogIC0gUHJlZml4ZXMgMjYsIDI3LCA0NSwgNDYgYW5kIDQ3IHdlcmUgcHJldmlvdXNseSBhc3NpZ25lZCBieSB0aGUgUGhpbGFkZWxwaGlhIGNhbXB1cy5cbiAqXG4gKiBTZWUgYGh0dHA6Ly93d3cuaXJzLmdvdi9CdXNpbmVzc2VzL1NtYWxsLUJ1c2luZXNzZXMtJi1TZWxmLUVtcGxveWVkL0hvdy1FSU5zLWFyZS1Bc3NpZ25lZC1hbmQtVmFsaWQtRUlOLVByZWZpeGVzYFxuICogZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKi9cblxuLy8gTG9jYWxlIGZ1bmN0aW9uc1xuXG4vKlxuICogYmctQkcgdmFsaWRhdGlvbiBmdW5jdGlvblxuICogKEVkaW5lbiBncmHFvmRhbnNraSBub21lciAoRUdOL9CV0JPQnSksIHBlcnNvbnMgb25seSlcbiAqIENoZWNrcyBpZiBiaXJ0aCBkYXRlIChmaXJzdCBzaXggZGlnaXRzKSBpcyB2YWxpZCBhbmQgY2FsY3VsYXRlcyBjaGVjayAobGFzdCkgZGlnaXRcbiAqL1xuZnVuY3Rpb24gYmdCZ0NoZWNrKHRpbikge1xuICAvLyBFeHRyYWN0IGZ1bGwgeWVhciwgbm9ybWFsaXplIG1vbnRoIGFuZCBjaGVjayBiaXJ0aCBkYXRlIHZhbGlkaXR5XG4gIHZhciBjZW50dXJ5X3llYXIgPSB0aW4uc2xpY2UoMCwgMik7XG4gIHZhciBtb250aCA9IHBhcnNlSW50KHRpbi5zbGljZSgyLCA0KSwgMTApO1xuICBpZiAobW9udGggPiA0MCkge1xuICAgIG1vbnRoIC09IDQwO1xuICAgIGNlbnR1cnlfeWVhciA9IFwiMjBcIi5jb25jYXQoY2VudHVyeV95ZWFyKTtcbiAgfSBlbHNlIGlmIChtb250aCA+IDIwKSB7XG4gICAgbW9udGggLT0gMjA7XG4gICAgY2VudHVyeV95ZWFyID0gXCIxOFwiLmNvbmNhdChjZW50dXJ5X3llYXIpO1xuICB9IGVsc2Uge1xuICAgIGNlbnR1cnlfeWVhciA9IFwiMTlcIi5jb25jYXQoY2VudHVyeV95ZWFyKTtcbiAgfVxuICBpZiAobW9udGggPCAxMCkge1xuICAgIG1vbnRoID0gXCIwXCIuY29uY2F0KG1vbnRoKTtcbiAgfVxuICB2YXIgZGF0ZSA9IFwiXCIuY29uY2F0KGNlbnR1cnlfeWVhciwgXCIvXCIpLmNvbmNhdChtb250aCwgXCIvXCIpLmNvbmNhdCh0aW4uc2xpY2UoNCwgNikpO1xuICBpZiAoISgwLCBfaXNEYXRlLmRlZmF1bHQpKGRhdGUsICdZWVlZL01NL0REJykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBzcGxpdCBkaWdpdHMgaW50byBhbiBhcnJheSBmb3IgZnVydGhlciBwcm9jZXNzaW5nXG4gIHZhciBkaWdpdHMgPSB0aW4uc3BsaXQoJycpLm1hcChmdW5jdGlvbiAoYSkge1xuICAgIHJldHVybiBwYXJzZUludChhLCAxMCk7XG4gIH0pO1xuXG4gIC8vIENhbGN1bGF0ZSBjaGVja3N1bSBieSBtdWx0aXBseWluZyBkaWdpdHMgd2l0aCBmaXhlZCB2YWx1ZXNcbiAgdmFyIG11bHRpcF9sb29rdXAgPSBbMiwgNCwgOCwgNSwgMTAsIDksIDcsIDMsIDZdO1xuICB2YXIgY2hlY2tzdW0gPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG11bHRpcF9sb29rdXAubGVuZ3RoOyBpKyspIHtcbiAgICBjaGVja3N1bSArPSBkaWdpdHNbaV0gKiBtdWx0aXBfbG9va3VwW2ldO1xuICB9XG4gIGNoZWNrc3VtID0gY2hlY2tzdW0gJSAxMSA9PT0gMTAgPyAwIDogY2hlY2tzdW0gJSAxMTtcbiAgcmV0dXJuIGNoZWNrc3VtID09PSBkaWdpdHNbOV07XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYW4gaW5wdXQgaXMgYSB2YWxpZCBDYW5hZGlhbiBTSU4gKFNvY2lhbCBJbnN1cmFuY2UgTnVtYmVyKVxuICpcbiAqIFRoZSBTb2NpYWwgSW5zdXJhbmNlIE51bWJlciAoU0lOKSBpcyBhIDkgZGlnaXQgbnVtYmVyIHRoYXRcbiAqIHlvdSBuZWVkIHRvIH
15dvcmsgaW4gQ2FuYWRhIG9yIHRvIGhhdmUgYWNjZXNzIHRvIGdvdmVybm1lbnQgcHJvZ3JhbXMgYW5kIGJlbmVmaXRzLlxuICpcbiAqIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NvY2lhbF9JbnN1cmFuY2VfTnVtYmVyXG4gKiBodHRwczovL3d3dy5jYW5hZGEuY2EvZW4vZW1wbG95bWVudC1zb2NpYWwtZGV2ZWxvcG1lbnQvc2VydmljZXMvc2luLmh0bWxcbiAqIGh0dHBzOi8vd3d3LmNvZGVyY3J1bmNoLmNvbS9jaGFsbGVuZ2UvODE5MzAyNDg4L3Npbi12YWxpZGF0b3JcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gaW5wdXRcbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzQ2FuYWRpYW5TSU4oaW5wdXQpIHtcbiAgdmFyIGRpZ2l0c0FycmF5ID0gaW5wdXQuc3BsaXQoJycpO1xuICB2YXIgZXZlbiA9IGRpZ2l0c0FycmF5LmZpbHRlcihmdW5jdGlvbiAoXywgaWR4KSB7XG4gICAgcmV0dXJuIGlkeCAlIDI7XG4gIH0pLm1hcChmdW5jdGlvbiAoaSkge1xuICAgIHJldHVybiBOdW1iZXIoaSkgKiAyO1xuICB9KS5qb2luKCcnKS5zcGxpdCgnJyk7XG4gIHZhciB0b3RhbCA9IGRpZ2l0c0FycmF5LmZpbHRlcihmdW5jdGlvbiAoXywgaWR4KSB7XG4gICAgcmV0dXJuICEoaWR4ICUgMik7XG4gIH0pLmNvbmNhdChldmVuKS5tYXAoZnVuY3Rpb24gKGkpIHtcbiAgICByZXR1cm4gTnVtYmVyKGkpO1xuICB9KS5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgY3VyKSB7XG4gICAgcmV0dXJuIGFjYyArIGN1cjtcbiAgfSk7XG4gIHJldHVybiB0b3RhbCAlIDEwID09PSAwO1xufVxuXG4vKlxuICogY3MtQ1ogdmFsaWRhdGlvbiBmdW5jdGlvblxuICogKFJvZG7DqSDEjcOtc2xvIChSxIwpLCBwZXJzb25zIG9ubHkpXG4gKiBDaGVja3MgaWYgYmlydGggZGF0ZSAoZmlyc3Qgc2l4IGRpZ2l0cykgaXMgdmFsaWQgYW5kIGRpdmlzaWJpbGl0eSBieSAxMVxuICogTWF0ZXJpYWwgbm90IGluIERHIFRBWFVEIGRvY3VtZW50IHNvdXJjZWQgZnJvbTpcbiAqIC1gaHR0cHM6Ly9sb3JlbmMuaW5mby8zTUEzODEvb3ZlcmVuaS1zcHJhdm5vc3RpLXJvZG5laG8tY2lzbGEuaHRtYFxuICogLWBodHRwczovL3d3dy5tdmNyLmN6L2NsYW5lay9yYWR5LWEtc2x1emJ5LWRva3VtZW50eS1yb2RuZS1jaXNsby5hc3B4YFxuICovXG5mdW5jdGlvbiBjc0N6Q2hlY2sodGluKSB7XG4gIHRpbiA9IHRpbi5yZXBsYWNlKC9cXFcvLCAnJyk7XG5cbiAgLy8gRXh0cmFjdCBmdWxsIHllYXIgZnJvbSBUSU4gbGVuZ3RoXG4gIHZhciBmdWxsX3llYXIgPSBwYXJzZUludCh0aW4uc2xpY2UoMCwgMiksIDEwKTtcbiAgaWYgKHRpbi5sZW5ndGggPT09IDEwKSB7XG4gICAgaWYgKGZ1bGxfeWVhciA8IDU0KSB7XG4gICAgICBmdWxsX3llYXIgPSBcIjIwXCIuY29uY2F0KGZ1bGxfeWVhcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZ1bGxfeWVhciA9IFwiMTlcIi5jb25jYXQoZnVsbF95ZWFyKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKHRpbi5zbGljZSg2KSA9PT0gJzAwMCcpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IC8vIFRocmVlLXplcm8gc2VyaWFsIG5vdCBhc3NpZ25lZCBiZWZvcmUgMTk1NFxuICAgIGlmIChmdWxsX3llYXIgPCA1NCkge1xuICAgICAgZnVsbF95ZWFyID0gXCIxOVwiLmNvbmNhdChmdWxsX3llYXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7IC8vIE5vIDE4WFggeWVhcnMgc2VlbiBpbiBhbnkgb2YgdGhlIHJlc291cmNlc1xuICAgIH1cbiAgfVxuICAvLyBBZGQgbWlzc2luZyB6ZXJvIGlmIG5lZWRlZFxuICBpZiAoZnVsbF95ZWFyLmxlbmd0aCA9PT0gMykge1xuICAgIGZ1bGxfeWVhciA9IFtmdWxsX3llYXIuc2xpY2UoMCwgMiksICcwJywgZnVsbF95ZWFyLnNsaWNlKDIpXS5qb2luKCcnKTtcbiAgfVxuXG4gIC8vIEV4dHJhY3QgbW9udGggZnJvbSBUSU4gYW5kIG5vcm1hbGl6ZVxuICB2YXIgbW9udGggPSBwYXJzZUludCh0aW4uc2xpY2UoMiwgNCksIDEwKTtcbiAgaWYgKG1vbnRoID4gNTApIHtcbiAgICBtb250aCAtPSA1MDtcbiAgfVxuICBpZiAobW9udGggPiAyMCkge1xuICAgIC8vIE1vbnRoLXBsdXMtdHdlbnR5IHdhcyBvbmx5IGludHJvZHVjZWQgaW4gMjAwNFxuICAgIGlmIChwYXJzZUludChmdWxsX3llYXIsIDEwKSA8IDIwMDQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgbW9udGggLT0gMjA7XG4gIH1cbiAgaWYgKG1vbnRoIDwgMTApIHtcbiAgICBtb250aCA9IFwiMFwiLmNvbmNhdChtb250aCk7XG4gIH1cblxuICAvLyBDaGVjayBkYXRlIHZhbGlkaXR5XG4gIHZhciBkYXRlID0gXCJcIi5jb25jYXQoZnVsbF95ZWFyLCBcIi9cIikuY29uY2F0KG1vbnRoLCBcIi9cIikuY29uY2F0KHRpbi5zbGljZSg0LCA2KSk7XG4gIGlmICghKDAsIF9pc0RhdGUuZGVmYXVsdCkoZGF0ZSwgJ1lZWVkvTU0vREQnKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIFZlcmlmeSBkaXZpc2liaWxpdHkgYnkgMTFcbiAgaWYgKHRpbi5sZW5ndGggPT09IDEwKSB7XG4gICAgaWYgKHBhcnNlSW50KHRpbiwgMTApICUgMTEgIT09IDApIHtcbiAgICAgIC8vIFNvbWUgbnVtYmVycyB1cCB0byBhbmQgaW5jbHVkaW5nIDE5ODUgYXJlIHN0aWxsIHZhbGlkIGlmXG4gICAgICAvLyBjaGVjayAobGFzdCkgZGlnaXQgZXF1YWxzIDAgYW5kIG1vZHVsbyBvZiBmaXJzdCA5IGRpZ2l0cyBlcXVhbHMgMTBcbiAgICAgIHZhciBjaGVja2RpZ2l0ID0gcGFyc2VJbnQodGluLnNsaWNlKDAsIDkpLCAxMCkgJSAxMTtcbiAgICAgIGlmIChwYXJzZUludChmdWxsX3llYXIsIDEwKSA8IDE5ODYgJiYgY2hlY2tkaWdpdCA9PT0gMTApIHtcbiAgICAgICAgaWYgKHBhcnNlSW50KHRpbi5zbGljZSg5KSwgMTApICE9PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG4vKlxuICogZGUtQVQgdmFsaWRhdGlvbiBmdW5jdGlvblxuICogKEFiZ2FiZW5rb250b251bW1lciwgcGVyc29ucy9lbnRpdGllcylcbiAqIFZlcmlmeSBUSU4gdmFsaWRpdHkgYnkgY2FsbGluZyBsdWhuQ2hlY2soKVxuICovXG5mdW5jdGlvbiBkZUF0Q2hlY2sodGluKSB7XG4gIHJldHVybi
15BhbGdvcml0aG1zLmx1aG5DaGVjayh0aW4pO1xufVxuXG4vKlxuICogZGUtREUgdmFsaWRhdGlvbiBmdW5jdGlvblxuICogKFN0ZXVlcmlkZW50aWZpa2F0aW9uc251bW1lciAoU3RldWVyLUlkTnIuKSwgcGVyc29ucyBvbmx5KVxuICogVGVzdHMgZm9yIHNpbmdsZSBkdXBsaWNhdGUvdHJpcGxpY2F0ZSB2YWx1ZSwgdGhlbiBjYWxjdWxhdGVzIElTTyA3MDY0IGNoZWNrIChsYXN0KSBkaWdpdFxuICogUGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBzcGVjIChzYW1lIHJlc3VsdCB3aXRoIGJvdGggYWxnb3JpdGhtcyBhbHdheXMpXG4gKi9cbmZ1bmN0aW9uIGRlRGVDaGVjayh0aW4pIHtcbiAgLy8gU3BsaXQgZGlnaXRzIGludG8gYW4gYXJyYXkgZm9yIGZ1cnRoZXIgcHJvY2Vzc2luZ1xuICB2YXIgZGlnaXRzID0gdGluLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKGEpIHtcbiAgICByZXR1cm4gcGFyc2VJbnQoYSwgMTApO1xuICB9KTtcblxuICAvLyBGaWxsIGFycmF5IHdpdGggc3RyaW5ncyBvZiBudW1iZXIgcG9zaXRpb25zXG4gIHZhciBvY2N1cmVuY2VzID0gW107XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZGlnaXRzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgIG9jY3VyZW5jZXMucHVzaCgnJyk7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBkaWdpdHMubGVuZ3RoIC0gMTsgaisrKSB7XG4gICAgICBpZiAoZGlnaXRzW2ldID09PSBkaWdpdHNbal0pIHtcbiAgICAgICAgb2NjdXJlbmNlc1tpXSArPSBqO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFJlbW92ZSBkaWdpdHMgd2l0aCBvbmUgb2NjdXJlbmNlIGFuZCB0ZXN0IGZvciBvbmx5IG9uZSBkdXBsaWNhdGUvdHJpcGxpY2F0ZVxuICBvY2N1cmVuY2VzID0gb2NjdXJlbmNlcy5maWx0ZXIoZnVuY3Rpb24gKGEpIHtcbiAgICByZXR1cm4gYS5sZW5ndGggPiAxO1xuICB9KTtcbiAgaWYgKG9jY3VyZW5jZXMubGVuZ3RoICE9PSAyICYmIG9jY3VyZW5jZXMubGVuZ3RoICE9PSAzKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gSW4gY2FzZSBvZiB0cmlwbGljYXRlIHZhbHVlIG9ubHkgdHdvIGRpZ2l0cyBhcmUgYWxsb3dlZCBuZXh0IHRvIGVhY2ggb3RoZXJcbiAgaWYgKG9jY3VyZW5jZXNbMF0ubGVuZ3RoID09PSAzKSB7XG4gICAgdmFyIHRyaXBfbG9jYXRpb25zID0gb2NjdXJlbmNlc1swXS5zcGxpdCgnJykubWFwKGZ1bmN0aW9uIChhKSB7XG4gICAgICByZXR1cm4gcGFyc2VJbnQoYSwgMTApO1xuICAgIH0pO1xuICAgIHZhciByZWN1cnJlbnQgPSAwOyAvLyBBbW91bnQgb2YgbmVpZ2hib3VyIG9jY3VyZW5jZXNcbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgdHJpcF9sb2NhdGlvbnMubGVuZ3RoIC0gMTsgX2krKykge1xuICAgICAgaWYgKHRyaXBfbG9jYXRpb25zW19pXSArIDEgPT09IHRyaXBfbG9jYXRpb25zW19pICsgMV0pIHtcbiAgICAgICAgcmVjdXJyZW50ICs9IDE7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChyZWN1cnJlbnQgPT09IDIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGFsZ29yaXRobXMuaXNvNzA2NENoZWNrKHRpbik7XG59XG5cbi8qXG4gKiBkay1ESyB2YWxpZGF0aW9uIGZ1bmN0aW9uXG4gKiAoQ1BSLW51bW1lciAocGVyc29ubnVtbWVyKSwgcGVyc29ucyBvbmx5KVxuICogQ2hlY2tzIGlmIGJpcnRoIGRhdGUgKGZpcnN0IHNpeCBkaWdpdHMpIGlzIHZhbGlkIGFuZCBhc3NpZ25lZCB0byBjZW50dXJ5IChzZXZlbnRoKSBkaWdpdCxcbiAqIGFuZCBjYWxjdWxhdGVzIGNoZWNrIChsYXN0KSBkaWdpdFxuICovXG5mdW5jdGlvbiBka0RrQ2hlY2sodGluKSB7XG4gIHRpbiA9IHRpbi5yZXBsYWNlKC9cXFcvLCAnJyk7XG5cbiAgLy8gRXh0cmFjdCB5ZWFyLCBjaGVjayBpZiB2YWxpZCBmb3IgZ2l2ZW4gY2VudHVyeSBkaWdpdCBhbmQgYWRkIGNlbnR1cnlcbiAgdmFyIHllYXIgPSBwYXJzZUludCh0aW4uc2xpY2UoNCwgNiksIDEwKTtcbiAgdmFyIGNlbnR1cnlfZGlnaXQgPSB0aW4uc2xpY2UoNiwgNyk7XG4gIHN3aXRjaCAoY2VudHVyeV9kaWdpdCkge1xuICAgIGNhc2UgJzAnOlxuICAgIGNhc2UgJzEnOlxuICAgIGNhc2UgJzInOlxuICAgIGNhc2UgJzMnOlxuICAgICAgeWVhciA9IFwiMTlcIi5jb25jYXQoeWVhcik7XG4gICAgICBicmVhaztcbiAgICBjYXNlICc0JzpcbiAgICBjYXNlICc5JzpcbiAgICAgIGlmICh5ZWFyIDwgMzcpIHtcbiAgICAgICAgeWVhciA9IFwiMjBcIi5jb25jYXQoeWVhcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB5ZWFyID0gXCIxOVwiLmNvbmNhdCh5ZWFyKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBpZiAoeWVhciA8IDM3KSB7XG4gICAgICAgIHllYXIgPSBcIjIwXCIuY29uY2F0KHllYXIpO1xuICAgICAgfSBlbHNlIGlmICh5ZWFyID4gNTgpIHtcbiAgICAgICAgeWVhciA9IFwiMThcIi5jb25jYXQoeWVhcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgfVxuICAvLyBBZGQgbWlzc2luZyB6ZXJvIGlmIG5lZWRlZFxuICBpZiAoeWVhci5sZW5ndGggPT09IDMpIHtcbiAgICB5ZWFyID0gW3llYXIuc2xpY2UoMCwgMiksICcwJywgeWVhci5zbGljZSgyKV0uam9pbignJyk7XG4gIH1cbiAgLy8gQ2hlY2sgZGF0ZSB2YWxpZGl0eVxuICB2YXIgZGF0ZSA9IFwiXCIuY29uY2F0KHllYXIsIFwiL1wiKS5jb25jYXQodGluLnNsaWNlKDIsIDQpLCBcIi9cIikuY29uY2F0KHRpbi5zbGljZSgwLCAyKSk7XG4gIGlmICghKDAsIF9pc0RhdGUuZGVmYXVsdCkoZGF0ZSwgJ1lZWVkvTU0vREQnKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIFNwbGl0IGRpZ2l0cyBpbnRvIGFuIGFycmF5IGZvciBmdXJ0aGVyIHByb2Nlc3NpbmdcbiAgdmFyIGRpZ2l0cyA9IHRpbi5zcGxpdCgnJykubWFwKGZ1bmN0aW9uIChhKSB7XG4gICAgcmV0dXJuIHBhcnNlSW50KGEsIDEwKTtcbiAgfSk7XG4gIHZhciBjaGVja3N1bSA9IDA7XG4gIHZhciB3ZWlnaHQgPSA0O1xuICAvLyBNdWx0aXBseSBieSB3ZWlnaHQgYW5kIGFkZCB0byBjaGVja3N1bVxuICBmb3IgKHZhciBpID0gMDsgaSA8IDk7IGkrKykge1xuICAgIGNoZWNrc3VtICs9IGRpZ2l0c1tpXSAqIHdlaWdodDtcbiAgICB3ZWlnaHQgLT0gMTtcbiAgICBpZiAod2VpZ2h0ID09PSAxKSB7XG4gICAgICB3ZWlnaHQgPSA3O1xuICAgIH1cbiAgfVxuICBjaGVja3N1bSAlPSAxMTtcbiAgaWYgKGNoZWNrc3VtID09PSAxKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gI
15HJldHVybiBjaGVja3N1bSA9PT0gMCA/IGRpZ2l0c1s5XSA9PT0gMCA6IGRpZ2l0c1s5XSA9PT0gMTEgLSBjaGVja3N1bTtcbn1cblxuLypcbiAqIGVsLUNZIHZhbGlkYXRpb24gZnVuY3Rpb25cbiAqIChBcml0aG1vcyBGb3JvbG9naWtvdSBNaXRyb291IChBRk0vzpHOps6cKSwgcGVyc29ucyBvbmx5KVxuICogVmVyaWZ5IFRJTiB2YWxpZGl0eSBieSBjYWxjdWxhdGluZyBBU0NJSSB2YWx1ZSBvZiBjaGVjayAobGFzdCkgY2hhcmFjdGVyXG4gKi9cbmZ1bmN0aW9uIGVsQ3lDaGVjayh0aW4pIHtcbiAgLy8gc3BsaXQgZGlnaXRzIGludG8gYW4gYXJyYXkgZm9yIGZ1cnRoZXIgcHJvY2Vzc2luZ1xuICB2YXIgZGlnaXRzID0gdGluLnNsaWNlKDAsIDgpLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKGEpIHtcbiAgICByZXR1cm4gcGFyc2VJbnQoYSwgMTApO1xuICB9KTtcbiAgdmFyIGNoZWNrc3VtID0gMDtcbiAgLy8gYWRkIGRpZ2l0cyBpbiBldmVuIHBsYWNlc1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGRpZ2l0cy5sZW5ndGg7IGkgKz0gMikge1xuICAgIGNoZWNrc3VtICs9IGRpZ2l0c1tpXTtcbiAgfVxuXG4gIC8vIGFkZCBkaWdpdHMgaW4gb2RkIHBsYWNlc1xuICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBkaWdpdHMubGVuZ3RoOyBfaTIgKz0gMikge1xuICAgIGlmIChkaWdpdHNbX2kyXSA8IDIpIHtcbiAgICAgIGNoZWNrc3VtICs9IDEgLSBkaWdpdHNbX2kyXTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2hlY2tzdW0gKz0gMiAqIChkaWdpdHNbX2kyXSAtIDIpICsgNTtcbiAgICAgIGlmIChkaWdpdHNbX2kyXSA+IDQpIHtcbiAgICAgICAgY2hlY2tzdW0gKz0gMjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoY2hlY2tzdW0gJSAyNiArIDY1KSA9PT0gdGluLmNoYXJBdCg4KTtcbn1cblxuLypcbiAqIGVsLUdSIHZhbGlkYXRpb24gZnVuY3Rpb25cbiAqIChBcml0aG1vcyBGb3JvbG9naWtvdSBNaXRyb291IChBRk0vzpHOps6cKSwgcGVyc29ucy9lbnRpdGllcylcbiAqIFZlcmlmeSBUSU4gdmFsaWRpdHkgYnkgY2FsY3VsYXRpbmcgY2hlY2sgKGxhc3QpIGRpZ2l0XG4gKiBBbGdvcml0aG0gbm90IGluIERHIFRBWFVEIGRvY3VtZW50LSBzb3VyY2VkIGZyb206XG4gKiAtIGBodHRwOi8vZXBpeGVpcmlzaS5nci8lQ0UlOUElQ0UlQTElQ0UlOTklQ0UlQTMlQ0UlOTklQ0UlOUMlQ0UlOTEtJUNFJTk4JUNFJTk1JUNFJTlDJUNFJTkxJUNFJUE0JUNFJTkxLSVDRSVBNiVDRSU5RiVDRSVBMSVDRSU5RiVDRSU5QiVDRSU5RiVDRSU5MyVDRSU5OSVDRSU5MSVDRSVBMy0lQ0UlOUElQ0UlOTElQ0UlOTktJUNFJTlCJUNFJTlGJUNFJTkzJUNFJTk5JUNFJUEzJUNFJUE0JUNFJTk5JUNFJTlBJUNFJTk3JUNFJUEzLzIzNzkxLyVDRSU5MSVDRiU4MSVDRSVCOSVDRSVCOCVDRSVCQyVDRiU4QyVDRiU4Mi0lQ0UlQTYlQ0UlQkYlQ0YlODElQ0UlQkYlQ0UlQkIlQ0UlQkYlQ0UlQjMlQ0UlQjklQ0UlQkElQ0UlQkYlQ0YlOEQtJUNFJTlDJUNFJUI3JUNGJTg0JUNGJTgxJUNGJThFJUNFJUJGJUNGJTg1YFxuICovXG5mdW5jdGlvbiBlbEdyQ2hlY2sodGluKSB7XG4gIC8vIHNwbGl0IGRpZ2l0cyBpbnRvIGFuIGFycmF5IGZvciBmdXJ0aGVyIHByb2Nlc3NpbmdcbiAgdmFyIGRpZ2l0cyA9IHRpbi5zcGxpdCgnJykubWFwKGZ1bmN0aW9uIChhKSB7XG4gICAgcmV0dXJuIHBhcnNlSW50KGEsIDEwKTtcbiAgfSk7XG4gIHZhciBjaGVja3N1bSA9IDA7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgODsgaSsrKSB7XG4gICAgY2hlY2tzdW0gKz0gZGlnaXRzW2ldICogTWF0aC5wb3coMiwgOCAtIGkpO1xuICB9XG4gIHJldHVybiBjaGVja3N1bSAlIDExICUgMTAgPT09IGRpZ2l0c1s4XTtcbn1cblxuLypcbiAqIGVuLUdCIHZhbGlkYXRpb24gZnVuY3Rpb24gKHNob3VsZCBnbyBoZXJlIGlmIG5lZWRlZClcbiAqIChOYXRpb25hbCBJbnN1cmFuY2UgTnVtYmVyIChOSU5PKSBvciBVbmlxdWUgVGF4cGF5ZXIgUmVmZXJlbmNlIChVVFIpLFxuICogcGVyc29ucy9lbnRpdGllcyByZXNwZWN0aXZlbHkpXG4gKi9cblxuLypcbiAqIGVuLUlFIHZhbGlkYXRpb24gZnVuY3Rpb25cbiAqIChQZXJzb25hbCBQdWJsaWMgU2VydmljZSBOdW1iZXIgKFBQUyBObyksIHBlcnNvbnMgb25seSlcbiAqIFZlcmlmeSBUSU4gdmFsaWRpdHkgYnkgY2FsY3VsYXRpbmcgY2hlY2sgKHNlY29uZCB0byBsYXN0KSBjaGFyYWN0ZXJcbiAqL1xuZnVuY3Rpb24gZW5JZUNoZWNrKHRpbikge1xuICB2YXIgY2hlY2tzdW0gPSBhbGdvcml0aG1zLnJldmVyc2VNdWx0aXBseUFuZFN1bSh0aW4uc3BsaXQoJycpLnNsaWNlKDAsIDcpLm1hcChmdW5jdGlvbiAoYSkge1xuICAgIHJldHVybiBwYXJzZUludChhLCAxMCk7XG4gIH0pLCA4KTtcbiAgaWYgKHRpbi5sZW5ndGggPT09IDkgJiYgdGluWzhdICE9PSAnVycpIHtcbiAgICBjaGVja3N1bSArPSAodGluWzhdLmNoYXJDb2RlQXQoMCkgLSA2NCkgKiA5O1xuICB9XG4gIGNoZWNrc3VtICU9IDIzO1xuICBpZiAoY2hlY2tzdW0gPT09IDApIHtcbiAgICByZXR1cm4gdGluWzddLnRvVXBwZXJDYXNlKCkgPT09ICdXJztcbiAgfVxuICByZXR1cm4gdGluWzddLnRvVXBwZXJDYXNlKCkgPT09IFN0cmluZy5mcm9tQ2hhckNvZGUoNjQgKyBjaGVja3N1bSk7XG59XG5cbi8vIFZhbGlkIFVTIElSUyBjYW1wdXMgcHJlZml4ZXNcbnZhciBlblVzQ2FtcHVzUHJlZml4ID0ge1xuICBhbmRvdmVyOiBbJzEwJywgJzEyJ10sXG4gIGF0bGFudGE6IFsnNjAnLCAnNjcnXSxcbiAgYXVzdGluOiBbJzUwJywgJzUzJ10sXG4gIGJyb29raGF2ZW46IFsnMDEnLCAnMDInLCAnMDMnLCAnMDQnLCAnMDUnLCAnMDYnLCAnMTEnLCAnMTMnLCAnMTQnLCAnMTYnLCAnMjEnLCAnMjInLCAnMjMnLCAnMjUnLCAnMzQnLCAnNTEnLCAnNTInLCAnNTQnLCAnNTUnLCAnNTYnLCAnNTcnLCAnNTgnLCAnNTknLCAnNjUnXSxcbiAgY2luY2lubmF0aTogWyczMCcsICczMicsICczNScsICczNicsICczNycsICczOCcsICc2MSddLFxuICBmcmVzbm86IFsnMTUnLCAnMjQnXSxcbiAgaW50ZXJuZXQ6IFsnMjAnLCAnMjYnLCAnMjcnLCAnNDUnLCAnNDYnLCAnNDcnXSxcbiAga2Fuc2FzOiBbJzQwJywgJzQ0J10sXG4gIG1lbXBoaXM6IFsnOTQnLCAnOTUnXSxcbiAgb2dkZW46IFsnODAnLCAnOTAnXSxcbiAgcGhpbGFkZWxwaGlhOiBbJzMzJywgJzM5JywgJzQxJywgJzQyJywgJzQzJywgJzQ2JywgJzQ4JywgJzYyJywgJzYzJywgJzY0JywgJzY2JywgJzY4JywgJzcxJywgJzcyJywgJzczJywgJzc0JywgJzc1JywgJzc2JywgJzc3JywgJzgxJywgJzgyJywgJzgzJywgJzg0JywgJzg1JywgJzg2JywgJzg3JywgJzg4JywgJzkxJywgJzkyJywgJzkzJywgJzk4JywgJzk5J10sXG4gIHNiYTogWyczMSddXG59O1xuXG4vLyBSZXR1cm4gYW4gYXJyYXkgb2YgYWxsIFVTIElSUyBjYW1wdXMgcHJlZml4ZXNcbmZ1bmN0aW9uIGVuVXNHZXRQcmVmaXhlcygpIHtcbiAgdmFyIHByZWZpeGVzID0gW107XG4gIGZvciAodmFyIGxvY2F0aW9uIGluIGVuVXNDYW1wdXNQcmVmaXgpIHtcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZ290d2FybG9zdC9pc3RhbmJ1bC9ibG9iL21hc3Rlci9pZ25vcmluZy1jb2RlLWZvci1jb3ZlcmFnZS5tZCNpZ25vcmluZy1jb2RlLWZvci1jb3ZlcmFnZS1wdXJwb3Nlc1xuICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBlbHNlXG4gICAgaWYgKGVuVXNDYW1wdXNQcmVmaXguaGFzT3duUHJvcGVydHkobG9jYXRpb24pKSB7XG4gICAgICBwcmVmaXhlcy5wdXNoLmFwcGx5KHByZWZpeGVzLCBfdG9Db25zdW1hYmxlQXJyYXkoZW5Vc0NhbXB1c1ByZWZpeFtsb2NhdGlvbl0pKTtcbiAgICB9XG4gI
15H1cbiAgcmV0dXJuIHByZWZpeGVzO1xufVxuXG4vKlxuICogZW4tVVMgdmFsaWRhdGlvbiBmdW5jdGlvblxuICogVmVyaWZ5IHRoYXQgdGhlIFRJTiBzdGFydHMgd2l0aCBhIHZhbGlkIElSUyBjYW1wdXMgcHJlZml4XG4gKi9cbmZ1bmN0aW9uIGVuVXNDaGVjayh0aW4pIHtcbiAgcmV0dXJuIGVuVXNHZXRQcmVmaXhlcygpLmluZGV4T2YodGluLnNsaWNlKDAsIDIpKSAhPT0gLTE7XG59XG5cbi8qXG4gKiBlcy1BUiB2YWxpZGF0aW9uIGZ1bmN0aW9uXG4gKiBDbGF2ZSDDmm5pY2EgZGUgSWRlbnRpZmljYWNpw7NuIFRyaWJ1dGFyaWEgKENVSVQvQ1VJTClcbiAqIFNvdXJjZWQgZnJvbTpcbiAqIC0gaHR0cHM6Ly9zZXJ2aWNpb3NjZi5hZmlwLmdvYi5hci9wdWJsaWNvL2FiYy9BQkNwYXNvMi5hc3B4P2lkX25pdmVsMT0zMDM2JmlkX25pdmVsMj0zMDQwJnA9Q29uY2VwdG9zJTIwYiVDMyVBMXNpY29zXG4gKiAtIGh0dHBzOi8vZXMud2lraXBlZGlhLm9yZy93aWtpL0NsYXZlXyVDMyU5QW5pY2FfZGVfSWRlbnRpZmljYWNpJUMzJUIzbl9UcmlidXRhcmlhXG4gKi9cblxuZnVuY3Rpb24gZXNBckNoZWNrKHRpbikge1xuICB2YXIgYWNjdW0gPSAwO1xuICB2YXIgZGlnaXRzID0gdGluLnNwbGl0KCcnKTtcbiAgdmFyIGRpZ2l0ID0gcGFyc2VJbnQoZGlnaXRzLnBvcCgpLCAxMCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZGlnaXRzLmxlbmd0aDsgaSsrKSB7XG4gICAgYWNjdW0gKz0gZGlnaXRzWzkgLSBpXSAqICgyICsgaSAlIDYpO1xuICB9XG4gIHZhciB2ZXJpZiA9IDExIC0gYWNjdW0gJSAxMTtcbiAgaWYgKHZlcmlmID09PSAxMSkge1xuICAgIHZlcmlmID0gMDtcbiAgfSBlbHNlIGlmICh2ZXJpZiA9PT0gMTApIHtcbiAgICB2ZXJpZiA9IDk7XG4gIH1cbiAgcmV0dXJuIGRpZ2l0ID09PSB2ZXJpZjtcbn1cblxuLypcbiAqIGVzLUVTIHZhbGlkYXRpb24gZnVuY3Rpb25cbiAqIChEb2N1bWVudG8gTmFjaW9uYWwgZGUgSWRlbnRpZGFkIChETkkpXG4gKiBvciBOw7ptZXJvIGRlIElkZW50aWZpY2FjacOzbiBkZSBFeHRyYW5qZXJvIChOSUUpLCBwZXJzb25zIG9ubHkpXG4gKiBWZXJpZnkgVElOIHZhbGlkaXR5IGJ5IGNhbGN1bGF0aW5nIGNoZWNrIChsYXN0KSBjaGFyYWN0ZXJcbiAqL1xuZnVuY3Rpb24gZXNFc0NoZWNrKHRpbikge1xuICAvLyBTcGxpdCBjaGFyYWN0ZXJzIGludG8gYW4gYXJyYXkgZm9yIGZ1cnRoZXIgcHJvY2Vzc2luZ1xuICB2YXIgY2hhcnMgPSB0aW4udG9VcHBlckNhc2UoKS5zcGxpdCgnJyk7XG5cbiAgLy8gUmVwbGFjZSBpbml0aWFsIGxldHRlciBpZiBuZWVkZWRcbiAgaWYgKGlzTmFOKHBhcnNlSW50KGNoYXJzWzBdLCAxMCkpICYmIGNoYXJzLmxlbmd0aCA+IDEpIHtcbiAgICB2YXIgbGVhZF9yZXBsYWNlID0gMDtcbiAgICBzd2l0Y2ggKGNoYXJzWzBdKSB7XG4gICAgICBjYXNlICdZJzpcbiAgICAgICAgbGVhZF9yZXBsYWNlID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdaJzpcbiAgICAgICAgbGVhZF9yZXBsYWNlID0gMjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgIH1cbiAgICBjaGFycy5zcGxpY2UoMCwgMSwgbGVhZF9yZXBsYWNlKTtcbiAgICAvLyBGaWxsIHdpdGggemVyb3MgaWYgc21hbGxlciB0aGFuIHByb3BlclxuICB9IGVsc2Uge1xuICAgIHdoaWxlIChjaGFycy5sZW5ndGggPCA5KSB7XG4gICAgICBjaGFycy51bnNoaWZ0KDApO1xuICAgIH1cbiAgfVxuXG4gIC8vIENhbGN1bGF0ZSBjaGVja3N1bSBhbmQgY2hlY2sgYWNjb3JkaW5nIHRvIGxvb2t1cFxuICB2YXIgbG9va3VwID0gWydUJywgJ1InLCAnVycsICdBJywgJ0cnLCAnTScsICdZJywgJ0YnLCAnUCcsICdEJywgJ1gnLCAnQicsICdOJywgJ0onLCAnWicsICdTJywgJ1EnLCAnVicsICdIJywgJ0wnLCAnQycsICdLJywgJ0UnXTtcbiAgY2hhcnMgPSBjaGFycy5qb2luKCcnKTtcbiAgdmFyIGNoZWNrc3VtID0gcGFyc2VJbnQoY2hhcnMuc2xpY2UoMCwgOCksIDEwKSAlIDIzO1xuICByZXR1cm4gY2hhcnNbOF0gPT09IGxvb2t1cFtjaGVja3N1bV07XG59XG5cbi8qXG4gKiBldC1FRSB2YWxpZGF0aW9uIGZ1bmN0aW9uXG4gKiAoSXNpa3Vrb29kIChJSyksIHBlcnNvbnMgb25seSlcbiAqIENoZWNrcyBpZiBiaXJ0aCBkYXRlIChjZW50dXJ5IGRpZ2l0IGFuZCBzaXggZm9sbG93aW5nKSBpcyB2YWxpZCBhbmQgY2FsY3VsYXRlcyBjaGVjayAobGFzdCkgZGlnaXRcbiAqIE1hdGVyaWFsIG5vdCBpbiBERyBUQVhVRCBkb2N1bWVudCBzb3VyY2VkIGZyb206XG4gKiAtIGBodHRwczovL3d3dy5vZWNkLm9yZy90YXgvYXV0b21hdGljLWV4Y2hhbmdlL2Nycy1pbXBsZW1lbnRhdGlvbi1hbmQtYXNzaXN0YW5jZS90YXgtaWRlbnRpZmljYXRpb24tbnVtYmVycy9Fc3RvbmlhLVRJTi5wZGZgXG4gKi9cbmZ1bmN0aW9uIGV0RWVDaGVjayh0aW4pIHtcbiAgLy8gRXh0cmFjdCB5ZWFyIGFuZCBhZGQgY2VudHVyeVxuICB2YXIgZnVsbF95ZWFyID0gdGluLnNsaWNlKDEsIDMpO1xuICB2YXIgY2VudHVyeV9kaWdpdCA9IHRpbi5zbGljZSgwLCAxKTtcbiAgc3dpdGNoIChjZW50dXJ5X2RpZ2l0KSB7XG4gICAgY2FzZSAnMSc6XG4gICAgY2FzZSAnMic6XG4gICAgICBmdWxsX3llYXIgPSBcIjE4XCIuY29uY2F0KGZ1bGxfeWVhcik7XG4gICAgICBicmVhaztcbiAgICBjYXNlICczJzpcbiAgICBjYXNlICc0JzpcbiAgICAgIGZ1bGxfeWVhciA9IFwiMTlcIi5jb25jYXQoZnVsbF95ZWFyKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBmdWxsX3llYXIgPSBcIjIwXCIuY29uY2F0KGZ1bGxfeWVhcik7XG4gICAgICBicmVhaztcbiAgfVxuICAvLyBDaGVjayBkYXRlIHZhbGlkaXR5XG4gIHZhciBkYXRlID0gXCJcIi5jb25jYXQoZnVsbF95ZWFyLCBcIi9cIikuY29uY2F0KHRpbi5zbGljZSgzLCA1KSwgXCIvXCIpLmNvbmNhdCh0aW4uc2xpY2UoNSwgNykpO1xuICBpZiAoISgwLCBfaXNEYXRlLmRlZmF1bHQpKGRhdGUsICdZWVlZL01NL0REJykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBTcGxpdCBkaWdpdHMgaW50byBhbiBhcnJheSBmb3IgZnVydGhlciBwcm9jZXNzaW5nXG4gIHZhciBkaWdpdHMgPSB0aW4uc3BsaXQoJycpLm1hcChmdW5jdGlvbiAoYSkge1xuICAgIHJldHVybi
15BwYXJzZUludChhLCAxMCk7XG4gIH0pO1xuICB2YXIgY2hlY2tzdW0gPSAwO1xuICB2YXIgd2VpZ2h0ID0gMTtcbiAgLy8gTXVsdGlwbHkgYnkgd2VpZ2h0IGFuZCBhZGQgdG8gY2hlY2tzdW1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgaSsrKSB7XG4gICAgY2hlY2tzdW0gKz0gZGlnaXRzW2ldICogd2VpZ2h0O1xuICAgIHdlaWdodCArPSAxO1xuICAgIGlmICh3ZWlnaHQgPT09IDEwKSB7XG4gICAgICB3ZWlnaHQgPSAxO1xuICAgIH1cbiAgfVxuICAvLyBEbyBhZ2FpbiBpZiBtb2R1bG8gMTEgb2YgY2hlY2tzdW0gaXMgMTBcbiAgaWYgKGNoZWNrc3VtICUgMTEgPT09IDEwKSB7XG4gICAgY2hlY2tzdW0gPSAwO1xuICAgIHdlaWdodCA9IDM7XG4gICAgZm9yICh2YXIgX2kzID0gMDsgX2kzIDwgMTA7IF9pMysrKSB7XG4gICAgICBjaGVja3N1bSArPSBkaWdpdHNbX2kzXSAqIHdlaWdodDtcbiAgICAgIHdlaWdodCArPSAxO1xuICAgICAgaWYgKHdlaWdodCA9PT0gMTApIHtcbiAgICAgICAgd2VpZ2h0ID0gMTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNoZWNrc3VtICUgMTEgPT09IDEwKSB7XG4gICAgICByZXR1cm4gZGlnaXRzWzEwXSA9PT0gMDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNoZWNrc3VtICUgMTEgPT09IGRpZ2l0c1sxMF07XG59XG5cbi8qXG4gKiBmaS1GSSB2YWxpZGF0aW9uIGZ1bmN0aW9uXG4gKiAoSGVua2lsw7Z0dW5udXMgKEhFVFUpLCBwZXJzb25zIG9ubHkpXG4gKiBDaGVja3MgaWYgYmlydGggZGF0ZSAoZmlyc3Qgc2l4IGRpZ2l0cyBwbHVzIGNlbnR1cnkgc3ltYm9sKSBpcyB2YWxpZFxuICogYW5kIGNhbGN1bGF0ZXMgY2hlY2sgKGxhc3QpIGRpZ2l0XG4gKi9cbmZ1bmN0aW9uIGZpRmlDaGVjayh0aW4pIHtcbiAgLy8gRXh0cmFjdCB5ZWFyIGFuZCBhZGQgY2VudHVyeVxuICB2YXIgZnVsbF95ZWFyID0gdGluLnNsaWNlKDQsIDYpO1xuICB2YXIgY2VudHVyeV9zeW1ib2wgPSB0aW4uc2xpY2UoNiwgNyk7XG4gIHN3aXRjaCAoY2VudHVyeV9zeW1ib2wpIHtcbiAgICBjYXNlICcrJzpcbiAgICAgIGZ1bGxfeWVhciA9IFwiMThcIi5jb25jYXQoZnVsbF95ZWFyKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJy0nOlxuICAgICAgZnVsbF95ZWFyID0gXCIxOVwiLmNvbmNhdChmdWxsX3llYXIpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGZ1bGxfeWVhciA9IFwiMjBcIi5jb25jYXQoZnVsbF95ZWFyKTtcbiAgICAgIGJyZWFrO1xuICB9XG4gIC8vIENoZWNrIGRhdGUgdmFsaWRpdHlcbiAgdmFyIGRhdGUgPSBcIlwiLmNvbmNhdChmdWxsX3llYXIsIFwiL1wiKS5jb25jYXQodGluLnNsaWNlKDIsIDQpLCBcIi9cIikuY29uY2F0KHRpbi5zbGljZSgwLCAyKSk7XG4gIGlmICghKDAsIF9pc0RhdGUuZGVmYXVsdCkoZGF0ZSwgJ1lZWVkvTU0vREQnKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIENhbGN1bGF0ZSBjaGVjayBjaGFyYWN0ZXJcbiAgdmFyIGNoZWNrc3VtID0gcGFyc2VJbnQodGluLnNsaWNlKDAsIDYpICsgdGluLnNsaWNlKDcsIDEwKSwgMTApICUgMzE7XG4gIGlmIChjaGVja3N1bSA8IDEwKSB7XG4gICAgcmV0dXJuIGNoZWNrc3VtID09PSBwYXJzZUludCh0aW4uc2xpY2UoMTApLCAxMCk7XG4gIH1cbiAgY2hlY2tzdW0gLT0gMTA7XG4gIHZhciBsZXR0ZXJzX2xvb2t1cCA9IFsnQScsICdCJywgJ0MnLCAnRCcsICdFJywgJ0YnLCAnSCcsICdKJywgJ0snLCAnTCcsICdNJywgJ04nLCAnUCcsICdSJywgJ1MnLCAnVCcsICdVJywgJ1YnLCAnVycsICdYJywgJ1knXTtcbiAgcmV0dXJuIGxldHRlcnNfbG9va3VwW2NoZWNrc3VtXSA9PT0gdGluLnNsaWNlKDEwKTtcbn1cblxuLypcbiAqIGZyL25sLUJFIHZhbGlkYXRpb24gZnVuY3Rpb25cbiAqIChOdW3DqXJvIG5hdGlvbmFsIChOLk4uKSwgcGVyc29ucyBvbmx5KVxuICogQ2hlY2tzIGlmIGJpcnRoIGRhdGUgKGZpcnN0IHNpeCBkaWdpdHMpIGlzIHZhbGlkIGFuZCBjYWxjdWxhdGVzIGNoZWNrIChsYXN0IHR3bykgZGlnaXRzXG4gKi9cbmZ1bmN0aW9uIGZyQmVDaGVjayh0aW4pIHtcbiAgLy8gWmVybyBtb250aC9kYXkgdmFsdWUgaXMgYWNjZXB0YWJsZVxuICBpZiAodGluLnNsaWNlKDIsIDQpICE9PSAnMDAnIHx8IHRpbi5zbGljZSg0LCA2KSAhPT0gJzAwJykge1xuICAgIC8vIEV4dHJhY3QgZGF0ZSBmcm9tIGZpcnN0IHNpeCBkaWdpdHMgb2YgVElOXG4gICAgdmFyIGRhdGUgPSBcIlwiLmNvbmNhdCh0aW4uc2xpY2UoMCwgMiksIFwiL1wiKS5jb25jYXQodGluLnNsaWNlKDIsIDQpLCBcIi9cIikuY29uY2F0KHRpbi5zbGljZSg0LCA2KSk7XG4gICAgaWYgKCEoMCwgX2lzRGF0ZS5kZWZhdWx0KShkYXRlLCAnWVkvTU0vREQnKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICB2YXIgY2hlY2tzdW0gPSA5NyAtIHBhcnNlSW50KHRpbi5zbGljZSgwLCA5KSwgMTApICUgOTc7XG4gIHZhciBjaGVja2RpZ2l0cyA9IHBhcnNlSW50KHRpbi5zbGljZSg5LCAxMSksIDEwKTtcbiAgaWYgKGNoZWNrc3VtICE9PSBjaGVja2RpZ2l0cykge1xuICAgIGNoZWNrc3VtID0gOTcgLSBwYXJzZUludChcIjJcIi5jb25jYXQodGluLnNsaWNlKDAsIDkpKSwgMTApICUgOTc7XG4gICAgaWYgKGNoZWNrc3VtICE9PSBjaGVja2RpZ2l0cykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxuLypcbiAqIGZyLUZSIHZhbGlkYXRpb24gZnVuY3Rpb25cbiAqIChOdW3DqXJvIGZpc2NhbCBkZSByw6lmw6lyZW5jZSAobnVtw6lybyBTUEkpLCBwZXJzb25zIG9ubHkpXG4gKiBWZXJpZnkgVElOIHZhbGlkaXR5IGJ5IGNhbGN1bGF0aW5nIGNoZWNrIChsYXN0IHRocmVlKSBkaWdpdHNcbiAqL1xuZnVuY3Rpb24gZnJGckNoZWNrKHRpbikge1xuICB0aW4gPSB0aW4ucmVwbGFjZSgvXFxzL2csICcnKTtcbiAgdmFyIGNoZWNrc3VtID0gcGFyc2VJbnQodGluLnNsaWNlKDAsIDEwKSwgMTApICUgNTExO1xuICB2YXIgY2hlY2tkaWdpdHMgPSBwYXJzZUludCh0aW4uc2xpY2UoMTAsIDEzKSwgMTApO1xuICByZXR1cm4gY2hlY2tzdW0gPT09IGNoZWNrZGlnaXRzO1xufVxuXG4vKlxuICogZnIvbGItTFUgdmFsaWRhdGlvbiBmdW5jdGlvblxuICogKG51bcOpcm8gZOKAmWlkZW50aWZpY2F0aW9uIHBlcnNvbm5lbGxlLCBwZXJzb25zIG9ubHkpXG4gKiBWZXJpZnkgYmlydGggZGF0ZSB2YWxpZGl0eSBhbmQgcnVuIEx1aG4gYW5kIFZlcmhvZWZmIGNoZWNrc1xuICovXG5mdW5jdGlvbiBmckx1Q2hlY2sodGluKSB7XG4gIC8vIEV4dHJhY3QgZGF0ZSBhbmQgY2hlY2sgdmFsaWRpdHlcbiAgdmFyIGRhdGUgPSBcIlwiLmNvbmNhdCh0aW4uc2xpY2UoMCwgNCksIFwiL1wiKS5jb25jYXQodGluLnNsaWNlKDQsIDYpLCBcIi9cIikuY29uY2F0KHRpbi5zbGljZSg2LCA4KSk7XG4gIGlmICghKDAsIF9pc0RhdGUuZGVmYXVsdCkoZGF0ZSwgJ1lZWVkvTU0vREQnKSkge1xuICAgIHJldHVybi
15BmYWxzZTtcbiAgfVxuXG4gIC8vIFJ1biBMdWhuIGNoZWNrXG4gIGlmICghYWxnb3JpdGhtcy5sdWhuQ2hlY2sodGluLnNsaWNlKDAsIDEyKSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLy8gUmVtb3ZlIEx1aG4gY2hlY2sgZGlnaXQgYW5kIHJ1biBWZXJob2VmZiBjaGVja1xuICByZXR1cm4gYWxnb3JpdGhtcy52ZXJob2VmZkNoZWNrKFwiXCIuY29uY2F0KHRpbi5zbGljZSgwLCAxMSkpLmNvbmNhdCh0aW5bMTJdKSk7XG59XG5cbi8qXG4gKiBoci1IUiB2YWxpZGF0aW9uIGZ1bmN0aW9uXG4gKiAoT3NvYm5pIGlkZW50aWZpa2FjaWpza2kgYnJvaiAoT0lCKSwgcGVyc29ucy9lbnRpdGllcylcbiAqIFZlcmlmeSBUSU4gdmFsaWRpdHkgYnkgY2FsbGluZyBpc283MDY0Q2hlY2soZGlnaXRzKVxuICovXG5mdW5jdGlvbiBockhyQ2hlY2sodGluKSB7XG4gIHJldHVybiBhbGdvcml0aG1zLmlzbzcwNjRDaGVjayh0aW4pO1xufVxuXG4vKlxuICogaHUtSFUgdmFsaWRhdGlvbiBmdW5jdGlvblxuICogKEFkw7Nhem9ub3PDrXTDsyBqZWwsIHBlcnNvbnMgb25seSlcbiAqIFZlcmlmeSBUSU4gdmFsaWRpdHkgYnkgY2FsY3VsYXRpbmcgY2hlY2sgKGxhc3QpIGRpZ2l0XG4gKi9cbmZ1bmN0aW9uIGh1SHVDaGVjayh0aW4pIHtcbiAgLy8gc3BsaXQgZGlnaXRzIGludG8gYW4gYXJyYXkgZm9yIGZ1cnRoZXIgcHJvY2Vzc2luZ1xuICB2YXIgZGlnaXRzID0gdGluLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKGEpIHtcbiAgICByZXR1cm4gcGFyc2VJbnQoYSwgMTApO1xuICB9KTtcbiAgdmFyIGNoZWNrc3VtID0gODtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCA5OyBpKyspIHtcbiAgICBjaGVja3N1bSArPSBkaWdpdHNbaV0gKiAoaSArIDEpO1xuICB9XG4gIHJldHVybiBjaGVja3N1bSAlIDExID09PSBkaWdpdHNbOV07XG59XG5cbi8qXG4gKiBsdC1MVCB2YWxpZGF0aW9uIGZ1bmN0aW9uIChzaG91bGQgZ28gaGVyZSBpZiBuZWVkZWQpXG4gKiAoQXNtZW5zIGtvZGFzLCBwZXJzb25zL2VudGl0aWVzIHJlc3BlY3RpdmVseSlcbiAqIEN1cnJlbnQgdmFsaWRhdGlvbiBjaGVjayBpcyBhbGlhcyBvZiBldEVlQ2hlY2stIHNhbWUgZm9ybWF0IGFwcGxpZXNcbiAqL1xuXG4vKlxuICogaXQtSVQgZmlyc3QvbGFzdCBuYW1lIHZhbGlkaXR5IGNoZWNrXG4gKiBBY2NlcHRzIGl0LUlUIFRJTi1lbmNvZGVkIG5hbWVzIGFzIGEgdGhyZWUtZWxlbWVudCBjaGFyYWN0ZXIgYXJyYXkgYW5kIGNoZWNrcyB0aGVpciB2YWxpZGl0eVxuICogRHVlIHRvIGxhY2sgb2YgY2xhcml0eSBiZXR3ZWVuIHJlc291cmNlcyAoXCJBcmUgb25seSBJdGFsaWFuIGNvbnNvbmFudHMgdXNlZD9cbiAqIFdoYXQgaGFwcGVucyBpZiBhIHBlcnNvbiBoYXMgWCBpbiB0aGVpciBuYW1lP1wiIGV0Yy4pIG9ubHkgdHdvIHRlc3QgY29uZGl0aW9uc1xuICogaGF2ZSBiZWVuIGltcGxlbWVudGVkOlxuICogVm93ZWxzIG1heSBvbmx5IGJlIGZvbGxvd2VkIGJ5IG90aGVyIHZvd2VscyBvciBhbiBYIGNoYXJhY3RlclxuICogYW5kIFggY2hhcmFjdGVycyBhZnRlciB2b3dlbHMgbWF5IG9ubHkgYmUgZm9sbG93ZWQgYnkgb3RoZXIgWCBjaGFyYWN0ZXJzLlxuICovXG5mdW5jdGlvbiBpdEl0TmFtZUNoZWNrKG5hbWUpIHtcbiAgLy8gdHJ1ZSBhdCB0aGUgZmlyc3Qgb2NjdXJlbmNlIG9mIGEgdm93ZWxcbiAgdmFyIHZvd2VsZmxhZyA9IGZhbHNlO1xuXG4gIC8vIHRydWUgYXQgdGhlIGZpcnN0IG9jY3VyZW5jZSBvZiBhbiBYIEFGVEVSIHZvd2VsXG4gIC8vICh0byBwcm9wZXJseSBoYW5kbGUgbGFzdCBuYW1lcyB3aXRoIFggYXMgY29uc29uYW50KVxuICB2YXIgeGZsYWcgPSBmYWxzZTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCAzOyBpKyspIHtcbiAgICBpZiAoIXZvd2VsZmxhZyAmJiAvW0FFSU9VXS8udGVzdChuYW1lW2ldKSkge1xuICAgICAgdm93ZWxmbGFnID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKCF4ZmxhZyAmJiB2b3dlbGZsYWcgJiYgbmFtZVtpXSA9PT0gJ1gnKSB7XG4gICAgICB4ZmxhZyA9IHRydWU7XG4gICAgfSBlbHNlIGlmIChpID4gMCkge1xuICAgICAgaWYgKHZvd2VsZmxhZyAmJiAheGZsYWcpIHtcbiAgICAgICAgaWYgKCEvW0FFSU9VXS8udGVzdChuYW1lW2ldKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHhmbGFnKSB7XG4gICAgICAgIGlmICghL1gvLnRlc3QobmFtZVtpXSkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qXG4gKiBpdC1JVCB2YWxpZGF0aW9uIGZ1bmN0aW9uXG4gKiAoQ29kaWNlIGZpc2NhbGUgKFRJTi1JVCksIHBlcnNvbnMgb25seSlcbiAqIFZlcmlmeSBuYW1lLCBiaXJ0aCBkYXRlIGFuZCBjb2RpY2UgY2F0YXN0YWxlIHZhbGlkaXR5XG4gKiBhbmQgY2FsY3VsYXRlIGNoZWNrIGNoYXJhY3Rlci5cbiAqIE1hdGVyaWFsIG5vdCBpbiBERy1UQVhVRCBkb2N1bWVudCBzb3VyY2VkIGZyb206XG4gKiBgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSXRhbGlhbl9maXNjYWxfY29kZWBcbiAqL1xuZnVuY3Rpb24gaXRJdENoZWNrKHRpbikge1xuICAvLyBDYXBpdGFsaXplIGFuZCBzcGxpdCBjaGFyYWN0ZXJzIGludG8gYW4gYXJyYXkgZm9yIGZ1cnRoZXIgcHJvY2Vzc2luZ1xuICB2YXIgY2hhcnMgPSB0aW4udG9VcHBlckNhc2UoKS5zcGxpdCgnJyk7XG5cbiAgLy8gQ2hlY2sgZmlyc3QgYW5kIGxhc3QgbmFtZSB2YWxpZGl0eSBjYWxsaW5nIGl0SXROYW1lQ2hlY2soKVxuICBpZiAoIWl0SXROYW1lQ2hlY2soY2hhcnMuc2xpY2UoMCwgMykpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICghaXRJdE5hbWVDaGVjayhjaGFycy5zbGljZSgzLCA2KSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBDb252ZXJ0IGxldHRlcnMgaW4gbnVtYmVyIHNwYWNlcyBiYWNrIHRvIG51bWJlcnMgaWYgYW55XG4gIHZhciBudW1iZXJfbG9jYXRpb25zID0gWzYsIDcsIDksIDEwLCAxMiwgMTMsIDE0XTtcbiAgdmFyIG51bWJlcl9yZXBsYWNlID0ge1xuICAgIEw6ICcwJyxcbiAgICBNOiAnMScsXG4gICAgTjogJzInLFxuICAgIFA6ICczJyxcbiAgICBROiAnNCcsXG4gICAgUjogJzUnLFxuICAgIFM6ICc2JyxcbiAgICBUOiAnNycsXG4gICAgVTogJzgnLFxuICAgIFY6ICc5J1xuICB9O1xuICBmb3IgKHZhciBfaTQgPSAwLCBfbnVtYmVyX2xvY2F0aW9ucyA9IG51bWJlcl9sb2NhdGlvbnM7IF9pNCA8IF9udW1iZXJfbG9jYXRpb25zLmxlbmd0aDsgX2k0KyspIHtcbiAgICB2YXIgaSA9IF9udW1iZXJfbG9jYXRpb25zW19pNF07XG4gICAgaWYgKGNoYXJzW2ldIGluIG51bWJlcl9yZXBsYWNlKSB7XG4gICAgICBjaGFycy5zcGxpY2UoaSwgMSwgbnVtYmVyX3JlcGxhY2VbY2hhcnNbaV1dKTtcbiAgICB9XG4gI
15H1cblxuICAvLyBFeHRyYWN0IG1vbnRoIGFuZCBkYXksIGFuZCBjaGVjayBkYXRlIHZhbGlkaXR5XG4gIHZhciBtb250aF9yZXBsYWNlID0ge1xuICAgIEE6ICcwMScsXG4gICAgQjogJzAyJyxcbiAgICBDOiAnMDMnLFxuICAgIEQ6ICcwNCcsXG4gICAgRTogJzA1JyxcbiAgICBIOiAnMDYnLFxuICAgIEw6ICcwNycsXG4gICAgTTogJzA4JyxcbiAgICBQOiAnMDknLFxuICAgIFI6ICcxMCcsXG4gICAgUzogJzExJyxcbiAgICBUOiAnMTInXG4gIH07XG4gIHZhciBtb250aCA9IG1vbnRoX3JlcGxhY2VbY2hhcnNbOF1dO1xuICB2YXIgZGF5ID0gcGFyc2VJbnQoY2hhcnNbOV0gKyBjaGFyc1sxMF0sIDEwKTtcbiAgaWYgKGRheSA+IDQwKSB7XG4gICAgZGF5IC09IDQwO1xuICB9XG4gIGlmIChkYXkgPCAxMCkge1xuICAgIGRheSA9IFwiMFwiLmNvbmNhdChkYXkpO1xuICB9XG4gIHZhciBkYXRlID0gXCJcIi5jb25jYXQoY2hhcnNbNl0pLmNvbmNhdChjaGFyc1s3XSwgXCIvXCIpLmNvbmNhdChtb250aCwgXCIvXCIpLmNvbmNhdChkYXkpO1xuICBpZiAoISgwLCBfaXNEYXRlLmRlZmF1bHQpKGRhdGUsICdZWS9NTS9ERCcpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gQ2FsY3VsYXRlIGNoZWNrIGNoYXJhY3RlciBieSBhZGRpbmcgdXAgZXZlbiBhbmQgb2RkIGNoYXJhY3RlcnMgYXMgbnVtYmVyc1xuICB2YXIgY2hlY2tzdW0gPSAwO1xuICBmb3IgKHZhciBfaTUgPSAxOyBfaTUgPCBjaGFycy5sZW5ndGggLSAxOyBfaTUgKz0gMikge1xuICAgIHZhciBjaGFyX3RvX2ludCA9IHBhcnNlSW50KGNoYXJzW19pNV0sIDEwKTtcbiAgICBpZiAoaXNOYU4oY2hhcl90b19pbnQpKSB7XG4gICAgICBjaGFyX3RvX2ludCA9IGNoYXJzW19pNV0uY2hhckNvZGVBdCgwKSAtIDY1O1xuICAgIH1cbiAgICBjaGVja3N1bSArPSBjaGFyX3RvX2ludDtcbiAgfVxuICB2YXIgb2RkX2NvbnZlcnQgPSB7XG4gICAgLy8gTWFwcyBvZiBjaGFyYWN0ZXJzIGF0IG9kZCBwbGFjZXNcbiAgICBBOiAxLFxuICAgIEI6IDAsXG4gICAgQzogNSxcbiAgICBEOiA3LFxuICAgIEU6IDksXG4gICAgRjogMTMsXG4gICAgRzogMTUsXG4gICAgSDogMTcsXG4gICAgSTogMTksXG4gICAgSjogMjEsXG4gICAgSzogMixcbiAgICBMOiA0LFxuICAgIE06IDE4LFxuICAgIE46IDIwLFxuICAgIE86IDExLFxuICAgIFA6IDMsXG4gICAgUTogNixcbiAgICBSOiA4LFxuICAgIFM6IDEyLFxuICAgIFQ6IDE0LFxuICAgIFU6IDE2LFxuICAgIFY6IDEwLFxuICAgIFc6IDIyLFxuICAgIFg6IDI1LFxuICAgIFk6IDI0LFxuICAgIFo6IDIzLFxuICAgIDA6IDEsXG4gICAgMTogMFxuICB9O1xuICBmb3IgKHZhciBfaTYgPSAwOyBfaTYgPCBjaGFycy5sZW5ndGggLSAxOyBfaTYgKz0gMikge1xuICAgIHZhciBfY2hhcl90b19pbnQgPSAwO1xuICAgIGlmIChjaGFyc1tfaTZdIGluIG9kZF9jb252ZXJ0KSB7XG4gICAgICBfY2hhcl90b19pbnQgPSBvZGRfY29udmVydFtjaGFyc1tfaTZdXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIG11bHRpcGxpZXIgPSBwYXJzZUludChjaGFyc1tfaTZdLCAxMCk7XG4gICAgICBfY2hhcl90b19pbnQgPSAyICogbXVsdGlwbGllciArIDE7XG4gICAgICBpZiAobXVsdGlwbGllciA+IDQpIHtcbiAgICAgICAgX2NoYXJfdG9faW50ICs9IDI7XG4gICAgICB9XG4gICAgfVxuICAgIGNoZWNrc3VtICs9IF9jaGFyX3RvX2ludDtcbiAgfVxuICBpZiAoU3RyaW5nLmZyb21DaGFyQ29kZSg2NSArIGNoZWNrc3VtICUgMjYpICE9PSBjaGFyc1sxNV0pIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qXG4gKiBsdi1MViB2YWxpZGF0aW9uIGZ1bmN0aW9uXG4gKiAoUGVyc29uYXMga29kcyAoUEspLCBwZXJzb25zIG9ubHkpXG4gKiBDaGVjayB2YWxpZGl0eSBvZiBiaXJ0aCBkYXRlIGFuZCBjYWxjdWxhdGUgY2hlY2sgKGxhc3QpIGRpZ2l0XG4gKiBTdXBwb3J0IG9ubHkgZm9yIG9sZCBmb3JtYXQgbnVtYmVycyAobm90IHN0YXJ0aW5nIHdpdGggJzMyJywgaXNzdWVkIGJlZm9yZSAyMDE3LzA3LzAxKVxuICogTWF0ZXJpYWwgbm90IGluIERHIFRBWFVEIGRvY3VtZW50IHNvdXJjZWQgZnJvbTpcbiAqIGBodHRwczovL2Jvb3Qucml0YWthZmlqYS5sdi9mb3J1bXMvaW5kZXgucGhwPy90b3BpYy84ODMxNC1wZXJzb25hcy1rb2RhLWFsZ29yaXRtcy0lQzQlOERla3N1bW1hL2BcbiAqL1xuZnVuY3Rpb24gbHZMdkNoZWNrKHRpbikge1xuICB0aW4gPSB0aW4ucmVwbGFjZSgvXFxXLywgJycpO1xuICAvLyBFeHRyYWN0IGRhdGUgZnJvbSBUSU5cbiAgdmFyIGRheSA9IHRpbi5zbGljZSgwLCAyKTtcbiAgaWYgKGRheSAhPT0gJzMyJykge1xuICAgIC8vIE5vIGRhdGUvY2hlY2tzdW0gY2hlY2sgaWYgbmV3IGZvcm1hdFxuICAgIHZhciBtb250aCA9IHRpbi5zbGljZSgyLCA0KTtcbiAgICBpZiAobW9udGggIT09ICcwMCcpIHtcbiAgICAgIC8vIE5vIGRhdGUgY2hlY2sgaWYgdW5rbm93biBtb250aFxuICAgICAgdmFyIGZ1bGxfeWVhciA9IHRpbi5zbGljZSg0LCA2KTtcbiAgICAgIHN3aXRjaCAodGluWzZdKSB7XG4gICAgICAgIGNhc2UgJzAnOlxuICAgICAgICAgIGZ1bGxfeWVhciA9IFwiMThcIi5jb25jYXQoZnVsbF95ZWFyKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnMSc6XG4gICAgICAgICAgZnVsbF95ZWFyID0gXCIxOVwiLmNvbmNhdChmdWxsX3llYXIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGZ1bGxfeWVhciA9IFwiMjBcIi5jb25jYXQoZnVsbF95ZWFyKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIC8vIENoZWNrIGRhdGUgdmFsaWRpdHlcbiAgICAgIHZhciBkYXRlID0gXCJcIi5jb25jYXQoZnVsbF95ZWFyLCBcIi9cIikuY29uY2F0KHRpbi5zbGljZSgyLCA0KSwgXCIvXCIpLmNvbmNhdChkYXkpO1xuICAgICAgaWYgKCEoMCwgX2lzRGF0ZS5kZWZhdWx0KShkYXRlLCAnWVlZWS9NTS9ERCcpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDYWxjdWxhdGUgY2hlY2sgZGlnaXRcbiAgICB2YXIgY2hlY2tzdW0gPSAxMTAxO1xuICAgIHZhciBtdWx0aXBfbG9va3VwID0gWzEsIDYsIDMsIDcsIDksIDEwLCA1LCA4LCA0LCAyXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRpbi5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgIGNoZWNrc3VtIC09IHBhcnNlSW50KHRpbltpXSwgMTApICogbXVsdGlwX2xvb2t1cFtpXTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcnNlSW50KHRpblsxMF0sIDEwKSA9PT0gY2hlY2tzdW0gJSAxMTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxuLypcbiAqIG10LU1UIHZhbGlkYXRpb24gZnVuY3Rpb25cbiAqIChJZGVudGl0eSBDYXJkIE51bWJlciBvciBVbmlxdWUgVGF4cGF5ZXIgUmVmZXJlbmNlLCBwZXJzb25zL2VudGl0aWVzKVxuICogVmVyaWZ5IElkZW50aXR5IENhcmQgTnVtYmVyIHN0cnVjdHVyZSAobm8gb3RoZXIgdGVzdHMgZm91bmQpXG4gKi9cbmZ1bmN0aW9uIG10TXRDaGVjayh0aW4pIHtcbiAgaWYgKHRpbi5sZW5ndGggIT09IDkpIHtcbiAgICAvLyBObyB0ZXN0cyBmb3IgVVRSXG4gICAgdmFyIGNoYXJzID0gdGluLnRvVXBwZXJDYXNlKCkuc3BsaXQoJycpO1xuICAgIC8vIEZpbGwgd2l0aCB6ZXJvcyBpZiBzbWFsbGVyIHRoYW4gcHJvcGVyXG4gICAgd2hpbGUgKGNoYXJzLmxlbmd0aCA8IDgpIHtcbiAgICAgIGNoYXJzLnVuc2hpZnQoMCk7XG4gICAgfVxuICAgIC8vIFZhbGlkYXRlIGZvcm1hdCBhY2NvcmRpbmcgdG8gbGFzdCBjaGFyYWN0ZXJcbiAgICBzd2l0Y2ggKHRpbls3XSkge1xuICAgICAgY2FzZSAnQSc6XG4gICAgICBjYXNlICdQJzpcbiAgICAgICAgaWYgKHBhcnNlSW50KGNoYXJzWzZdLCAxMCkgPT09IDApIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgI
15H1cbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB7XG4gICAgICAgICAgdmFyIGZpcnN0X3BhcnQgPSBwYXJzZUludChjaGFycy5qb2luKCcnKS5zbGljZSgwLCA1KSwgMTApO1xuICAgICAgICAgIGlmIChmaXJzdF9wYXJ0ID4gMzIwMDApIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIHNlY29uZF9wYXJ0ID0gcGFyc2VJbnQoY2hhcnMuam9pbignJykuc2xpY2UoNSwgNyksIDEwKTtcbiAgICAgICAgICBpZiAoZmlyc3RfcGFydCA9PT0gc2Vjb25kX3BhcnQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qXG4gKiBubC1OTCB2YWxpZGF0aW9uIGZ1bmN0aW9uXG4gKiAoQnVyZ2Vyc2VydmljZW51bW1lciAoQlNOKSBvciBSZWNodHNwZXJzb25lbiBTYW1lbndlcmtpbmdzdmVyYmFuZGVuIEluZm9ybWF0aWUgTnVtbWVyIChSU0lOKSxcbiAqIHBlcnNvbnMvZW50aXRpZXMgcmVzcGVjdGl2ZWx5KVxuICogVmVyaWZ5IFRJTiB2YWxpZGl0eSBieSBjYWxjdWxhdGluZyBjaGVjayAobGFzdCkgZGlnaXQgKHZhcmlhbnQgb2YgTU9EIDExKVxuICovXG5mdW5jdGlvbiBubE5sQ2hlY2sodGluKSB7XG4gIHJldHVybiBhbGdvcml0aG1zLnJldmVyc2VNdWx0aXBseUFuZFN1bSh0aW4uc3BsaXQoJycpLnNsaWNlKDAsIDgpLm1hcChmdW5jdGlvbiAoYSkge1xuICAgIHJldHVybiBwYXJzZUludChhLCAxMCk7XG4gIH0pLCA5KSAlIDExID09PSBwYXJzZUludCh0aW5bOF0sIDEwKTtcbn1cblxuLypcbiAqIHBsLVBMIHZhbGlkYXRpb24gZnVuY3Rpb25cbiAqIChQb3dzemVjaG55IEVsZWt0cm9uaWN6bnkgU3lzdGVtIEV3aWRlbmNqaSBMdWRub8WbY2kgKFBFU0VMKVxuICogb3IgTnVtZXIgaWRlbnR5ZmlrYWNqaSBwb2RhdGtvd2VqIChOSVApLCBwZXJzb25zL2VudGl0aWVzKVxuICogVmVyaWZ5IFRJTiB2YWxpZGl0eSBieSB2YWxpZGF0aW5nIGJpcnRoIGRhdGUgKFBFU0VMKSBhbmQgY2FsY3VsYXRpbmcgY2hlY2sgKGxhc3QpIGRpZ2l0XG4gKi9cbmZ1bmN0aW9uIHBsUGxDaGVjayh0aW4pIHtcbiAgLy8gTklQXG4gIGlmICh0aW4ubGVuZ3RoID09PSAxMCkge1xuICAgIC8vIENhbGN1bGF0ZSBsYXN0IGRpZ2l0IGJ5IG11bHRpcGx5aW5nIHdpdGggbG9va3VwXG4gICAgdmFyIGxvb2t1cCA9IFs2LCA1LCA3LCAyLCAzLCA0LCA1LCA2LCA3XTtcbiAgICB2YXIgX2NoZWNrc3VtID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxvb2t1cC5sZW5ndGg7IGkrKykge1xuICAgICAgX2NoZWNrc3VtICs9IHBhcnNlSW50KHRpbltpXSwgMTApICogbG9va3VwW2ldO1xuICAgIH1cbiAgICBfY2hlY2tzdW0gJT0gMTE7XG4gICAgaWYgKF9jaGVja3N1bSA9PT0gMTApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIF9jaGVja3N1bSA9PT0gcGFyc2VJbnQodGluWzldLCAxMCk7XG4gIH1cblxuICAvLyBQRVNFTFxuICAvLyBFeHRyYWN0IGZ1bGwgeWVhciB1c2luZyBtb250aFxuICB2YXIgZnVsbF95ZWFyID0gdGluLnNsaWNlKDAsIDIpO1xuICB2YXIgbW9udGggPSBwYXJzZUludCh0aW4uc2xpY2UoMiwgNCksIDEwKTtcbiAgaWYgKG1vbnRoID4gODApIHtcbiAgICBmdWxsX3llYXIgPSBcIjE4XCIuY29uY2F0KGZ1bGxfeWVhcik7XG4gICAgbW9udGggLT0gODA7XG4gIH0gZWxzZSBpZiAobW9udGggPiA2MCkge1xuICAgIGZ1bGxfeWVhciA9IFwiMjJcIi5jb25jYXQoZnVsbF95ZWFyKTtcbiAgICBtb250aCAtPSA2MDtcbiAgfSBlbHNlIGlmIChtb250aCA+IDQwKSB7XG4gICAgZnVsbF95ZWFyID0gXCIyMVwiLmNvbmNhdChmdWxsX3llYXIpO1xuICAgIG1vbnRoIC09IDQwO1xuICB9IGVsc2UgaWYgKG1vbnRoID4gMjApIHtcbiAgICBmdWxsX3llYXIgPSBcIjIwXCIuY29uY2F0KGZ1bGxfeWVhcik7XG4gICAgbW9udGggLT0gMjA7XG4gIH0gZWxzZSB7XG4gICAgZnVsbF95ZWFyID0gXCIxOVwiLmNvbmNhdChmdWxsX3llYXIpO1xuICB9XG4gIC8vIEFkZCBsZWFkaW5nIHplcm8gdG8gbW9udGggaWYgbmVlZGVkXG4gIGlmIChtb250aCA8IDEwKSB7XG4gICAgbW9udGggPSBcIjBcIi5jb25jYXQobW9udGgpO1xuICB9XG4gIC8vIENoZWNrIGRhdGUgdmFsaWRpdHlcbiAgdmFyIGRhdGUgPSBcIlwiLmNvbmNhdChmdWxsX3llYXIsIFwiL1wiKS5jb25jYXQobW9udGgsIFwiL1wiKS5jb25jYXQodGluLnNsaWNlKDQsIDYpKTtcbiAgaWYgKCEoMCwgX2lzRGF0ZS5kZWZhdWx0KShkYXRlLCAnWVlZWS9NTS9ERCcpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gQ2FsY3VsYXRlIGxhc3QgZGlnaXQgYnkgbXVsaXRwbHlpbmcgd2l0aCBvZGQgb25lLWRpZ2l0IG51bWJlcnMgZXhjZXB0IDVcbiAgdmFyIGNoZWNrc3VtID0gMDtcbiAgdmFyIG11bHRpcGxpZXIgPSAxO1xuICBmb3IgKHZhciBfaTcgPSAwOyBfaTcgPCB0aW4ubGVuZ3RoIC0gMTsgX2k3KyspIHtcbiAgICBjaGVja3N1bSArPSBwYXJzZUludCh0aW5bX2k3XSwgMTApICogbXVsdGlwbGllciAlIDEwO1xuICAgIG11bHRpcGxpZXIgKz0gMjtcbiAgICBpZiAobXVsdGlwbGllciA+IDEwKSB7XG4gICAgICBtdWx0aXBsaWVyID0gMTtcbiAgICB9IGVsc2UgaWYgKG11bHRpcGxpZXIgPT09IDUpIHtcbiAgICAgIG11bHRpcGxpZXIgKz0gMjtcbiAgICB9XG4gIH1cbiAgY2hlY2tzdW0gPSAxMCAtIGNoZWNrc3VtICUgMTA7XG4gIHJldHVybiBjaGVja3N1bSA9PT0gcGFyc2VJbnQodGluWzEwXSwgMTApO1xufVxuXG4vKlxuKiBwdC1CUiB2YWxpZGF0aW9uIGZ1bmN0aW9uXG4qIChDYWRhc3RybyBkZSBQZXNzb2FzIEbDrXNpY2FzIChDUEYsIHBlcnNvbnMpXG4qIENhZGFzdHJvIE5hY2lvbmFsIGRlIFBlc3NvYXMgSnVyw61kaWNhcyAoQ05QSiwgZW50aXRpZXMpXG4qIEJvdGggaW5wdXRzIHdpbGwgYmUgdmFsaWRhdGVkXG4qL1xuXG5mdW5jdGlvbiBwdEJyQ2hlY2sodGluKSB7XG4gIGlmICh0aW4ubGVuZ3RoID09PSAxMSkge1xuICAgIHZhciBfc3VtO1xuICAgIHZhciByZW1haW5kZXI7XG4gICAgX3N1bSA9IDA7XG4gICAgaWYgKFxuICAgIC8vIFJlamVjdCBrbm93biBpbnZhbGlkIENQRnNcbiAgICB0aW4gPT09ICcxMTExMTExMTExMScgfHwgdGluID09PSAnMjIyMjIyMjIyMjInIHx8IHRpbiA9PT0gJzMzMzMzMzMzMzMzJyB8fCB0aW4gPT09ICc0NDQ0NDQ0NDQ0NCcgfHwgdGluID09PSAnNTU1NTU1NTU1NTUnIHx8IHRpbiA9PT0gJzY2NjY2NjY2NjY2JyB8fCB0aW4gPT09ICc3Nzc3Nzc3Nzc3NycgfHwgdGluID09PSAnODg4ODg4ODg4ODgnIHx8IHRpbiA9PT0gJzk5OTk5OTk5OTk5JyB8fCB0aW4gPT09ICcwM
15DAwMDAwMDAwMCcpIHJldHVybiBmYWxzZTtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8PSA5OyBpKyspIF9zdW0gKz0gcGFyc2VJbnQodGluLnN1YnN0cmluZyhpIC0gMSwgaSksIDEwKSAqICgxMSAtIGkpO1xuICAgIHJlbWFpbmRlciA9IF9zdW0gKiAxMCAlIDExO1xuICAgIGlmIChyZW1haW5kZXIgPT09IDEwKSByZW1haW5kZXIgPSAwO1xuICAgIGlmIChyZW1haW5kZXIgIT09IHBhcnNlSW50KHRpbi5zdWJzdHJpbmcoOSwgMTApLCAxMCkpIHJldHVybiBmYWxzZTtcbiAgICBfc3VtID0gMDtcbiAgICBmb3IgKHZhciBfaTggPSAxOyBfaTggPD0gMTA7IF9pOCsrKSBfc3VtICs9IHBhcnNlSW50KHRpbi5zdWJzdHJpbmcoX2k4IC0gMSwgX2k4KSwgMTApICogKDEyIC0gX2k4KTtcbiAgICByZW1haW5kZXIgPSBfc3VtICogMTAgJSAxMTtcbiAgICBpZiAocmVtYWluZGVyID09PSAxMCkgcmVtYWluZGVyID0gMDtcbiAgICBpZiAocmVtYWluZGVyICE9PSBwYXJzZUludCh0aW4uc3Vic3RyaW5nKDEwLCAxMSksIDEwKSkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChcbiAgLy8gUmVqZWN0IGtub3cgaW52YWxpZCBDTlBKc1xuICB0aW4gPT09ICcwMDAwMDAwMDAwMDAwMCcgfHwgdGluID09PSAnMTExMTExMTExMTExMTEnIHx8IHRpbiA9PT0gJzIyMjIyMjIyMjIyMjIyJyB8fCB0aW4gPT09ICczMzMzMzMzMzMzMzMzMycgfHwgdGluID09PSAnNDQ0NDQ0NDQ0NDQ0NDQnIHx8IHRpbiA9PT0gJzU1NTU1NTU1NTU1NTU1JyB8fCB0aW4gPT09ICc2NjY2NjY2NjY2NjY2NicgfHwgdGluID09PSAnNzc3Nzc3Nzc3Nzc3NzcnIHx8IHRpbiA9PT0gJzg4ODg4ODg4ODg4ODg4JyB8fCB0aW4gPT09ICc5OTk5OTk5OTk5OTk5OScpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIGxlbmd0aCA9IHRpbi5sZW5ndGggLSAyO1xuICB2YXIgaWRlbnRpZmllcnMgPSB0aW4uc3Vic3RyaW5nKDAsIGxlbmd0aCk7XG4gIHZhciB2ZXJpZmljYXRvcnMgPSB0aW4uc3Vic3RyaW5nKGxlbmd0aCk7XG4gIHZhciBzdW0gPSAwO1xuICB2YXIgcG9zID0gbGVuZ3RoIC0gNztcbiAgZm9yICh2YXIgX2k5ID0gbGVuZ3RoOyBfaTkgPj0gMTsgX2k5LS0pIHtcbiAgICBzdW0gKz0gaWRlbnRpZmllcnMuY2hhckF0KGxlbmd0aCAtIF9pOSkgKiBwb3M7XG4gICAgcG9zIC09IDE7XG4gICAgaWYgKHBvcyA8IDIpIHtcbiAgICAgIHBvcyA9IDk7XG4gICAgfVxuICB9XG4gIHZhciByZXN1bHQgPSBzdW0gJSAxMSA8IDIgPyAwIDogMTEgLSBzdW0gJSAxMTtcbiAgaWYgKHJlc3VsdCAhPT0gcGFyc2VJbnQodmVyaWZpY2F0b3JzLmNoYXJBdCgwKSwgMTApKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGxlbmd0aCArPSAxO1xuICBpZGVudGlmaWVycyA9IHRpbi5zdWJzdHJpbmcoMCwgbGVuZ3RoKTtcbiAgc3VtID0gMDtcbiAgcG9zID0gbGVuZ3RoIC0gNztcbiAgZm9yICh2YXIgX2kxMCA9IGxlbmd0aDsgX2kxMCA+PSAxOyBfaTEwLS0pIHtcbiAgICBzdW0gKz0gaWRlbnRpZmllcnMuY2hhckF0KGxlbmd0aCAtIF9pMTApICogcG9zO1xuICAgIHBvcyAtPSAxO1xuICAgIGlmIChwb3MgPCAyKSB7XG4gICAgICBwb3MgPSA5O1xuICAgIH1cbiAgfVxuICByZXN1bHQgPSBzdW0gJSAxMSA8IDIgPyAwIDogMTEgLSBzdW0gJSAxMTtcbiAgaWYgKHJlc3VsdCAhPT0gcGFyc2VJbnQodmVyaWZpY2F0b3JzLmNoYXJBdCgxKSwgMTApKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG4vKlxuICogcHQtUFQgdmFsaWRhdGlvbiBmdW5jdGlvblxuICogKE7Dum1lcm8gZGUgaWRlbnRpZmljYcOnw6NvIGZpc2NhbCAoTklGKSwgcGVyc29ucy9lbnRpdGllcylcbiAqIFZlcmlmeSBUSU4gdmFsaWRpdHkgYnkgY2FsY3VsYXRpbmcgY2hlY2sgKGxhc3QpIGRpZ2l0ICh2YXJpYW50IG9mIE1PRCAxMSlcbiAqL1xuZnVuY3Rpb24gcHRQdENoZWNrKHRpbikge1xuICB2YXIgY2hlY2tzdW0gPSAxMSAtIGFsZ29yaXRobXMucmV2ZXJzZU11bHRpcGx5QW5kU3VtKHRpbi5zcGxpdCgnJykuc2xpY2UoMCwgOCkubWFwKGZ1bmN0aW9uIChhKSB7XG4gICAgcmV0dXJuIHBhcnNlSW50KGEsIDEwKTtcbiAgfSksIDkpICUgMTE7XG4gIGlmIChjaGVja3N1bSA+IDkpIHtcbiAgICByZXR1cm4gcGFyc2VJbnQodGluWzhdLCAxMCkgPT09IDA7XG4gIH1cbiAgcmV0dXJuIGNoZWNrc3VtID09PSBwYXJzZUludCh0aW5bOF0sIDEwKTtcbn1cblxuLypcbiAqIHJvLVJPIHZhbGlkYXRpb24gZnVuY3Rpb25cbiAqIChDb2QgTnVtZXJpYyBQZXJzb25hbCAoQ05QKSBvciBDb2QgZGUgw65ucmVnaXN0cmFyZSBmaXNjYWzEgyAoQ0lGKSxcbiAqIHBlcnNvbnMgb25seSlcbiAqIFZlcmlmeSBDTlAgdmFsaWRpdHkgYnkgY2FsY3VsYXRpbmcgY2hlY2sgKGxhc3QpIGRpZ2l0ICh0ZXN0IG5vdCBmb3VuZCBmb3IgQ0lGKVxuICogTWF0ZXJpYWwgbm90IGluIERHIFRBWFVEIGRvY3VtZW50IHNvdXJjZWQgZnJvbTpcbiAqIGBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9OYXRpb25hbF9pZGVudGlmaWNhdGlvbl9udW1iZXIjUm9tYW5pYWBcbiAqL1xuZnVuY3Rpb24gcm9Sb0NoZWNrKHRpbikge1xuICBpZiAodGluLnNsaWNlKDAsIDQpICE9PSAnOTAwMCcpIHtcbiAgICAvLyBObyB0ZXN0IGZvdW5kIGZvciB0aGlzIGZvcm1hdFxuICAgIC8vIEV4dHJhY3QgZnVsbCB5ZWFyIHVzaW5nIGNlbnR1cnkgZGlnaXQgaWYgcG9zc2libGVcbiAgICB2YXIgZnVsbF95ZWFyID0gdGluLnNsaWNlKDEsIDMpO1xuICAgIHN3aXRjaCAodGluWzBdKSB7XG4gICAgICBjYXNlICcxJzpcbiAgICAgIGNhc2UgJzInOlxuICAgICAgICBmdWxsX3llYXIgPSBcIjE5XCIuY29uY2F0KGZ1bGxfeWVhcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnMyc6XG4gICAgICBjYXNlICc0JzpcbiAgICAgICAgZnVsbF95ZWFyID0gXCIxOFwiLmNvbmNhdChmdWxsX3llYXIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJzUnOlxuICAgICAgY2FzZSAnNic6XG4gICAgICAgIGZ1bGxfeWVhciA9IFwiMjBcIi5jb25jYXQoZnVsbF95ZWFyKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgI
15H1cblxuICAgIC8vIENoZWNrIGRhdGUgdmFsaWRpdHlcbiAgICB2YXIgZGF0ZSA9IFwiXCIuY29uY2F0KGZ1bGxfeWVhciwgXCIvXCIpLmNvbmNhdCh0aW4uc2xpY2UoMywgNSksIFwiL1wiKS5jb25jYXQodGluLnNsaWNlKDUsIDcpKTtcbiAgICBpZiAoZGF0ZS5sZW5ndGggPT09IDgpIHtcbiAgICAgIGlmICghKDAsIF9pc0RhdGUuZGVmYXVsdCkoZGF0ZSwgJ1lZL01NL0REJykpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoISgwLCBfaXNEYXRlLmRlZmF1bHQpKGRhdGUsICdZWVlZL01NL0REJykpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBDYWxjdWxhdGUgY2hlY2sgZGlnaXRcbiAgICB2YXIgZGlnaXRzID0gdGluLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKGEpIHtcbiAgICAgIHJldHVybiBwYXJzZUludChhLCAxMCk7XG4gICAgfSk7XG4gICAgdmFyIG11bHRpcGxpZXJzID0gWzIsIDcsIDksIDEsIDQsIDYsIDMsIDUsIDgsIDIsIDcsIDldO1xuICAgIHZhciBjaGVja3N1bSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtdWx0aXBsaWVycy5sZW5ndGg7IGkrKykge1xuICAgICAgY2hlY2tzdW0gKz0gZGlnaXRzW2ldICogbXVsdGlwbGllcnNbaV07XG4gICAgfVxuICAgIGlmIChjaGVja3N1bSAlIDExID09PSAxMCkge1xuICAgICAgcmV0dXJuIGRpZ2l0c1sxMl0gPT09IDE7XG4gICAgfVxuICAgIHJldHVybiBkaWdpdHNbMTJdID09PSBjaGVja3N1bSAlIDExO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG4vKlxuICogc2stU0sgdmFsaWRhdGlvbiBmdW5jdGlvblxuICogKFJvZG7DqSDEjcOtc2xvIChSxIwpIG9yIGJlenbDvXpuYW1vdsOpIGlkZW50aWZpa2HEjW7DqSDEjcOtc2xvIChCScSMKSwgcGVyc29ucyBvbmx5KVxuICogQ2hlY2tzIHZhbGlkaXR5IG9mIHByZS0xOTU0IGJpcnRoIG51bWJlcnMgKHJvZG7DqSDEjcOtc2xvKSBvbmx5XG4gKiBEdWUgdG8gdGhlIGludHJvZHVjdGlvbiBvZiB0aGUgcHNldWRvLXJhbmRvbSBCScSMIGl0IGlzIG5vdCBwb3NzaWJsZSB0byB0ZXN0XG4gKiBwb3N0LTE5NTQgYmlydGggbnVtYmVycyB3aXRob3V0IGtub3dpbmcgd2hldGhlciB0aGV5IGFyZSBCScSMIG9yIFLEjCBiZWZvcmVoYW5kXG4gKi9cbmZ1bmN0aW9uIHNrU2tDaGVjayh0aW4pIHtcbiAgaWYgKHRpbi5sZW5ndGggPT09IDkpIHtcbiAgICB0aW4gPSB0aW4ucmVwbGFjZSgvXFxXLywgJycpO1xuICAgIGlmICh0aW4uc2xpY2UoNikgPT09ICcwM
15DAnKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSAvLyBUaHJlZS16ZXJvIHNlcmlhbCBub3QgYXNzaWduZWQgYmVmb3JlIDE5NTRcblxuICAgIC8vIEV4dHJhY3QgZnVsbCB5ZWFyIGZyb20gVElOIGxlbmd0aFxuICAgIHZhciBmdWxsX3llYXIgPSBwYXJzZUludCh0aW4uc2xpY2UoMCwgMiksIDEwKTtcbiAgICBpZiAoZnVsbF95ZWFyID4gNTMpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGZ1bGxfeWVhciA8IDEwKSB7XG4gICAgICBmdWxsX3llYXIgPSBcIjE5MFwiLmNvbmNhdChmdWxsX3llYXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmdWxsX3llYXIgPSBcIjE5XCIuY29uY2F0KGZ1bGxfeWVhcik7XG4gICAgfVxuXG4gICAgLy8gRXh0cmFjdCBtb250aCBmcm9tIFRJTiBhbmQgbm9ybWFsaXplXG4gICAgdmFyIG1vbnRoID0gcGFyc2VJbnQodGluLnNsaWNlKDIsIDQpLCAxMCk7XG4gICAgaWYgKG1vbnRoID4gNTApIHtcbiAgICAgIG1vbnRoIC09IDUwO1xuICAgIH1cbiAgICBpZiAobW9udGggPCAxMCkge1xuICAgICAgbW9udGggPSBcIjBcIi5jb25jYXQobW9udGgpO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGRhdGUgdmFsaWRpdHlcbiAgICB2YXIgZGF0ZSA9IFwiXCIuY29uY2F0KGZ1bGxfeWVhciwgXCIvXCIpLmNvbmNhdChtb250aCwgXCIvXCIpLmNvbmNhdCh0aW4uc2xpY2UoNCwgNikpO1xuICAgIGlmICghKDAsIF9pc0RhdGUuZGVmYXVsdCkoZGF0ZSwgJ1lZWVkvTU0vREQnKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxuLypcbiAqIHNsLVNJIHZhbGlkYXRpb24gZnVuY3Rpb25cbiAqIChEYXbEjW5hIMWhdGV2aWxrYSwgcGVyc29ucy9lbnRpdGllcylcbiAqIFZlcmlmeSBUSU4gdmFsaWRpdHkgYnkgY2FsY3VsYXRpbmcgY2hlY2sgKGxhc3QpIGRpZ2l0ICh2YXJpYW50IG9mIE1PRCAxMSlcbiAqL1xuZnVuY3Rpb24gc2xTaUNoZWNrKHRpbikge1xuICB2YXIgY2hlY2tzdW0gPSAxMSAtIGFsZ29yaXRobXMucmV2ZXJzZU11bHRpcGx5QW5kU3VtKHRpbi5zcGxpdCgnJykuc2xpY2UoMCwgNykubWFwKGZ1bmN0aW9uIChhKSB7XG4gICAgcmV0dXJuIHBhcnNlSW50KGEsIDEwKTtcbiAgfSksIDgpICUgMTE7XG4gIGlmIChjaGVja3N1bSA9PT0gMTApIHtcbiAgICByZXR1cm4gcGFyc2VJbnQodGluWzddLCAxMCkgPT09IDA7XG4gIH1cbiAgcmV0dXJuIGNoZWNrc3VtID09PSBwYXJzZUludCh0aW5bN10sIDEwKTtcbn1cblxuLypcbiAqIHN2LVNFIHZhbGlkYXRpb24gZnVuY3Rpb25cbiAqIChQZXJzb25udW1tZXIgb3Igc2Ftb3JkbmluZ3NudW1tZXIsIHBlcnNvbnMgb25seSlcbiAqIENoZWNrcyB2YWxpZGl0eSBvZiBiaXJ0aCBkYXRlIGFuZCBjYWxscyBsdWhuQ2hlY2soKSB0byB2YWxpZGF0ZSBjaGVjayAobGFzdCkgZGlnaXRcbiAqL1xuZnVuY3Rpb24gc3ZTZUNoZWNrKHRpbikge1xuICAvLyBNYWtlIGNvcHkgb2YgVElOIGFuZCBub3JtYWxpemUgdG8gdHdvLWRpZ2l0IHllYXIgZm9ybVxuICB2YXIgdGluX2NvcHkgPSB0aW4uc2xpY2UoMCk7XG4gIGlmICh0aW4ubGVuZ3RoID4gMTEpIHtcbiAgICB0aW5fY29weSA9IHRpbl9jb3B5LnNsaWNlKDIpO1xuICB9XG5cbiAgLy8gRXh0cmFjdCBkYXRlIG9mIGJpcnRoXG4gIHZhciBmdWxsX3llYXIgPSAnJztcbiAgdmFyIG1vbnRoID0gdGluX2NvcHkuc2xpY2UoMiwgNCk7XG4gIHZhciBkYXkgPSBwYXJzZUludCh0aW5fY29weS5zbGljZSg0LCA2KSwgMTApO1xuICBpZiAodGluLmxlbmd0aCA+IDExKSB7XG4gICAgZnVsbF95ZWFyID0gdGluLnNsaWNlKDAsIDQpO1xuICB9IGVsc2Uge1xuICAgIGZ1bGxfeWVhciA9IHRpbi5zbGljZSgwLCAyKTtcbiAgICBpZiAodGluLmxlbmd0aCA9PT0gMTEgJiYgZGF5IDwgNjApIHtcbiAgICAgIC8vIEV4dHJhY3QgZnVsbCB5ZWFyIGZyb20gY2VudGVuYXJpYW4gc3ltYm9sXG4gICAgICAvLyBTaG91bGQgd29yayBqdXN0IGZpbmUgdW50aWwgeWVhciAxMDAwMCBvciBzb1xuICAgICAgdmFyIGN1cnJlbnRfeWVhciA9IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKS50b1N0cmluZygpO1xuICAgICAgdmFyIGN1cnJlbnRfY2VudHVyeSA9IHBhcnNlSW50KGN1cnJlbnRfeWVhci5zbGljZSgwLCAyKSwgMTApO1xuICAgICAgY3VycmVudF95ZWFyID0gcGFyc2VJbnQoY3VycmVudF95ZWFyLCAxMCk7XG4gICAgICBpZiAodGluWzZdID09PSAnLScpIHtcbiAgICAgICAgaWYgKHBhcnNlSW50KFwiXCIuY29uY2F0KGN1cnJlbnRfY2VudHVyeSkuY29uY2F0KGZ1bGxfeWVhciksIDEwKSA+IGN1cnJlbnRfeWVhcikge1xuICAgICAgICAgIGZ1bGxfeWVhciA9IFwiXCIuY29uY2F0KGN1cnJlbnRfY2VudHVyeSAtIDEpLmNvbmNhdChmdWxsX3llYXIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZ1bGxfeWVhciA9IFwiXCIuY29uY2F0KGN1cnJlbnRfY2VudHVyeSkuY29uY2F0KGZ1bGxfeWVhcik7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZ1bGxfeWVhciA9IFwiXCIuY29uY2F0KGN1cnJlbnRfY2VudHVyeSAtIDEpLmNvbmNhdChmdWxsX3llYXIpO1xuICAgICAgICBpZiAoY3VycmVudF95ZWFyIC0gcGFyc2VJbnQoZnVsbF95ZWFyLCAxMCkgPCAxMDApIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBOb3JtYWxpemUgZGF5IGFuZCBjaGVjayBkYXRlIHZhbGlkaXR5XG4gIGlmIChkYXkgPiA2MCkge1xuICAgIGRheSAtPSA2MDtcbiAgfVxuICBpZiAoZGF5IDwgMTApIHtcbiAgICBkYXkgPSBcIjBcIi5jb25jYXQoZGF5KTtcbiAgfVxuICB2YXIgZGF0ZSA9IFwiXCIuY29uY2F0KGZ1bGxfeWVhciwgXCIvXCIpLmNvbmNhdChtb250aCwgXCIvXCIpLmNvbmNhdChkYXkpO1xuICBpZiAoZGF0ZS5sZW5ndGggPT09IDgpIHtcbiAgICBpZiAoISgwLCBfaXNEYXRlLmRlZmF1bHQpKGRhdGUsICdZWS9NTS9ERCcpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9IGVsc2UgaWYgKCEoMCwgX2lzRGF0ZS5kZWZhdWx0KShkYXRlLCAnWVlZWS9NTS9ERCcpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gI
15HJldHVybiBhbGdvcml0aG1zLmx1aG5DaGVjayh0aW4ucmVwbGFjZSgvXFxXLywgJycpKTtcbn1cblxuLyoqXG4gKiB1ay1VQSB2YWxpZGF0aW9uIGZ1bmN0aW9uXG4gKiBWZXJpZnkgVElOIHZhbGlkaXR5IGJ5IGNhbGN1bGF0aW5nIGNoZWNrIChsYXN0KSBkaWdpdCAodmFyaWFudCBvZiBNT0QgMTEpXG4gKi9cbmZ1bmN0aW9uIHVrVWFDaGVjayh0aW4pIHtcbiAgLy8gQ2FsY3VsYXRlIGNoZWNrIGRpZ2l0XG4gIHZhciBkaWdpdHMgPSB0aW4uc3BsaXQoJycpLm1hcChmdW5jdGlvbiAoYSkge1xuICAgIHJldHVybiBwYXJzZUludChhLCAxMCk7XG4gIH0pO1xuICB2YXIgbXVsdGlwbGllcnMgPSBbLTEsIDUsIDcsIDksIDQsIDYsIDEwLCA1LCA3XTtcbiAgdmFyIGNoZWNrc3VtID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtdWx0aXBsaWVycy5sZW5ndGg7IGkrKykge1xuICAgIGNoZWNrc3VtICs9IGRpZ2l0c1tpXSAqIG11bHRpcGxpZXJzW2ldO1xuICB9XG4gIHJldHVybiBjaGVja3N1bSAlIDExID09PSAxMCA/IGRpZ2l0c1s5XSA9PT0gMCA6IGRpZ2l0c1s5XSA9PT0gY2hlY2tzdW0gJSAxMTtcbn1cblxuLy8gTG9jYWxlIGxvb2t1cCBvYmplY3RzXG5cbi8qXG4gKiBUYXggaWQgcmVnZXggZm9ybWF0cyBmb3IgdmFyaW91cyBsb2NhbGVzXG4gKlxuICogV2hlcmUgbm90IGV4cGxpY2l0bHkgc3BlY2lmaWVkIGluIERHLVRBWFVEIGRvY3VtZW50IGJvdGhcbiAqIHVwcGVyY2FzZSBhbmQgbG93ZXJjYXNlIGxldHRlcnMgYXJlIGFjY2VwdGFibGUuXG4gKi9cbnZhciB0YXhJZEZvcm1hdCA9IHtcbiAgJ2JnLUJHJzogL15cXGR7MTB9JC8sXG4gICdjcy1DWic6IC9eXFxkezZ9XFwvezAsMX1cXGR7Myw0fSQvLFxuICAnZGUtQVQnOiAvXlxcZHs5fSQvLFxuICAnZGUtREUnOiAvXlsxLTldXFxkezEwfSQvLFxuICAnZGstREsnOiAvXlxcZHs2fS17MCwxfVxcZHs0fSQvLFxuICAnZWwtQ1knOiAvXlswOV1cXGR7N31bQS1aXSQvLFxuICAnZWwtR1InOiAvXihbMC00XXxbNy05XSlcXGR7OH0kLyxcbiAgJ2VuLUNBJzogL15cXGR7OX0kLyxcbiAgJ2VuLUdCJzogL15cXGR7MTB9JHxeKD8hR0J8Tkt8VE58WlopKD8hW0RGSVFVVl0pW0EtWl0oPyFbREZJUVVWT10pW0EtWl1cXGR7Nn1bQUJDRCBdJC9pLFxuICAnZW4tSUUnOiAvXlxcZHs3fVtBLVddW0EtSVddezAsMX0kL2ksXG4gICdlbi1VUyc6IC9eXFxkezJ9Wy0gXXswLDF9XFxkezd9JC8sXG4gICdlcy1BUic6IC8oMjB8MjN8MjR8Mjd8MzB8MzN8MzQpWzAtOV17OH1bMC05XS8sXG4gICdlcy1FUyc6IC9eKFxcZHswLDh9fFtYWVpLTE1dXFxkezd9KVtBLUhKLU5QLVRWLVpdJC9pLFxuICAnZXQtRUUnOiAvXlsxLTZdXFxkezZ9KDAwWzEtOV18MFsxLTldWzAtOV18WzEtNl1bMC05XXsyfXw3MFswLTldfDcxMClcXGQkLyxcbiAgJ2ZpLUZJJzogL15cXGR7Nn1bLStBXVxcZHszfVswLTlBLUZISi1OUFItWV0kL2ksXG4gICdmci1CRSc6IC9eXFxkezExfSQvLFxuICAnZnItRlInOiAvXlswLTNdXFxkezEyfSR8XlswLTNdXFxkXFxzXFxkezJ9KFxcc1xcZHszfSl7M30kLyxcbiAgLy8gQ29uZm9ybXMgYm90aCB0byBvZmZpY2lhbCBzcGVjIGFuZCBwcm92aWRlZCBleGFtcGxlXG4gICdmci1MVSc6IC9eXFxkezEzfSQvLFxuICAnaHItSFInOiAvXlxcZHsxMX0kLyxcbiAgJ2h1LUhVJzogL144XFxkezl9JC8sXG4gICdpdC1JVCc6IC9eW0EtWl17Nn1bTC1OUC1WMC05XXsyfVtBLUVITE1QUlNUXVtMLU5QLVYwLTldezJ9W0EtSUxNWl1bTC1OUC1WMC05XXszfVtBLVpdJC9pLFxuICAnbHYtTFYnOiAvXlxcZHs2fS17MCwxfVxcZHs1fSQvLFxuICAvLyBDb25mb3JtcyBib3RoIHRvIERHIFRBWFVEIHNwZWMgYW5kIG9yaWdpbmFsIHJlc2VhcmNoXG4gICdtdC1NVCc6IC9eXFxkezMsN31bQVBNR0xIQlpdJHxeKFsxLThdKVxcMVxcZHs3fSQvaSxcbiAgJ25sLU5MJzogL15cXGR7OX0kLyxcbiAgJ3BsLVBMJzogL15cXGR7MTAsMTF9JC8sXG4gICdwdC1CUic6IC8oPzpeXFxkezExfSQpfCg/Ol5cXGR7MTR9JCkvLFxuICAncHQtUFQnOiAvXlxcZHs5fSQvLFxuICAncm8tUk8nOiAvXlxcZHsxM30kLyxcbiAgJ3NrLVNLJzogL15cXGR7Nn1cXC97MCwxfVxcZHszLDR9JC8sXG4gICdzbC1TSSc6IC9eWzEtOV1cXGR7N30kLyxcbiAgJ3N2LVNFJzogL14oXFxkezZ9Wy0rXXswLDF9XFxkezR9fCgxOHwxOXwyMClcXGR7Nn1bLStdezAsMX1cXGR7NH0pJC8sXG4gICd1ay1VQSc6IC9eXFxkezEwfSQvXG59O1xuLy8gdGF4SWRGb3JtYXQgbG9jYWxlIGFsaWFzZXNcbnRheElkRm9ybWF0WydsYi1MVSddID0gdGF4SWRGb3JtYXRbJ2ZyLUxVJ107XG50YXhJZEZvcm1hdFsnbHQtTFQnXSA9IHRheElkRm9ybWF0WydldC1FRSddO1xudGF4SWRGb3JtYXRbJ25sLUJFJ10gPSB0YXhJZEZvcm1hdFsnZnItQkUnXTtcbnRheElkRm9ybWF0Wydmci1DQSddID0gdGF4SWRGb3JtYXRbJ2VuLUNBJ107XG5cbi8vIEFsZ29yaXRobWljIHRheCBpZCBjaGVjayBmdW5jdGlvbnMgZm9yIHZhcmlvdXMgbG9jYWxlc1xudmFyIHRheElkQ2hlY2sgPSB7XG4gICdiZy1CRyc6IGJnQmdDaGVjayxcbiAgJ2NzLUNaJzogY3NDekNoZWNrLFxuICAnZGUtQVQnOiBkZUF0Q2hlY2ssXG4gICdkZS1ERSc6IGRlRGVDaGVjayxcbiAgJ2RrLURLJzogZGtEa0NoZWNrLFxuICAnZWwtQ1knOiBlbEN5Q2hlY2ssXG4gICdlbC1HUic6IGVsR3JDaGVjayxcbiAgJ2VuLUNBJzogaXNDYW5hZGlhblNJTixcbiAgJ2VuLUlFJzogZW5JZUNoZWNrLFxuICAnZW4tVVMnOiBlblVzQ2hlY2ssXG4gICdlcy1BUic6IGVzQXJDaGVjayxcbiAgJ2VzLUVTJzogZXNFc0NoZWNrLFxuICAnZXQtRUUnOiBldEVlQ2hlY2ssXG4gICdmaS1GSSc6IGZpRmlDaGVjayxcbiAgJ2ZyLUJFJzogZnJCZUNoZWNrLFxuICAnZnItRlInOiBmckZyQ2hlY2ssXG4gICdmci1MVSc6IGZyTHVDaGVjayxcbiAgJ2hyLUhSJzogaHJIckNoZWNrLFxuICAnaHUtSFUnOiBodUh1Q2hlY2ssXG4gICdpdC1JVCc6IGl0SXRDaGVjayxcbiAgJ2x2LUxWJzogbHZMdkNoZWNrLFxuICAnbXQtTVQnOiBtdE10Q2hlY2ssXG4gICdubC1OTCc6IG5sTmxDaGVjayxcbiAgJ3BsLVBMJzogcGxQbENoZWNrLFxuICAncHQtQlInOiBwdEJyQ2hlY2ssXG4gICdwdC1QVCc6IHB0UHRDaGVjayxcbiAgJ3JvLVJPJzogcm9Sb0NoZWNrLFxuICAnc2stU0snOiBza1NrQ2hlY2ssXG4gICdzbC1TSSc6IHNsU2lDaGVjayxcbiAgJ3N2LVNFJzogc3ZTZUNoZWNrLFxuICAndWstVUEnOiB1a1VhQ2hlY2tcbn07XG4vLyB0YXhJZENoZWNrIGxvY2FsZSBhbGlhc2VzXG50YXhJZENoZWNrWydsYi1MVSddID0gdGF4SWRDaGVja1snZnItTFUnXTtcbnRheElkQ2hlY2tbJ2x0LUxUJ10gPSB0YXhJZENoZWNrWydldC1FRSddO1xudGF4SWRDaGVja1snbmwtQkUnXSA9IHRheElkQ2hlY2tbJ2ZyLUJFJ107XG50YXhJZENoZWNrWydmci1DQSddID0gdGF4SWRDaGVja1snZW4tQ0EnXTtcblxuLy8gUmVnZXhlcyBmb3IgbG9jYWxlcyB3aGVyZSBjaGFyYWN0ZXJzIHNob3VsZCBiZSBvbWl0dGVkIGJlZm9yZSBjaGVja2luZyBmb3JtYXRcbnZhciBhbGxzeW1ib2xzID0gL1stXFxcXFxcLyFAIyQlXFxeJlxcKlxcKFxcKVxcK1xcPVxcW1xcXV0rL2c7XG52YXIgc2FuaXRpemVSZWdleGVzID0ge1xuICAnZGUtQVQnOiBhbGxzeW1ib2xzLFxuICAnZGUtREUnOiAvW1xcL1xcXFxdL2csXG4gICdmci1CRSc6IGFsbHN5bWJvbHNcbn07XG4vLyBzYW5pdGl6ZVJlZ2V4ZXMgbG9jYWxlIGFsaWFzZXNcbnNhbml0aXpl
15UmVnZXhlc1snbmwtQkUnXSA9IHNhbml0aXplUmVnZXhlc1snZnItQkUnXTtcblxuLypcbiAqIFZhbGlkYXRvciBmdW5jdGlvblxuICogUmV0dXJuIHRydWUgaWYgdGhlIHBhc3NlZCBzdHJpbmcgaXMgYSB2YWxpZCB0YXggaWRlbnRpZmljYXRpb24gbnVtYmVyXG4gKiBmb3IgdGhlIHNwZWNpZmllZCBsb2NhbGUuXG4gKiBUaHJvdyBhbiBlcnJvciBleGNlcHRpb24gaWYgdGhlIGxvY2FsZSBpcyBub3Qgc3VwcG9ydGVkLlxuICovXG5mdW5jdGlvbiBpc1RheElEKHN0cikge1xuICB2YXIgbG9jYWxlID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiAnZW4tVVMnO1xuICAoMCwgX2Fzc2VydFN0cmluZy5kZWZhdWx0KShzdHIpO1xuICAvLyBDb3B5IFRJTiB0byBhdm9pZCByZXBsYWNlbWVudCBpZiBzYW5pdGl6ZWRcbiAgdmFyIHN0cmNvcHkgPSBzdHIuc2xpY2UoMCk7XG4gIGlmIChsb2NhbGUgaW4gdGF4SWRGb3JtYXQpIHtcbiAgICBpZiAobG9jYWxlIGluIHNhbml0aXplUmVnZXhlcykge1xuICAgICAgc3RyY29weSA9IHN0cmNvcHkucmVwbGFjZShzYW5pdGl6ZVJlZ2V4ZXNbbG9jYWxlXSwgJycpO1xuICAgIH1cbiAgICBpZiAoIXRheElkRm9ybWF0W2xvY2FsZV0udGVzdChzdHJjb3B5KSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAobG9jYWxlIGluIHRheElkQ2hlY2spIHtcbiAgICAgIHJldHVybiB0YXhJZENoZWNrW2xvY2FsZV0oc3RyY29weSk7XG4gICAgfVxuICAgIC8vIEZhbGx0aHJvdWdoOyBub3QgYWxsIGxvY2FsZXMgaGF2ZSBhbGdvcml0aG1pYyBjaGVja3NcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGxvY2FsZSAnXCIuY29uY2F0KGxvY2FsZSwgXCInXCIpKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZh
15dWx0O1xubW9kdWxlLmV4cG9ydHMuZGVmYXVsdCA9IGV4cG9ydHMuZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzTW9iaWxlUGhvbmU7XG5leHBvcnRzLmxvY2FsZXMgPSB2b2lkIDA7XG52YXIgX2Fzc2VydFN0cmluZyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vdXRpbC9hc3NlcnRTdHJpbmdcIikpO1xuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi9cbnZhciBwaG9uZXMgPSB7XG4gICdhbS1BTSc6IC9eKFxcKz8zNzR8MCkoMzN8NFsxMzRdfDU1fDc3fDg4fDlbMTMtNjg5XSlcXGR7Nn0kLyxcbiAgJ2FyLUFFJzogL14oKFxcKz85NzEpfDApPzVbMDI0NTY4XVxcZHs3fSQvLFxuICAnYXItQkgnOiAvXihcXCs/OTczKT8oM3w2KVxcZHs3fSQvLFxuICAnYXItRFonOiAvXihcXCs/MjEzfDApKDV8Nnw3KVxcZHs4fSQvLFxuICAnYXItTEInOiAvXihcXCs/OTYxKT8oKDN8ODEpXFxkezZ9fDdcXGR7N30pJC8sXG4gICdhci1FRyc6IC9eKChcXCs/MjApfDApPzFbMDEyNV1cXGR7OH0kLyxcbiAgJ2FyLUlRJzogL14oXFwrPzk2NHwwKT83WzAtOV1cXGR7OH0kLyxcbiAgJ2FyLUpPJzogL14oXFwrPzk2MnwwKT83Wzc4OV1cXGR7N30kLyxcbiAgJ2FyLUtXJzogL14oXFwrPzk2NSkoWzU2OV1cXGR7N318NDFcXGR7Nn0pJC8sXG4gICdhci1MWSc6IC9eKChcXCs/MjE4KXwwKT8oOVsxLTZdXFxkezd9fFsxLThdXFxkezcsOX0pJC8sXG4gICdhci1NQSc6IC9eKD86KD86XFwrfDAwKTIxMnwwKVs1LTddXFxkezh9JC8sXG4gICdhci1PTSc6IC9eKChcXCt8MDApOTY4KT8oOVsxLTldKVxcZHs2fSQvLFxuICAnYXItUFMnOiAvXihcXCs/OTcwfDApNVs2fDldKFxcZHs3fSkkLyxcbiAgJ2FyLVNBJzogL14oIT8oXFwrPzk2Nil8MCk/NVxcZHs4fSQvLFxuICAnYXItU0QnOiAvXigoXFwrPzI0OSl8MCk/KDlbMDEyMzY5XXwxWzAxMl0pXFxkezd9JC8sXG4gICdhci1TWSc6IC9eKCE/KFxcKz85NjMpfDApPzlcXGR7OH0kLyxcbiAgJ2FyLVROJzogL14oXFwrPzIxNik/WzI0NTldXFxkezd9JC8sXG4gICdhei1BWic6IC9eKFxcKzk5NHwwKSgxMHw1WzAxNV18N1swN118OTkpXFxkezd9JC8sXG4gICdicy1CQSc6IC9eKCgoKFxcK3wwMCkzODc2KXwwNikpKCgoWzAtM118WzUtNl0pXFxkezZ9KXwoNFxcZHs3fSkpJC8sXG4gICdiZS1CWSc6IC9eKFxcKz8zNzUpPygyNHwyNXwyOXwzM3w0NClcXGR7N30kLyxcbiAgJ2JnLUJHJzogL14oXFwrPzM1OXwwKT84Wzc4OV1cXGR7N30kLyxcbiAgJ2JuLUJEJzogL14oXFwrPzg4MHwwKTFbMTM0NTY3ODldWzAtOV17OH0kLyxcbiAgJ2NhLUFEJzogL14oXFwrMzc2KT9bMzQ2XVxcZHs1fSQvLFxuICAnY3MtQ1onOiAvXihcXCs/NDIwKT8gP1sxLTldWzAtOV17Mn0gP1swLTldezN9ID9bMC05XXszfSQvLFxuICAnZGEtREsnOiAvXihcXCs/NDUpP1xccz9cXGR7Mn1cXHM/XFxkezJ9XFxzP1xcZHsyfVxccz9cXGR7Mn0kLyxcbiAgJ2RlLURFJzogL14oKFxcKzQ5fDApMSkoNVswLTI1LTldXFxkfDYoWzIzXXwwXFxkPyl8NyhbMC01Ny05XXw2XFxkKSlcXGR7Nyw5fSQvLFxuICAnZGUtQVQnOiAvXihcXCs0M3wwKVxcZHsxLDR9XFxkezMsMTJ9JC8sXG4gICdkZS1DSCc6IC9eKFxcKzQxfDApKFsxLTldKVxcZHsxLDl9JC8sXG4gICdkZS1MVSc6IC9eKFxcKzM1Mik/KCg2XFxkMSlcXGR7Nn0pJC8sXG4gICdkdi1NVic6IC9eKFxcKz85NjApPyg3WzItOV18OVsxLTldKVxcZHs1fSQvLFxuICAnZWwtR1InOiAvXihcXCs/MzB8MCk/Nig4WzUtOV18OSg/IVsyNl0pWzAtOV0pXFxkezd9JC8sXG4gICdlbC1DWSc6IC9eKFxcKz8zNTc/KT8oOSg5fDYpXFxkezZ9KSQvLFxuICAnZW4tQUknOiAvXihcXCs/MXwwKTI2NCg/OjIoMzV8OTIpfDQoPzo2WzEtMl18NzZ8OTcpfDUoPzozWzYtOV18OFsxLTRdKXw3KD86Mig0fDkpfDcyKSlcXGR7NH0kLyxcbiAgJ2VuLUFVJzogL14oXFwrPzYxfDApNFxcZHs4fSQvLFxuICAnZW4tQUcnOiAvXig/OlxcKzF8MSkyNjgoPzo0NjR8Nyg/OjFbMy05XXxbMjhdXFxkfDNbMDI0Nl18NjR8N1swLTY4OV0pKVxcZHs0fSQvLFxuICAnZW4tQk0nOiAvXihcXCs/MSk/NDQxKCgoM3w3KVxcZHs2fSQpfCg1WzAtM11bMC05XVxcZHs0fSQpfCg1OVxcZHs1fSQpKS8sXG4gICdlbi1CUyc6IC9eKFxcKz8xWy1cXHNdP3wwKT9cXCg/MjQyXFwpP1stXFxzXT9cXGR7M31bLVxcc10/XFxkezR9JC8sXG4gICdlbi1HQic6IC9eKFxcKz80NHwwKTdcXGR7OX0kLyxcbiAgJ2VuLUdHJzogL14oXFwrPzQ0fDApMTQ4MVxcZHs2fSQvLFxuICAnZW4tR0gnOiAvXihcXCsyMzN8MCkoMjB8NTB8MjR8NTR8Mjd8NTd8MjZ8NTZ8MjN8Mjh8NTV8NTkpXFxkezd9JC8sXG4gICdlbi1HWSc6IC9eKFxcKzU5MnwwKTZcXGR7Nn0kLyxcbiAgJ2VuLUhLJzogL14oXFwrPzg1MlstXFxzXT8pP1s0NTY3ODldXFxkezN9Wy1cXHNdP1xcZHs0fSQvLFxuICAnZW4tTU8nOiAvXihcXCs/ODUzWy1cXHNdPyk/WzZdXFxkezN9Wy1cXHNdP1xcZHs0fSQvLFxuICAnZW4tSUUnOiAvXihcXCs/MzUzfDApOFszNTY3ODldXFxkezd9JC8sXG4gICdlbi1JTic6IC9eKFxcKz85MXwwKT9bNjc4OV1cXGR7OX0kLyxcbiAgJ2VuLUpNJzogL14oXFwrPzg3Nik/XFxkezd9JC8sXG4gICdlbi1LRSc6IC9eKFxcKz8yNTR8MCkoN3wxKVxcZHs4fSQvLFxuICAnZnItQ0YnOiAvXihcXCs/MjM2fCA/KSg3MHw3NXw3N3w3MnwyMXwyMilcXGR7Nn0kLyxcbiAgJ2VuLVNTJzogL14oXFwrPzIxMXwwKSg5WzEyNTddKVxcZHs3fSQvLFxuICAnZW4tS0knOiAvXigoXFwrNjg2fDY4Nik/KT8oICk/KCg2fDcpKDJ8M3w4KVswLTldezZ9KSQvLFxuICAnZW4tS04nOiAvXig/OlxcKzF8MSk4NjkoPzo0NlxcZHw0OFs4OV18NTVbNi04XXw2NlxcZHw3NlswMi03XSlcXGR7NH0kLyxcbiAgJ2VuLUxTJzogL14oXFwrPzI2NikoMjJ8Mjh8NTd8NTh8NTl8Mjd8NTIpXFxkezZ9JC8sXG4gICdlbi1NVCc6IC9eKFxcKz8zNTZ8MCk/KDk5fDc5fDc3fDIxfDI3fDIyfDI1KVswLTldezZ9JC8sXG4gICdlbi1NVSc6IC9eKFxcKz8yMzB8MCk/XFxkezh9JC8sXG4gICdlbi1NVyc6IC9eKFxcKz8yNjV8MCkoKCg3N3w4OHwzMXw5OXw5OHwyMSlcXGR7N30pfCgoKDExMSl8MSlcXGR7Nn0pfCgzMjAwMFxcZHs0fSkpJC8sXG4gICdlbi1OQSc6IC9eKFxcKz8yNjR8MCkoNnw4KVxcZHs3fSQvLFxuICAnZW4tTkcnOiAvXihcXCs/MjM0fDApP1s3ODldXFxkezl9JC8sXG4gICdlbi1OWic6IC9eKFxcKz82NHwwKVsyOF1cXGR7Nyw5fSQvLFxuICAnZW4tUEcnOiAvXihcXCs/Njc1fDApPyg3XFxkfDhbMThdKVxcZHs2fSQvLFxuICAnZW4tUEsnOiAvXigoMDB8XFwrKT85MnwwKTNbMC02XVxcZHs4fSQvLFxuICAnZW4tUEgnOiAvXigwOXxcXCs2MzkpXFxkezl9JC8sXG4gICdlbi1SVyc6IC9eKFxcKz8yNTB8MCk/WzddXFxkezh9JC8sXG4gICdlbi1TRyc6IC9eKFxcKzY1KT9bMzY4OV1cXGR7N30kLyxcbiAgJ2VuLVNMJzogL14oXFwrPzIzMnwwKVxcZHs4fSQvLFxuICAnZW4tVFonOiAvXihcXCs/MjU1fDApP1s2N11cXGR7OH0kLyxcbiAgJ2VuLVVHJzogL14oXFwrPzI1NnwwKT9bN11cXGR7OH0kLyxcbiAgJ2VuLVVTJzogL14oKFxcKzF8MSk/KCB8LSk/KT8oXFwoWzItOV1bMC05XXsyfVxcKXxbMi05XVswLTldezJ9KSggfC0pPyhbMi05XVswLTldezJ9KCB8LSk/WzAtOV17NH0pJC8sXG4gICdlbi1aQSc6IC9eKFxcKz8yN3wwKVxcZHs5fSQvLFxuICAnZW4tWk0nOiAvXihcXCs/MjYpPzA5WzU2N11cXGR7N30kLyxcbiAgJ2VuLVpXJzogL14oXFwrMjYzKVswLTldezl9JC8sXG4gICdlbi1CVyc6IC9eKFxcKz8yNjcpPyg3WzEtOF17MX0pXFxkezZ9JC8sXG4gICdlcy1BUic6IC9eXFwrPzU0OSgxMXxbMjM2OF1cXGQpXFxkezh9JC8sXG4gICdlcy1CTyc6IC9eKFxcKz81OTEpPyg2fDcpXFxkezd9JC8sXG4gICdlcy1DTyc6IC9eKFxcKz81Nyk/MygwKDB8MXwyfDR8NSl8MVxcZHwyWzAtNF18NSgwfDEpKVxcZHs3fSQvLFxuICAnZXMtQ0wnOiAvXihcXCs/NTZ8MClbMi05XVxcZHsxfVxcZHs3fSQvLFxuICAnZXMtQ1InOiAvXihcXCs1MDYpP1syLThdXFxkezd9JC8sXG4gICdlcy1DVSc6IC9eKFxcKzUzfDAwNTMpPzVcXGR7N30kLyxcbiAgJ2VzLURPJzogL14oXFwrPzEpPzhbMDI0XTlcXGR7N30kLyxcbiAgJ2VzLUhOJzogL14oXFwrPzUwNCk/Wzl8OHwzfDJdXFxkezd9JC8sXG4gICdlcy1FQyc6IC9eKFxcKz81OTN8MCkoWzItN118OVsyLTldKVxcZHs3fSQvLFxuICAnZXMtRVMnOiAvXihcXCs/MzQpP1s2fDddXFxkezh9JC8sXG4gICdlcy1QRSc6IC9eKFxcKz81MSk/OVxcZHs4fSQvLFxuICAnZXMtTVgnOiAvXihcXCs/NTIpPygxfDAxKT9cXGR7MTAsMTF9JC8sXG4gICdlcy1OSSc6IC9eKFxcKz81MDUpXFxkezcsOH0kLyxcbiAgJ2VzLVBBJzogL14oXFwrPzUwNylcXGR7Nyw4fSQvLFxuICAnZXMtUFknOiAvXihcXCs/NTk1fDApOVs5ODc2XVxcZHs3fSQvLFxuICAnZXMtU1YnOiAvXihcXCs/NTAzKT9bNjddXFxkezd9JC8sXG4gICdlcy1VWSc6IC9eKFxcKzU5OHwwKTlbMS05XVtcXGRdezZ9JC8sXG4gICdlcy1WRSc6IC9eKFxcKz81OCk/KDJ8NClcXGR7OX0kLyxcbiAgJ2V0LUVFJzogL14oXFwrPzM3Mik/XFxzP
15yg1fDhbMS00XSlcXHM/KFswLTldXFxzPyl7Niw3fSQvLFxuICAnZmEtSVInOiAvXihcXCs/OThbXFwtXFxzXT98MCk5WzAtMzldXFxkW1xcLVxcc10/XFxkezN9W1xcLVxcc10/XFxkezR9JC8sXG4gICdmaS1GSSc6IC9eKFxcKz8zNTh8MClcXHM/KDRbMC02XXw1MClcXHM/KFxcZFxccz8pezQsOH0kLyxcbiAgJ2ZqLUZKJzogL14oXFwrPzY3OSk/XFxzP1xcZHszfVxccz9cXGR7NH0kLyxcbiAgJ2ZvLUZPJzogL14oXFwrPzI5OCk/XFxzP1xcZHsyfVxccz9cXGR7Mn1cXHM/XFxkezJ9JC8sXG4gICdmci1CRic6IC9eKFxcKzIyNnwwKVs2N11cXGR7N30kLyxcbiAgJ2ZyLUJKJzogL14oXFwrMjI5KVxcZHs4fSQvLFxuICAnZnItQ0QnOiAvXihcXCs/MjQzfDApPyg4fDkpXFxkezh9JC8sXG4gICdmci1DTSc6IC9eKFxcKz8yMzcpNlswLTldezh9JC8sXG4gICdmci1GUic6IC9eKFxcKz8zM3wwKVs2N11cXGR7OH0kLyxcbiAgJ2ZyLUdGJzogL14oXFwrPzU5NHwwfDAwNTk0KVs2N11cXGR7OH0kLyxcbiAgJ2ZyLUdQJzogL14oXFwrPzU5MHwwfDAwNTkwKVs2N11cXGR7OH0kLyxcbiAgJ2ZyLU1RJzogL14oXFwrPzU5NnwwfDAwNTk2KVs2N11cXGR7OH0kLyxcbiAgJ2ZyLVBGJzogL14oXFwrPzY4OSk/OFs3ODldXFxkezZ9JC8sXG4gICdmci1SRSc6IC9eKFxcKz8yNjJ8MHwwMDI2MilbNjddXFxkezh9JC8sXG4gICdmci1XRic6IC9eKFxcKzY4MSk/XFxkezZ9JC8sXG4gICdoZS1JTCc6IC9eKFxcKzk3MnwwKShbMjM0ODldfDVbMDEyMzQ1Njg5XXw3NylbMS05XVxcZHs2fSQvLFxuICAnaHUtSFUnOiAvXihcXCs/MzZ8MDYpKDIwfDMwfDMxfDUwfDcwKVxcZHs3fSQvLFxuICAnaWQtSUQnOiAvXihcXCs/NjJ8MCk4KDFbMTIzNDU2Nzg5XXwyWzEyMzhdfDNbMTIzOF18NVsxMjM1Njc4OV18N1s3OF18OVs1Njc4OV18OFsxMjM0NTY3ODldKShbXFxzP3xcXGRdezUsMTF9KSQvLFxuICAnaXItSVInOiAvXihcXCs5OHwwKT85XFxkezl9JC8sXG4gICdpdC1JVCc6IC9eKFxcKz8zOSk/XFxzPzNcXGR7Mn0gP1xcZHs2LDd9JC8sXG4gICdpdC1TTSc6IC9eKChcXCszNzgpfCgwNTQ5KXwoXFwrMzkwNTQ5KXwoXFwrMzc4MDU0OSkpPzZcXGR7NSw5fSQvLFxuICAnamEtSlAnOiAvXihcXCs4MVsgXFwtXT8oXFwoMFxcKSk/fDApWzY3ODldMFsgXFwtXT9cXGR7NH1bIFxcLV0/XFxkezR9JC8sXG4gICdrYS1HRSc6IC9eKFxcKz85OTUpPyg3OVxcZHs3fXw1XFxkezh9KSQvLFxuICAna2stS1onOiAvXihcXCs/N3w4KT83XFxkezl9JC8sXG4gICdrbC1HTCc6IC9eKFxcKz8yOTkpP1xccz9cXGR7Mn1cXHM/XFxkezJ9XFxzP1xcZHsyfSQvLFxuICAna28tS1InOiAvXigoXFwrPzgyKVsgXFwtXT8pPzA/MShbMHwxfDZ8N3w4fDldezF9KVsgXFwtXT9cXGR7Myw0fVsgXFwtXT9cXGR7NH0kLyxcbiAgJ2t5LUtHJzogL14oXFwrPzdcXHM/XFwrPzd8MClcXHM/XFxkezJ9XFxzP1xcZHszfVxccz9cXGR7NH0kLyxcbiAgJ2x0LUxUJzogL14oXFwrMzcwfDgpXFxkezh9JC8sXG4gICdsdi1MVic6IC9eKFxcKz8zNzEpMlxcZHs3fSQvLFxuICAnbWctTUcnOiAvXigoXFwrPzI2MXwwKSgyfDMpXFxkKT9cXGR7N30kLyxcbiAgJ21uLU1OJzogL14oXFwrfDAwfDAxMSk/OTc2KDc3fDgxfDg4fDkxfDk0fDk1fDk2fDk5KVxcZHs2fSQvLFxuICAnbXktTU0nOiAvXihcXCs/OTU5fDA5fDkpKDJbNS03XXwzWzEtMl18NFswLTVdfDZbNi05XXw3WzUtOV18OVs2LTldKVswLTldezd9JC8sXG4gICdtcy1NWSc6IC9eKFxcKz82MHwwKTEoKFswMTQ1XSgtfFxccyk/XFxkezcsOH0pfChbMjM2LTldKC18XFxzKT9cXGR7N30pKSQvLFxuICAnbXotTVonOiAvXihcXCs/MjU4KT84WzIzNDU2N11cXGR7N30kLyxcbiAgJ25iLU5PJzogL14oXFwrPzQ3KT9bNDldXFxkezd9JC8sXG4gICduZS1OUCc6IC9eKFxcKz85NzcpPzlbNzhdXFxkezh9JC8sXG4gICdubC1CRSc6IC9eKFxcKz8zMnwwKTRcXGR7OH0kLyxcbiAgJ25sLU5MJzogL14oKChcXCt8MDApPzMxXFwoMFxcKSl8KChcXCt8MDApPzMxKXwwKTZ7MX1cXGR7OH0kLyxcbiAgJ25sLUFXJzogL14oXFwrKT8yOTcoNTZ8NTl8NjR8NzN8NzR8OTkpXFxkezV9JC8sXG4gICdubi1OTyc6IC9eKFxcKz80Nyk/WzQ5XVxcZHs3fSQvLFxuICAncGwtUEwnOiAvXihcXCs/NDgpPyA/KFs1LThdXFxkfDQ1KSA/XFxkezN9ID9cXGR7Mn0gP1xcZHsyfSQvLFxuICAncHQtQlInOiAvXigoXFwrPzU1XFwgP1sxLTldezJ9XFwgPyl8KFxcKz81NVxcID9cXChbMS05XXsyfVxcKVxcID8pfCgwWzEtOV17Mn1cXCA/KXwoXFwoWzEtOV17Mn1cXClcXCA/KXwoWzEtOV17Mn1cXCA/KSkoKFxcZHs0fVxcLT9cXGR7NH0pfCg5WzEtOV17MX1cXGR7M31cXC0/XFxkezR9KSkkLyxcbiAgJ3B0LVBUJzogL14oXFwrPzM1MSk/OVsxMjM2XVxcZHs3fSQvLFxuICAncHQtQU8nOiAvXihcXCsyNDQpXFxkezl9JC8sXG4gICdyby1NRCc6IC9eKFxcKz8zNzN8MCkoKDYoMHwxfDJ8Nnw3fDh8OSkpfCg3KDZ8N3w4fDkpKSlcXGR7Nn0kLyxcbiAgJ3JvLVJPJzogL14oXFwrPzQwfDApXFxzPzdcXGR7Mn0oXFwvfFxcc3xcXC58LSk/XFxkezN9KFxcc3xcXC58LSk/XFxkezN9JC8sXG4gICdydS1SVSc6IC9eKFxcKz83fDgpPzlcXGR7OX0kLyxcbiAgJ3NpLUxLJzogL14oPzowfDk0fFxcKzk0KT8oNygwfDF8Mnw0fDV8Nnw3fDgpKCB8LSk/KVxcZHs3fSQvLFxuICAnc2wtU0knOiAvXihcXCszODZcXHM/fDApKFxcZHsxfVxccz9cXGR7M31cXHM/XFxkezJ9XFxzP1xcZHsyfXxcXGR7Mn1cXHM/XFxkezN9XFxzP1xcZHszfSkkLyxcbiAgJ3NrLVNLJzogL14oXFwrPzQyMSk/ID9bMS05XVswLTldezJ9ID9bMC05XXszfSA/WzAtOV17M30kLyxcbiAgJ3NvLVNPJzogL14oXFwrPzI1MnwwKSgoNlswLTldKVxcZHs3fXwoN1sxLTldKVxcZHs3fSkkLyxcbiAgJ3NxLUFMJzogL14oXFwrMzU1fDApNls3ODldXFxkezZ9JC8sXG4gICdzci1SUyc6IC9eKFxcKzM4MTZ8MDYpWy0gXFxkXXs1LDl9JC8sXG4gICdzdi1TRSc6IC9eKFxcKz80NnwwKVtcXHNcXC1dPzdbXFxzXFwtXT9bMDIzNjldKFtcXHNcXC1dP1xcZCl7N30kLyxcbiAgJ3RnLVRKJzogL14oXFwrPzk5Mik/WzVdWzVdXFxkezd9JC8sXG4gICd0aC1USCc6IC9eKFxcKzY2fDY2fDApXFxkezl9JC8sXG4gICd0ci1UUic6IC9eKFxcKz85MHwwKT81XFxkezl9JC8sXG4gICd0ay1UTSc6IC9eKFxcKzk5M3w5OTN8OClcXGR7OH0kLyxcbiAgJ3VrLVVBJzogL14oXFwrPzM4fDgpPzBcXGR7OX0kLyxcbiAgJ3V6LVVaJzogL14oXFwrPzk5OCk/KDZbMTI1LTc5XXw3WzEtNjldfDg4fDlcXGQpXFxkezd9JC8sXG4gICd2aS1WTic6IC9eKChcXCs/ODQpfDApKCgzKFsyLTldKSl8KDUoWzI1Njg5XSkpfCg3KFswfDYtOV0pKXwoOChbMS05XSkpfCg5KFswLTldKSkpKFswLTldezd9KSQvLFxuICAnemgtQ04nOiAvXigoXFwrfDAwKTg2KT8oMVszLTldfDlbMjhdKVxcZHs5fSQvLFxuICAnemgtVFcnOiAvXihcXCs/ODg2XFwtP3wwKT85XFxkezh9JC8sXG4gICdkei1CVCc6IC9eKFxcKz85NzV8MCk/KDE3fDE2fDc3fDAyKVxcZHs2fSQvLFxuICAnYXItWUUnOiAvXigoKFxcK3wwMCk5Njc3fDA/NylbMDEzN11cXGR7N318KChcXCt8MDApOTY3fDApWzEtN11cXGR7Nn0pJC8sXG4gICdhci1FSCc6IC9eKFxcKz8yMTJ8MClbXFxzXFwtXT8oNTI4OHw1Mjg5KVtcXHNcXC1dP1xcZHs1fSQvLFxuICAnZmEtQUYnOiAvXihcXCs5M3wwKT8oMnsxfVswLThdezF9fFszLTVdezF9WzAtNF17MX0pKFxcZHs3fSkkL1xufTtcbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiAqL1xuXG4vLyBhbGlhc2VzXG5waG9uZXNbJ2VuLUNBJ10gPSBwaG9uZXNbJ2VuLVVTJ107XG5waG9uZXNbJ2ZyLUNBJ10gPSBwaG9uZXNbJ2VuLUNBJ107XG5waG9uZXNbJ2ZyLUJFJ10gPSBwaG9uZXNbJ25sLUJFJ107XG5waG9uZXNbJ3poLUhLJ10gPSBwaG9uZXNbJ2VuLUhLJ107XG5waG9uZXNbJ3poLU1PJ10gPSBwaG9uZXNbJ2VuLU1PJ107XG5waG9uZXNbJ2dhLUlFJ10gPSBwaG9uZXNbJ2VuLUlFJ107XG5waG9uZXNbJ2ZyLUNIJ10gPSBwaG9uZXNbJ2RlLUNIJ107XG5waG9uZXNbJ2l0LUNIJ10gPSBwaG9uZXNbJ2ZyLUNIJ107XG5mdW5jdGlvbiBpc01vYmlsZVBob25lKHN0ciwgbG9jYWxlLCBvcHRpb25zKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nLmRlZmF1bHQpKHN0cik7XG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMuc3RyaWN0TW9kZSAmJiAhc3RyLnN0YXJ0c1dpdGgoJysnKSkge1xuICAgIHJldHVybi
15BmYWxzZTtcbiAgfVxuICBpZiAoQXJyYXkuaXNBcnJheShsb2NhbGUpKSB7XG4gICAgcmV0dXJuIGxvY2FsZS5zb21lKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9nb3R3YXJsb3N0L2lzdGFuYnVsL2Jsb2IvbWFzdGVyL2lnbm9yaW5nLWNvZGUtZm9yLWNvdmVyYWdlLm1kI2lnbm9yaW5nLWNvZGUtZm9yLWNvdmVyYWdlLXB1cnBvc2VzXG4gICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgZWxzZVxuICAgICAgaWYgKHBob25lcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIHZhciBwaG9uZSA9IHBob25lc1trZXldO1xuICAgICAgICBpZiAocGhvbmUudGVzdChzdHIpKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTtcbiAgfSBlbHNlIGlmIChsb2NhbGUgaW4gcGhvbmVzKSB7XG4gICAgcmV0dXJuIHBob25lc1tsb2NhbGVdLnRlc3Qoc3RyKTtcbiAgICAvLyBhbGlhcyBmYWxzZXkgbG9jYWxlIGFzICdhbnknXG4gIH0gZWxzZSBpZiAoIWxvY2FsZSB8fCBsb2NhbGUgPT09ICdhbnknKSB7XG4gICAgZm9yICh2YXIga2V5IGluIHBob25lcykge1xuICAgICAgLy8gaXN0YW5idWwgaWdub3JlIGVsc2VcbiAgICAgIGlmIChwaG9uZXMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICB2YXIgcGhvbmUgPSBwaG9uZXNba2V5XTtcbiAgICAgICAgaWYgKHBob25lLnRlc3Qoc3RyKSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGxvY2FsZSAnXCIuY29uY2F0KGxvY2FsZSwgXCInXCIpKTtcbn1cbnZhciBsb2NhbGVzID0gZXhwb3J0cy5sb2NhbGVzID0gT2JqZWN0LmtleXMocGhvbmVzKTsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzRXRoZXJldW1BZGRyZXNzO1xudmFyIF9hc3NlcnRTdHJpbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWwvYXNzZXJ0U3RyaW5nXCIpKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG52YXIgZXRoID0gL14oMHgpWzAtOWEtZl17NDB9JC9pO1xuZnVuY3Rpb24gaXNFdGhlcmV1bUFkZHJlc3Moc3RyKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nLmRlZmF1bHQpKHN0cik7XG4gIHJldHVybiBldGgudGVzdChzdHIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG5tb2R1bGUuZXhwb3J0cy5kZWZh
15dWx0ID0gZXhwb3J0cy5kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNDdXJyZW5jeTtcbnZhciBfbWVyZ2UgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWwvbWVyZ2VcIikpO1xudmFyIF9hc3NlcnRTdHJpbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWwvYXNzZXJ0U3RyaW5nXCIpKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5mdW5jdGlvbiBjdXJyZW5jeVJlZ2V4KG9wdGlvbnMpIHtcbiAgdmFyIGRlY2ltYWxfZGlnaXRzID0gXCJcXFxcZHtcIi5jb25jYXQob3B0aW9ucy5kaWdpdHNfYWZ0ZXJfZGVjaW1hbFswXSwgXCJ9XCIpO1xuICBvcHRpb25zLmRpZ2l0c19hZnRlcl9kZWNpbWFsLmZvckVhY2goZnVuY3Rpb24gKGRpZ2l0LCBpbmRleCkge1xuICAgIGlmIChpbmRleCAhPT0gMCkgZGVjaW1hbF9kaWdpdHMgPSBcIlwiLmNvbmNhdChkZWNpbWFsX2RpZ2l0cywgXCJ8XFxcXGR7XCIpLmNvbmNhdChkaWdpdCwgXCJ9XCIpO1xuICB9KTtcbiAgdmFyIHN5bWJvbCA9IFwiKFwiLmNvbmNhdChvcHRpb25zLnN5bWJvbC5yZXBsYWNlKC9cXFcvLCBmdW5jdGlvbiAobSkge1xuICAgICAgcmV0dXJuIFwiXFxcXFwiLmNvbmNhdChtKTtcbiAgICB9KSwgXCIpXCIpLmNvbmNhdChvcHRpb25zLnJlcXVpcmVfc3ltYm9sID8gJycgOiAnPycpLFxuICAgIG5lZ2F0aXZlID0gJy0/JyxcbiAgICB3aG9sZV9kb2xsYXJfYW1vdW50X3dpdGhvdXRfc2VwID0gJ1sxLTldXFxcXGQqJyxcbiAgICB3aG9sZV9kb2xsYXJfYW1vdW50X3dpdGhfc2VwID0gXCJbMS05XVxcXFxkezAsMn0oXFxcXFwiLmNvbmNhdChvcHRpb25zLnRob3VzYW5kc19zZXBhcmF0b3IsIFwiXFxcXGR7M30pKlwiKSxcbiAgICB2YWxpZF93aG9sZV9kb2xsYXJfYW1vdW50cyA9IFsnMCcsIHdob2xlX2RvbGxhcl9hbW91bnRfd2l0aG91dF9zZXAsIHdob2xlX2RvbGxhcl9hbW91bnRfd2l0aF9zZXBdLFxuICAgIHdob2xlX2RvbGxhcl9hbW91bnQgPSBcIihcIi5jb25jYXQodmFsaWRfd2hvbGVfZG9sbGFyX2Ftb3VudHMuam9pbignfCcpLCBcIik/XCIpLFxuICAgIGRlY2ltYWxfYW1vdW50ID0gXCIoXFxcXFwiLmNvbmNhdChvcHRpb25zLmRlY2ltYWxfc2VwYXJhdG9yLCBcIihcIikuY29uY2F0KGRlY2ltYWxfZGlnaXRzLCBcIikpXCIpLmNvbmNhdChvcHRpb25zLnJlcXVpcmVfZGVjaW1hbCA/ICcnIDogJz8nKTtcbiAgdmFyIHBhdHRlcm4gPSB3aG9sZV9kb2xsYXJfYW1vdW50ICsgKG9wdGlvbnMuYWxsb3dfZGVjaW1hbCB8fCBvcHRpb25zLnJlcXVpcmVfZGVjaW1hbCA/IGRlY2ltYWxfYW1vdW50IDogJycpO1xuXG4gIC8vIGRlZmF1bHQgaXMgbmVnYXRpdmUgc2lnbiBiZWZvcmUgc3ltYm9sLCBidXQgdGhlcmUgYXJlIHR3byBvdGhlciBvcHRpb25zIChiZXNpZGVzIHBhcmVucylcbiAgaWYgKG9wdGlvbnMuYWxsb3dfbmVnYXRpdmVzICYmICFvcHRpb25zLnBhcmVuc19mb3JfbmVnYXRpdmVzKSB7XG4gICAgaWYgKG9wdGlvbnMubmVnYXRpdmVfc2lnbl9hZnRlcl9kaWdpdHMpIHtcbiAgICAgIHBhdHRlcm4gKz0gbmVnYXRpdmU7XG4gICAgfSBlbHNlIGlmIChvcHRpb25zLm5lZ2F0aXZlX3NpZ25fYmVmb3JlX2RpZ2l0cykge1xuICAgICAgcGF0dGVybiA9IG5lZ2F0aXZlICsgcGF0dGVybjtcbiAgICB9XG4gIH1cblxuICAvLyBTb3V0aCBBZnJpY2FuIFJhbmQsIGZvciBleGFtcGxlLCB1c2VzIFIgMTIzIChzcGFjZSkgYW5kIFItMTIzIChubyBzcGFjZSlcbiAgaWYgKG9wdGlvbnMuYWxsb3dfbmVnYXRpdmVfc2lnbl9wbGFjZWhvbGRlcikge1xuICAgIHBhdHRlcm4gPSBcIiggKD8hXFxcXC0pKT9cIi5jb25jYXQocGF0dGVybik7XG4gIH0gZWxzZSBpZiAob3B0aW9ucy5hbGxvd19zcGFjZV9hZnRlcl9zeW1ib2wpIHtcbiAgICBwYXR0ZXJuID0gXCIgP1wiLmNvbmNhdChwYXR0ZXJuKTtcbiAgfSBlbHNlIGlmIChvcHRpb25zLmFsbG93X3NwYWNlX2FmdGVyX2RpZ2l0cykge1xuICAgIHBhdHRlcm4gKz0gJyggKD8hJCkpPyc7XG4gIH1cbiAgaWYgKG9wdGlvbnMuc3ltYm9sX2FmdGVyX2RpZ2l0cykge1xuICAgIHBhdHRlcm4gKz0gc3ltYm9sO1xuICB9IGVsc2Uge1xuICAgIHBhdHRlcm4gPSBzeW1ib2wgKyBwYXR0ZXJuO1xuICB9XG4gIGlmIChvcHRpb25zLmFsbG93X25lZ2F0aXZlcykge1xuICAgIGlmIChvcHRpb25zLnBhcmVuc19mb3JfbmVnYXRpdmVzKSB7XG4gICAgICBwYXR0ZXJuID0gXCIoXFxcXChcIi5jb25jYXQocGF0dGVybiwgXCJcXFxcKXxcIikuY29uY2F0KHBhdHRlcm4sIFwiKVwiKTtcbiAgICB9IGVsc2UgaWYgKCEob3B0aW9ucy5uZWdhdGl2ZV9zaWduX2JlZm9yZV9kaWdpdHMgfHwgb3B0aW9ucy5uZWdhdGl2ZV9zaWduX2FmdGVyX2RpZ2l0cykpIHtcbiAgICAgIHBhdHRlcm4gPSBuZWdhdGl2ZSArIHBhdHRlcm47XG4gICAgfVxuICB9XG5cbiAgLy8gZW5zdXJlIHRoZXJlJ3MgYSBkb2xsYXIgYW5kL29yIGRlY2ltYWwgYW1vdW50LCBhbmQgdGhhdFxuICAvLyBpdCBkb2Vzbid0IHN0YXJ0IHdpdGggYSBzcGFjZSBvciBhIG5lZ2F0aXZlIHNpZ24gZm9sbG93ZWQgYnkgYSBzcGFjZVxuICByZXR1cm4gbmV3IFJlZ0V4cChcIl4oPyEtPyApKD89LipcXFxcZClcIi5jb25jYXQocGF0dGVybiwgXCIkXCIpKTtcbn1cbnZhciBkZWZhdWx0X2N1cnJlbmN5X29wdGlvbnMgPSB7XG4gIHN5bWJvbDogJyQnLFxuICByZXF1aXJlX3N5bWJvbDogZmFsc2UsXG4gIGFsbG93X3NwYWNlX2FmdGVyX3N5bWJvbDogZmFsc2UsXG4gIHN5bWJvbF9hZnRlcl9kaWdpdHM6IGZhbHNlLFxuICBhbGxvd19uZWdhdGl2ZXM6IHRydWUsXG4gIHBhcmVuc19mb3JfbmVnYXRpdmVzOiBmYWxzZSxcbiAgbmVnYXRpdmVfc2lnbl9iZWZvcmVfZGlnaXRzOiBmYWxzZSxcbiAgbmVnYXRpdmVfc2lnbl9hZnRlcl9kaWdpdHM6IGZhbHNlLFxuICBhbGxvd19uZWdhdGl2ZV9zaWduX3BsYWNlaG9sZG
15VyOiBmYWxzZSxcbiAgdGhvdXNhbmRzX3NlcGFyYXRvcjogJywnLFxuICBkZWNpbWFsX3NlcGFyYXRvcjogJy4nLFxuICBhbGxvd19kZWNpbWFsOiB0cnVlLFxuICByZXF1aXJlX2RlY2ltYWw6IGZhbHNlLFxuICBkaWdpdHNfYWZ0ZXJfZGVjaW1hbDogWzJdLFxuICBhbGxvd19zcGFjZV9hZnRlcl9kaWdpdHM6IGZhbHNlXG59O1xuZnVuY3Rpb24gaXNDdXJyZW5jeShzdHIsIG9wdGlvbnMpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcuZGVmYXVsdCkoc3RyKTtcbiAgb3B0aW9ucyA9ICgwLCBfbWVyZ2UuZGVmYXVsdCkob3B0aW9ucywgZGVmYXVsdF9jdXJyZW5jeV9vcHRpb25zKTtcbiAgcmV0dXJuIGN1cnJlbmN5UmVnZXgob3B0aW9ucykudGVzdChzdHIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG5tb2R1bGUuZXhwb3J0cy5kZWZhdWx0ID0gZXhwb3J0cy5kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNCdGNBZGRyZXNzO1xudmFyIF9hc3NlcnRTdHJpbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWwvYXNzZXJ0U3RyaW5nXCIpKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG52YXIgYmVjaDMyID0gL14oYmMxKVthLXowLTldezI1LDM5fSQvO1xudmFyIGJhc2U1OCA9IC9eKDF8MylbQS1ISi1OUC1aYS1rbS16MS05XXsyNSwzOX0kLztcbmZ1bmN0aW9uIGlzQnRjQWRkcmVzcyhzdHIpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcuZGVmYXVsdCkoc3RyKTtcbiAgcmV0dXJuIGJlY2gzMi50ZXN0KHN0cikgfHwgYmFzZTU4LnRlc3Qoc3RyKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZh
15dWx0O1xubW9kdWxlLmV4cG9ydHMuZGVmYXVsdCA9IGV4cG9ydHMuZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuaXNGcmVpZ2h0Q29udGFpbmVySUQgPSB2b2lkIDA7XG5leHBvcnRzLmlzSVNPNjM0NiA9IGlzSVNPNjM0NjtcbnZhciBfYXNzZXJ0U3RyaW5nID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlsL2Fzc2VydFN0cmluZ1wiKSk7XG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPXzYzNDZcbi8vIGFjY29yZGluZyB0byBJU082MzQ2IHN0YW5kYXJkLCBjaGVja3N1bSBkaWdpdCBpcyBtYW5kYXRvcnkgZm9yIGZyZWlnaHQgY29udGFpbmVyIGJ1dCByZWNvbW1lbmRlZFxuLy8gZm9yIG90aGVyIGNvbnRhaW5lciB0eXBlcyAoSiBhbmQgWilcbnZhciBpc0lTTzYzNDZTdHIgPSAvXltBLVpdezN9KFVbMC05XXs3fSl8KFtKLFpdWzAtOV17Niw3fSkkLztcbnZhciBpc0RpZ2l0ID0gL15bMC05XSQvO1xuZnVuY3Rpb24gaXNJU082MzQ2KHN0cikge1xuICAoMCwgX2Fzc2VydFN0cmluZy5kZWZhdWx0KShzdHIpO1xuICBzdHIgPSBzdHIudG9VcHBlckNhc2UoKTtcbiAgaWYgKCFpc0lTTzYzNDZTdHIudGVzdChzdHIpKSByZXR1cm4gZmFsc2U7XG4gIGlmIChzdHIubGVuZ3RoID09PSAxMSkge1xuICAgIHZhciBzdW0gPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgaWYgKCFpc0RpZ2l0LnRlc3Qoc3RyW2ldKSkge1xuICAgICAgICB2Y
15XIgY29udmVydGVkQ29kZSA9IHZvaWQgMDtcbiAgICAgICAgdmFyIGxldHRlckNvZGUgPSBzdHIuY2hhckNvZGVBdChpKSAtIDU1O1xuICAgICAgICBpZiAobGV0dGVyQ29kZSA8IDExKSBjb252ZXJ0ZWRDb2RlID0gbGV0dGVyQ29kZTtlbHNlIGlmIChsZXR0ZXJDb2RlID49IDExICYmIGxldHRlckNvZGUgPD0gMjApIGNvbnZlcnRlZENvZGUgPSAxMiArIGxldHRlckNvZGUgJSAxMTtlbHNlIGlmIChsZXR0ZXJDb2RlID49IDIxICYmIGxldHRlckNvZGUgPD0gMzApIGNvbnZlcnRlZENvZGUgPSAyMyArIGxldHRlckNvZGUgJSAyMTtlbHNlIGNvbnZlcnRlZENvZGUgPSAzNCArIGxldHRlckNvZGUgJSAzMTtcbiAgICAgICAgc3VtICs9IGNvbnZlcnRlZENvZGUgKiBNYXRoLnBvdygyLCBpKTtcbiAgICAgIH0gZWxzZSBzdW0gKz0gc3RyW2ldICogTWF0aC5wb3coMiwgaSk7XG4gICAgfVxuICAgIHZhciBjaGVja1N1bURpZ2l0ID0gc3VtICUgMTE7XG4gICAgcmV0dXJuIE51bWJlcihzdHJbc3RyLmxlbmd0aCAtIDFdKSA9PT0gY2hlY2tTdW1EaWdpdDtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cbnZhciBpc0ZyZWlnaHRDb250YWluZXJJRCA9IGV4cG9ydHMuaXNGcmVpZ2h0Q29udGFpbmVySUQgPSBpc0lTTzYzNDY7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc0lTTzYzOTE7XG52YXIgX2Fzc2VydFN0cmluZyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vdXRpbC9hc3NlcnRTdHJpbmdcIikpO1xuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cbnZhciBpc0lTTzYzOTFTZXQgPSBuZXcgU2V0KFsnYWEnLCAnYWInLCAnYWUnLCAnYWYnLCAnYWsnLCAnYW0nLCAnYW4nLCAnYXInLCAnYXMnLCAnYXYnLCAnYXknLCAnYXonLCAnYXonLCAnYmEnLCAnYmUnLCAnYmcnLCAnYmgnLCAnYmknLCAnYm0nLCAnYm4nLCAnYm8nLCAnYnInLCAnYnMnLCAnY2EnLCAnY2UnLCAnY2gnLCAnY28nLCAnY3InLCAnY3MnLCAnY3UnLCAnY3YnLCAnY3knLCAnZGEnLCAnZGUnLCAnZHYnLCAnZHonLCAnZWUnLCAnZWwnLCAnZW4nLCAnZW8nLCAnZXMnLCAnZXQnLCAnZXUnLCAnZmEnLCAnZmYnLCAnZmknLCAnZmonLCAnZm8nLCAnZnInLCAnZnknLCAnZ2EnLCAnZ2QnLCAnZ2wnLCAnZ24nLCAnZ3UnLCAnZ3YnLCAnaGEnLCAnaGUnLCAnaGknLCAnaG8nLCAnaHInLCAnaHQnLCAnaHUnLCAnaHknLCAnaHonLCAnaWEnLCAnaWQnLCAnaWUnLCAnaWcnLCAnaWknLCAnaWsnLCAnaW8nLCAnaXMnLCAnaXQnLCAnaXUnLCAnamEnLCAnanYnLCAna2EnLCAna2cnLCAna2knLCAna2onLCAna2snLCAna2wnLCAna20nLCAna24nLCAna28nLCAna3InLCAna3MnLCAna3UnLCAna3YnLCAna3cnLCAna3knLCAnbGEnLCAnbGInLCAnbGcnLCAnbGknLCAnbG4nLCAnbG8nLCAnbHQnLCAnbHUnLCAnbHYnLCAnbWcnLCAnbWgnLCAnbWknLCAnbWsnLCAnbWwnLCAnbW4nLCAnbXInLCAnbXMnLCAnbXQnLCAnbXknLCAnbmEnLCAnbmInLCAnbmQnLCAnbmUnLCAnbmcnLCAnbmwnLCAnbm4nLCA
15nbm8nLCAnbnInLCAnbnYnLCAnbnknLCAnb2MnLCAnb2onLCAnb20nLCAnb3InLCAnb3MnLCAncGEnLCAncGknLCAncGwnLCAncHMnLCAncHQnLCAncXUnLCAncm0nLCAncm4nLCAncm8nLCAncnUnLCAncncnLCAnc2EnLCAnc2MnLCAnc2QnLCAnc2UnLCAnc2cnLCAnc2knLCAnc2snLCAnc2wnLCAnc20nLCAnc24nLCAnc28nLCAnc3EnLCAnc3InLCAnc3MnLCAnc3QnLCAnc3UnLCAnc3YnLCAnc3cnLCAndGEnLCAndGUnLCAndGcnLCAndGgnLCAndGknLCAndGsnLCAndGwnLCAndG4nLCAndG8nLCAndHInLCAndHMnLCAndHQnLCAndHcnLCAndHknLCAndWcnLCAndWsnLCAndXInLCAndXonLCAndmUnLCAndmknLCAndm8nLCAnd2EnLCAnd28nLCAneGgnLCAneWknLCAneW8nLCAnemEnLCAnemgnLCAnenUnXSk7XG5mdW5jdGlvbiBpc0lTTzYzOTEoc3RyKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nLmRlZmF1bHQpKHN0cik7XG4gIHJldHVybiBpc0lTTzYzOTFTZXQuaGFzKHN0cik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBleHBvcnRzLmRlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc0lTTzg2MDE7XG52YXIgX2Fzc2VydFN0cmluZyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vdXRpbC9hc3NlcnRTdHJpbmdcIikpO1xuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi9cbi8vIGZyb20gaHR0cDovL2dvby5nbC8wZWpISFdcbnZhciBpc284NjAxID0gL14oW1xcKy1dP1xcZHs0fSg/IVxcZHsyfVxcYikpKCgtPykoKDBbMS05XXwxWzAtMl0pKFxcMyhbMTJdXFxkfDBbMS05XXwzWzAxXSkpP3xXKFswLTRdXFxkfDVbMC0zXSkoLT9bMS03XSk/fCgwMFsxLTldfDBbMS05XVxcZHxbMTJdXFxkezJ9fDMoWzAtNV1cXGR8NlsxLTZdKSkpKFtUXFxzXSgoKFswMV1cXGR8MlswLTNdKSgoOj8pWzAtNV1cXGQpP3wyNDo/MDApKFtcXC4sXVxcZCsoPyE6KSk/KT8oXFwxN1swLTVdXFxkKFtcXC4sXVxcZCspPyk/KFt6Wl18KFtcXCstXSkoWzAxXVxcZHwyWzAtM10pOj8oWzAtNV1cXGQpPyk/KT8pPyQvO1xuLy8gc2FtZSBhcyBhYm92ZSwgZXhjZXB0IHdpdGggYSBzdHJpY3QgJ1QnIHNlcGFyYXRvciBiZXR3ZWVuIGRhdGUgYW5kIHRpbWVcbnZhciBpc284NjAxU3RyaWN0U2VwYXJhdG9yID0gL14oW1xcKy1dP1xcZHs0fSg/IVxcZHsyfVxcYikpKCgtPykoKDBbMS05XXwxWzAtMl0pKFxcMyhbMTJdXFxkfDBbMS05XXwzWzAxXSkpP3xXKFswLTRdXFxkfDVbMC0zXSkoLT9bMS03XSk/fCgwMFsxLTldfDBbMS05XVxcZHxbMTJdXFxkezJ9fDMoWzAtNV1cXGR8NlsxLTZdKSkpKFtUXSgoKFswMV1cXGR8MlswLTNdKSgoOj8pWzAtNV1cXGQpP3wyNDo/MDApKFtcXC4sXVxcZCsoPyE6KSk/KT8oXFwxN1swLTVdXFxkKFtcXC4sXVxcZCspPyk/KFt6Wl18KFtcXCstXSkoWzAxXVxcZHwyWzAtM10pOj8oWzAtNV1cXGQpPyk/KT8pPyQvO1xuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuICovXG52YXIgaXNWYWxpZERhdGUgPSBmdW5jdGlvbiBpc1ZhbGlkRGF0ZShzdHIpIHtcbiAgLy8gc3RyIG11c3QgaGF2ZSBwYXNzZWQgdGhlIElTTzg2MDEgY2hlY2tcbiAgLy8gdGhpcyBjaGVjayBpcyBtZWFudCB0byBjYXRjaCBpbnZhbGlkIGRhdGVzXG4gIC8vIGxpa2UgMjAwOS0wMi0zMVxuICAvLyBmaXJzdCBjaGVjayBmb3Igb3JkaW5hbCBkYXRlc1xuICB2YXIgb3JkaW5hbE1hdGNoID0gc3RyLm1hdGNoKC9eKFxcZHs0fSktPyhcXGR7M30pKFsgVF17MX1cXC4qfCQpLyk7XG4gIGlmIChvcmRpbmFsTWF0Y2gpIHtcbiAgICB2YXIgb1llYXIgPSBOdW1iZXIob3JkaW5hbE1hdGNoWzFdKTtcbiAgICB2YXIgb0RheSA9IE51bWJlcihvcmRpbmFsTWF0Y2hbMl0pO1xuICAgIC8vIGlmIGlzIGxlYXAgeWVhclxuICAgIGlmIChvWWVhciAlIDQgPT09IDAgJiYgb1llYXIgJSAxMDAgIT09IDAgfHwgb1llYXIgJSA0MDAgPT09IDApIHJldHVybiBvRGF5IDw9IDM2NjtcbiAgICByZXR1cm4gb0RheSA8PSAzNjU7XG4gIH1cbiAgdmFyIG1hdGNoID0gc3RyLm1hdGNoKC8oXFxkezR9KS0/KFxcZHswLDJ9KS0/KFxcZCopLykubWFwKE51bWJlcik7XG4gIHZhciB5ZWFyID0gbWF0Y2hbMV07XG4gIHZhciBtb250aCA9IG1hdGNoWzJdO1xuICB2YXIgZGF5ID0gbWF0Y2hbM107XG4gIHZhciBtb250aFN0cmluZyA9IG1vbnRoID8gXCIwXCIuY29uY2F0KG1vbnRoKS5zbGljZSgtMikgOiBtb250aDtcbiAgdmFyIGRheVN0cmluZyA9IGRheSA/IFwiMFwiLmNvbmNhdChkYXkpLnNsaWNlKC0yKSA6IGRheTtcblxuICAvLyBjcmVhdGUgYSBkYXRlIG9iamVjdCBhbmQgY29tcGFyZVxuICB2YXIgZCA9IG5ldyBEYXRlKFwiXCIuY29uY2F0KHllYXIsIFwiLVwiKS5jb25jYXQobW9udGhTdHJpbmcgfHwgJzAxJywgXCItXCIpLmNvbmNhdChkYXlTdHJpbmcgfHwgJzAxJykpO1xuICBpZiAobW9udGggJiYgZGF5KSB7XG4gICAgcmV0dXJuIGQuZ2V0VVRDRnVsbFllYXIoKSA9PT0geWVhciAmJiBkLmdldFVUQ01vbnRoKCkgKyAxID09PSBtb250aCAmJiBkLmdldFVUQ0RhdGUoKSA9PT0gZGF5O1xuICB9XG4gIHJldHVybiB0cnVlO1xufTtcbmZ1bmN0aW9uIGlzSVNPODYwMShzdHIpIHtcbiAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuICAoMCwgX2Fzc2VydFN0cmluZy5kZWZh
15dWx0KShzdHIpO1xuICB2YXIgY2hlY2sgPSBvcHRpb25zLnN0cmljdFNlcGFyYXRvciA/IGlzbzg2MDFTdHJpY3RTZXBhcmF0b3IudGVzdChzdHIpIDogaXNvODYwMS50ZXN0KHN0cik7XG4gIGlmIChjaGVjayAmJiBvcHRpb25zLnN0cmljdCkgcmV0dXJuIGlzVmFsaWREYXRlKHN0cik7XG4gIHJldHVybiBjaGVjaztcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xubW9kdWxlLmV4cG9ydHMuZGVmYXVsdCA9IGV4cG9ydHMuZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzUkZDMzMzOTtcbnZhciBfYXNzZXJ0U3RyaW5nID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlsL2Fzc2VydFN0cmluZ1wiKSk7XG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuLyogQmFzZWQgb24gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzMzMzkjc2VjdGlvbi01LjYgKi9cblxudmFyIGRhdGVGdWxsWWVhciA9IC9bMC05XXs0fS87XG52YXIgZGF0ZU1vbnRoID0gLygwWzEtOV18MVswLTJdKS87XG52YXIgZGF0ZU1EYXkgPSAvKFsxMl1cXGR8MFsxLTldfDNbMDFdKS87XG52YXIgdGltZUhvdXIgPSAvKFswMV1bMC05XXwyWzAtM10pLztcbnZhciB0aW1lTWludXRlID0gL1swLTVdWzAtOV0vO1xudmFyIHRpbWVTZWNvbmQgPSAvKFswLTVdWzAtOV18NjApLztcbnZhciB0aW1lU2VjRnJhYyA9IC8oXFwuWzAtOV0rKT8vO1xudmFyIHRpbWVOdW1PZmZzZXQgPSBuZXcgUmVnRXhwKFwiWy0rXVwiLmNvbmNhdCh0aW1lSG91ci5zb3VyY2UsIFwiOlwiKS5jb25jYXQodGltZU1pbnV0ZS5zb3VyY2UpKTtcbnZhciB0aW1lT2Zmc2V0ID0gbmV3IFJlZ0V4cChcIihbelpdfFwiLmNvbmNhdCh0aW1lTnVtT2Zmc2V0LnNvdXJjZSwgXCIpXCIpKTtcbnZhciBwYXJ0aWFsVGltZSA9IG5ldyBSZWdFeHAoXCJcIi5jb25jYXQodGltZUhvdXIuc291cmNlLCBcIjpcIikuY29uY2F0KHRpbWVNaW51dGUuc291cmNlLCBcIjpcIikuY29uY2F0KHRpbWVTZWNvbmQuc291cmNlKS5jb25jYXQodGltZVNlY0ZyYWMuc291cmNlKSk7XG52YXIgZnVsbERhdGUgPSBuZXcgUmVnRXhwKFwiXCIuY29uY2F0KGRhdGVGdWxsWWVhci5zb3VyY2UsIFwiLVwiKS5jb25jYXQoZGF0ZU1vbnRoLnNvdXJjZSwgXCItXCIpLmNvbmNhdChkYXRlTURheS5zb3VyY2UpKTtcbnZhciBmdWxsVGltZSA9IG5ldyBSZWdFeHAoXCJcIi5jb25jYXQocGFydGlhbFRpbWUuc291cmNlKS5jb25jYXQodGltZU9mZnNldC5zb3VyY2UpKTtcbnZhciByZmMzMzM5ID0gbmV3IFJlZ0V4cChcIl5cIi5jb25jYXQoZnVsbERhdGUuc291cmNlLCBcIlsgdFRdXCIpLmNvbmNhdChmdWxsVGltZS5zb3VyY2UsIFwiJFwiKSk7XG5mdW5jdGlvbiBpc1JGQzMzMzkoc3RyKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nLmRlZmF1bHQpKHN0cik7XG4gIHJldHVybiByZmMzMzM5LnRlc3Qoc3RyKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZh
15dWx0O1xubW9kdWxlLmV4cG9ydHMuZGVmYXVsdCA9IGV4cG9ydHMuZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzSVNPMzE2NjFBbHBoYTM7XG52YXIgX2Fzc2VydFN0cmluZyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vdXRpbC9hc3NlcnRTdHJpbmdcIikpO1xuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cbi8vIGZyb20gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPXzMxNjYtMV9hbHBoYS0zXG52YXIgdmFsaWRJU08zMTY2MUFscGhhM0NvdW50cmllc0NvZGVzID0gbmV3IFNldChbJ0FGRycsICdBTEEnLCAnQUxCJywgJ0RaQScsICdBU00nLCAnQU5EJywgJ0FHTycsICdBSUEnLCAnQVRBJywgJ0FURycsICdBUkcnLCAnQVJNJywgJ0FCVycsICdBVVMnLCAnQVVUJywgJ0FaRScsICdCSFMnLCAnQkhSJywgJ0JHRCcsICdCUkInLCAnQkxSJywgJ0JFTCcsICdCTFonLCAnQkVOJywgJ0JNVScsICdCVE4nLCAnQk9MJywgJ0JFUycsICdCSUgnLCAnQldBJywgJ0JWVCcsICdCUkEnLCAnSU9UJywgJ0JSTicsICdCR1InLCAnQkZBJywgJ0JESScsICdLSE0nLCAnQ01SJywgJ0NBTicsICdDUFYnLCAnQ1lNJywgJ0NBRicsICdUQ0QnLCAnQ0hMJywgJ0NITicsICdDWFInLCAnQ0NLJywgJ0NPTCcsICdDT00nLCAnQ09HJywgJ0NPRCcsICdDT0snLCAnQ1JJJywgJ0NJVicsICdIUlYnLCAnQ1VCJywgJ0NVVycsICdDWVAnLCAnQ1pFJywgJ0ROSycsICdESkknLCAnRE1BJywgJ0RPTScsICdFQ1UnLCAnRUdZJywgJ1NMVicsICdHTlEnLCAnRVJJJywgJ0VTVCcsICdFVEgnLCAnRkxLJywgJ0ZSTycsICdGSkknLCAnRklOJywgJ0ZSQScsICdHVUYnLCAnUFlGJywgJ0FURicsICdHQUInLCAnR01CJywgJ0dFTycsICdERVUnLCAnR0hBJywgJ0dJQicsICdHUkMnLCAnR1JMJywgJ0dSRCcsICdHTFAnLCAnR1VNJywgJ0dUTScsICdHR1knLCAnR0lOJywgJ0dOQicsICdHVVknLCAnSFRJJywgJ0hNRCcsICdWQVQnLCAnSE5EJywgJ0hLRycsICdIVU4nLCAnSVNMJywgJ0lORCcsICdJRE4nLCAnSVJOJywgJ0lSUScsICdJUkwnLCAnSU1OJywgJ0lTUicsICdJVEEnLCAnSkFNJywgJ0pQTicsICdKRVknLCAnSk9SJywgJ0tBWicsICdLRU4nLCAnS0lSJywgJ1BSSycsICdLT1InLCAnS1dUJywgJ0tHWicsICdMQU8nLCAnTFZBJywgJ0xCTicsICdMU08nLCAnTEJSJywgJ0xCWScsICdMSUUnLCAnTFRVJywgJ0xVWCcsICdNQUMnLCAnTUtEJywgJ01ERycsICdNV0knLCAnTVlTJywgJ01EVicsICdNTEknLCAnTUxUJywgJ01ITCcsICdNVFEnLCAnTVJUJywgJ01VUycsICdNWVQnLCAnTUVYJywgJ0ZTTScsICdNREEnLCAnTUNPJywgJ01ORycsICdNTkUnLCAnTVNSJywgJ01BUicsICdNT1onLCAnTU1SJywgJ05BTScsICdOUlUnLCAnTlBMJywgJ05MRCcsICdOQ0wnLCAnTlpMJywgJ05JQycsICdORVInLCAnTkdBJywgJ05JVScsICdORksnLCAnTU5QJywgJ05PUicsICdPTU4nLCAnUEFLJywgJ1BMVycsICdQU0UnLCAnUEFOJywgJ1BORycsICdQUlknLCAnUEVSJywgJ1BITCcsICdQQ04nLCAnUE9MJywgJ1BSVCcsICdQUkknLCAnUUFUJywgJ1JFVScsICdST1UnLCAnUlVTJywgJ1JXQScsICdCTE0nLCAnU0hOJywgJ0tOQScsICdMQ0EnLCAnTUFGJywgJ1NQTScsICdWQ1QnLCAnV1NNJywgJ1NNUicsICdTVFAnLCAnU0FVJywgJ1NFTicsICdTUkInLCAnU1lDJywgJ1NMRScsICdTR1AnLCAnU1hNJywgJ1NWSycsICdTVk4nLCAnU0xCJywgJ1NPTScsICdaQUYnLCAnU0dTJywgJ1NTRCcsICdFU1AnLCAnTEtBJywgJ1NETicsICdTVVInLCAnU0pNJywgJ1NXWicsICdTV0UnLCAnQ0hFJywgJ1NZUicsICdUV04nLCAnVEpLJywgJ1RaQScsICdUSEEnLCAnVExTJywgJ1RHTycsICdUS0wnLCAnVE9OJywgJ1RUTycsICdUVU4nLCAnVFVSJywgJ1RLTScsICdUQ0EnLCAnVFVWJywgJ1VHQScsICdVS1InLCAnQVJFJywgJ0dCUicsICdVU0EnLCAnVU1JJywgJ1VSWScsICdVWkInLCAnVlVUJywgJ1ZFTicsICdWTk0nLCAnVkdCJywgJ1ZJUicsICdXTEYnLCAnRVNIJywgJ1lFTScsICdaTUInLCAnWldFJ10pO1xuZnVuY3Rpb24gaXNJU08zMTY2MUFscGhhMyhzdHIpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcuZGVmYXVsdCkoc3RyKTtcbiAgcmV0dXJuIHZhbGlkSVNPMzE2NjFBbHBoYTNDb3VudHJpZXNDb2Rlcy5oYXMoc3RyLnRvVXBwZXJDYXNlKCkpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG5tb2R1bGUuZXhwb3J0cy5kZWZh
15dWx0ID0gZXhwb3J0cy5kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5DdXJyZW5jeUNvZGVzID0gdm9pZCAwO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNJU080MjE3O1xudmFyIF9hc3NlcnRTdHJpbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWwvYXNzZXJ0U3RyaW5nXCIpKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG4vLyBmcm9tIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT180MjE3XG52YXIgdmFsaWRJU080MjE3Q3VycmVuY3lDb2RlcyA9IG5ldyBTZXQoWydBRUQnLCAnQUZOJywgJ0FMTCcsICdBTUQnLCAnQU5HJywgJ0FPQScsICdBUlMnLCAnQVVEJywgJ0FXRycsICdBWk4nLCAnQkFNJywgJ0JCRCcsICdCRFQnLCAnQkdOJywgJ0JIRCcsICdCSUYnLCAnQk1EJywgJ0JORCcsICdCT0InLCAnQk9WJywgJ0JSTCcsICdCU0QnLCAnQlROJywgJ0JXUCcsICdCWU4nLCAnQlpEJywgJ0NBRCcsICdDREYnLCAnQ0hFJywgJ0NIRicsICdDSFcnLCAnQ0xGJywgJ0NMUCcsICdDTlknLCAnQ09QJywgJ0NPVScsICdDUkMnLCAnQ1VDJywgJ0NVUCcsICdDVkUnLCAnQ1pLJywgJ0RKRicsICdES0snLCAnRE9QJywgJ0RaRCcsICdFR1AnLCAnRVJOJywgJ0VUQicsICdFVVInLCAnRkpEJywgJ0ZLUCcsICdHQlAnLCAnR0VMJywgJ0dIUycsICdHSVAnLCAnR01EJywgJ0dORicsICdHVFEnLCAnR1lEJywgJ0hLRCcsICdITkwnLCAnSFJLJywgJ0hURycsICdIVUYnLCAnSURSJywgJ0lMUycsICdJTlInLCAnSVFEJywgJ0lSUicsICdJU0snLCAnSk1EJywgJ0pPRCcsICdKUFknLCAnS0VTJywgJ0tHUycsICdLSFInLCAnS01GJywgJ0tQVycsICdLUlcnLCAnS1dEJywgJ0tZRCcsICdLWlQnLCAnTEFLJywgJ0xCUCcsICdMS1InLCAnTFJEJywgJ0xTTCcsICdMWUQnLCAnTUFEJywgJ01ETCcsICdNR0EnLCAnTUtEJywgJ01NSycsICdNTlQnLCAnTU9QJywgJ01SVScsICdNVVInLCAnTVZSJywgJ01XSycsICdNWE4nLCAnTVhWJywgJ01ZUicsICdNWk4nLCAnTkFEJywgJ05HTicsICdOSU8nLCAnTk9LJywgJ05QUicsICdOWkQnLCAnT01SJywgJ1BBQicsICdQRU4nLCAnUEdLJywgJ1BIUCcsICdQS1InLCAnUExOJywgJ1BZRycsICdRQVInLCAnUk9OJywgJ1JTRCcsICdSVUInLCAnUldGJywgJ1NBUicsICdTQkQnLCAnU0NSJywgJ1NERycsICdTRUsnLCAnU0dEJywgJ1NIUCcsICdTTEUnLCAnU0xMJywgJ1NPUycsICdTUkQnLCAnU1NQJywgJ1NUTicsICdTVkMnLCAnU1lQJywgJ1NaTCcsICdUSEInLCAnVEpTJywgJ1RNVCcsICdUTkQnLCAnVE9QJywgJ1RSWScsICdUVEQnLCAnVFdEJywgJ1RaUycsICdVQUgnLCAnVUdYJywgJ1VTRCcsICdVU04nLCAnVVlJJywgJ1VZVScsICdVWVcnLCAnVVpTJywgJ1ZFUycsICdWTkQnLCAnVlVWJywgJ1dTVCcsICdYQUYnLCAnWEFHJywgJ1hBVScsICdYQkEnLCAnWEJCJywgJ1hCQycsICdYQkQnLCAnWENEJywgJ1hEUicsICdYT0YnLCAnWFBEJywgJ1hQRicsICdYUFQnLCAnWFNVJywgJ1hUUycsICdYVUEnLCAnWFhYJywgJ1lFUicsICdaQVInLCAnWk1XJywgJ1pXTCddKTtcbmZ1bmN0aW9uIGlzSVNPNDIxNyhzdHIpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcuZGVmYXVsdCkoc3RyKTtcbiAgcmV0dXJuIHZhbGlkSVNPNDIxN0N1cnJlbmN5Q29kZXMuaGFzKHN0ci50b1VwcGVyQ2FzZSgpKTtcbn1cbnZhciBDdXJyZW5jeUNvZGVzID0gZXhwb3J0cy5DdXJyZW5jeUNvZGVzID0gdmFsaWRJU080MjE3Q3VycmVuY3lDb2RlczsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzQmFzZTMyO1xudmFyIF9hc3NlcnRTdHJpbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWwvYXNzZXJ0U3RyaW5nXCIpKTtcbnZhciBfbWVyZ2UgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWwvbWVyZ2VcIikpO1xuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cbnZhciBiYXNlMzIgPSAvXltBLVoyLTddKz0qJC87XG52YXIgY3JvY2tmb3JkQmFzZTMyID0gL15bQS1ISktNTlAtVFYtWjAtOV0rJC87XG52YXIgZGVmYXVsdEJhc2UzMk9wdGlvbnMgPSB7XG4gIGNyb2NrZm9yZDogZmFsc2Vcbn07XG5mdW5jdGlvbiBpc0Jhc2UzMihzdHIsIG9wdGlvbnMpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcuZGVmYXVsdCkoc3RyKTtcbiAgb3B0aW9ucyA9ICgwLCBfbWVyZ2UuZGVmYXVsdCkob3B0aW9ucywgZGVmYXVsdEJhc2UzMk9wdGlvbnMpO1xuICBpZiAob3B0aW9ucy5jcm9ja2ZvcmQpIHtcbiAgICByZXR1cm4gY3JvY2tmb3JkQmFzZTMyLnRlc3Qoc3RyKTtcbiAgfVxuICB2YXIgbGVuID0gc3RyLmxlbmd0aDtcbiAgaWYgKGxlbiAlIDggPT09IDAgJiYgYmFzZTMyLnRlc3Qoc3RyKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZh
15dWx0O1xubW9kdWxlLmV4cG9ydHMuZGVmYXVsdCA9IGV4cG9ydHMuZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzQmFzZTU4O1xudmFyIF9hc3NlcnRTdHJpbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWwvYXNzZXJ0U3RyaW5nXCIpKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG4vLyBBY2NlcHRlZCBjaGFycyAtIDEyMzQ1Njc4OUFCQ0RFRkdIIEpLTE1OIFBRUlNUVVZXWFlaYWJjZGVmZ2hpamsgbW5vcHFyc3R1dnd4eXpcbnZhciBiYXNlNThSZWcgPSAvXltBLUhKLU5QLVphLWttLXoxLTldKiQvO1xuZnVuY3Rpb24gaXNCYXNlNTgoc3RyKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nLmRlZmF1bHQpKHN0cik7XG4gIGlmIChiYXNlNThSZWcudGVzdChzdHIpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG5tb2R1bGUuZXhwb3J0cy5kZWZhdWx0ID0gZXhwb3J0cy5kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZh
15dWx0ID0gaXNEYXRhVVJJO1xudmFyIF9hc3NlcnRTdHJpbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWwvYXNzZXJ0U3RyaW5nXCIpKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG52YXIgdmFsaWRNZWRpYVR5cGUgPSAvXlthLXpdK1xcL1thLXowLTlcXC1cXCtcXC5fXSskL2k7XG52YXIgdmFsaWRBdHRyaWJ1dGUgPSAvXlthLXpcXC1dKz1bYS16MC05XFwtXSskL2k7XG52YXIgdmFsaWREYXRhID0gL15bYS16MC05IVxcJCYnXFwoXFwpXFwqXFwrLDs9XFwtXFwuX346QFxcL1xcPyVcXHNdKiQvaTtcbmZ1bmN0aW9uIGlzRGF0YVVSSShzdHIpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcuZGVmYXVsdCkoc3RyKTtcbiAgdmFyIGRhdGEgPSBzdHIuc3BsaXQoJywnKTtcbiAgaWYgKGRhdGEubGVuZ3RoIDwgMikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgYXR0cmlidXRlcyA9IGRhdGEuc2hpZnQoKS50cmltKCkuc3BsaXQoJzsnKTtcbiAgdmFyIHNjaGVtZUFuZE1lZGlhVHlwZSA9IGF0dHJpYnV0ZXMuc2hpZnQoKTtcbiAgaWYgKHNjaGVtZUFuZE1lZGlhVHlwZS5zbGljZSgwLCA1KSAhPT0gJ2RhdGE6Jykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgbWVkaWFUeXBlID0gc2NoZW1lQW5kTWVkaWFUeXBlLnNsaWNlKDUpO1xuICBpZiAobWVkaWFUeXBlICE9PSAnJyAmJiAhdmFsaWRNZWRpYVR5cGUudGVzdChtZWRpYVR5cGUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmlidXRlcy5sZW5ndGg7IGkrKykge1xuICAgIGlmICghKGkgPT09IGF0dHJpYnV0ZXMubGVuZ3RoIC0gMSAmJiBhdHRyaWJ1dGVzW2ldLnRvTG93ZXJDYXNlKCkgPT09ICdiYXNlNjQnKSAmJiAhdmFsaWRBdHRyaWJ1dGUudGVzdChhdHRyaWJ1dGVzW2ldKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgZGF0YS5sZW5ndGg7IF9pKyspIHtcbiAgICBpZiAoIXZhbGlkRGF0YS50ZXN0KGRhdGFbX2ldKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZh
15dWx0O1xubW9kdWxlLmV4cG9ydHMuZGVmYXVsdCA9IGV4cG9ydHMuZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzTWFnbmV0VVJJO1xudmFyIF9hc3NlcnRTdHJpbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWwvYXNzZXJ0U3RyaW5nXCIpKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG52YXIgbWFnbmV0VVJJQ29tcG9uZW50ID0gLyg/Ol5tYWduZXQ6XFw/fFtePyZdJil4dCg/OlxcLjEpPz11cm46KD86KD86YWljaHxiaXRwcmludHxidGlofGVkMmt8ZWQya2hhc2h8a3poYXNofG1kNXxzaGExfHRyZWU6dGlnZXIpOlthLXowLTldezMyfSg/OlthLXowLTldezh9KT98YnRtaDoxMjIwW2EtejAtOV17NjR9KSg/OiR8JikvaTtcbmZ1bmN0aW9uIGlzTWFnbmV0VVJJKHVybCkge1xuICAoMCwgX2Fzc2VydFN0cmluZy5kZWZhdWx0KSh1cmwpO1xuICBpZiAodXJsLmluZGV4T2YoJ21hZ25ldDo/JykgIT09IDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIG1hZ25ldFVSSUNvbXBvbmVudC50ZXN0KHVybCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBleHBvcnRzLmRlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBydHJpbTtcbnZhciBfYXNzZXJ0U3RyaW5nID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlsL2Fzc2VydFN0cmluZ1wiKSk7XG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuZnVuY3Rpb24gcnRyaW0oc3RyLCBjaGFycykge1xuICAoMCwgX2Fzc2VydFN0cmluZy5kZWZh
15dWx0KShzdHIpO1xuICBpZiAoY2hhcnMpIHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L0d1aWRlL1JlZ3VsYXJfRXhwcmVzc2lvbnMjRXNjYXBpbmdcbiAgICB2YXIgcGF0dGVybiA9IG5ldyBSZWdFeHAoXCJbXCIuY29uY2F0KGNoYXJzLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXF1cXFxcXS9nLCAnXFxcXCQmJyksIFwiXSskXCIpLCAnZycpO1xuICAgIHJldHVybiBzdHIucmVwbGFjZShwYXR0ZXJuLCAnJyk7XG4gIH1cbiAgLy8gVXNlIGEgZmFzdGVyIGFuZCBtb3JlIHNhZmUgdGhhbiByZWdleCB0cmltIG1ldGhvZCBodHRwczovL2Jsb2cuc3RldmVubGV2aXRoYW4uY29tL2FyY2hpdmVzL2Zhc3Rlci10cmltLWphdmFzY3JpcHRcbiAgdmFyIHN0ckluZGV4ID0gc3RyLmxlbmd0aCAtIDE7XG4gIHdoaWxlICgvXFxzLy50ZXN0KHN0ci5jaGFyQXQoc3RySW5kZXgpKSkge1xuICAgIHN0ckluZGV4IC09IDE7XG4gIH1cbiAgcmV0dXJuIHN0ci5zbGljZSgwLCBzdHJJbmRleCArIDEpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG5tb2R1bGUuZXhwb3J0cy5kZWZhdWx0ID0gZXhwb3J0cy5kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gbHRyaW07XG52YXIgX2Fzc2VydFN0cmluZyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vdXRpbC9hc3NlcnRTdHJpbmdcIikpO1xuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cbmZ1bmN0aW9uIGx0cmltKHN0ciwgY2hhcnMpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcuZGVmYXVsdCkoc3RyKTtcbiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9HdWlkZS9SZWd1bGFyX0V4cHJlc3Npb25zI0VzY2FwaW5nXG4gIHZhciBwYXR0ZXJuID0gY2hhcnMgPyBuZXcgUmVnRXhwKFwiXltcIi5jb25jYXQoY2hhcnMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xcXVxcXFxdL2csICdcXFxcJCYnKSwgXCJdK1wiKSwgJ2cnKSA6IC9eXFxzKy9nO1xuICByZXR1cm4gc3RyLnJlcGxhY2UocGF0dGVybiwgJycpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG5tb2R1bGUuZXhwb3J0cy5kZWZh
15dWx0ID0gZXhwb3J0cy5kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdHJpbTtcbnZhciBfcnRyaW0gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3J0cmltXCIpKTtcbnZhciBfbHRyaW0gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2x0cmltXCIpKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5mdW5jdGlvbiB0cmltKHN0ciwgY2hhcnMpIHtcbiAgcmV0dXJuICgwLCBfcnRyaW0uZGVmYXVsdCkoKDAsIF9sdHJpbS5kZWZhdWx0KShzdHIsIGNoYXJzKSwgY2hhcnMpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG5tb2R1bGUuZXhwb3J0cy5kZWZhdWx0ID0gZXhwb3J0cy5kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNNYWlsdG9VUkk7XG52YXIgX3RyaW0gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3RyaW1cIikpO1xudmFyIF9pc0VtYWlsID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9pc0VtYWlsXCIpKTtcbnZhciBfYXNzZXJ0U3RyaW5nID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlsL2Fzc2VydFN0cmluZ1wiKSk7XG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuZnVuY3Rpb24gX3NsaWNlZFRvQXJyYXkoYXJyLCBpKSB7IHJldHVybiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB8fCBfaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB8fCBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkoYXJyLCBpKSB8fCBfbm9uSXRlcmFibGVSZXN0KCk7IH1cbmZ1bmN0aW9uIF9ub25JdGVyYWJsZVJlc3QoKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7IH1cbmZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXlMaW1pdChyLCBsKSB7IHZhciB0ID0gbnVsbCA9PSByID8gbnVsbCA6IFwidW5kZWZpbmVkXCIgIT0gdHlwZW9mIFN5bWJvbCAmJiByW1N5bWJvbC5pdGVyYXRvcl0gfHwgcltcIkBAaXRlcmF0b3JcIl07IGlmIChudWxsICE9IHQpIHsgdmFyIGUsIG4sIGksIHUsIGEgPSBbXSwgZiA9ICEwLCBvID0gITE7IHRyeSB7IGlmIChpID0gKHQgPSB0LmNhbGwocikpLm5leHQsIDAgPT09IGwpIHsgaWYgKE9iamVjdCh0KSAhPT0gdCkgcmV0dXJuOyBmID0gITE7IH0gZWxzZSBmb3IgKDsgIShmID0gKGUgPSBpLmNhbGwodCkpLmRvbmUpICYmIChhLnB1c2goZS52YWx1ZSksIGEubGVuZ3RoICE9PSBsKTsgZiA9ICEwKTsgfSBjYXRjaCAocikgeyBvID0gITAsIG4gPSByOyB9IGZpbmFsbHkgeyB0cnkgeyBpZiAoIWYgJiYgbnVsbCAhPSB0LnJldHVybiAmJiAodSA9IHQucmV0dXJuKCksIE9iamVjdCh1KSAhPT0gdSkpIHJldHVybjsgfSBmaW5hbGx5IHsgaWYgKG8pIHRocm93IG47IH0gfSByZXR1cm4gYTsgfSB9XG5mdW5jdGlvbiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB7IGlmIChBcnJheS5pc0FycmF5KGFycikpIHJldHVybiBhcnI7IH1cbmZ1bmN0aW9uIF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKG8sIGFsbG93QXJyYXlMaWtlKSB7IHZhciBpdCA9IHR5cGVvZiBTeW1ib2wgIT09IFwidW5kZWZpbmVkXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdIHx8IG9bXCJAQGl0ZXJhdG9yXCJdOyBpZiAoIWl0KSB7IGlmIChBcnJheS5pc0FycmF5KG8pIHx8IChpdCA9IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvKSkgfHwgYWxsb3dBcnJheUxpa2UgJiYgbyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHsgaWYgKGl0KSBvID0gaXQ7IHZhciBpID0gMDsgdmFyIEYgPSBmdW5jdGlvbiBGKCkge307IHJldHVybiB7IHM6IEYsIG46IGZ1bmN0aW9uIG4oKSB7IGlmIChpID49IG8ubGVuZ3RoKSByZXR1cm4geyBkb25lOiB0cnVlIH07IHJldHVybiB7IGRvbmU6IGZhbHNlLCB2YWx1ZTogb1tpKytdIH07IH0sIGU6IGZ1bmN0aW9uIGUoX2UpIHsgdGhyb3cgX2U7IH0sIGY6IEYgfTsgfSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7IH0gdmFyIG5vcm1hbENvbXBsZXRpb24gPSB0cnVlLCBkaWRFcnIgPSBmYWxzZSwgZXJyOyByZXR1cm4geyBzOiBmdW5jdGlvbiBzKCkgeyBpdCA9IGl0LmNhbGwobyk7IH0sIG46IGZ1bmN0aW9uIG4oKSB7IHZhciBzdGVwID0gaXQubmV4dCgpOyBub3JtYWxDb21wbGV0aW9uID0gc3RlcC5kb25lOyByZXR1cm4gc3RlcDsgfSwgZTogZnVuY3Rpb24gZShfZTIpIHsgZGlkRXJyID0gdHJ1ZTsgZXJyID0gX2UyOyB9LCBmOiBmdW5jdGlvbiBmKCkgeyB0cnkgeyBpZiAoIW5vcm1hbENvbXBsZXRpb24gJiYgaXQucmV0dXJuICE9IG51bGwpIGl0LnJldHVybigpOyB9IGZpbmFsbHkgeyBpZiAoZGlkRXJyKSB0aHJvdyBlcnI7IH0gfSB9OyB9XG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybi
15BBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cbmZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KGFyciwgbGVuKSB7IGlmIChsZW4gPT0gbnVsbCB8fCBsZW4gPiBhcnIubGVuZ3RoKSBsZW4gPSBhcnIubGVuZ3RoOyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShsZW4pOyBpIDwgbGVuOyBpKyspIGFycjJbaV0gPSBhcnJbaV07IHJldHVybiBhcnIyOyB9XG5mdW5jdGlvbiBwYXJzZU1haWx0b1F1ZXJ5U3RyaW5nKHF1ZXJ5U3RyaW5nKSB7XG4gIHZhciBhbGxvd2VkUGFyYW1zID0gbmV3IFNldChbJ3N1YmplY3QnLCAnYm9keScsICdjYycsICdiY2MnXSksXG4gICAgcXVlcnkgPSB7XG4gICAgICBjYzogJycsXG4gICAgICBiY2M6ICcnXG4gICAgfTtcbiAgdmFyIGlzUGFyc2VGYWlsZWQgPSBmYWxzZTtcbiAgdmFyIHF1ZXJ5UGFyYW1zID0gcXVlcnlTdHJpbmcuc3BsaXQoJyYnKTtcbiAgaWYgKHF1ZXJ5UGFyYW1zLmxlbmd0aCA+IDQpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIF9pdGVyYXRvciA9IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKHF1ZXJ5UGFyYW1zKSxcbiAgICBfc3RlcDtcbiAgdHJ5IHtcbiAgICBmb3IgKF9pdGVyYXRvci5zKCk7ICEoX3N0ZXAgPSBfaXRlcmF0b3IubigpKS5kb25lOykge1xuICAgICAgdmFyIHEgPSBfc3RlcC52YWx1ZTtcbiAgICAgIHZhciBfcSRzcGxpdCA9IHEuc3BsaXQoJz0nKSxcbiAgICAgICAgX3Ekc3BsaXQyID0gX3NsaWNlZFRvQXJyYXkoX3Ekc3BsaXQsIDIpLFxuICAgICAgICBrZXkgPSBfcSRzcGxpdDJbMF0sXG4gICAgICAgIHZhbHVlID0gX3Ekc3BsaXQyWzFdO1xuXG4gICAgICAvLyBjaGVja2VkIGZvciBpbnZhbGlkIGFuZCBkdXBsaWNhdGVkIHF1ZXJ5IHBhcmFtc1xuICAgICAgaWYgKGtleSAmJiAhYWxsb3dlZFBhcmFtcy5oYXMoa2V5KSkge1xuICAgICAgICBpc1BhcnNlRmFpbGVkID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAodmFsdWUgJiYgKGtleSA9PT0gJ2NjJyB8fCBrZXkgPT09ICdiY2MnKSkge1xuICAgICAgICBxdWVyeVtrZXldID0gdmFsdWU7XG4gICAgICB9XG4gICAgICBpZiAoa2V5KSB7XG4gICAgICAgIGFsbG93ZWRQYXJhbXMuZGVsZXRlKGtleSk7XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBfaXRlcmF0b3IuZShlcnIpO1xuICB9IGZpbmFsbHkge1xuICAgIF9pdGVyYXRvci5mKCk7XG4gIH1cbiAgcmV0dXJuIGlzUGFyc2VGYWlsZWQgPyBmYWxzZSA6IHF1ZXJ5O1xufVxuZnVuY3Rpb24gaXNNYWlsdG9VUkkodXJsLCBvcHRpb25zKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nLmRlZmF1bHQpKHVybCk7XG4gIGlmICh1cmwuaW5kZXhPZignbWFpbHRvOicpICE9PSAwKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBfdXJsJHJlcGxhY2Ukc3BsaXQgPSB1cmwucmVwbGFjZSgnbWFpbHRvOicsICcnKS5zcGxpdCgnPycpLFxuICAgIF91cmwkcmVwbGFjZSRzcGxpdDIgPSBfc2xpY2VkVG9BcnJheShfdXJsJHJlcGxhY2Ukc3BsaXQsIDIpLFxuICAgIHRvID0gX3VybCRyZXBsYWNlJHNwbGl0MlswXSxcbiAgICBfdXJsJHJlcGxhY2Ukc3BsaXQyJCA9IF91cmwkcmVwbGFjZSRzcGxpdDJbMV0sXG4gICAgcXVlcnlTdHJpbmcgPSBfdXJsJHJlcGxhY2Ukc3BsaXQyJCA9PT0gdm9pZCAwID8gJycgOiBfdXJsJHJlcGxhY2Ukc3BsaXQyJDtcbiAgaWYgKCF0byAmJiAhcXVlcnlTdHJpbmcpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICB2YXIgcXVlcnkgPSBwYXJzZU1haWx0b1F1ZXJ5U3RyaW5nKHF1ZXJ5U3RyaW5nKTtcbiAgaWYgKCFxdWVyeSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gXCJcIi5jb25jYXQodG8sIFwiLFwiKS5jb25jYXQocXVlcnkuY2MsIFwiLFwiKS5jb25jYXQocXVlcnkuYmNjKS5zcGxpdCgnLCcpLmV2ZXJ5KGZ1bmN0aW9uIChlbWFpbCkge1xuICAgIGVtYWlsID0gKDAsIF90cmltLmRlZmF1bHQpKGVtYWlsLCAnICcpO1xuICAgIGlmIChlbWFpbCkge1xuICAgICAgcmV0dXJuICgwLCBfaXNFbWFpbC5kZWZhdWx0KShlbWFpbCwgb3B0aW9ucyk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9KTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZh
15dWx0O1xubW9kdWxlLmV4cG9ydHMuZGVmYXVsdCA9IGV4cG9ydHMuZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzTWltZVR5cGU7XG52YXIgX2Fzc2VydFN0cmluZyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vdXRpbC9hc3NlcnRTdHJpbmdcIikpO1xuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cbi8qXG4gIENoZWNrcyBpZiB0aGUgcHJvdmlkZWQgc3RyaW5nIG1hdGNoZXMgdG8gYSBjb3JyZWN0IE1lZGlhIHR5cGUgZm9ybWF0IChNSU1FIHR5cGUpXG5cbiAgVGhpcyBmdW5jdGlvbiBvbmx5IGNoZWNrcyBpcyB0aGUgc3RyaW5nIGZvcm1hdCBmb2xsb3dzIHRoZVxuICBldGFibGlzaGVkIHJ1bGVzIGJ5IHRoZSBhY2NvcmRpbmcgUkZDIHNwZWNpZmljYXRpb25zLlxuICBUaGlzIGZ1bmN0aW9uIHN1cHBvcnRzICdjaGFyc2V0JyBpbiB0ZXh0dWFsIG1lZGlhIHR5cGVzXG4gIChodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjY1NykuXG5cbiAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBjaGVjayBhZ2FpbnN0IGFsbCB0aGUgbWVkaWEgdHlwZXMgbGlzdGVkXG4gIGJ5IHRoZSBJQU5BIChodHRwczovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50cy9tZWRpYS10eXBlcy9tZWRpYS10eXBlcy54aHRtbClcbiAgYmVjYXVzZSBvZiBsaWdodG5lc3MgcHVycG9zZXMgOiBpdCB3b3VsZCByZXF1aXJlIHRvIGluY2x1ZGVcbiAgYWxsIHRoZXNlIE1JTUUgdHlwZXMgaW4gdGhpcyBsaWJyYWlyeSwgd2hpY2ggd291bGQgd2VpZ2ggaXRcbiAgc2lnbmlmaWNhbnRseS4gVGhpcyBraW5kIG9mIGVmZm9ydCBtYXliZSBpcyBub3Qgd29ydGggZm9yIHRoZSB1c2UgdGhhdFxuICB0aGlzIGZ1bmN0aW9uIGhhcyBpbiB0aGlzIGVudGlyZSBsaWJyYWlyeS5cblxuICBNb3JlIGluZm9ybWF0aW9ucyBpbiB0aGUgUkZDIHNwZWNpZmljYXRpb25zIDpcbiAgLSBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjA0NVxuICAtIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyMDQ2XG4gIC0gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi0zLjEuMS4xXG4gIC0gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi0zLjEuMS41XG4qL1xuXG4vLyBNYXRjaCBzaW1wbGUgTUlNRSB0eXBlc1xuLy8gTkIgOlxuLy8gICBTdWJ0eXBlIGxlbmd0aCBtdXN0IG5vdCBleGNlZWQgMTAwIGNoYXJhY3RlcnMuXG4vLyAgIFRoaXMgcnVsZSBkb2VzIG5vdCBjb21wbHkgdG8gdGhlIFJGQyBzcGVjcyAod2hhdCBpcyB0aGUgbWF4IGxlbmd0aCA/KS5cbnZhciBtaW1lVHlwZVNpbXBsZSA9IC9eKGFwcGxpY2F0aW9ufGF1ZGlvfGZvbnR8aW1hZ2V8bWVzc2FnZXxtb2RlbHxtdWx0aXBhcnR8dGV4dHx2aWRlbylcXC9bYS16QS1aMC05XFwuXFwtXFwrX117MSwxMDB9JC9pOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG1heC1sZW5cblxuLy8gSGFuZGxlIFwiY2hhcnNldFwiIGluIFwidGV4dC8qXCJcbnZhciBtaW1lVHlwZVRleHQgPSAvXnRleHRcXC9bYS16QS1aMC05XFwuXFwtXFwrXXsxLDEwMH07XFxzP2NoYXJzZXQ9KFwiW2EtekEtWjAtOVxcLlxcLVxcK1xcc117MCw3MH1cInxbYS16QS1aMC05XFwuXFwtXFwrXXswLDcwfSkoXFxzP1xcKFthLXpBLVowLTlcXC5cXC1cXCtcXHNdezEsMjB9XFwpKT8kL2k7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbWF4LWxlblxuXG4vLyBIYW5kbGUgXCJib3VuZGFyeVwiIGluIFwibXVsdGlwYXJ0LypcIlxudmFyIG1pbWVUeXBlTXVsdGlwYXJ0ID0gL15tdWx0aXBhcnRcXC9bYS16QS1aMC05XFwuXFwtXFwrXXsxLDEwMH0oO1xccz8oYm91bmRhcnl8Y2hhcnNldCk9KFwiW2EtekEtWjAtOVxcLlxcLVxcK1xcc117MCw3MH1cInxbYS16QS1aMC05XFwuXFwtXFwrXXswLDcwfSkoXFxzP1xcKFthLXpBLVowLTlcXC5cXC1cXCtcXHNdezEsMjB9XFwpKT8pezAsMn0kL2k7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbWF4LWxlblxuXG5mdW5jdGlvbiBpc01pbWVUeXBlKHN0cikge1xuICAoMCwgX2Fzc2VydFN0cmluZy5kZWZh
15dWx0KShzdHIpO1xuICByZXR1cm4gbWltZVR5cGVTaW1wbGUudGVzdChzdHIpIHx8IG1pbWVUeXBlVGV4dC50ZXN0KHN0cikgfHwgbWltZVR5cGVNdWx0aXBhcnQudGVzdChzdHIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG5tb2R1bGUuZXhwb3J0cy5kZWZhdWx0ID0gZXhwb3J0cy5kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gaXNMYXRMb25nO1xudmFyIF9hc3NlcnRTdHJpbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWwvYXNzZXJ0U3RyaW5nXCIpKTtcbnZhciBfbWVyZ2UgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWwvbWVyZ2VcIikpO1xuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cbnZhciBsYXQgPSAvXlxcKD9bKy1dPyg5MChcXC4wKyk/fFsxLThdP1xcZChcXC5cXGQrKT8pJC87XG52YXIgbG9uZyA9IC9eXFxzP1srLV0/KDE4MChcXC4wKyk/fDFbMC03XVxcZChcXC5cXGQrKT98XFxkezEsMn0oXFwuXFxkKyk/KVxcKT8kLztcbnZhciBsYXRETVMgPSAvXigoWzEtOF0/XFxkKVxcRCsoWzEtNV0/XFxkfDYwKVxcRCsoWzEtNV0/XFxkfDYwKShcXC5cXGQrKT98OTBcXEQrMFxcRCswKVxcRCtbTlNuc10/JC9pO1xudmFyIGxvbmdETVMgPSAvXlxccyooWzEtN10/XFxkezEsMn1cXEQrKFsxLTVdP1xcZHw2MClcXEQrKFsxLTVdP1xcZHw2MCkoXFwuXFxkKyk/fDE4MFxcRCswXFxEKzApXFxEK1tFV2V3XT8kL2k7XG52YXIgZGVmYXVsdExhdExvbmdPcHRpb25zID0ge1xuICBjaGVja0RNUzogZmFsc2Vcbn07XG5mdW5jdGlvbiBpc0xhdExvbmcoc3RyLCBvcHRpb25zKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nLmRlZmF1bHQpKHN0cik7XG4gIG9wdGlvbnMgPSAoMCwgX21lcmdlLmRlZmF1bHQpKG9wdGlvbnMsIGRlZmF1bHRMYXRMb25nT3B0aW9ucyk7XG4gIGlmICghc3RyLmluY2x1ZGVzKCcsJykpIHJldHVybiBmYWxzZTtcbiAgdmFyIHBhaXIgPSBzdHIuc3BsaXQoJywnKTtcbiAgaWYgKHBhaXJbMF0uc3RhcnRzV2l0aCgnKCcpICYmICFwYWlyWzFdLmVuZHNXaXRoKCcpJykgfHwgcGFpclsxXS5lbmRzV2l0aCgnKScpICYmICFwYWlyWzBdLnN0YXJ0c1dpdGgoJygnKSkgcmV0dXJuIGZhbHNlO1xuICBpZiAob3B0aW9ucy5jaGVja0RNUykge1xuICAgIHJldHVybiBsYXRETVMudGVzdChwYWlyWzBdKSAmJiBsb25nRE1TLnRlc3QocGFpclsxXSk7XG4gIH1cbiAgcmV0dXJuIGxhdC50ZXN0KHBhaXJbMF0pICYmIGxvbmcudGVzdChwYWlyWzFdKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZh
15dWx0O1xubW9kdWxlLmV4cG9ydHMuZGVmYXVsdCA9IGV4cG9ydHMuZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzUG9zdGFsQ29kZTtcbmV4cG9ydHMubG9jYWxlcyA9IHZvaWQgMDtcbnZhciBfYXNzZXJ0U3RyaW5nID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlsL2Fzc2VydFN0cmluZ1wiKSk7XG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuLy8gY29tbW9uIHBhdHRlcm5zXG52YXIgdGhyZWVEaWdpdCA9IC9eXFxkezN9JC87XG52YXIgZm91ckRpZ2l0ID0gL15cXGR7NH0kLztcbnZhciBmaXZlRGlnaXQgPSAvXlxcZHs1fSQvO1xudmFyIHNpeERpZ2l0ID0gL15cXGR7Nn0kLztcbnZhciBwYXR0ZXJucyA9IHtcbiAgQUQ6IC9eQURcXGR7M30kLyxcbiAgQVQ6IGZvdXJEaWdpdCxcbiAgQVU6IGZvdXJEaWdpdCxcbiAgQVo6IC9eQVpcXGR7NH0kLyxcbiAgQkE6IC9eKFs3LThdXFxkezR9JCkvLFxuICBCRTogZm91ckRpZ2l0LFxuICBCRzogZm91ckRpZ2l0LFxuICBCUjogL15cXGR7NX0tXFxkezN9JC8sXG4gIEJZOiAvXjJbMS00XVxcZHs0fSQvLFxuICBDQTogL15bQUJDRUdISktMTU5QUlNUVlhZXVxcZFtBQkNFR0hKLU5QUlNUVi1aXVtcXHNcXC1dP1xcZFtBQkNFR0hKLU5QUlNUVi1aXVxcZCQvaSxcbiAgQ0g6IGZvdXJEaWdpdCxcbiAgQ046IC9eKDBbMS03XXwxWzAxMjM1Nl18MlswLTddfDNbMC02XXw0WzAtN118NVsxLTddfDZbMS03XXw3WzEtNV18OFsxMzQ1XXw5WzA5XSlcXGR7NH0kLyxcbiAgQ1o6IC9eXFxkezN9XFxzP1xcZHsyfSQvLFxuICBERTogZml2ZURpZ2l0LFxuICBESzogZm91ckRpZ2l0LFxuICBETzogZml2ZURpZ2l0LFxuICBEWjogZml2ZURpZ2l0LFxuICBFRTogZml2ZURpZ2l0LFxuICBFUzogL14oNVswLTJdezF9fFswLTRdezF9XFxkezF9KVxcZHszfSQvLFxuICBGSTogZml2ZURpZ2l0LFxuICBGUjogL15cXGR7Mn1cXHM/XFxkezN9JC8sXG4gIEdCOiAvXihnaXJcXHM/MGFhfFthLXpdezEsMn1cXGRbXFxkYS16XT9cXHM/KFxcZFthLXpdezJ9KT8pJC9pLFxuICBHUjogL15cXGR7M31cXHM/XFxkezJ9JC8sXG4gIEhSOiAvXihbMS01XVxcZHs0fSQpLyxcbiAgSFQ6IC9eSFRcXGR7NH0kLyxcbiAgSFU6IGZvdXJEaWdpdCxcbiAgSUQ6IGZpdmVEaWdpdCxcbiAgSUU6IC9eKD8hLiooPzpvKSlbQS1aYS16XVxcZFtcXGR3XVxcc1xcd3s0fSQvaSxcbiAgSUw6IC9eKFxcZHs1fXxcXGR7N30pJC8sXG4gIElOOiAvXigoPyExMHwyOXwzNXw1NHw1NXw2NXw2Nnw4Nnw4N3w4OHw4OSlbMS05XVswLTldezV9KSQvLFxuICBJUjogL14oPyEoXFxkKVxcMXszfSlbMTMtOV17NH1bMTM0Ni05XVswMTMtOV17NX0kLyxcbiAgSVM6IHRocmVlRGlnaXQsXG4gIElUOiBmaXZlRGlnaXQsXG4gIEpQOiAvXlxcZHszfVxcLVxcZHs0fSQvLFxuICBLRTogZml2ZURpZ2l0LFxuICBLUjogL14oXFxkezV9fFxcZHs2fSkkLyxcbiAgTEk6IC9eKDk0OFs1LTldfDk0OVswLTddKSQvLFxuICBMVDogL15MVFxcLVxcZHs1fSQvLFxuICBMVTogZm91ckRpZ2l0LFxuICBMVjogL15MVlxcLVxcZHs0fSQvLFxuICBMSzogZml2ZURpZ2l0LFxuICBNRzogdGhyZWVEaWdpdCxcbiAgTVg6IGZpdmVEaWdpdCxcbiAgTVQ6IC9eW0EtWmEtel17M31cXHN7MCwxfVxcZHs0fSQvLFxuICBNWTogZml2ZURpZ2l0LFxuICBOTDogL15bMS05XVxcZHszfVxccz8oPyFzYXxzZHxzcylbYS16XXsyfSQvaSxcbiAgTk86IGZvdXJEaWdpdCxcbiAgTlA6IC9eKDEwfDIxfDIyfDMyfDMzfDM0fDQ0fDQ1fDU2fDU3KVxcZHszfSR8Xig5NzcpJC9pLFxuICBOWjogZm91ckRpZ2l0LFxuICBQTDogL15cXGR7Mn1cXC1cXGR7M30kLyxcbiAgUFI6IC9eMDBbNjc5XVxcZHsyfShbIC1dXFxkezR9KT8kLyxcbiAgUFQ6IC9eXFxkezR9XFwtXFxkezN9PyQvLFxuICBSTzogc2l4RGlnaXQsXG4gIFJVOiBzaXhEaWdpdCxcbiAgU0E6IGZpdmVEaWdpdCxcbiAgU0U6IC9eWzEtOV1cXGR7Mn1cXHM/XFxkezJ9JC8sXG4gIFNHOiBzaXhEaWdpdCxcbiAgU0k6IGZvdXJEaWdpdCxcbiAgU0s6IC9eXFxkezN9XFxzP1xcZHsyfSQvLFxuICBUSDogZml2ZURpZ2l0LFxuICBUTjogZm91ckRpZ2l0LFxuICBUVzogL15cXGR7M30oXFxkezJ9KT8kLyxcbiAgVUE6IGZpdmVEaWdpdCxcbiAgVVM6IC9eXFxkezV9KC1cXGR7NH0pPyQvLFxuICBaQTogZm91ckRpZ2l0LFxuICBaTTogZml2ZURpZ2l0XG59O1xudmFyIGxvY2FsZXMgPSBleHBvcnRzLmxvY2FsZXMgPSBPYmplY3Qua2V5cyhwYXR0ZXJucyk7XG5mdW5jdGlvbiBpc1Bvc3RhbENvZGUoc3RyLCBsb2NhbGUpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcuZGVmYXVsdCkoc3RyKTtcbiAgaWYgKGxvY2FsZSBpbiBwYXR0ZXJucykge1xuICAgIHJldHVybiBwYXR0ZXJuc1tsb2NhbGVdLnRlc3Qoc3RyKTtcbiAgfSBlbHNlIGlmIChsb2NhbGUgPT09ICdhbnknKSB7XG4gICAgZm9yICh2YXIga2V5IGluIHBhdHRlcm5zKSB7XG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZ290d2FybG9zdC9pc3RhbmJ1bC9ibG9iL21hc3Rlci9pZ25vcmluZy1jb2RlLWZvci1jb3ZlcmFnZS5tZCNpZ25vcmluZy1jb2RlLWZvci1jb3ZlcmFnZS1wdXJwb3Nlc1xuICAgICAgLy8gaXN0YW5idWwgaWdub3JlIGVsc2VcbiAgICAgIGlmIChwYXR0ZXJucy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIHZhciBwYXR0ZXJuID0gcGF0dGVybnNba2V5XTtcbiAgICAgICAgaWYgKHBhdHRlcm4udGVzdChzdHIpKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgbG9jYWxlICdcIi5jb25jYXQobG9jYWxlLCBcIidcIikpO1xufSIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZh
15dWx0ID0gZXNjYXBlO1xudmFyIF9hc3NlcnRTdHJpbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWwvYXNzZXJ0U3RyaW5nXCIpKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5mdW5jdGlvbiBlc2NhcGUoc3RyKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nLmRlZmF1bHQpKHN0cik7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvJi9nLCAnJmFtcDsnKS5yZXBsYWNlKC9cIi9nLCAnJnF1b3Q7JykucmVwbGFjZSgvJy9nLCAnJiN4Mjc7JykucmVwbGFjZSgvPC9nLCAnJmx0OycpLnJlcGxhY2UoLz4vZywgJyZndDsnKS5yZXBsYWNlKC9cXC8vZywgJyYjeDJGOycpLnJlcGxhY2UoL1xcXFwvZywgJyYjeDVDOycpLnJlcGxhY2UoL2AvZywgJyYjOTY7Jyk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBleHBvcnRzLmRlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB1bmVzY2FwZTtcbnZhciBfYXNzZXJ0U3RyaW5nID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlsL2Fzc2VydFN0cmluZ1wiKSk7XG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuZnVuY3Rpb24gdW5lc2NhcGUoc3RyKSB7XG4gICgwLCBfYXNzZXJ0U3RyaW5nLmRlZmF1bHQpKHN0cik7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvJnF1b3Q7L2csICdcIicpLnJlcGxhY2UoLyYjeDI3Oy9nLCBcIidcIikucmVwbGFjZSgvJmx0Oy9nLCAnPCcpLnJlcGxhY2UoLyZndDsvZywgJz4nKS5yZXBsYWNlKC8mI3gyRjsvZywgJy8nKS5yZXBsYWNlKC8mI3g1QzsvZywgJ1xcXFwnKS5yZXBsYWNlKC8mIzk2Oy9nLCAnYCcpLnJlcGxhY2UoLyZhbXA7L2csICcmJyk7XG4gIC8vICZhbXA7IHJlcGxhY2VtZW50IGhhcyB0byBiZSB0aGUgbGFzdCBvbmUgdG8gcHJldmVudFxuICAvLyBidWdzIHdpdGggaW50ZXJtZWRpYXRlIHN0cmluZ3MgY29udGFpbmluZyBlc2NhcGUgc2VxdWVuY2VzXG4gIC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL3ZhbGlkYXRvcmpzL3ZhbGlkYXRvci5qcy9pc3N1ZXMvMTgyN1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG5tb2R1bGUuZXhwb3J0cy5kZWZh
15dWx0ID0gZXhwb3J0cy5kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gYmxhY2tsaXN0O1xudmFyIF9hc3NlcnRTdHJpbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWwvYXNzZXJ0U3RyaW5nXCIpKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5mdW5jdGlvbiBibGFja2xpc3Qoc3RyLCBjaGFycykge1xuICAoMCwgX2Fzc2VydFN0cmluZy5kZWZhdWx0KShzdHIpO1xuICByZXR1cm4gc3RyLnJlcGxhY2UobmV3IFJlZ0V4cChcIltcIi5jb25jYXQoY2hhcnMsIFwiXStcIiksICdnJyksICcnKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xubW9kdWxlLmV4cG9ydHMuZGVmYXVsdCA9IGV4cG9ydHMuZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHN0cmlwTG93O1xudmFyIF9hc3NlcnRTdHJpbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWwvYXNzZXJ0U3RyaW5nXCIpKTtcbnZhciBfYmxhY2tsaXN0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9ibGFja2xpc3RcIikpO1xuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cbmZ1bmN0aW9uIHN0cmlwTG93KHN0ciwga2VlcF9uZXdfbGluZXMpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcuZGVmYXVsdCkoc3RyKTtcbiAgdmFyIGNoYXJzID0ga2VlcF9uZXdfbGluZXMgPyAnXFxcXHgwMC1cXFxceDA5XFxcXHgwQlxcXFx4MENcXFxceDBFLVxcXFx4MUZcXFxceDdGJyA6ICdcXFxceDAwLVxcXFx4MUZcXFxceDdGJztcbiAgcmV0dXJuICgwLCBfYmxhY2tsaXN0LmRlZmF1bHQpKHN0ciwgY2hhcnMpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG5tb2R1bGUuZXhwb3J0cy5kZWZh
15dWx0ID0gZXhwb3J0cy5kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gd2hpdGVsaXN0O1xudmFyIF9hc3NlcnRTdHJpbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWwvYXNzZXJ0U3RyaW5nXCIpKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5mdW5jdGlvbiB3aGl0ZWxpc3Qoc3RyLCBjaGFycykge1xuICAoMCwgX2Fzc2VydFN0cmluZy5kZWZhdWx0KShzdHIpO1xuICByZXR1cm4gc3RyLnJlcGxhY2UobmV3IFJlZ0V4cChcIlteXCIuY29uY2F0KGNoYXJzLCBcIl0rXCIpLCAnZycpLCAnJyk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBleHBvcnRzLmRlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc1doaXRlbGlzdGVkO1xudmFyIF9hc3NlcnRTdHJpbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWwvYXNzZXJ0U3RyaW5nXCIpKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5mdW5jdGlvbiBpc1doaXRlbGlzdGVkKHN0ciwgY2hhcnMpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcuZGVmYXVsdCkoc3RyKTtcbiAgZm9yICh2YXIgaSA9IHN0ci5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIGlmIChjaGFycy5pbmRleE9mKHN0cltpXSkgPT09IC0xKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG5tb2R1bGUuZXhwb3J0cy5kZWZh
15dWx0ID0gZXhwb3J0cy5kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gbm9ybWFsaXplRW1haWw7XG52YXIgX21lcmdlID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlsL21lcmdlXCIpKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG52YXIgZGVmYXVsdF9ub3JtYWxpemVfZW1haWxfb3B0aW9ucyA9IHtcbiAgLy8gVGhlIGZvbGxvd2luZyBvcHRpb25zIGFwcGx5IHRvIGFsbCBlbWFpbCBhZGRyZXNzZXNcbiAgLy8gTG93ZXJjYXNlcyB0aGUgbG9jYWwgcGFydCBvZiB0aGUgZW1haWwgYWRkcmVzcy5cbiAgLy8gUGxlYXNlIG5vdGUgdGhpcyBtYXkgdmlvbGF0ZSBSRkMgNTMyMSBhcyBwZXIgaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvOTgwODMzMi8xOTIwMjQpLlxuICAvLyBUaGUgZG9tYWluIGlzIGFsd2F5cyBsb3dlcmNhc2VkLCBhcyBwZXIgUkZDIDEwMzVcbiAgYWxsX2xvd2VyY2FzZTogdHJ1ZSxcbiAgLy8gVGhlIGZvbGxvd2luZyBjb252ZXJzaW9ucyBhcmUgc3BlY2lmaWMgdG8gR01haWxcbiAgLy8gTG93ZXJjYXNlcyB0aGUgbG9jYWwgcGFydCBvZiB0aGUgR01haWwgYWRkcmVzcyAoa25vd24gdG8gYmUgY2FzZS1pbnNlbnNpdGl2ZSlcbiAgZ21haWxfbG93ZXJjYXNlOiB0cnVlLFxuICAvLyBSZW1vdmVzIGRvdHMgZnJvbSB0aGUgbG9jYWwgcGFydCBvZiB0aGUgZW1haWwgYWRkcmVzcywgYXMgdGhhdCdzIGlnbm9yZWQgYnkgR01h
15aWxcbiAgZ21haWxfcmVtb3ZlX2RvdHM6IHRydWUsXG4gIC8vIFJlbW92ZXMgdGhlIHN1YmFkZHJlc3MgKGUuZy4gXCIrZm9vXCIpIGZyb20gdGhlIGVtYWlsIGFkZHJlc3NcbiAgZ21haWxfcmVtb3ZlX3N1YmFkZHJlc3M6IHRydWUsXG4gIC8vIENvbnZlcnN0cyB0aGUgZ29vZ2xlbWFpbC5jb20gZG9tYWluIHRvIGdtYWlsLmNvbVxuICBnbWFpbF9jb252ZXJ0X2dvb2dsZW1haWxkb3Rjb206IHRydWUsXG4gIC8vIFRoZSBmb2xsb3dpbmcgY29udmVyc2lvbnMgYXJlIHNwZWNpZmljIHRvIE91dGxvb2suY29tIC8gV2luZG93cyBMaXZlIC8gSG90bWFpbFxuICAvLyBMb3dlcmNhc2VzIHRoZSBsb2NhbCBwYXJ0IG9mIHRoZSBPdXRsb29rLmNvbSBhZGRyZXNzIChrbm93biB0byBiZSBjYXNlLWluc2Vuc2l0aXZlKVxuICBvdXRsb29rZG90Y29tX2xvd2VyY2FzZTogdHJ1ZSxcbiAgLy8gUmVtb3ZlcyB0aGUgc3ViYWRkcmVzcyAoZS5nLiBcIitmb29cIikgZnJvbSB0aGUgZW1haWwgYWRkcmVzc1xuICBvdXRsb29rZG90Y29tX3JlbW92ZV9zdWJhZGRyZXNzOiB0cnVlLFxuICAvLyBUaGUgZm9sbG93aW5nIGNvbnZlcnNpb25zIGFyZSBzcGVjaWZpYyB0byBZYWhvb1xuICAvLyBMb3dlcmNhc2VzIHRoZSBsb2NhbCBwYXJ0IG9mIHRoZSBZYWhvbyBhZGRyZXNzIChrbm93biB0byBiZSBjYXNlLWluc2Vuc2l0aXZlKVxuICB5YWhvb19sb3dlcmNhc2U6IHRydWUsXG4gIC8vIFJlbW92ZXMgdGhlIHN1YmFkZHJlc3MgKGUuZy4gXCItZm9vXCIpIGZyb20gdGhlIGVtYWlsIGFkZHJlc3NcbiAgeWFob29fcmVtb3ZlX3N1YmFkZHJlc3M6IHRydWUsXG4gIC8vIFRoZSBmb2xsb3dpbmcgY29udmVyc2lvbnMgYXJlIHNwZWNpZmljIHRvIFlhbmRleFxuICAvLyBMb3dlcmNhc2VzIHRoZSBsb2NhbCBwYXJ0IG9mIHRoZSBZYW5kZXggYWRkcmVzcyAoa25vd24gdG8gYmUgY2FzZS1pbnNlbnNpdGl2ZSlcbiAgeWFuZGV4X2xvd2VyY2FzZTogdHJ1ZSxcbiAgLy8gVGhlIGZvbGxvd2luZyBjb252ZXJzaW9ucyBhcmUgc3BlY2lmaWMgdG8gaUNsb3VkXG4gIC8vIExvd2VyY2FzZXMgdGhlIGxvY2FsIHBhcnQgb2YgdGhlIGlDbG91ZCBhZGRyZXNzIChrbm93biB0byBiZSBjYXNlLWluc2Vuc2l0aXZlKVxuICBpY2xvdWRfbG93ZXJjYXNlOiB0cnVlLFxuICAvLyBSZW1vdmVzIHRoZSBzdWJhZGRyZXNzIChlLmcuIFwiK2Zvb1wiKSBmcm9tIHRoZSBlbWFpbCBhZGRyZXNzXG4gIGljbG91ZF9yZW1vdmVfc3ViYWRkcmVzczogdHJ1ZVxufTtcblxuLy8gTGlzdCBvZiBkb21haW5zIHVzZWQgYnkgaUNsb3VkXG52YXIgaWNsb3VkX2RvbWFpbnMgPSBbJ2ljbG91ZC5jb20nLCAnbWUuY29tJ107XG5cbi8vIExpc3Qgb2YgZG9tYWlucyB1c2VkIGJ5IE91dGxvb2suY29tIGFuZCBpdHMgcHJlZGVjZXNzb3JzXG4vLyBUaGlzIGxpc3QgaXMgbGlrZWx5IGluY29tcGxldGUuXG4vLyBQYXJ0aWFsIHJlZmVyZW5jZTpcbi8vIGh0dHBzOi8vYmxvZ3Mub2ZmaWNlLmNvbS8yMDEzLzA0LzE3L291dGxvb2stY29tLWdldHMtdHdvLXN0ZXAtdmVyaWZpY2F0aW9uLXNpZ24taW4tYnktYWxpYXMtYW5kLW5ldy1pbnRlcm5hdGlvbmFsLWRvbWFpbnMvXG52YXIgb3V0bG9va2RvdGNvbV9kb21haW5zID0gWydob3RtYWlsLmF0JywgJ2hvdG1haWwuYmUnLCAnaG90bWFpbC5jYScsICdob3RtYWlsLmNsJywgJ2hvdG1haWwuY28uaWwnLCAnaG90bWFpbC5jby5ueicsICdob3RtYWlsLmNvLnRoJywgJ2hvdG1haWwuY28udWsnLCAnaG90bWFpbC5jb20nLCAnaG90bWFpbC5jb20uYXInLCAnaG90bWFpbC5jb20uYXUnLCAnaG90bWFpbC5jb20uYnInLCAnaG90bWFpbC5jb20uZ3InLCAnaG90bWFpbC5jb20ubXgnLCAnaG90bWFpbC5jb20ucGUnLCAnaG90bWFpbC5jb20udHInLCAnaG90bWFpbC5jb20udm4nLCAnaG90bWFpbC5jeicsICdob3RtYWlsLmRlJywgJ2hvdG1haWwuZGsnLCAnaG90bWFpbC5lcycsICdob3RtYWlsLmZyJywgJ2hvdG1haWwuaHUnLCAnaG90bWFpbC5pZCcsICdob3RtYWlsLmllJywgJ2hvdG1haWwuaW4nLCAnaG90bWFpbC5pdCcsICdob3RtYWlsLmpwJywgJ2hvdG1haWwua3InLCAnaG90bWFpbC5sdicsICdob3RtYWlsLm15JywgJ2hvdG1haWwucGgnLCAnaG90bWFpbC5wdCcsICdob3RtYWlsLnNhJywgJ2hvdG1haWwuc2cnLCAnaG90bWFpbC5zaycsICdsaXZlLmJlJywgJ2xpdmUuY28udWsnLCAnbGl2ZS5jb20nLCAnbGl2ZS5jb20uYXInLCAnbGl2ZS5jb20ubXgnLCAnbGl2ZS5kZScsICdsaXZlLmVzJywgJ2xpdmUuZXUnLCAnbGl2ZS5mcicsICdsaXZlLml0JywgJ2xpdmUubmwnLCAnbXNuLmNvbScsICdvdXRsb29rLmF0JywgJ291dGxvb2suYmUnLCAnb3V0bG9vay5jbCcsICdvdXRsb29rLmNvLmlsJywgJ291dGxvb2suY28ubnonLCAnb3V0bG9vay5jby50aCcsICdvdXRsb29rLmNvbScsICdvdXRsb29rLmNvbS5hcicsICdvdXRsb29rLmNvbS5hdScsICdvdXRsb29rLmNvbS5icicsICdvdXRsb29rLmNvbS5ncicsICdvdXRsb29rLmNvbS5wZScsICdvdXRsb29rLmNvbS50cicsICdvdXRsb29rLmNvbS52bicsICdvdXRsb29rLmN6JywgJ291dGxvb2suZGUnLCAnb3V0bG9vay5kaycsICdvdXRsb29rLmVzJywgJ291dGxvb2suZnInLCAnb3V0bG9vay5odScsICdvdXRsb29rLmlkJywgJ291dGxvb2suaWUnLCAnb3V0bG9vay5pbicsICdvdXRsb29rLml0JywgJ291dGxvb2suanAnLCAnb3V0bG9vay5rcicsICdvdXRsb29rLmx2JywgJ291dGxvb2subXknLCAnb3V0bG9vay5waCcsICdvdXRsb29rLnB0JywgJ291dGxvb2suc2EnLCAnb3V0bG9vay5zZycsICdvdXRsb29rLnNrJywgJ3Bhc3Nwb3J0LmNvbSddO1xuXG4vLyBMaXN0IG9mIGRvbWFpbnMgdXNlZCBieSBZYWhvbyBNYWlsXG4vLyBUaGlzIGxpc3QgaXMgbGlrZWx5IGluY29tcGxldGVcbnZhciB5YWhvb19kb21haW5zID0gWydyb2NrZXRtYWlsLmNvbScsICd5YWhvby5jYScsICd5YWhvby5jby51aycsICd5YWhvby5jb20nLCAneWFob28uZGUnLCAneWFob28uZnInLCAneWFob28uaW4nLCAneWFob28uaXQnLCAneW1haWwuY29tJ107XG5cbi8vIExpc3Qgb2YgZG9tYWlucyB1c2VkIGJ5IHlhbmRleC5ydVxudmFyIHlhbmRleF9kb21haW5zID0gWyd5YW5kZXgucnUnLCAneWFuZGV4LnVhJywgJ3lhbmRleC5reicsICd5YW5kZXguY29tJywgJ3lhbmRleC5ieScsICd5YS5ydSddO1xuXG4vLyByZXBsYWNlIHNpbmdsZSBkb3RzLCBidXQgbm90IG11bHRpcGxlIGNvbnNlY3V0aXZlIGRvdHNcbmZ1bmN0aW9uIGRvdHNSZXBsYWNlcihtYXRjaCkge1xuICBpZiAobWF0Y2gubGVuZ3RoID4gMSkge1xuICAgIHJldHVybi
15BtYXRjaDtcbiAgfVxuICByZXR1cm4gJyc7XG59XG5mdW5jdGlvbiBub3JtYWxpemVFbWFpbChlbWFpbCwgb3B0aW9ucykge1xuICBvcHRpb25zID0gKDAsIF9tZXJnZS5kZWZhdWx0KShvcHRpb25zLCBkZWZhdWx0X25vcm1hbGl6ZV9lbWFpbF9vcHRpb25zKTtcbiAgdmFyIHJhd19wYXJ0cyA9IGVtYWlsLnNwbGl0KCdAJyk7XG4gIHZhciBkb21haW4gPSByYXdfcGFydHMucG9wKCk7XG4gIHZhciB1c2VyID0gcmF3X3BhcnRzLmpvaW4oJ0AnKTtcbiAgdmFyIHBhcnRzID0gW3VzZXIsIGRvbWFpbl07XG5cbiAgLy8gVGhlIGRvbWFpbiBpcyBhbHdheXMgbG93ZXJjYXNlZCwgYXMgaXQncyBjYXNlLWluc2Vuc2l0aXZlIHBlciBSRkMgMTAzNVxuICBwYXJ0c1sxXSA9IHBhcnRzWzFdLnRvTG93ZXJDYXNlKCk7XG4gIGlmIChwYXJ0c1sxXSA9PT0gJ2dtYWlsLmNvbScgfHwgcGFydHNbMV0gPT09ICdnb29nbGVtYWlsLmNvbScpIHtcbiAgICAvLyBBZGRyZXNzIGlzIEdNYWlsXG4gICAgaWYgKG9wdGlvbnMuZ21haWxfcmVtb3ZlX3N1YmFkZHJlc3MpIHtcbiAgICAgIHBhcnRzWzBdID0gcGFydHNbMF0uc3BsaXQoJysnKVswXTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuZ21haWxfcmVtb3ZlX2RvdHMpIHtcbiAgICAgIC8vIHRoaXMgZG9lcyBub3QgcmVwbGFjZSBjb25zZWN1dGl2ZSBkb3RzIGxpa2UgZXhhbXBsZS4uZW1haWxAZ21haWwuY29tXG4gICAgICBwYXJ0c1swXSA9IHBhcnRzWzBdLnJlcGxhY2UoL1xcLisvZywgZG90c1JlcGxhY2VyKTtcbiAgICB9XG4gICAgaWYgKCFwYXJ0c1swXS5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuYWxsX2xvd2VyY2FzZSB8fCBvcHRpb25zLmdtYWlsX2xvd2VyY2FzZSkge1xuICAgICAgcGFydHNbMF0gPSBwYXJ0c1swXS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cbiAgICBwYXJ0c1sxXSA9IG9wdGlvbnMuZ21haWxfY29udmVydF9nb29nbGVtYWlsZG90Y29tID8gJ2dtYWlsLmNvbScgOiBwYXJ0c1sxXTtcbiAgfSBlbHNlIGlmIChpY2xvdWRfZG9tYWlucy5pbmRleE9mKHBhcnRzWzFdKSA+PSAwKSB7XG4gICAgLy8gQWRkcmVzcyBpcyBpQ2xvdWRcbiAgICBpZiAob3B0aW9ucy5pY2xvdWRfcmVtb3ZlX3N1YmFkZHJlc3MpIHtcbiAgICAgIHBhcnRzWzBdID0gcGFydHNbMF0uc3BsaXQoJysnKVswXTtcbiAgICB9XG4gICAgaWYgKCFwYXJ0c1swXS5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuYWxsX2xvd2VyY2FzZSB8fCBvcHRpb25zLmljbG91ZF9sb3dlcmNhc2UpIHtcbiAgICAgIHBhcnRzWzBdID0gcGFydHNbMF0udG9Mb3dlckNhc2UoKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAob3V0bG9va2RvdGNvbV9kb21haW5zLmluZGV4T2YocGFydHNbMV0pID49IDApIHtcbiAgICAvLyBBZGRyZXNzIGlzIE91dGxvb2suY29tXG4gICAgaWYgKG9wdGlvbnMub3V0bG9va2RvdGNvbV9yZW1vdmVfc3ViYWRkcmVzcykge1xuICAgICAgcGFydHNbMF0gPSBwYXJ0c1swXS5zcGxpdCgnKycpWzBdO1xuICAgIH1cbiAgICBpZiAoIXBhcnRzWzBdLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5hbGxfbG93ZXJjYXNlIHx8IG9wdGlvbnMub3V0bG9va2RvdGNvbV9sb3dlcmNhc2UpIHtcbiAgICAgIHBhcnRzWzBdID0gcGFydHNbMF0udG9Mb3dlckNhc2UoKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoeWFob29fZG9tYWlucy5pbmRleE9mKHBhcnRzWzFdKSA+PSAwKSB7XG4gICAgLy8gQWRkcmVzcyBpcyBZYWhvb1xuICAgIGlmIChvcHRpb25zLnlhaG9vX3JlbW92ZV9zdWJhZGRyZXNzKSB7XG4gICAgICB2Y
15XIgY29tcG9uZW50cyA9IHBhcnRzWzBdLnNwbGl0KCctJyk7XG4gICAgICBwYXJ0c1swXSA9IGNvbXBvbmVudHMubGVuZ3RoID4gMSA/IGNvbXBvbmVudHMuc2xpY2UoMCwgLTEpLmpvaW4oJy0nKSA6IGNvbXBvbmVudHNbMF07XG4gICAgfVxuICAgIGlmICghcGFydHNbMF0ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmFsbF9sb3dlcmNhc2UgfHwgb3B0aW9ucy55YWhvb19sb3dlcmNhc2UpIHtcbiAgICAgIHBhcnRzWzBdID0gcGFydHNbMF0udG9Mb3dlckNhc2UoKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoeWFuZGV4X2RvbWFpbnMuaW5kZXhPZihwYXJ0c1sxXSkgPj0gMCkge1xuICAgIGlmIChvcHRpb25zLmFsbF9sb3dlcmNhc2UgfHwgb3B0aW9ucy55YW5kZXhfbG93ZXJjYXNlKSB7XG4gICAgICBwYXJ0c1swXSA9IHBhcnRzWzBdLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuICAgIHBhcnRzWzFdID0gJ3lhbmRleC5ydSc7IC8vIGFsbCB5YW5kZXggZG9tYWlucyBhcmUgZXF1YWwsIDFzdCBwcmVmZXJyZWRcbiAgfSBlbHNlIGlmIChvcHRpb25zLmFsbF9sb3dlcmNhc2UpIHtcbiAgICAvLyBBbnkgb3RoZXIgYWRkcmVzc1xuICAgIHBhcnRzWzBdID0gcGFydHNbMF0udG9Mb3dlckNhc2UoKTtcbiAgfVxuICByZXR1cm4gcGFydHMuam9pbignQCcpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG5tb2R1bGUuZXhwb3J0cy5kZWZhdWx0ID0gZXhwb3J0cy5kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZh
15dWx0ID0gaXNTbHVnO1xudmFyIF9hc3NlcnRTdHJpbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWwvYXNzZXJ0U3RyaW5nXCIpKTtcbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG52YXIgY2hhcnNldFJlZ2V4ID0gL15bXlxccy1fXSg/IS4qP1stX117Mix9KVthLXowLTktXFxcXF1bXlxcc10qW14tX1xcc10kLztcbmZ1bmN0aW9uIGlzU2x1ZyhzdHIpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcuZGVmYXVsdCkoc3RyKTtcbiAgcmV0dXJuIGNoYXJzZXRSZWdleC50ZXN0KHN0cik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBleHBvcnRzLmRlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc0xpY2Vuc2VQbGF0ZTtcbnZhciBfYXNzZXJ0U3RyaW5nID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlsL2Fzc2VydFN0cmluZ1wiKSk7XG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxudmFyIHZhbGlkYXRvcnMgPSB7XG4gICdjcy1DWic6IGZ1bmN0aW9uIGNzQ1ooc3RyKSB7XG4gICAgcmV0dXJuIC9eKChbQUJDREVGSElKS0xNTlBSU1RVVlhZWl18WzAtOV0pLT8pezUsOH0kLy50ZXN0KHN0cik7XG4gIH0sXG4gICdkZS1ERSc6IGZ1bmN0aW9uIGRlREUoc3RyKSB7XG4gICAgcmV0dXJuIC9eKChBfEFBfEFCfEFDfEFFfEFIfEFLfEFNfEFOfEHDlnxBUHxBU3xBVHxBVXxBV3xBWnxCfEJBfEJCfEJDfEJFfEJGfEJIfEJJfEJLfEJMfEJNfEJOfEJPfELDlnxCU3xCVHxCWnxDfENBfENCfENFfENPfENSfENXfER8REF8RER8REV8REh8REl8REx8RE18RE58RE98RFV8RFd8RFp8RXxFQXxFQnxFRHxFRXxFRnxFR3xFSHxFSXxFTHxFTXxFTnxFUnxFU3xFVXxFV3xGfEZCfEZEfEZGfEZHfEZJfEZMfEZOfEZPfEZSfEZTfEZUfEbDnHxGV3xGWnxHfEdBfEdDfEdEfEdFfEdGfEdHfEdJfEdLfEdMfEdNfEdOfEfDlnxHUHxHUnxHU3xHVHxHw5x8R1Z8R1d8R1p8SHxIQXxIQnxIQ3xIRHxIRXxIRnxIR3xISHxISXxIS3xITHxITXxITnxIT3xIUHxIUnxIU3xIVXxIVnxIWHxIWXxIWnxJS3xJTHxJTnxJWnxKfEpFfEpMfEt8S0F8S0J8S0N8S0V8S0Z8S0d8S0h8S0l8S0t8S0x8S018S058S098S1J8S1N8S1R8S1V8S1d8S1l8THxMQXxMQnxMQ3xMRHxMRnxMR3xMSHxMSXxMTHxMTXxMTnxMw5Z8TFB8TFJ8TFV8TXxNQXxNQnxNQ3xNRHxNRXxNR3xNSHxNSXxNS3xNTHxNTXxNTnxNT3xNUXxNUnxNU3xNw5x8TVd8TVl8TVp8TnxOQnxORHxORXxORnxOSHxOSXxOS3xOTXxOw5Z8TlB8TlJ8TlR8TlV8Tld8Tll8Tlp8T0F8T0J8T0N8T0R8T0V8T0Z8T0d8T0h8T0t8T0x8T1B8T1N8T1p8UHxQQXxQQnxQRXxQRnxQSXxQTHxQTXxQTnxQUnxQU3xQV3xQWnxSfFJBfFJDfFJEfFJFfFJHfFJIfFJJfFJMfFJNfFJOfFJPfFJQfFJTfFJUfFJVfFJWfFJXfFJafFN8U0J8U0N8U0V8U0d8U0l8U0t8U0x8
15U018U058U098U1B8U1J8U1R8U1V8U1d8U1l8U1p8VEV8VEZ8VEd8VE98VFB8VFJ8VFN8VFR8VMOcfMOcQnxVRXxVSHxVTHxVTXxVTnxWfFZCfFZHfFZLfFZSfFZTfFd8V0F8V0J8V0V8V0Z8V0l8V0t8V0x8V018V058V098V1J8V1N8V1R8V8OcfFdXfFdafFp8WkV8Wkl8WlB8WlJ8Wld8WlopWy0gXT9bQS1aXXsxLDJ9Wy0gXT9cXGR7MSw0fXwoQUJHfEFCSXxBSUJ8QUlDfEFMRnxBTFp8QU5BfEFOR3xBTkt8QVBEfEFSTnxBUlR8QVNMfEFTWnxBVVJ8QVpFfEJBRHxCQVJ8QkJHfEJDSHxCRUR8QkVSfEJHRHxCR0x8QklEfEJJTnxCSVJ8QklUfEJJV3xCS1N8QkxCfEJMS3xCTkF8Qk9HfEJPSHxCT1J8Qk9UfEJSQXxCUkJ8QlJHfEJSS3xCUkx8QlJWfEJTQnxCU0t8QlRGfELDnER8QlVMfELDnFJ8QsOcU3xCw5xafENBU3xDSEF8Q0xQfENMWnxDT0N8Q09FfENVWHxEQUh8REFOfERBVXxEQlJ8REVHfERFTHxER0Z8RElMfERJTnxESVp8REtCfERMR3xET058RFVEfETDnFd8RUJFfEVCTnxFQlN8RUNLfEVJQ3xFSUx8RUlOfEVJU3xFTUR8RU1TfEVSQnxFUkh8RVJLfEVSWnxFU0J8RVNXfEZEQnxGRFN8RkVVfEZGQnxGS0J8RkzDlnxGT1J8RlJHfEZSSXxGUld8RlRMfEbDnFN8R0FOfEdBUHxHREJ8R0VMfEdFT3xHRVJ8R0hBfEdIQ3xHTEF8R01OfEdOVHxHT0F8R09IfEdSQXxHUkh8R1JJfEdSTXxHUlp8R1RIfEdVQnxHVU58R1ZNfEhBQnxIQUx8SEFNfEhBU3xIQk58SEJTfEhDSHxIREh8SERMfEhFQnxIRUZ8SEVJfEhFUnxIRVR8SEdOfEhHV3xISE18SElHfEhJUHxITcOcfEhPR3xIT0h8SE9MfEhPTXxIT1J8SMOWU3xIT1R8SFJPfEhTS3xIU1R8SFZMfEhXSXxJR0J8SUxMfErDnEx8S0VIfEtFTHxLRU18S0lCfEtMRXxLTFp8S8OWTnxLw5ZUfEvDllp8S1JVfEvDnE58S1VTfEtZRnxMQU58TEFVfExCU3xMQlp8TERLfExEU3xMRU98TEVSfExFVnxMSUJ8TElGfExJUHxMw5ZCfExPU3xMUk98TFNafEzDnE58TFVQfExXTHxNQUJ8TUFJfE1BS3xNQUx8TUVEfE1FR3xNRUl8TUVLfE1FTHxNRVJ8TUVUfE1HSHxNR058TUhMfE1JTHxNS0t8TU9EfE1PTHxNT058TU9TfE1TRXxNU0h8TVNQfE1TVHxNVEt8TVRMfE3DnEJ8TcOcUnxNWUt8TVpHfE5BQnxOQUl8TkFVfE5ESHxORUF8TkVCfE5FQ3xORU58TkVTfE5FV3xOTUJ8Tk1TfE5PSHxOT0x8Tk9NfE5PUnxOVlB8TldNfE9BTHxPQkJ8T0JHfE9DSHxPSEF8w5ZIUnxPSFZ8T0hafE9QUnxPU0x8T1ZJfE9WTHxPVlB8UEFGfFB
15BTnxQQVJ8UENIfFBFR3xQSVJ8UEzDlnxQUsOcfFFGVHxRTEJ8UkRHfFJFR3xSRUh8UkVJfFJJRHxSSUV8Uk9EfFJPRnxST0t8Uk9MfFJPU3xST1R8Uk9XfFJTTHxSw5xEfFLDnEd8U0FCfFNBRHxTQU58U0FXfFNCR3xTQkt8U0NafFNESHxTREx8U0RUfFNFQnxTRUV8U0VGfFNFTHxTRkJ8U0ZUfFNHSHxTSEF8U0hHfFNIS3xTSEx8U0lHfFNJTXxTTEV8U0xGfFNMS3xTTE58U0xTfFNMw5x8U0xafFNNw5x8U09CfFNPR3xTT0t8U8OWTXxTT058U1BCfFNQTnxTUkJ8U1JPfFNUQXxTVEJ8U1REfFNURXxTVEx8U1VMfFPDnFd8U1dBfFNaQnxUQkJ8VERPfFRFVHxUSVJ8VMOWTHxUVVR8VUVNfFVFUnxVRkZ8VVNJfFZBSXxWRUN8VkVSfFZJQnxWSUV8VklUfFZPSHxXQUZ8V0FLfFdBTnxXQVJ8V0FUfFdCU3xXREF8V0VMfFdFTnxXRVJ8V0VTfFdIVnxXSUx8V0lTfFdJVHxXSVp8V0xHfFdNU3xXTkR8V09CfFdPSHxXT0x8V09SfFdPU3xXUk58V1NGfFdTVHxXU1d8V1RMfFdUTXxXVUd8V8OcTXxXVU58V1VSfFdaTHxaRUx8WklHKVstIF0/KChbQS1aXVstIF0/XFxkezEsNH0pfChbQS1aXXsyfVstIF0/XFxkezEsM30pKSlbLSBdPyhFfEgpPyQvLnRlc3Qoc3RyKTtcbiAgfSxcbiAgJ2RlLUxJJzogZnVuY3Rpb24gZGVMSShzdHIpIHtcbiAgICByZXR1cm4gL15GTFstIF0/XFxkezEsNX1bVVpdPyQvLnRlc3Qoc3RyKTtcbiAgfSxcbiAgJ2VuLUlOJzogZnVuY3Rpb24gZW5JTihzdHIpIHtcbiAgICByZXR1cm4gL15bQS1aXXsyfVsgLV0/WzAtOV17MSwyfSg/OlsgLV0/W0EtWl0pKD86WyAtXT9bQS1aXSopP1sgLV0/WzAtOV17NH0kLy50ZXN0KHN0cik7XG4gIH0sXG4gICdlcy1BUic6IGZ1bmN0aW9uIGVzQVIoc3RyKSB7XG4gICAgcmV0dXJuIC9eKChbQS1aXXsyfSA/WzAtOV17M30gP1tBLVpdezJ9KXwoW0EtWl17M30gP1swLTldezN9KSkkLy50ZXN0KHN0cik7XG4gIH0sXG4gICdmaS1GSSc6IGZ1bmN0aW9uIGZpRkkoc3RyKSB7XG4gICAgcmV0dXJuIC9eKD89Lns0LDd9KSgoW0EtWl17MSwzfXxbMC05XXsxLDN9KVtcXHMtXT8oW0EtWl17MSwzfXxbMC05XXsxLDV9KSkkLy50ZXN0KHN0cik7XG4gIH0sXG4gICdodS1IVSc6IGZ1bmN0aW9uIGh1SFUoc3RyKSB7XG4gICAgcmV0dXJuIC9eKCgoKD8hQUFBKSgoW0EtTlBSU1RWWldYWV17MX0pKFtBLVBSLVpdezF9KShbQS1ISi1OUFItWl0pKXwoQVtBQkNdSSl8QVtBQkNdT3xBW0EtV11RfEJQSXxCUE98VUNPfFVET3xYQU8pLSg/ITAwMClcXGR7M30pfChNXFxkezZ9KXwoKENLfERUfENEfEhDfEhbQUJFRklLTE1OUFJTVFZYXXxNQXxPVHxSW0EtWl0pIFxcZHsyfS1cXGR7Mn0pfChDRCBcXGR7M30tXFxkezN9KXwoQy0oQ3xYKSBcXGR7NH0pfChYLShBfEJ8QykgXFxkezR9KXwoKFtFUFZaXS1cXGR7NX0pKXwoUyBBW0EtWl17Mn0gXFxkezJ9KXwoU1AgXFxkezJ9LVxcZHsyfSkpJC8udGVzdChzdHIpO1xuICB9LFxuICAncHQtQlInOiBmdW5jdGlvbiBwdEJSKHN0cikge1xuICAgIHJldHVybiAvXltBLVpdezN9WyAtXT9bMC05XVtBLVpdWzAtOV17Mn18W0EtWl17M31bIC1dP1swLTldezR9JC8udGVzdChzdHIpO1xuICB9LFxuICAncHQtUFQnOiBmdW5jdGlvbiBwdFBUKHN0cikge1xuICAgIHJldHVybiAvXihbQS1aXXsyfXxbMC05XXsyfSlbIC3Ct10/KFtBLVpdezJ9fFswLTldezJ9KVsgLcK3XT8oW0EtWl17Mn18WzAtOV17Mn0pJC8udGVzdChzdHIpO1xuICB9LFxuICAnc3EtQUwnOiBmdW5jdGlvbiBzcUFMKHN0cikge1xuICAgIHJldHVybiAvXltBLVpdezJ9Wy0gXT8oKFxcZHszfVstIF0/KChbQS1aXXsyfSl8VCkpfChSWy0gXT9cXGR7M30pKSQvLnRlc3Qoc3RyKTtcbiAgfSxcbiAgJ3N2LVNFJzogZnVuY3Rpb24gc3ZTRShzdHIpIHtcbiAgICByZXR1cm4gL15bQS1ISi1QUi1VVy1aXXszfSA/W1xcZF17Mn1bQS1ISi1QUi1VVy1aMS05XSR8KF5bQS1aw4XDhMOWIF17Miw3fSQpLy50ZXN0KHN0ci50cmltKCkpO1xuICB9LFxuICAnZW4tUEsnOiBmdW5jdGlvbiBlblBLKHN0cikge1xuICAgIHJldHVybiAvKF5bQS1aXXsyfSgoXFxzfC0pezAsMX0pWzAtOV17Myw0fSgoXFxzfC0pWzAtOV17Mn0pezAsMX0kKXwoXltBLVpdezN9KChcXHN8LSl7MCwxfSlbMC05XXszLDR9KChcXHN8LSlbMC05XXsyfSl7MCwxfSQpfCheW0EtWl17NH0oKFxcc3wtKXswLDF9KVswLTldezMsNH0oKFxcc3wtKVswLTldezJ9KXswLDF9JCl8KF5bQS1aXSgoXFxzfC0pezAsMX0pWzAtOV17NH0oKFxcc3wtKVswLTldezJ9KXswLDF9JCkvLnRlc3Qoc3RyLnRyaW0oKSk7XG4gIH1cbn07XG5mdW5jdGlvbiBpc0xpY2Vuc2VQbGF0ZShzdHIsIGxvY2FsZSkge1xuICAoMCwgX2Fzc2VydFN0cmluZy5kZWZh
15dWx0KShzdHIpO1xuICBpZiAobG9jYWxlIGluIHZhbGlkYXRvcnMpIHtcbiAgICByZXR1cm4gdmFsaWRhdG9yc1tsb2NhbGVdKHN0cik7XG4gIH0gZWxzZSBpZiAobG9jYWxlID09PSAnYW55Jykge1xuICAgIGZvciAodmFyIGtleSBpbiB2YWxpZGF0b3JzKSB7XG4gICAgICAvKiBlc2xpbnQgZ3VhcmQtZm9yLWluOiAwICovXG4gICAgICB2YXIgdmFsaWRhdG9yID0gdmFsaWRhdG9yc1trZXldO1xuICAgICAgaWYgKHZhbGlkYXRvcihzdHIpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBsb2NhbGUgJ1wiLmNvbmNhdChsb2NhbGUsIFwiJ1wiKSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBleHBvcnRzLmRlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSBpc1N0cm9uZ1Bhc3N3b3JkO1xudmFyIF9tZXJnZSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vdXRpbC9tZXJnZVwiKSk7XG52YXIgX2Fzc2VydFN0cmluZyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vdXRpbC9hc3NlcnRTdHJpbmdcIikpO1xuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cbnZhciB1cHBlckNhc2VSZWdleCA9IC9eW0EtWl0kLztcbnZhciBsb3dlckNhc2VSZWdleCA9IC9eW2Etel0kLztcbnZhciBudW1iZXJSZWdleCA9IC9eWzAtOV0kLztcbnZhciBzeW1ib2xSZWdleCA9IC9eWy0jISRAwqMlXiYqKClfK3x+PWB7fVxcW1xcXTpcIjsnPD4/LC5cXC9cXFxcIF0kLztcbnZhciBkZWZhdWx0T3B0aW9ucyA9IHtcbiAgbWluTGVuZ3RoOiA4LFxuICBtaW5Mb3dlcmNhc2U6IDEsXG4gIG1pblVwcGVyY2FzZTogMSxcbiAgbWluTnVtYmVyczogMSxcbiAgbWluU3ltYm9sczogMSxcbiAgcmV0dXJuU2NvcmU6IGZhbHNlLFxuICBwb2ludHNQZXJVbmlxdWU6IDEsXG4gIHBvaW50c1BlclJlcGVhdDogMC41LFxuICBwb2ludHNGb3JDb250YWluaW5nTG93ZXI6IDEwLFxuICBwb2ludHNGb3JDb250YWluaW5nVXBwZXI6IDEwLFxuICBwb2ludHNGb3JDb250YWluaW5nTnVtYmVyOiAxMCxcbiAgcG9pbnRzRm9yQ29udGFpbmluZ1N5bWJvbDogMTBcbn07XG5cbi8qIENvdW50cyBudW1iZXIgb2Ygb2NjdXJyZW5jZXMgb2YgZWFjaCBjaGFyIGluIGEgc3RyaW5nXG4gKiBjb3VsZCBiZSBtb3ZlZCB0byB1dGlsLyA/XG4qL1xuZnVuY3Rpb24gY291bnRDaGFycyhzdHIpIHtcbiAgdmFyIHJlc3VsdCA9IHt9O1xuICBBcnJheS5mcm9tKHN0cikuZm9yRWFjaChmdW5jdGlvbiAoY2hhcikge1xuICAgIHZhciBjdXJWYWwgPSByZXN1bHRbY2hhcl07XG4gICAgaWYgKGN1clZhbCkge1xuICAgICAgcmVzdWx0W2NoYXJdICs9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdFtjaGFyXSA9IDE7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyogUmV0dXJuIGluZm9ybWF0aW9uIGFib3V0IGEgcGFzc3dvcmQgKi9cbmZ1bmN0aW9uIGFuYWx5emVQYXNzd29yZChwYXNzd29yZCkge1xuICB2YXIgY2hhck1hcCA9IGNvdW50Q2hhcnMocGFzc3dvcmQpO1xuICB2YXIgYW5hbHlzaXMgPSB7XG4gICAgbGVuZ3RoOiBwYXNzd29yZC5sZW5ndGgsXG4gICAgdW5pcXVlQ2hhcnM6IE9iamVjdC5rZXlzKGNoYXJNYXApLmxlbmd0aCxcbiAgICB1cHBlcmNhc2VDb3VudDogMCxcbiAgICBsb3dlcmNhc2VDb3VudDogMCxcbiAgICBudW1iZXJDb3VudDogMCxcbiAgICBzeW1ib2xDb3VudDogMFxuICB9O1xuICBPYmplY3Qua2V5cyhjaGFyTWFwKS5mb3JFYWNoKGZ1bmN0aW9uIChjaGFyKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodXBwZXJDYXNlUmVnZXgudGVzdChjaGFyKSkge1xuICAgICAgYW5hbHlzaXMudXBwZXJjYXNlQ291bnQgKz0gY2hhck1hcFtjaGFyXTtcbiAgICB9IGVsc2UgaWYgKGxvd2VyQ2FzZVJlZ2V4LnRlc3QoY2hhcikpIHtcbiAgICAgIGFuYWx5c2lzLmxvd2VyY2FzZUNvdW50ICs9IGNoYXJNYXBbY2hhcl07XG4gICAgfSBlbHNlIGlmIChudW1iZXJSZWdleC50ZXN0KGNoYXIpKSB7XG4gICAgICBhbmFseXNpcy5udW1iZXJDb3VudCArPSBjaGFyTWFwW2NoYXJdO1xuICAgIH0gZWxzZSBpZiAoc3ltYm9sUmVnZXgudGVzdChjaGFyKSkge1xuICAgICAgYW5hbHlzaXMuc3ltYm9sQ291bnQgKz0gY2hhck1hcFtjaGFyXTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gYW5hbHlzaXM7XG59XG5mdW5jdGlvbiBzY29yZVBhc3N3b3JkKGFuYWx5c2lzLCBzY29yaW5nT3B0aW9ucykge1xuICB2YXIgcG9pbnRzID0gMDtcbiAgcG9pbnRzICs9IGFuYWx5c2lzLnVuaXF1ZUNoYXJzICogc2NvcmluZ09wdGlvbnMucG9pbnRzUGVyVW5pcXVlO1xuICBwb2ludHMgKz0gKGFuYWx5c2lzLmxlbmd0aCAtIGFuYWx5c2lzLnVuaXF1ZUNoYXJzKSAqIHNjb3JpbmdPcHRpb25zLnBvaW50c1BlclJlcGVhdDtcbiAgaWYgKGFuYWx5c2lzLmxvd2VyY2FzZUNvdW50ID4gMCkge1xuICAgIHBvaW50cyArPSBzY29yaW5nT3B0aW9ucy5wb2ludHNGb3JDb250YWluaW5nTG93ZXI7XG4gIH1cbiAgaWYgKGFuYWx5c2lzLnVwcGVyY2FzZUNvdW50ID4gMCkge1xuICAgIHBvaW50cyArPSBzY29yaW5nT3B0aW9ucy5wb2ludHNGb3JDb250YWluaW5nVXBwZXI7XG4gIH1cbiAgaWYgKGFuYWx5c2lzLm51bWJlckNvdW50ID4gMCkge1xuICAgIHBvaW50cyArPSBzY29yaW5nT3B0aW9ucy5wb2ludHNGb3JDb250YWluaW5nTnVtYmVyO1xuICB9XG4gIGlmIChhbmFseXNpcy5zeW1ib2xDb3VudCA+IDApIHtcbiAgICBwb2ludHMgKz0gc2NvcmluZ09wdGlvbnMucG9pbnRzRm9yQ29udGFpbmluZ1N5bWJvbDtcbiAgfVxuICByZXR1cm4gcG9pbnRzO1xufVxuZnVuY3Rpb24gaXNTdHJvbmdQYXNzd29yZChzdHIpIHtcbiAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IG51bGw7XG4gICgwLCBfYXNzZXJ0U3RyaW5nLmRlZmF1bHQpKHN0cik7XG4gIHZhciBhbmFseXNpcyA9IGFuYWx5emVQYXNzd29yZChzdHIpO1xuICBvcHRpb25zID0gKDAsIF9tZXJnZS5kZWZhdWx0KShvcHRpb25zIHx8IHt9LCBkZWZhdWx0T3B0aW9ucyk7XG4gIGlmIChvcHRpb25zLnJldHVyblNjb3JlKSB7XG4gICAgcmV0dXJuIHNjb3JlUGFzc3dvcmQoYW5hbHlzaXMsIG9wdGlvbnMpO1xuICB9XG4gI
15HJldHVybiBhbmFseXNpcy5sZW5ndGggPj0gb3B0aW9ucy5taW5MZW5ndGggJiYgYW5hbHlzaXMubG93ZXJjYXNlQ291bnQgPj0gb3B0aW9ucy5taW5Mb3dlcmNhc2UgJiYgYW5hbHlzaXMudXBwZXJjYXNlQ291bnQgPj0gb3B0aW9ucy5taW5VcHBlcmNhc2UgJiYgYW5hbHlzaXMubnVtYmVyQ291bnQgPj0gb3B0aW9ucy5taW5OdW1iZXJzICYmIGFuYWx5c2lzLnN5bWJvbENvdW50ID49IG9wdGlvbnMubWluU3ltYm9scztcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xubW9kdWxlLmV4cG9ydHMuZGVmYXVsdCA9IGV4cG9ydHMuZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxuZnVuY3Rpb24gX3R5cGVvZihvKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgcmV0dXJuIF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykgeyByZXR1cm4gdHlwZW9mIG87IH0gOiBmdW5jdGlvbiAobykgeyByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbzsgfSwgX3R5cGVvZihvKTsgfVxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IGlzVkFUO1xuZXhwb3J0cy52YXRNYXRjaGVycyA9IHZvaWQgMDtcbnZhciBfYXNzZXJ0U3RyaW5nID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlsL2Fzc2VydFN0cmluZ1wiKSk7XG52YXIgYWxnb3JpdGhtcyA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCIuL3V0aWwvYWxnb3JpdGhtc1wiKSk7XG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoZSkgeyBpZiAoXCJmdW5jdGlvblwiICE9IHR5cGVvZiBXZWFrTWFwKSByZXR1cm4gbnVsbDsgdmFyIHIgPSBuZXcgV2Vha01hcCgpLCB0ID0gbmV3IFdlYWtNYXAoKTsgcmV0dXJuIChfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUgPSBmdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoZSkgeyByZXR1cm4gZSA/IHQgOiByOyB9KShlKTsgfVxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQoZSwgcikgeyBpZiAoIXIgJiYgZSAmJiBlLl9fZXNNb2R1bGUpIHJldHVybiBlOyBpZiAobnVsbCA9PT0gZSB8fCBcIm9iamVjdFwiICE9IF90eXBlb2YoZSkgJiYgXCJmdW5jdGlvblwiICE9IHR5cGVvZiBlKSByZXR1cm4geyBkZWZhdWx0OiBlIH07IHZhciB0ID0gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKHIpOyBpZiAodCAmJiB0LmhhcyhlKSkgcmV0dXJuIHQuZ2V0KGUpOyB2YXIgbiA9IHsgX19wcm90b19fOiBudWxsIH0sIGEgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjsgZm9yICh2YXIgdSBpbiBlKSBpZiAoXCJkZWZhdWx0XCIgIT09IHUgJiYge30uaGFzT3duUHJvcGVydHkuY2FsbChlLCB1KSkgeyB2YXIgaSA9IGEgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHUpIDogbnVsbDsgaSAmJiAoaS5nZXQgfHwgaS5zZXQpID8gT2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIHUsIGkpIDogblt1XSA9IGVbdV07IH0gcmV0dXJuIG4uZGVmYXVsdCA9IGUsIHQgJiYgdC5zZXQoZSwgbiksIG47IH1cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG52YXIgQVUgPSBmdW5jdGlvbiBBVShzdHIpIHtcbiAgdmFyIG1hdGNoID0gc3RyLm1hdGNoKC9eKEFVKT8oXFxkezExfSkkLyk7XG4gIGlmICghbWF0Y2gpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLy8gQHNlZSB7QGxpbmsgaHR0cHM6Ly9hYnIuYnVzaW5lc3MuZ292LmF1L0hlbHAvQWJuRm9ybWF0fVxuICB2YXIgd2VpZ2h0cyA9IFsxMCwgMSwgMywgNSwgNywgOSwgMTEsIDEzLCAxNSwgMTcsIDE5XTtcbiAgc3RyID0gc3RyLnJlcGxhY2UoL15BVS8sICcnKTtcbiAgdmFyIEFCTiA9IChwYXJzZUludChzdHIuc2xpY2UoMCwgMSksIDEwKSAtIDEpLnRvU3RyaW5nKCkgKyBzdHIuc2xpY2UoMSk7XG4gIHZhciB0b3RhbCA9IDA7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgMTE7IGkrKykge1xuICAgIHRvdGFsICs9IHdlaWdodHNbaV0gKiBBQk4uY2hhckF0KGkpO1xuICB9XG4gIHJldHVybiB0b3RhbCAhPT0gMCAmJiB0b3RhbCAlIDg5ID09PSAwO1xufTtcbnZhciBDSCA9IGZ1bmN0aW9uIENIKHN0cikge1xuICAvLyBAc2VlIHtAbGluayBodHRwczovL3d3dy5lY2guY2gvZGUvZWNoL2VjaC0wMDk3LzUuMi4wfVxuICB2YXIgaGFzVmFsaWRDaGVja051bWJlciA9IGZ1bmN0aW9uIGhhc1ZhbGlkQ2hlY2tOdW1iZXIoZGlnaXRzKSB7XG4gICAgdmFyIGxhc3REaWdpdCA9IGRpZ2l0cy5wb3AoKTsgLy8gdXNlZCBhcyBjaGVjayBudW1iZXJcbiAgICB2YXIgd2VpZ2h0cyA9IFs1LCA0LCAzLCAyLCA3LCA2LCA1LCA0XTtcbiAgICB2YXIgY2FsY3VsYXRlZENoZWNrTnVtYmVyID0gKDExIC0gZGlnaXRzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBlbCwgaWR4KSB7XG4gICAgICByZXR1cm4gYWNjICsgZWwgKiB3ZWlnaHRzW2lkeF07XG4gICAgfSwgMCkgJSAxMSkgJSAxMTtcbiAgICByZXR1cm4gbGFzdERpZ2l0ID09PSBjYWxjdWxhdGVkQ2hlY2tOdW1iZXI7XG4gIH07XG5cbiAgLy8gQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuZXN0di5hZG1pbi5jaC9lc3R2L2RlL2hvbWUvbWVocndlcnRzdGV1ZXIvdWlkL213c3QtdWlkLW51bW1lci5odG1sfVxuICByZXR1cm4gL14oQ0hFWy0gXT8pPyhcXGR7OX18KFxcZHszfVxcLlxcZHszfVxcLlxcZHszfSl8KFxcZHszfSBcXGR7M30gXFxkezN9KSkgPyhUVkF8TVdTVHxJVkEpPyQvLnRlc3Qoc3RyKSAmJiBoYXNWYWxpZENoZWNrTnVtYmVyKHN0ci5tYXRjaCgvXFxkL2cpLm1hcChmdW5jdGlvbiAoZWwpIHtcbiAgICByZXR1cm4gK2VsO1xuICB9KSk7XG59O1xudmFyIFBUID0gZnVuY3Rpb24gUFQoc3RyKSB7XG4gIHZhciBtYXRjaCA9IHN0ci5tYXRjaCgvXihQVCk/KFxcZHs5fSkkLyk7XG4gIGlmICghbWF0Y2gpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHRpbiA9IG1hdGNoWzJdO1xuICB2YXIgY2hlY2tzdW0gPSAxMSAtIGFsZ29yaXRobXMucmV2ZXJzZU11bHRpcGx5QW5kU3VtKHRpbi5zcGxpdCgnJykuc2xpY2UoMCwgOCkubWFwKGZ1bmN0aW9uIChhKSB7XG4gICAgcmV0dXJuIHBhcnNlSW50KGEsIDEwKTtcbiAgfSksIDkpICUgMTE7XG4gIGlmIChjaGVja3N1bSA+IDkpIHtcbiAgICByZXR1cm4gcGFyc2VJbnQodGluWzhdLCAxMCkgPT09IDA7XG4gIH1cbiAgcmV0dXJuIGNoZWNrc3VtID09PSBwYXJzZUludCh0aW5bOF0sIDEwKTtcbn07XG52YXIgdmF0TWF0Y2hlcnMgPSBleHBvcnRzLnZhdE1hdGNoZXJzID0ge1xuICAvKipcclxuICAgKiBFdXJvcGVhbiBVbmlvbiBWQVQgaWRlbnRpZmljYXRpb24gbnVtYmVyc1xyXG4gICAqL1xuICBBVDogZnVuY3Rpb24gQVQoc3RyKSB7XG4gICAgcmV0dXJuIC9eKEFUKT9VXFxkezh9JC8udGVzdChzdHIpO1xuICB9LFxuICBCRTogZnVuY3Rpb24gQkUoc3RyKSB7XG4gICAgcmV0dXJuIC9eKEJFKT9cXGR7MTB9JC8udGVzdChzdHIpO1xuICB9LFxuICBCRzogZnVuY3Rpb24gQkcoc3RyKSB7XG4gICAgcmV0dXJuIC9eKEJHKT9cXGR7OSwxMH0kLy50ZXN0KHN0cik7XG4gIH0sXG4gIEhSOiBmdW5jdGlvbiBIUihzdHIpIHtcbiAgICByZXR1cm4gL14oSFIpP1xcZHsxMX0kLy50ZXN0KHN0cik7XG4gIH0sXG4gIENZOiBmdW5jdGlvbiBDWShzdHIpIHtcbiAgICByZXR1cm4gL14oQ1kpP1xcd3s5fSQvLnRlc3Qoc3RyKTtcbiAgfSxcbiAgQ1o6IGZ1bmN0aW9uIENaKHN0cikge1xuICAgIHJldHVybiAvXihDWik/XFxkezgsMTB9JC8udGVzdChzdHIpO1xuICB9LFxuICBESzogZnVuY3Rpb24gREsoc3RyKSB7XG4gICAgcmV0dXJuIC9eKERLKT9cXGR7OH0kLy50ZXN0KHN0cik7XG4gIH0sXG4gIEVFOiBmdW5jdGlvbiBFRShzdHIpIHtcbiAgICByZXR1cm4gL14oRUUpP1xcZHs5fSQvLnRlc3Qoc3RyKTtcbiAgfSxcbiAgRkk6IGZ1bmN0aW9uIEZJKHN0cikge1xuICAgIHJldHVybiAvXihGSSk/XFxkezh9JC8udGVzdChzdHIpO1xuICB9LFxuICBGUjogZnVuY3Rpb24gRlIoc3RyKSB7XG4gICAgcmV0dXJuIC9eKEZSKT9cXHd7Mn1cXGR7OX0kLy50ZXN0KHN0cik7XG4gIH0sXG4gIERFOiBmdW5jdGlvbiBERShzdHIpIHtcbiAgICByZXR1cm4gL14oREUpP1xcZHs5fSQvLnRlc3Qoc3RyKTtcbiAgfSxcbiAgRUw6IGZ1bmN0aW9uIEVMKHN0cikge1xuICAgIHJldHVybiAvXihFTCk/XFxkezl9JC8udGVzdChzdHIpO1xuICB9LFxuICBIVTogZnVuY3Rpb24gSFUoc3RyKSB7XG4gICAgcmV0dXJuIC9eKEhVKT9cXGR7OH0kLy50ZXN0KHN0cik7XG4gIH0sXG4gIElFOiBmdW5jdGlvbiBJRShzdHIpIHtcbiAgICByZXR1cm4gL14oSUUpP1xcZHs3fVxcd3sxfShXKT8kLy50ZXN0KHN0cik7XG4gIH0sXG4gIElUOiBmdW5jdGlvbiBJVChzdHIpIHtcbiAgICByZXR1cm4gL14oSVQpP1xcZHsxMX0kLy50ZXN0KHN0cik7XG4gIH0sXG4gIExWOiBmdW5jdGlvbiBMVihzdHIpIHtcbiAgICByZXR1cm4gL14oTFYpP1xcZHsxMX0kLy50ZXN0KHN0cik7XG4gIH0sXG4gIExUOiBmdW5jdGlvbiBMVChzdHIpIHtcbiAgICByZXR1cm4gL14oTFQpP1xcZHs5LDEyfSQvLnRlc3Qoc3RyKTtcbiAgfSxcbiAgTFU6IGZ1bmN0aW9uIExVK
15HN0cikge1xuICAgIHJldHVybiAvXihMVSk/XFxkezh9JC8udGVzdChzdHIpO1xuICB9LFxuICBNVDogZnVuY3Rpb24gTVQoc3RyKSB7XG4gICAgcmV0dXJuIC9eKE1UKT9cXGR7OH0kLy50ZXN0KHN0cik7XG4gIH0sXG4gIE5MOiBmdW5jdGlvbiBOTChzdHIpIHtcbiAgICByZXR1cm4gL14oTkwpP1xcZHs5fUJcXGR7Mn0kLy50ZXN0KHN0cik7XG4gIH0sXG4gIFBMOiBmdW5jdGlvbiBQTChzdHIpIHtcbiAgICByZXR1cm4gL14oUEwpPyhcXGR7MTB9fChcXGR7M30tXFxkezN9LVxcZHsyfS1cXGR7Mn0pfChcXGR7M30tXFxkezJ9LVxcZHsyfS1cXGR7M30pKSQvLnRlc3Qoc3RyKTtcbiAgfSxcbiAgUFQ6IFBULFxuICBSTzogZnVuY3Rpb24gUk8oc3RyKSB7XG4gICAgcmV0dXJuIC9eKFJPKT9cXGR7MiwxMH0kLy50ZXN0KHN0cik7XG4gIH0sXG4gIFNLOiBmdW5jdGlvbiBTSyhzdHIpIHtcbiAgICByZXR1cm4gL14oU0spP1xcZHsxMH0kLy50ZXN0KHN0cik7XG4gIH0sXG4gIFNJOiBmdW5jdGlvbiBTSShzdHIpIHtcbiAgICByZXR1cm4gL14oU0kpP1xcZHs4fSQvLnRlc3Qoc3RyKTtcbiAgfSxcbiAgRVM6IGZ1bmN0aW9uIEVTKHN0cikge1xuICAgIHJldHVybiAvXihFUyk/XFx3XFxkezd9W0EtWl0kLy50ZXN0KHN0cik7XG4gIH0sXG4gIFNFOiBmdW5jdGlvbiBTRShzdHIpIHtcbiAgICByZXR1cm4gL14oU0UpP1xcZHsxMn0kLy50ZXN0KHN0cik7XG4gIH0sXG4gIC8qKlxyXG4gICAqIFZBVCBudW1iZXJzIG9mIG5vbi1FVSBjb3VudHJpZXNcclxuICAgKi9cbiAgQUw6IGZ1bmN0aW9uIEFMKHN0cikge1xuICAgIHJldHVybiAvXihBTCk/XFx3ezl9W0EtWl0kLy50ZXN0KHN0cik7XG4gIH0sXG4gIE1LOiBmdW5jdGlvbiBNSyhzdHIpIHtcbiAgICByZXR1cm4gL14oTUspP1xcZHsxM30kLy50ZXN0KHN0cik7XG4gIH0sXG4gIEFVOiBBVSxcbiAgQlk6IGZ1bmN0aW9uIEJZKHN0cikge1xuICAgIHJldHVybiAvXijQo9Cd0J8gKT9cXGR7OX0kLy50ZXN0KHN0cik7XG4gIH0sXG4gIENBOiBmdW5jdGlvbiBDQShzdHIpIHtcbiAgICByZXR1cm4gL14oQ0EpP1xcZHs5fSQvLnRlc3Qoc3RyKTtcbiAgfSxcbiAgSVM6IGZ1bmN0aW9uIElTKHN0cikge1xuICAgIHJldHVybiAvXihJUyk/XFxkezUsNn0kLy50ZXN0KHN0cik7XG4gIH0sXG4gIElOOiBmdW5jdGlvbiBJTihzdHIpIHtcbiAgICByZXR1cm4gL14oSU4pP1xcZHsxNX0kLy50ZXN0KHN0cik7XG4gIH0sXG4gIElEOiBmdW5jdGlvbiBJRChzdHIpIHtcbiAgICByZXR1cm4gL14oSUQpPyhcXGR7MTV9fChcXGR7Mn0uXFxkezN9LlxcZHszfS5cXGR7MX0tXFxkezN9LlxcZHszfSkpJC8udGVzdChzdHIpO1xuICB9LFxuICBJTDogZnVuY3Rpb24gSUwoc3RyKSB7XG4gICAgcmV0dXJuIC9eKElMKT9cXGR7OX0kLy50ZXN0KHN0cik7XG4gIH0sXG4gIEtaOiBmdW5jdGlvbiBLWihzdHIpIHtcbiAgICByZXR1cm4gL14oS1opP1xcZHsxMn0kLy50ZXN0KHN0cik7XG4gIH0sXG4gIE5aOiBmdW5jdGlvbiBOWihzdHIpIHtcbiAgICByZXR1cm4gL14oTlopP1xcZHs5fSQvLnRlc3Qoc3RyKTtcbiAgfSxcbiAgTkc6IGZ1bmN0aW9uIE5HKHN0cikge1xuICAgIHJldHVybiAvXihORyk/KFxcZHsxMn18KFxcZHs4fS1cXGR7NH0pKSQvLnRlc3Qoc3RyKTtcbiAgfSxcbiAgTk86IGZ1bmN0aW9uIE5PKHN0cikge1xuICAgIHJldHVybiAvXihOTyk/XFxkezl9TVZBJC8udGVzdChzdHIpO1xuICB9LFxuICBQSDogZnVuY3Rpb24gUEgoc3RyKSB7XG4gICAgcmV0dXJuIC9eKFBIKT8oXFxkezEyfXxcXGR7M30gXFxkezN9IFxcZHszfSBcXGR7M30pJC8udGVzdChzdHIpO1xuICB9LFxuICBSVTogZnVuY3Rpb24gUlUoc3RyKSB7XG4gICAgcmV0dXJuIC9eKFJVKT8oXFxkezEwfXxcXGR7MTJ9KSQvLnRlc3Qoc3RyKTtcbiAgfSxcbiAgU006IGZ1bmN0aW9uIFNNKHN0cikge1xuICAgIHJldHVybiAvXihTTSk/XFxkezV9JC8udGVzdChzdHIpO1xuICB9LFxuICBTQTogZnVuY3Rpb24gU0Eoc3RyKSB7XG4gICAgcmV0dXJuIC9eKFNBKT9cXGR7MTV9JC8udGVzdChzdHIpO1xuICB9LFxuICBSUzogZnVuY3Rpb24gUlMoc3RyKSB7XG4gICAgcmV0dXJuIC9eKFJTKT9cXGR7OX0kLy50ZXN0KHN0cik7XG4gIH0sXG4gIENIOiBDSCxcbiAgVFI6IGZ1bmN0aW9uIFRSKHN0cikge1xuICAgIHJldHVybiAvXihUUik/XFxkezEwfSQvLnRlc3Qoc3RyKTtcbiAgfSxcbiAgVUE6IGZ1bmN0aW9uIFVBKHN0cikge1xuICAgIHJldHVybiAvXihVQSk/XFxkezEyfSQvLnRlc3Qoc3RyKTtcbiAgfSxcbiAgR0I6IGZ1bmN0aW9uIEdCKHN0cikge1xuICAgIHJldHVybiAvXkdCKChcXGR7M30gXFxkezR9IChbMC04XVswLTldfDlbMC02XSkpfChcXGR7OX0gXFxkezN9KXwoKChHRFswLTRdKXwoSEFbNS05XSkpWzAtOV17Mn0pKSQvLnRlc3Qoc3RyKTtcbiAgfSxcbiAgVVo6IGZ1bmN0aW9uIFVaKHN0cikge1xuICAgIHJldHVybiAvXihVWik/XFxkezl9JC8udGVzdChzdHIpO1xuICB9LFxuICAvKipcclxuICAgKiBWQVQgbnVtYmVycyBvZiBMYXRpbiBBbWVyaWNhbiBjb3VudHJpZXNcclxuICAgKi9cbiAgQVI6IGZ1bmN0aW9uIEFSKHN0cikge1xuICAgIHJldHVybiAvXihBUik/XFxkezExfSQvLnRlc3Qoc3RyKTtcbiAgfSxcbiAgQk86IGZ1bmN0aW9uIEJPKHN0cikge1xuICAgIHJldHVybiAvXihCTyk/XFxkezd9JC8udGVzdChzdHIpO1xuICB9LFxuICBCUjogZnVuY3Rpb24gQlIoc3RyKSB7XG4gICAgcmV0dXJuIC9eKEJSKT8oKFxcZHsyfS5cXGR7M30uXFxkezN9XFwvXFxkezR9LVxcZHsyfSl8KFxcZHszfS5cXGR7M30uXFxkezN9LVxcZHsyfSkpJC8udGVzdChzdHIpO1xuICB9LFxuICBDTDogZnVuY3Rpb24gQ0woc3RyKSB7XG4gICAgcmV0dXJuIC9eKENMKT9cXGR7OH0tXFxkezF9JC8udGVzdChzdHIpO1xuICB9LFxuICBDTzogZnVuY3Rpb24gQ08oc3RyKSB7XG4gICAgcmV0dXJuIC9eKENPKT9cXGR7MTB9JC8udGVzdChzdHIpO1xuICB9LFxuICBDUjogZnVuY3Rpb24gQ1Ioc3RyKSB7XG4gICAgcmV0dXJuIC9eKENSKT9cXGR7OSwxMn0kLy50ZXN0KHN0cik7XG4gIH0sXG4gIEVDOiBmdW5jdGlvbiBFQyhzdHIpIHtcbiAgICByZXR1cm4gL14oRUMpP1xcZHsxM30kLy50ZXN0KHN0cik7XG4gIH0sXG4gIFNWOiBmdW5jdGlvbiBTVihzdHIpIHtcbiAgICByZXR1cm4gL14oU1YpP1xcZHs0fS1cXGR7Nn0tXFxkezN9LVxcZHsxfSQvLnRlc3Qoc3RyKTtcbiAgfSxcbiAgR1Q6IGZ1bmN0aW9uIEdUKHN0cikge1xuICAgIHJldHVybiAvXihHVCk/XFxkezd9LVxcZHsxfSQvLnRlc3Qoc3RyKTtcbiAgfSxcbiAgSE46IGZ1bmN0aW9uIEhOKHN0cikge1xuICAgIHJldHVybiAvXihITik/JC8udGVzdChzdHIpO1xuICB9LFxuICBNWDogZnVuY3Rpb24gTVgoc3RyKSB7XG4gICAgcmV0dXJuIC9eKE1YKT9cXHd7Myw0fVxc
15ZHs2fVxcd3szfSQvLnRlc3Qoc3RyKTtcbiAgfSxcbiAgTkk6IGZ1bmN0aW9uIE5JKHN0cikge1xuICAgIHJldHVybiAvXihOSSk/XFxkezN9LVxcZHs2fS1cXGR7NH1cXHd7MX0kLy50ZXN0KHN0cik7XG4gIH0sXG4gIFBBOiBmdW5jdGlvbiBQQShzdHIpIHtcbiAgICByZXR1cm4gL14oUEEpPyQvLnRlc3Qoc3RyKTtcbiAgfSxcbiAgUFk6IGZ1bmN0aW9uIFBZKHN0cikge1xuICAgIHJldHVybiAvXihQWSk/XFxkezYsOH0tXFxkezF9JC8udGVzdChzdHIpO1xuICB9LFxuICBQRTogZnVuY3Rpb24gUEUoc3RyKSB7XG4gICAgcmV0dXJuIC9eKFBFKT9cXGR7MTF9JC8udGVzdChzdHIpO1xuICB9LFxuICBETzogZnVuY3Rpb24gRE8oc3RyKSB7XG4gICAgcmV0dXJuIC9eKERPKT8oXFxkezExfXwoXFxkezN9LVxcZHs3fS1cXGR7MX0pfFsxLDQsNV17MX1cXGR7OH18KFsxLDQsNV17MX0pLVxcZHsyfS1cXGR7NX0tXFxkezF9KSQvLnRlc3Qoc3RyKTtcbiAgfSxcbiAgVVk6IGZ1bmN0aW9uIFVZKHN0cikge1xuICAgIHJldHVybiAvXihVWSk/XFxkezEyfSQvLnRlc3Qoc3RyKTtcbiAgfSxcbiAgVkU6IGZ1bmN0aW9uIFZFKHN0cikge1xuICAgIHJldHVybiAvXihWRSk/W0osRyxWLEVdezF9LShcXGR7OX18KFxcZHs4fS1cXGR7MX0pKSQvLnRlc3Qoc3RyKTtcbiAgfVxufTtcbmZ1bmN0aW9uIGlzVkFUKHN0ciwgY291bnRyeUNvZGUpIHtcbiAgKDAsIF9hc3NlcnRTdHJpbmcuZGVmYXVsdCkoc3RyKTtcbiAgKDAsIF9hc3NlcnRTdHJpbmcuZGVmYXVsdCkoY291bnRyeUNvZGUpO1xuICBpZiAoY291bnRyeUNvZGUgaW4gdmF0TWF0Y2hlcnMpIHtcbiAgICByZXR1cm4gdmF0TWF0Y2hlcnNbY291bnRyeUNvZGVdKHN0cik7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBjb3VudHJ5IGNvZGU6ICdcIi5jb25jYXQoY291bnRyeUNvZGUsIFwiJ1wiKSk7XG59IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmZ1bmN0aW9uIF90eXBlb2YobykgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IHJldHVybiBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9IDogZnVuY3Rpb24gKG8pIHsgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87IH0sIF90eXBlb2Yobyk7IH1cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG52YXIgX3RvRGF0ZSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vbGliL3RvRGF0ZVwiKSk7XG52YXIgX3RvRmxvYXQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2xpYi90b0Zsb2F0XCIpKTtcbnZhciBfdG9JbnQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2xpYi90b0ludFwiKSk7XG52YXIgX3RvQm9vbGVhbiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vbGliL3RvQm9vbGVhblwiKSk7XG52YXIgX2VxdWFscyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vbGliL2VxdWFsc1wiKSk7XG52YXIgX2NvbnRhaW5zID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9saWIvY29udGFpbnNcIikpO1xudmFyIF9tYXRjaGVzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9saWIvbWF0Y2hlc1wiKSk7XG52YXIgX2lzRW1haWwgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2xpYi9pc0VtYWlsXCIpKTtcbnZhciBfaXNVUkwgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2xpYi9pc1VSTFwiKSk7XG52YXIgX2lzTUFDQWRkcmVzcyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vbGliL2lzTUFDQWRkcmVzc1wiKSk7XG52YXIgX2lzSVAgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2xpYi9pc0lQXCIpKTtcbnZhciBfaXNJUFJhbmdlID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9saWIvaXNJUFJhbmdlXCIpKTtcbnZhciBfaXNGUUROID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9saWIvaXNGUUROXCIpKTtcbnZhciBfaXNEYXRlID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9saWIvaXNEYXRlXCIpKTtcbnZhciBfaXNUaW1lID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9saWIvaXNUaW1lXCIpKTtcbnZhciBfaXNCb29sZWFuID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9saWIvaXNCb29sZWFuXCIpKTtcbnZhciBfaXNMb2NhbGUgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2xpYi9pc0xvY2FsZVwiKSk7XG52YXIgX2lzQWJhUm91dGluZyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vbGliL2lzQWJhUm91dGluZ1wiKSk7XG52YXIgX2lzQWxwaGEgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwiLi9saWIvaXNBbHBoYVwiKSk7XG52YXIgX2lzQWxwaGFudW1lcmljID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcIi4vbGliL2lzQWxwaGFudW1lcmljXCIpKTtcbnZhciBfaXNOdW1lcmljID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9saWIvaXNOdW1lcmljXCIpKTtcbnZhciBfaXNQYXNzcG9ydE51bWJlciA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vbGliL2lzUGFzc3BvcnROdW1iZXJcIikpO1xudmFyIF9pc1BvcnQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2xpYi9pc1BvcnRcIikpO1xudmFyIF9pc0xvd2VyY2FzZSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vbGliL2lzTG93ZXJjYXNlXCIpKTtcbnZhciBfaXNVcHBlcmNhc2UgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2xpYi9pc1VwcGVyY2FzZVwiKSk7XG52YXIgX2lzSU1FSSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vbGliL2lz
15SU1FSVwiKSk7XG52YXIgX2lzQXNjaWkgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2xpYi9pc0FzY2lpXCIpKTtcbnZhciBfaXNGdWxsV2lkdGggPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2xpYi9pc0Z1bGxXaWR0aFwiKSk7XG52YXIgX2lzSGFsZldpZHRoID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9saWIvaXNIYWxmV2lkdGhcIikpO1xudmFyIF9pc1ZhcmlhYmxlV2lkdGggPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2xpYi9pc1ZhcmlhYmxlV2lkdGhcIikpO1xudmFyIF9pc011bHRpYnl0ZSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vbGliL2lzTXVsdGlieXRlXCIpKTtcbnZhciBfaXNTZW1WZXIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2xpYi9pc1NlbVZlclwiKSk7XG52YXIgX2lzU3Vycm9nYXRlUGFpciA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vbGliL2lzU3Vycm9nYXRlUGFpclwiKSk7XG52YXIgX2lzSW50ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9saWIvaXNJbnRcIikpO1xudmFyIF9pc0Zsb2F0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcIi4vbGliL2lzRmxvYXRcIikpO1xudmFyIF9pc0RlY2ltYWwgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2xpYi9pc0RlY2ltYWxcIikpO1xudmFyIF9pc0hleGFkZWNpbWFsID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9saWIvaXNIZXhhZGVjaW1hbFwiKSk7XG52YXIgX2lzT2N0YWwgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2xpYi9pc09jdGFsXCIpKTtcbnZhciBfaXNEaXZpc2libGVCeSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vbGliL2lzRGl2aXNpYmxlQnlcIikpO1xudmFyIF9pc0hleENvbG9yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9saWIvaXNIZXhDb2xvclwiKSk7XG52YXIgX2lzUmdiQ29sb3IgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2xpYi9pc1JnYkNvbG9yXCIpKTtcbnZhciBfaXNIU0wgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2xpYi9pc0hTTFwiKSk7XG52YXIgX2lzSVNSQyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vbGliL2lzSVNSQ1wiKSk7XG52YXIgX2lzSUJBTiA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCIuL2xpYi9pc0lCQU5cIikpO1xudmFyIF9pc0JJQyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vbGliL2lzQklDXCIpKTtcbnZhciBfaXNNRCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vbGliL2lzTUQ1XCIpKTtcbnZhciBfaXNIYXNoID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9saWIvaXNIYXNoXCIpKTtcbnZhciBfaXNKV1QgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2xpYi9pc0pXVFwiKSk7XG52YXIgX2lzSlNPTiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vbGliL2lzSlNPTlwiKSk7XG52YXIgX2lzRW1wdHkgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2xpYi9pc0VtcHR5XCIpKTtcbnZhciBfaXNMZW5ndGggPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2xpYi9pc0xlbmd0aFwiKSk7XG52YXIgX2lzQnl0ZUxlbmd0aCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vbGliL2lzQnl0ZUxlbmd0aFwiKSk7XG52YXIgX2lzVVVJRCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vbGliL2lzVVVJRFwiKSk7XG52YXIgX2lzTW9uZ29JZCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vbGliL2lzTW9uZ29JZFwiKSk7XG52YXIgX2lzQWZ0ZXIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2xpYi9pc0FmdGVyXCIpKTtcbnZhciBfaXNCZWZvcmUgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2xpYi9pc0JlZm9yZVwiKSk7XG52YXIgX2lzSW4gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2xpYi9pc0luXCIpKTtcbnZhciBfaXNMdWhuTnVtYmVyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9saWIvaXNMdWhuTnVtYmVyXCIpKTtcbnZhciBfaXNDcmVkaXRDYXJkID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9saWIvaXNDcmVkaXRDYXJkXCIpKTtcbnZhciBfaXNJZGVudGl0eUNhcmQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2xpYi9pc0lkZW50aXR5Q2FyZFwiKSk7XG52YXIgX2lzRUFOID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9saWIvaXNFQU5cIikpO1xudmFyIF9pc0lTSU4gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2xpYi9pc0lTSU5cIikpO1xudmFyIF9pc0lTQk4gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2xpYi9pc0lTQk5cIikpO1xudmFyIF9pc0lTU04gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2xpYi9pc0lTU05cIikpO1xudmFyIF9pc1RheElEID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9saWIvaXNUYXhJRFwiKSk7XG52YXIgX2lzTW9iaWxlUGhvbmUgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwiLi9saWIvaXNNb2JpbGVQaG9uZVwiKSk7XG52YXIgX2lzRXRoZXJldW1BZGRyZXNzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9saWIvaXNFdGhlcmV1bUFkZHJlc3NcIikpO1xudmFyIF9pc0N1cnJlbmN5ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9saWIvaXNDdXJyZW5jeVwiKSk7XG52YXIgX2lzQnRjQWRkcmVzcyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vbGliL2lzQnRjQWRkcmVzc1wiKSk7XG52YXIgX2lzSVNPID0gcmVxdWlyZShcIi4vbGliL2lz
15SVNPNjM0NlwiKTtcbnZhciBfaXNJU08yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9saWIvaXNJU082MzkxXCIpKTtcbnZhciBfaXNJU08zID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9saWIvaXNJU084NjAxXCIpKTtcbnZhciBfaXNSRkMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2xpYi9pc1JGQzMzMzlcIikpO1xudmFyIF9pc0lTTzMxNjYxQWxwaGEgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2xpYi9pc0lTTzMxNjYxQWxwaGEyXCIpKTtcbnZhciBfaXNJU08zMTY2MUFscGhhMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vbGliL2lzSVNPMzE2NjFBbHBoYTNcIikpO1xudmFyIF9pc0lTTzQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2xpYi9pc0lTTzQyMTdcIikpO1xudmFyIF9pc0Jhc2UgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2xpYi9pc0Jhc2UzMlwiKSk7XG52YXIgX2lzQmFzZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2xpYi9pc0Jhc2U1OFwiKSk7XG52YXIgX2lzQmFzZTMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2xpYi9pc0Jhc2U2NFwiKSk7XG52YXIgX2lzRGF0YVVSSSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vbGliL2lzRGF0YVVSSVwiKSk7XG52YXIgX2lzTWFnbmV0VVJJID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9saWIvaXNNYWduZXRVUklcIikpO1xudmFyIF9pc01haWx0b1VSSSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vbGliL2lzTWFpbHRvVVJJXCIpKTtcbnZhciBfaXNNaW1lVHlwZSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vbGliL2lzTWltZVR5cGVcIikpO1xudmFyIF9pc0xhdExvbmcgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2xpYi9pc0xhdExvbmdcIikpO1xudmFyIF9pc1Bvc3RhbENvZGUgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwiLi9saWIvaXNQb3N0YWxDb2RlXCIpKTtcbnZhciBfbHRyaW0gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2xpYi9sdHJpbVwiKSk7XG52YXIgX3J0cmltID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9saWIvcnRyaW1cIikpO1xudmFyIF90cmltID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9saWIvdHJpbVwiKSk7XG52YXIgX2VzY2FwZSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vbGliL2VzY2FwZVwiKSk7XG52YXIgX3VuZXNjYXBlID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9saWIvdW5lc2NhcGVcIikpO1xudmFyIF9zdHJpcExvdyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vbGliL3N0cmlwTG93XCIpKTtcbnZhciBfd2hpdGVsaXN0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9saWIvd2hpdGVsaXN0XCIpKTtcbnZhciBfYmxhY2tsaXN0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9saWIvYmxhY2tsaXN0XCIpKTtcbnZhciBfaXNXaGl0ZWxpc3RlZCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vbGliL2lzV2hpdGVsaXN0ZWRcIikpO1xudmFyIF9ub3JtYWxpemVFbWFpbCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vbGliL25vcm1hbGl6ZUVtYWlsXCIpKTtcbnZhciBfaXNTbHVnID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9saWIvaXNTbHVnXCIpKTtcbnZhciBfaXNMaWNlbnNlUGxhdGUgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2xpYi9pc0xpY2Vuc2VQbGF0ZVwiKSk7XG52YXIgX2lzU3Ryb25nUGFzc3dvcmQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2xpYi9pc1N0cm9uZ1Bhc3N3b3JkXCIpKTtcbnZhciBfaXNWQVQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL2xpYi9pc1ZBVFwiKSk7XG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoZSkgeyBpZiAoXCJmdW5jdGlvblwiICE9IHR5cGVvZiBXZWFrTWFwKSByZXR1cm4gbnVsbDsgdmFyIHIgPSBuZXcgV2Vha01hcCgpLCB0ID0gbmV3IFdlYWtNYXAoKTsgcmV0dXJuIChfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUgPSBmdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoZSkgeyByZXR1cm4gZSA/IHQgOiByOyB9KShlKTsgfVxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQoZSwgcikgeyBpZiAoIXIgJiYgZSAmJiBlLl9fZXNNb2R1bGUpIHJldHVybiBlOyBpZiAobnVsbCA9PT0gZSB8fCBcIm9iamVjdFwiICE9IF90eXBlb2YoZSkgJiYgXCJmdW5jdGlvblwiICE9IHR5cGVvZiBlKSByZXR1cm4geyBkZWZhdWx0OiBlIH07IHZhciB0ID0gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKHIpOyBpZiAodCAmJiB0LmhhcyhlKSkgcmV0dXJuIHQuZ2V0KGUpOyB2YXIgbiA9IHsgX19wcm90b19fOiBudWxsIH0sIGEgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjsgZm9yICh2YXIgdSBpbiBlKSBpZiAoXCJkZWZhdWx0XCIgIT09IHUgJiYge30uaGFzT3duUHJvcGVydHkuY2FsbChlLCB1KSkgeyB2YXIgaSA9IGEgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHUpIDogbnVsbDsgaSAmJiAoaS5nZXQgfHwgaS5zZXQpID8gT2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIHUsIGkpIDogblt1XSA9IGVbdV07IH0gcmV0dXJuIG4uZGVmYXVsdCA9IGUsIHQgJiYgdC5zZXQoZSwgbiksIG47IH1cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG52YXIgdmVyc2lvbiA9ICcxMy4xMi4wJztcbnZhciB2YWxpZGF0b3IgPSB7XG4gIHZlcnNpb246IHZlcnNpb24sXG4gIHRvRGF0ZTogX3RvRGF0ZS5kZWZhdWx0LFxuICB0b0Zsb2F0OiBfdG9GbG9hdC5kZWZh
15dWx0LFxuICB0b0ludDogX3RvSW50LmRlZmF1bHQsXG4gIHRvQm9vbGVhbjogX3RvQm9vbGVhbi5kZWZhdWx0LFxuICBlcXVhbHM6IF9lcXVhbHMuZGVmYXVsdCxcbiAgY29udGFpbnM6IF9jb250YWlucy5kZWZhdWx0LFxuICBtYXRjaGVzOiBfbWF0Y2hlcy5kZWZhdWx0LFxuICBpc0VtYWlsOiBfaXNFbWFpbC5kZWZhdWx0LFxuICBpc1VSTDogX2lzVVJMLmRlZmF1bHQsXG4gIGlzTUFDQWRkcmVzczogX2lzTUFDQWRkcmVzcy5kZWZhdWx0LFxuICBpc0lQOiBfaXNJUC5kZWZhdWx0LFxuICBpc0lQUmFuZ2U6IF9pc0lQUmFuZ2UuZGVmYXVsdCxcbiAgaXNGUUROOiBfaXNGUUROLmRlZmF1bHQsXG4gIGlzQm9vbGVhbjogX2lzQm9vbGVhbi5kZWZhdWx0LFxuICBpc0lCQU46IF9pc0lCQU4uZGVmYXVsdCxcbiAgaXNCSUM6IF9pc0JJQy5kZWZhdWx0LFxuICBpc0FiYVJvdXRpbmc6IF9pc0FiYVJvdXRpbmcuZGVmYXVsdCxcbiAgaXNBbHBoYTogX2lzQWxwaGEuZGVmYXVsdCxcbiAgaXNBbHBoYUxvY2FsZXM6IF9pc0FscGhhLmxvY2FsZXMsXG4gIGlzQWxwaGFudW1lcmljOiBfaXNBbHBoYW51bWVyaWMuZGVmYXVsdCxcbiAgaXNBbHBoYW51bWVyaWNMb2NhbGVzOiBfaXNBbHBoYW51bWVyaWMubG9jYWxlcyxcbiAgaXNOdW1lcmljOiBfaXNOdW1lcmljLmRlZmF1bHQsXG4gIGlzUGFzc3BvcnROdW1iZXI6IF9pc1Bhc3Nwb3J0TnVtYmVyLmRlZmF1bHQsXG4gIGlzUG9ydDogX2lzUG9ydC5kZWZhdWx0LFxuICBpc0xvd2VyY2FzZTogX2lzTG93ZXJjYXNlLmRlZmF1bHQsXG4gIGlzVXBwZXJjYXNlOiBfaXNVcHBlcmNhc2UuZGVmYXVsdCxcbiAgaXNBc2NpaTogX2lzQXNjaWkuZGVmYXVsdCxcbiAgaXNGdWxsV2lkdGg6IF9pc0Z1bGxXaWR0aC5kZWZhdWx0LFxuICBpc0hhbGZXaWR0aDogX2lzSGFsZldpZHRoLmRlZmF1bHQsXG4gIGlzVmFyaWFibGVXaWR0aDogX2lzVmFyaWFibGVXaWR0aC5kZWZhdWx0LFxuICBpc011bHRpYnl0ZTogX2lzTXVsdGlieXRlLmRlZmF1bHQsXG4gIGlzU2VtVmVyOiBfaXNTZW1WZXIuZGVmYXVsdCxcbiAgaXNTdXJyb2dhdGVQYWlyOiBfaXNTdXJyb2dhdGVQYWlyLmRlZmF1bHQsXG4gIGlzSW50OiBfaXNJbnQuZGVmYXVsdCxcbiAgaXNJTUVJOiBfaXNJTUVJLmRlZmF1bHQsXG4gIGlzRmxvYXQ6IF9pc0Zsb2F0LmRlZmF1bHQsXG4gIGlzRmxvYXRMb2NhbGVzOiBfaXNGbG9hdC5sb2NhbGVzLFxuICBpc0RlY2ltYWw6IF9pc0RlY2ltYWwuZGVmYXVsdCxcbiAgaXNIZXhhZGVjaW1hbDogX2lzSGV4YWRlY2ltYWwuZGVmYXVsdCxcbiAgaXNPY3RhbDogX2lzT2N0YWwuZGVmYXVsdCxcbiAgaXNEaXZpc2libGVCeTogX2lzRGl2aXNpYmxlQnkuZGVmYXVsdCxcbiAgaXNIZXhDb2xvcjogX2lzSGV4Q29sb3IuZGVmYXVsdCxcbiAgaXNSZ2JDb2xvcjogX2lzUmdiQ29sb3IuZGVmYXVsdCxcbiAgaXNIU0w6IF9pc0hTTC5kZWZhdWx0LFxuICBpc0lTUkM6IF9pc0lTUkMuZGVmYXVsdCxcbiAgaXNNRDU6IF9pc01ELmRlZmF1bHQsXG4gIGlzSGFzaDogX2lzSGFzaC5kZWZhdWx0LFxuICBpc0pXVDogX2lzSldULmRlZmF1bHQsXG4gIGlzSlNPTjogX2lzSlNPTi5kZWZhdWx0LFxuICBpc0VtcHR5OiBfaXNFbXB0eS5kZWZhdWx0LFxuICBpc0xlbmd0aDogX2lzTGVuZ3RoLmRlZmF1bHQsXG4gIGlzTG9jYWxlOiBfaXNMb2NhbGUuZGVmYXVsdCxcbiAgaXNCeXRlTGVuZ3RoOiBfaXNCeXRlTGVuZ3RoLmRlZmF1bHQsXG4gIGlzVVVJRDogX2lzVVVJRC5kZWZhdWx0LFxuICBpc01vbmdvSWQ6IF9pc01vbmdvSWQuZGVmYXVsdCxcbiAgaXNBZnRlcjogX2lzQWZ0ZXIuZGVmYXVsdCxcbiAgaXNCZWZvcmU6IF9pc0JlZm9yZS5kZWZhdWx0LFxuICBpc0luOiBfaXNJbi5kZWZhdWx0LFxuICBpc0x1aG5OdW1iZXI6IF9pc0x1aG5OdW1iZXIuZGVmYXVsdCxcbiAgaXNDcmVkaXRDYXJkOiBfaXNDcmVkaXRDYXJkLmRlZmF1bHQsXG4gIGlzSWRlbnRpdHlDYXJkOiBfaXNJZGVudGl0eUNhcmQuZGVmYXVsdCxcbiAgaXNFQU46IF9pc0VBTi5kZWZhdWx0LFxuICBpc0lTSU46IF9pc0lTSU4uZGVmYXVsdCxcbiAgaXNJU0JOOiBfaXNJU0JOLmRlZmF1bHQsXG4gIGlzSVNTTjogX2lzSVNTTi5kZWZhdWx0LFxuICBpc01vYmlsZVBob25lOiBfaXNNb2JpbGVQaG9uZS5kZWZh
15dWx0LFxuICBpc01vYmlsZVBob25lTG9jYWxlczogX2lzTW9iaWxlUGhvbmUubG9jYWxlcyxcbiAgaXNQb3N0YWxDb2RlOiBfaXNQb3N0YWxDb2RlLmRlZmF1bHQsXG4gIGlzUG9zdGFsQ29kZUxvY2FsZXM6IF9pc1Bvc3RhbENvZGUubG9jYWxlcyxcbiAgaXNFdGhlcmV1bUFkZHJlc3M6IF9pc0V0aGVyZXVtQWRkcmVzcy5kZWZhdWx0LFxuICBpc0N1cnJlbmN5OiBfaXNDdXJyZW5jeS5kZWZhdWx0LFxuICBpc0J0Y0FkZHJlc3M6IF9pc0J0Y0FkZHJlc3MuZGVmYXVsdCxcbiAgaXNJU082MzQ2OiBfaXNJU08uaXNJU082MzQ2LFxuICBpc0ZyZWlnaHRDb250YWluZXJJRDogX2lzSVNPLmlzRnJlaWdodENvbnRhaW5lcklELFxuICBpc0lTTzYzOTE6IF9pc0lTTzIuZGVmYXVsdCxcbiAgaXNJU084NjAxOiBfaXNJU08zLmRlZmF1bHQsXG4gIGlzUkZDMzMzOTogX2lzUkZDLmRlZmF1bHQsXG4gIGlzSVNPMzE2NjFBbHBoYTI6IF9pc0lTTzMxNjYxQWxwaGEuZGVmYXVsdCxcbiAgaXNJU08zMTY2MUFscGhhMzogX2lzSVNPMzE2NjFBbHBoYTIuZGVmYXVsdCxcbiAgaXNJU080MjE3OiBfaXNJU080LmRlZmF1bHQsXG4gIGlzQmFzZTMyOiBfaXNCYXNlLmRlZmF1bHQsXG4gIGlzQmFzZTU4OiBfaXNCYXNlMi5kZWZhdWx0LFxuICBpc0Jhc2U2NDogX2lzQmFzZTMuZGVmYXVsdCxcbiAgaXNEYXRhVVJJOiBfaXNEYXRhVVJJLmRlZmF1bHQsXG4gIGlzTWFnbmV0VVJJOiBfaXNNYWduZXRVUkkuZGVmYXVsdCxcbiAgaXNNYWlsdG9VUkk6IF9pc01haWx0b1VSSS5kZWZhdWx0LFxuICBpc01pbWVUeXBlOiBfaXNNaW1lVHlwZS5kZWZhdWx0LFxuICBpc0xhdExvbmc6IF9pc0xhdExvbmcuZGVmYXVsdCxcbiAgbHRyaW06IF9sdHJpbS5kZWZhdWx0LFxuICBydHJpbTogX3J0cmltLmRlZmF1bHQsXG4gIHRyaW06IF90cmltLmRlZmF1bHQsXG4gIGVzY2FwZTogX2VzY2FwZS5kZWZhdWx0LFxuICB1bmVzY2FwZTogX3VuZXNjYXBlLmRlZmF1bHQsXG4gIHN0cmlwTG93OiBfc3RyaXBMb3cuZGVmYXVsdCxcbiAgd2hpdGVsaXN0OiBfd2hpdGVsaXN0LmRlZmF1bHQsXG4gIGJsYWNrbGlzdDogX2JsYWNrbGlzdC5kZWZhdWx0LFxuICBpc1doaXRlbGlzdGVkOiBfaXNXaGl0ZWxpc3RlZC5kZWZhdWx0LFxuICBub3JtYWxpemVFbWFpbDogX25vcm1hbGl6ZUVtYWlsLmRlZmF1bHQsXG4gIHRvU3RyaW5nOiB0b1N0cmluZyxcbiAgaXNTbHVnOiBfaXNTbHVnLmRlZmF1bHQsXG4gIGlzU3Ryb25nUGFzc3dvcmQ6IF9pc1N0cm9uZ1Bhc3N3b3JkLmRlZmF1bHQsXG4gIGlzVGF4SUQ6IF9pc1RheElELmRlZmF1bHQsXG4gIGlzRGF0ZTogX2lzRGF0ZS5kZWZhdWx0LFxuICBpc1RpbWU6IF9pc1RpbWUuZGVmYXVsdCxcbiAgaXNMaWNlbnNlUGxhdGU6IF9pc0xpY2Vuc2VQbGF0ZS5kZWZhdWx0LFxuICBpc1ZBVDogX2lzVkFULmRlZmF1bHQsXG4gIGliYW5Mb2NhbGVzOiBfaXNJQkFOLmxvY2FsZXNcbn07XG52YXIgX2RlZmF1bHQgPSBleHBvcnRzLmRlZmF1bHQgPSB2YWxpZGF0b3I7XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBleHBvcnRzLmRlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgQ0FDSEUgPSBbXTtcbnZhciBZdWJpbkJhbmdvO1xuKGZ1bmN0aW9uIChZdWJpbkJhbmdvKSB7XG4gICAgdmFyIENvcmUgPSAoZnVuY3Rpb24gKCkge1xuICAgICAgICBmdW5jdGlvbiBDb3JlKGlucHV0VmFsLCBjYWxsYmFjaykge1xuICAgICAgICAgICAgaWYgKGlucHV0VmFsID09PSB2b2lkIDApIHsgaW5wdXRWYWwgPSAnJzsgfVxuICAgICAgICAgICAgdGhpcy5VUkwgPSAnaHR0cHM6Ly95dWJpbmJhbmdvLmdpdGh1Yi5pby95dWJpbmJhbmdvLWRhdGEvZGF0YSc7XG4gICAgICAgICAgICB0aGlzLlJFR0lPTiA9IFtcbiAgICAgICAgICAgICAgICBudWxsLCAn5YyX5rW36YGTJywgJ+mdkuajruecjCcsICflsqnmiYvnnIwnLCAn5a6u5Z+O55yMJyxcbiAgICAgICAgICAgICAgICAn56eL55Sw55yMJywgJ+WxseW9ouecjCcsICfnpo/ls7bnnIwnLCAn6Iyo5Z+O55yMJywgJ+agg+acqOecjCcsXG4gICAgICAgICAgICAgICAgJ+e+pOmmrOecjCcsICfln7znjonnnIwnLCAn5Y2D6JGJ55yMJywgJ+adseS6rOmDvScsICfnpZ7lpYjlt53nnIwnLFxuICAgICAgICAgICAgICAgICfmlrDmvZ/nnIwnLCAn5a+M5bGx55yMJywgJ+efs+W3neecjCcsICfnpo/kupXnnIwnLCAn5bGx5qKo55yMJyxcbiAgICAgICAgICAgICAgICAn6ZW36YeO55yMJywgJ+WykOmYnOecjCcsICfpnZnlsqHnnIwnLCAn5oSb55+l55yMJywgJ+S4iemHjeecjCcsXG4gICAgICAgICAgICAgICAgJ+a7i+izgOecjCcsICfkuqzpg73lupwnLCAn5aSn6Ziq5bqcJywgJ+WFteW6q+ecjCcsICflpYjoia/nnIwnLFxuICAgICAgICAgICAgICAgICflkozmrYzlsbHnnIwnLCAn6bOl5Y+W55yMJywgJ+WztuagueecjCcsICflsqHlsbHnnIwnLCAn5bqD5bO255yMJyxcbiAgICAgICAgICAgICAgICAn5bGx5Y+j55yMJywgJ+W+s+WztuecjCcsICfpppnlt53nnIwnLCAn5oSb5aqb55yMJywgJ+mrmOefpeecjCcsXG4gICAgICAgICAgICAgICAgJ+emj+WyoeecjCcsICfkvZDos4DnnIwnLCAn6ZW35bSO55yMJywgJ+eGiuacrOecjCcsICflpKfliIbnnIwnLFxuICAgICAgICAgICAgICAgICflrq7ltI7nnIwnLCAn6bm/5YWQ5bO255yMJywgJ+aylue4hOecjCdcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBpZiAoaW5wdXRWYWwpIHtcbiAgICAgICAgICAgICAgICB2Y
15XIgYSA9IGlucHV0VmFsLnJlcGxhY2UoL1vvvJAt77yZXS9nLCBmdW5jdGlvbiAocykgeyByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShzLmNoYXJDb2RlQXQoMCkgLSA2NTI0OCk7IH0pO1xuICAgICAgICAgICAgICAgIHZhciBiID0gYS5tYXRjaCgvXFxkL2cpO1xuICAgICAgICAgICAgICAgIHZhciBjID0gYi5qb2luKCcnKTtcbiAgICAgICAgICAgICAgICB2YXIgeXViaW43ID0gdGhpcy5jaGs3KGMpO1xuICAgICAgICAgICAgICAgIGlmICh5dWJpbjcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRBZGRyKHl1YmluNywgY2FsbGJhY2spO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sodGhpcy5hZGRyRGljKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBDb3JlLnByb3RvdHlwZS5jaGs3ID0gZnVuY3Rpb24gKHZhbCkge1xuICAgICAgICAgICAgaWYgKHZhbC5sZW5ndGggPT09IDcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBDb3JlLnByb3RvdHlwZS5hZGRyRGljID0gZnVuY3Rpb24gKHJlZ2lvbl9pZCwgcmVnaW9uLCBsb2NhbGl0eSwgc3RyZWV0LCBleHRlbmRlZCkge1xuICAgICAgICAgICAgaWYgKHJlZ2lvbl9pZCA9PT0gdm9pZCAwKSB7IHJlZ2lvbl9pZCA9ICcnOyB9XG4gICAgICAgICAgICBpZiAocmVnaW9uID09PSB2b2lkIDApIHsgcmVnaW9uID0gJyc7IH1cbiAgICAgICAgICAgIGlmIChsb2NhbGl0eSA9PT0gdm9pZCAwKSB7IGxvY2FsaXR5ID0gJyc7IH1cbiAgICAgICAgICAgIGlmIChzdHJlZXQgPT09IHZvaWQgMCkgeyBzdHJlZXQgPSAnJzsgfVxuICAgICAgICAgICAgaWYgKGV4dGVuZGVkID09PSB2b2lkIDApIHsgZXh0ZW5kZWQgPSAnJzsgfVxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAncmVnaW9uX2lkJzogcmVnaW9uX2lkLFxuICAgICAgICAgICAgICAgICdyZWdpb24nOiByZWdpb24sXG4gICAgICAgICAgICAgICAgJ2xvY2FsaXR5JzogbG9jYWxpdHksXG4gICAgICAgICAgICAgICAgJ3N0cmVldCc6IHN0cmVldCxcbiAgICAgICAgICAgICAgICAnZXh0ZW5kZWQnOiBleHRlbmRlZFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfTtcbiAgICAgICAgQ29yZS5wcm90b3R5cGUuc2VsZWN0QWRkciA9IGZ1bmN0aW9uIChhZGRyKSB7XG4gICAgICAgICAgICBpZiAoYWRkciAmJiBhZGRyWzBdICYmIGFkZHJbMV0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hZGRyRGljKGFkZHJbMF0sIHRoaXMuUkVHSU9OW2FkZHJbMF1dLCBhZGRyWzFdLCBhZGRyWzJdLCBhZGRyWzNdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFkZHJEaWMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgQ29yZS5wcm90b3R5cGUuanNvbnAgPSBmdW5jdGlvbiAodXJsLCBmbikge1xuICAgICAgICAgICAgd2luZG93WyckeXViaW4nXSA9IGZ1bmN0aW9uIChkYXRhKSB7IHJldHVybiBmbihkYXRhKTsgfTtcbiAgICAgICAgICAgIHZhciBzY3JpcHRUYWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO1xuICAgICAgICAgICAgc2NyaXB0VGFnLnNldEF0dHJpYnV0ZShcInR5cGVcIiwgXCJ0ZXh0L2phdmFzY3JpcHRcIik7XG4gICAgICAgICAgICBzY3JpcHRUYWcuc2V0QXR0cmlidXRlKFwiY2hhcnNldFwiLCBcIlVURi04XCIpO1xuICAgICAgICAgICAgc2NyaXB0VGFnLnNldEF0dHJpYnV0ZShcInNyY1wiLCB1cmwpO1xuICAgICAgICAgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzY3JpcHRUYWcpO1xuICAgICAgICB9O1xuICAgICAgICBDb3JlLnByb3RvdHlwZS5nZXRBZGRyID0gZnVuY3Rpb24gKHl1YmluNywgZm4pIHtcbiAgICAgICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgICAgICB2Y
15XIgeXViaW4zID0geXViaW43LnN1YnN0cigwLCAzKTtcbiAgICAgICAgICAgIGlmICh5dWJpbjMgaW4gQ0FDSEUgJiYgeXViaW43IGluIENBQ0hFW3l1YmluM10pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZm4odGhpcy5zZWxlY3RBZGRyKENBQ0hFW3l1YmluM11beXViaW43XSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5qc29ucCh0aGlzLlVSTCArIFwiL1wiICsgeXViaW4zICsgXCIuanNcIiwgZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgQ0FDSEVbeXViaW4zXSA9IGRhdGE7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmbihfdGhpcy5zZWxlY3RBZGRyKGRhdGFbeXViaW43XSkpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gQ29yZTtcbiAgICB9KCkpO1xuICAgIFl1YmluQmFuZ28uQ29yZSA9IENvcmU7XG59KShZdWJpbkJhbmdvIHx8IChZdWJpbkJhbmdvID0ge30pKTtcbm1vZHVsZS5leHBvcnRzID0gWXViaW5CYW5nbztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXl1YmluYmFuZ28tY29yZS5qcy5tYXAiLCJpbXBvcnQgdmFsaWRhdG9yIGZyb20gJ3ZhbGlkYXRvcic7XHJcbmltcG9ydCBZdWJpbkJhbmdvIGZyb20gJ3l1YmluYmFuZ28tY29yZTInO1xyXG5cclxuY29uc3QgRm9ybSA9IGZ1bmN0aW9uICgpIHtcclxuICB0aGlzLnRhcmdldHMgPSAnJztcclxuICB0aGlzLm9wdGlvbnMgPSB7XHJcbiAgICBwYXJlbnRDbGFzczogJ3AtZm9ybV9faW5wdXQnLFxyXG4gICAgZXJyb3JDbGFzczogJ2lzLWVycm9yJyxcclxuICAgIGVycm9ydGV4dENsYXNzOiAncC1mb3JtX19lcnJvcicsXHJcbiAgfTtcclxuICB0aGlzLmVycm9yTWVzc2FnZSA9IHtcclxuICAgIGVtcHR5OiAn5b+F6aCI6aCF55uu44Gn44GZJyxcclxuICAgIHRlbDogJ+acieWKueOBqumbu+ipseeVquWPt+OCkuOBlOWFpeWKm+OBj+OBoOOBleOBhCcsXHJcbiAgICB6aXA6ICfmnInlirnjgarpg7Xkvr/nlarlj7fjgpLjgZTlhaXlipvjgY/jgaDjgZXjgYQnLFxyXG4gICAgZW1haWw6ICfmnInlirnjgarjg6Hjg7zjg6vjgqLjg4njg6zjgrnjgpLjgZTlhaXlipvjgY/jgaDjgZXjgYQnLFxyXG4gICAga2FuYTogJ+WFqOinkuOCq+OCv+OCq+ODiuOBp+S7peWkluOBruaWh+Wtl+OBjOWQq+OBvuOCjOOBpuOBhOOBvuOBmScsXHJcbiAgICAvLyBlcXVhbDogJ+WFpeWKm+OBleOCjOOBn+WApOOBjOS4gOiHtOOBl+OBvuOBm+OCkycsXHJcbiAgfTtcclxuICB0aGlzLnJ1bGVzID0gW107XHJcbn07XHJcblxyXG5Gb3JtLnByb3RvdHlwZSA9IHtcclxuICB1cGRhdGVSdWxlcygpIHtcclxuICAgIHRoaXMucnVsZXMgPSBbXTtcclxuICAgIGZvciAoY29uc3QgdGFyZ2V0IG9mIHRoaXMudGFyZ2V0cykge1xyXG4gICAgICBsZXQgcnVsZSA9IHRhcmdldC5nZXRBdHRyaWJ1dGUoJ2RhdGEtdmFsaWRhdGUtcnVsZScpO1xyXG4gICAgICBydWxlID0gcnVsZS5zcGxpdCgnLCcpO1xyXG5cclxuICAgICAgdGhpcy5ydWxlcy5wdXNoKHtcclxuICAgICAgICBlbG06IHRhcmdldCxcclxuICAgICAgICBuYW1lOiB0YXJnZXQuZ2V0QXR0cmlidXRlKCduYW1lJyksXHJcbiAgICAgICAgcnVsZSxcclxuICAgICAgICBmbGFnczogcnVsZS5tYXAoKHZhbCkgPT4gdmFsICE9PSAnZW1wdHknKSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBmb3IgKGNvbnN0IHsgZWxtLCBydWxlLCBmbGFncyB9IG9mIHRoaXMucnVsZXMpIHtcclxuICAgICAgdGhpcy5leGVjdXRpb24oZWxtLCBydWxlLCBmbGFncywgZmFsc2UpO1xyXG4gICAgfVxyXG4gIH0sXHJcbiAgdmFsaWRhdGUoKSB7XHJcbiAgICBjb25zdCBmb3JtID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmpzLWZvcm0nKTtcclxuICAgIHRoaXMudGFyZ2V0cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXZhbGlkYXRlLXJ1bGVdJyk7XHJcbiAgICBsZXQgaW5wdXRUaW1lciA9IG51bGw7XHJcblxyXG4gICAgdGhpcy51cGRhdGVSdWxlcygpO1xyXG5cclxuICAgIGNvbnN0IGVsbXMgPSB0aGlzLnJ1bGVzLm1hcCgob2JqKSA9PiBvYmouZWxtKTtcclxuICAgIGZvciAoY29uc3QgZWxtIG9mIGVsbXMpIHtcclxuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnJ1bGVzLmZpbmRJbmRleCgoeyBlbG06IHRhcmdldCB9KSA9PiB0YXJnZXQgPT09IGVsbSk7XHJcbiAgICAgIFsnY2hhbmdlJywgJ2JsdXInXS5mb3JFYWNoKChldmVudE5hbWUpID0+IHtcclxuICAgICAgICBlbG0uYWRkRXZlbnRMaXN0ZW5lcihcclxuICAgICAgICAgIGV2ZW50TmFtZSxcclxuICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KGlucHV0VGltZXIpO1xyXG4gICAgICAgICAgICB0aGlzLmV4ZWN1dGlvbihcclxuICAgICAgICAgICAgICBlbG0sXHJcbiAgICAgICAgICAgICAgdGhpcy5ydWxlc1tpbmRleF0ucnVsZSxcclxuICAgICAgICAgICAgICB0aGlzLnJ1bGVzW2luZGV4XS5mbGFnc1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHsgcGFzc2l2ZTogdHJ1ZSB9XHJcbiAgICAgICAgKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgZWxtLnRhZ05hbWUgIT0gJ1NFTEVDVCcgJiZcclxuICAgICAgICBlbG0udGFnTmFtZSA9PT0gJ0lOUFVUJyAmJlxyXG4gICAgICAgIGVsbS5nZXRBdHRyaWJ1dGUoJ3R5cGUnKSAhPT0gJ2NoZWNrYm94JyAmJlxyXG4gICAgICAgIGVsbS5nZXRBdHRyaWJ1dGUoJ3R5cGUnKSAhPT0gJ3JhZGlvJ1xyXG4gICAgICApIHtcclxuICAgICAgICBlbG0uYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB7XHJcbiAgICAgICAgICBjbGVhclRpbWVvdXQoaW5wdXRUaW1lcik7XHJcbiAgICAgICAgICBpbnB1dFRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZXhlY3V0aW9uKFxyXG4gICAgICAgICAgICAgIGVsbSxcclxuICAgICAgICAgICAgICB0aGlzLnJ1bGVzW2luZGV4XS5ydWxlLFxyXG4gICAgICAgICAgICAgI
15HRoaXMucnVsZXNbaW5kZXhdLmZsYWdzXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9LCA4MDApO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZm9ybS5hZGRFdmVudExpc3RlbmVyKCdzdWJtaXQnLCAoKSA9PiB7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIGZvciAoY29uc3QgeyBlbG0sIHJ1bGUsIGZsYWdzIH0gb2YgdGhpcy5ydWxlcykge1xyXG4gICAgICAgIHRoaXMuZXhlY3V0aW9uKGVsbSwgcnVsZSwgZmxhZ3MpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICgwIDwgZm9ybS5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS12YWxpZGF0ZS1lcnJvcl0nKS5sZW5ndGgpIHtcclxuICAgICAgICBjb25zdCBlcnJvciA9IGZvcm0ucXVlcnlTZWxlY3RvcignW2RhdGEtdmFsaWRhdGUtZXJyb3JdJyk7XHJcbiAgICAgICAgbGV0IHBvcyA9XHJcbiAgICAgICAgICBlcnJvci5jbG9zZXN0KGAuJHt0aGlzLm9wdGlvbnMucGFyZW50Q2xhc3N9YCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcclxuICAgICAgICAgICAgLnRvcCArIHdpbmRvdy5wYWdlWU9mZnNldDtcclxuICAgICAgICBwb3MgPSBNYXRoLmZsb29yKHBvcyk7XHJcbiAgICAgICAgd2luZG93LnNjcm9sbFRvKDAsIHBvcyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZm9ybS5zdWJtaXQoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfSxcclxuICBleGVjdXRpb24odGFyZ2V0LCBydWxlLCBmbGFncywgZXJyb3IgPSB0cnVlKSB7XHJcbiAgICBjb25zdCBwYXJlbnQgPSB0YXJnZXQuY2xvc2VzdChgLiR7dGhpcy5vcHRpb25zLnBhcmVudENsYXNzfWApO1xyXG4gICAgdGhpcy5yZW1vdmVFcnJvcihwYXJlbnQpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBydWxlLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IHIgPSBydWxlW2ldO1xyXG4gICAgICBsZXQgcmVzdWx0ID0gJyc7XHJcbiAgICAgIGlmIChyID09PSAnZW1wdHknKSB7XHJcbiAgICAgICAgcmVzdWx0ID0gdGhpcy5lbXB0eSh0YXJnZXQsIGkpO1xyXG4gICAgICB9IGVsc2UgaWYgKHIgPT09ICd0ZWwnKSB7XHJcbiAgICAgICAgdGhpcy50cmFuc0hhcmZzaXplKHRhcmdldCk7XHJcbiAgICAgICAgcmVzdWx0ID0gdGhpcy50ZWwodGFyZ2V0LnZhbHVlKTtcclxuICAgICAgfSBlbHNlIGlmIChyID09PSAnemlwJykge1xyXG4gICAgICAgIHRoaXMudHJhbnNIYXJmc2l6ZSh0YXJnZXQpO1xyXG4gICAgICAgIHJlc3VsdCA9IHRoaXMuemlwKHRhcmdldC52YWx1ZSk7XHJcbiAgICAgIH0gZWxzZSBpZiAociA9PT0gJ2VtYWlsJykge1xyXG4gICAgICAgIHRoaXMudHJhbnNIYXJmc2l6ZSh0YXJnZXQpO1xyXG4gICAgICAgIHJlc3VsdCA9IHRoaXMuZW1haWwodGFyZ2V0LnZhbHVlKTtcclxuICAgICAgfSBlbHNlIGlmIChyID09PSAna2FuYScpIHtcclxuICAgICAgICByZXN1bHQgPSB0aGlzLmthbmEodGFyZ2V0LnZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgICBmbGFnc1tpXSA9IHJlc3VsdDtcclxuICAgIH1cclxuICAgIGlmIChlcnJvciAmJiBmbGFncy5pbmNsdWRlcyhmYWxzZSkpIHtcclxuICAgICAgY29uc3QgZXJyb3JJbmRleCA9IGZsYWdzLmZpbmRJbmRleCgodmFsKSA9PiAhdmFsKTtcclxuICAgICAgdGhpcy5hcHBlbmRFcnJvcihydWxlW2Vycm9ySW5kZXhdLCBwYXJlbnQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hbGxDaGVjaygpO1xyXG4gIH0sXHJcbiAgYWxsQ2hlY2soKSB7XHJcbiAgICBjb25zdCBzdWJtaXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuanMtc3VibWl0Jyk7XHJcbiAgICBjb25zdCByZXN1bHQgPSB7fTtcclxuICAgIC8vIGNvbnNvbGUubG9nKCdhbGxDaGVjaycpO1xyXG4gICAgZm9yIChjb25zdCB7IGVsbSwgbmFtZSwgZmxhZ3MgfSBvZiB0aGlzLnJ1bGVzKSB7XHJcbiAgICAgIC8vIGlmIChcclxuICAgICAgLy8gICBlbG0udGFnTmFtZSA9PT0gJ0lOUFVUJyAmJlxyXG4gICAgICAvLyAgIChlbG0uZ2V0QXR0cmlidXRlKCd0eXBlJykgPT09ICdjaGVja2JveCcgfHxcclxuICAgICAgLy8gICAgIGVsbS5nZXRBdHRyaWJ1dGUoJ3R5cGUnKSA9PT0gJ3JhZGlvJylcclxuICAgICAgLy8gKSB7XHJcbiAgICAgIC8vICAgcmVzdWx0W25hbWVdID0gZmxhZ3MuZXZlcnkoKHZhbCkgPT4gdmFsKTtcclxuICAgICAgLy8gfSBlbHNlIHtcclxuICAgICAgLy8gICByZXN1bHRbbmFtZV0gPSBmbGFncy5ldmVyeSgodmFsKSA9PiB2YWwpO1xyXG4gICAgICAvLyB9XHJcbiAgICAgIHJlc3VsdFtuYW1lXSA9IGZsYWdzLmV2ZXJ5KCh2YWwpID0+IHZhbCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKE9iamVjdC5rZXlzKHJlc3VsdCkuZXZlcnkoKGtleSkgPT4gcmVzdWx0W2tleV0pKSB7XHJcbiAgICAgIHN1Ym1pdC5jbGFzc0xpc3QucmVtb3ZlKCdpcy1kaXNhYmxlJyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzdWJtaXQuY2xhc3NMaXN0LmFkZCgnaXMtZGlzYWJsZScpO1xyXG4gICAgfVxyXG4gIH0sXHJcbiAgZW1wdHkodGFyZ2V0LCBydWxlSW5kZXgpIHtcclxuICAgIGNvbnN0IHR5cGUgPSB0YXJnZXQuZ2V0QXR0cmlidXRlKCd0eXBlJyk7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRhcmdldC50YWdOYW1lID09PSAnSU5QVVQnICYmXHJcbiAgICAgICh0eXBlID09PSAnY2hlY2tib3gnIHx8IHR5cGUgPT09ICdyYWRpbycpXHJcbiAgICApIHtcclxuICAgICAgbGV0IHZhbCA9ICcnO1xyXG4gICAgICBjb25zdCBuYW1lID0gdGFyZ2V0LmdldEF0dHJpYnV0ZSgnbmFtZScpO1xyXG4gICAgICBjb25zdCBmZWxsb3dzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgaW5wdXRbbmFtZT1cIiR7bmFtZX1cIl1gKTtcclxuICAgICAgZm9yIChjb25zdCBmZWxsb3cgb2YgZmVsbG93cykge1xyXG4gICAgICAgIGlmIChmZWxsb3cuY2hlY2tlZCkge1xyXG4gICAgICAgICAgdmFsID0gdGFyZ2V0LnZhbHVlO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHJ1bGVzR3JvdXAgPSB0aGlzLnJ1bGVzXHJcbiAgICAgICAgLm1hcCgodmFsKSA9PiAodmFsLm5hbWUgPT09IG5hbWUgPyB2YWwgOiBmYWxzZSkpXHJcbiAgICAgICAgLmZpbHRlcigodmFsKSA9PiB2YWwpO1xyXG4gICAgICBydWxlc0dyb3VwLmZvckVhY2goKHYpID0+ICh2LmZsYWdzW3J1bGVJbmRleF0gPSAhdmFsaWRhdG9yLmlzRW1wdHkodmFsKSkpO1xyXG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMucnVsZXMsIHJ1bGVzR3JvdXApO1xyXG4gICAgICByZXR1cm4gIXZhbGlkYXRvci5pc0VtcHR5KHZhbCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gIXZhbGlkYXRvci5pc0VtcHR5KHRhcmdldC52YWx1ZSk7XHJcbiAgICB9XHJcbiAgfSxcclxuICB0ZWwodmFsdWUpIHtcclxuICAgIHJldHVybi
15B2YWx1ZVxyXG4gICAgICA/IHZhbGlkYXRvci5pc0ludCh2YWx1ZSkgJiZcclxuICAgICAgICAgIHZhbGlkYXRvci5pc0xlbmd0aCh2YWx1ZSwgeyBtaW46IDEwLCBtYXg6IDExIH0pXHJcbiAgICAgIDogdHJ1ZTtcclxuICB9LFxyXG4gIHppcCh2YWx1ZSkge1xyXG4gICAgcmV0dXJuIHZhbHVlXHJcbiAgICAgID8gdmFsaWRhdG9yLmlzSW50KHZhbHVlKSAmJiB2YWxpZGF0b3IuaXNMZW5ndGgodmFsdWUsIHsgbWluOiA3LCBtYXg6IDcgfSlcclxuICAgICAgOiB0cnVlO1xyXG4gIH0sXHJcbiAgZW1haWwodmFsdWUpIHtcclxuICAgIHJldHVybiB2YWx1ZSA/IHZhbGlkYXRvci5pc0VtYWlsKHZhbHVlKSAmJiAhL1xcLnsyfS8udGVzdCh2YWx1ZSkgOiB0cnVlO1xyXG4gIH0sXHJcbiAga2FuYSh2YWx1ZSkge1xyXG4gICAgY29uc3QgdCA9IHZhbHVlLnJlcGxhY2UoL1xccysvZywgJycpO1xyXG4gICAgcmV0dXJuIHQgPyB2YWxpZGF0b3IubWF0Y2hlcyh0LCAvXlvjgqEt44O244O8XSskLykgOiB0cnVlO1xyXG4gIH0sXHJcbiAgYXBwZW5kRXJyb3Ioa2V5LCB0bykge1xyXG4gICAgdGhpcy5yZW1vdmVFcnJvcih0byk7XHJcbiAgICBjb25zdCBlbG0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7XHJcbiAgICBlbG0udGV4dENvbnRlbnQgPSB0aGlzLmVycm9yTWVzc2FnZVtrZXldO1xyXG4gICAgZWxtLnNldEF0dHJpYnV0ZSgnZGF0YS12YWxpZGF0ZS1lcnJvcicsICcnKTtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuZXJyb3J0ZXh0Q2xhc3MpIHtcclxuICAgICAgZWxtLmNsYXNzTGlzdC5hZGQodGhpcy5vcHRpb25zLmVycm9ydGV4dENsYXNzKTtcclxuICAgIH1cclxuICAgIHRvLmFwcGVuZChlbG0pO1xyXG4gIH0sXHJcbiAgcmVtb3ZlRXJyb3IodG8pIHtcclxuICAgIGNvbnN0IGVycm9ycyA9IHRvLnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXZhbGlkYXRlLWVycm9yXScpO1xyXG4gICAgZm9yIChjb25zdCBlcnIgb2YgZXJyb3JzKSB7XHJcbiAgICAgIGVyci5yZW1vdmUoKTtcclxuICAgIH1cclxuICB9LFxyXG4gIHppcGNvZGUoKSB7XHJcbiAgICBjb25zdCB6aXBjb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmpzLXppcGNvZGUnKTtcclxuICAgIGNvbnN0IHByZWZlY3R1cmVzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmpzLXByZWZlY3R1cmVzJyk7XHJcbiAgICBjb25zdCBhZGRyZXNzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmpzLWFkZHJlc3MnKTtcclxuICAgIGNvbnN0IGNoYW5nZUV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCdjaGFuZ2UnKTtcclxuXHJcbiAgICB6aXBjb2RlLmFkZEV2ZW50TGlzdGVuZXIoXHJcbiAgICAgICdpbnB1dCcsXHJcbiAgICAgICgpID0+IHtcclxuICAgICAgICBjb25zdCBjb2RlID0gZXZlbnQuY3VycmVudFRhcmdldC52YWx1ZTtcclxuICAgICAgICBpZiAoNiA8IGNvZGUubGVuZ3RoKSB7XHJcbiAgICAgICAgICBuZXcgWXViaW5CYW5nby5Db3JlKGV2ZW50LmN1cnJlbnRUYXJnZXQudmFsdWUsIChhZGRyKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChhZGRyLnJlZ2lvbl9pZCkge1xyXG4gICAgICAgICAgICAgIHByZWZlY3R1cmVzLnZhbHVlID0gYWRkci5yZWdpb25faWQ7XHJcbiAgICAgICAgICAgICAgcHJlZmVjdHVyZXMuZGlzcGF0Y2hFdmVudChjaGFuZ2VFdmVudCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGFkZHJlc3MgJiYgYWRkci5sb2NhbGl0eSkge1xyXG4gICAgICAgICAgICAgIGFkZHJlc3MudmFsdWUgPSBhZGRyLmxvY2FsaXR5ICsgYWRkci5zdHJlZXQ7XHJcbiAgICAgICAgICAgICAgYWRkcmVzcy5kaXNwYXRjaEV2ZW50KGNoYW5nZUV2ZW50KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB7IHBhc3NpdmU6IHRydWUgfVxyXG4gICAgKTtcclxuICB9LFxyXG4gIHRyYW5zSGFyZnNpemUodGFyZ2V0KSB7XHJcbiAgICBjb25zdCB2YWwgPSB0YXJnZXQudmFsdWU7XHJcbiAgICBjb25zdCBoYWxmVmFsID0gdmFsLnJlcGxhY2UoL1vvvKEt77y6772BLe+9mu+8kC3vvJldL2csIChzKSA9PiB7XHJcbiAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHMuY2hhckNvZGVBdCgwKSAtIDB4ZmVlMCk7XHJcbiAgICB9KTtcclxuICAgIHRhcmdldC52YWx1ZSA9IGhhbGZWYWw7XHJcbiAgfSxcclxuICBvcHRpb25Eb21haW4oKSB7XHJcbiAgICBjb25zdCBlbWFpbElucHV0cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5qcy1lbWFpbCcpO1xyXG4gICAgY29uc3QgZG9tYWluSXRlbXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuanMtZG9tYWluLWl0ZW0nKTtcclxuICAgIGNvbnN0IGNoYW5nZUV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCdjaGFuZ2UnKTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IGVtYWlsIG9mIGVtYWlsSW5wdXRzKSB7XHJcbiAgICAgIGVtYWlsLmFkZEV2ZW50TGlzdGVuZXIoXHJcbiAgICAgICAgJ2lucHV0JyxcclxuICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICBpZiAoZXZlbnQuZGF0YSA9PT0gJ0AnKSB7XHJcbiAgICAgICAgICAgIGlmIChlbWFpbC5uZXh0RWxlbWVudFNpYmxpbmcuY2xhc3NMaXN0LmNvbnRhaW5zKCdqcy1kb21haW4nKSkge1xyXG4gICAgICAgICAgICAgIGVtYWlsLm5leHRFbGVtZW50U2libGluZy5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgeyBwYXNzaXZlOiB0cnVlIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgZG9tYWluSXRlbXMpIHtcclxuICAgICAgaXRlbS5hZGRFdmVudExpc3RlbmVyKFxyXG4gICAgICAgICdjbGljaycsXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgZG9tYWluUHVsbGRvd24gPSBpdGVtLmNsb3Nlc3QoJy5qcy1kb21haW4nKTtcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgZG9tYWluUHVsbGRvd24ucHJldmlvdXNFbGVtZW50U2libGluZy5jbGFzc0xpc3QuY29udGFpbnMoJ2pzLWVtYWlsJylcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICBjb25zdCB0YXJnZXRFbWFpbElucHV0ID0gZG9tYWluUHVsbGRvd24ucHJldmlvdXNFbGVtZW50U2libGluZztcclxuICAgICAgICAgICAgdGFyZ2V0RW1haWxJbnB1dC52YWx1ZSArPSBpdGVtLnRleHRDb250ZW50LnNsaWNlKDEpO1xyXG4gICAgICAgICAgICB0YXJnZXRFbWFpbElucHV0LmRpc3BhdGNoRXZlbnQoY2hhbmdlRXZlbnQpO1xyXG4gICAgICAgICAgICBkb21haW5QdWxsZG93bi5zdHlsZS5kaXNwbGF5ID0gJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICB7IHBhc3NpdmU6IHRydWUgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gICAgICBmb3IgKGNvbnN0IGVtYWlsIG9mIGVtYWlsSW5wdXRzKSB7XHJcbiAgICAgICAgY29uc3QgZG9tYWluUHVsbGRvd24gPSBlbWFpbC5uZXh0RWxlbWVudFNpYmxpbmc7XHJcbiAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5jbG9zZXN0KCcuanMtZG9tYWluLXBhcmVudCcpID09PSBudWxsKSB7XHJcbiAgICAgICAgICBkb21haW5QdWxsZG93bi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gICAgICAgI
15H1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfSxcclxuICB0b2dnZVJlcUl0ZW0oKSB7XHJcbiAgICBjb25zdCBjb250YWN0SW5wdXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuanMtY29udGFjdCcpO1xyXG4gICAgY29uc3QgZW1haWxJbnB1dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5qcy1lbWFpbCcpO1xyXG4gICAgY29uc3QgdGVsSW5wdXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuanMtdGVsJyk7XHJcblxyXG4gICAgY29uc3QgdG9nZ2xlID0gKHZhbCkgPT4ge1xyXG4gICAgICBlbWFpbElucHV0LnJlcXVpcmVkID0gdmFsID09PSAnMSc7XHJcbiAgICAgIHRlbElucHV0LnJlcXVpcmVkID0gdmFsID09PSAnMic7XHJcblxyXG4gICAgICBjb25zdCBlbWFpbElucHV0TGFiZWwgPVxyXG4gICAgICAgIGVtYWlsSW5wdXQuY2xvc2VzdCgnLnAtZm9ybV9faW5wdXQnKS5wcmV2aW91c0VsZW1lbnRTaWJsaW5nO1xyXG4gICAgICBjb25zdCB0ZWxJbnB1dExhYmVsID1cclxuICAgICAgICB0ZWxJbnB1dC5jbG9zZXN0KCcucC1mb3JtX19pbnB1dCcpLnByZXZpb3VzRWxlbWVudFNpYmxpbmc7XHJcbiAgICAgIGVtYWlsSW5wdXRMYWJlbC5jbGFzc0xpc3QucmVtb3ZlKCctcmVxdWlyZWQnKTtcclxuICAgICAgdGVsSW5wdXRMYWJlbC5jbGFzc0xpc3QucmVtb3ZlKCctcmVxdWlyZWQnKTtcclxuXHJcbiAgICAgIGlmICh2YWwgPT09ICcxJykge1xyXG4gICAgICAgIGVtYWlsSW5wdXRMYWJlbC5jbGFzc0xpc3QuYWRkKCctcmVxdWlyZWQnKTtcclxuICAgICAgICBlbWFpbElucHV0LnNldEF0dHJpYnV0ZSgnZGF0YS12YWxpZGF0ZS1ydWxlJywgJ2VtcHR5LGVtYWlsJyk7XHJcbiAgICAgICAgdGVsSW5wdXQuc2V0QXR0cmlidXRlKCdkYXRhLXZhbGlkYXRlLXJ1bGUnLCAndGVsJyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGVsSW5wdXRMYWJlbC5jbGFzc0xpc3QuYWRkKCctcmVxdWlyZWQnKTtcclxuICAgICAgICB0ZWxJbnB1dC5zZXRBdHRyaWJ1dGUoJ2RhdGEtdmFsaWRhdGUtcnVsZScsICdlbXB0eSx0ZWwnKTtcclxuICAgICAgICBlbWFpbElucHV0LnNldEF0dHJpYnV0ZSgnZGF0YS12YWxpZGF0ZS1ydWxlJywgJ2VtYWlsJyk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgZm9yIChjb25zdCBpbnB1dCBvZiBjb250YWN0SW5wdXQpIHtcclxuICAgICAgaWYgKGlucHV0LmNoZWNrZWQpIHtcclxuICAgICAgICB0b2dnbGUoaW5wdXQudmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoXHJcbiAgICAgICAgJ2NoYW5nZScsXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgdG9nZ2xlKGlucHV0LnZhbHVlKTtcclxuICAgICAgICAgIHRoaXMudXBkYXRlUnVsZXMoKTtcclxuICAgICAgICAgIHRoaXMuYWxsQ2hlY2soKTtcclxuICAgICAgICAgIHRoaXMucmVtb3ZlRXJyb3IoZW1haWxJbnB1dC5jbG9zZXN0KCcucC1mb3JtX19pbnB1dCcpKTtcclxuICAgICAgICAgIHRoaXMucmVtb3ZlRXJyb3IodGVsSW5wdXQuY2xvc2VzdCgnLnAtZm9ybV9faW5wdXQnKSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICB7IHBhZGRpdmU6IHRydWUgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH0sXHJcbiAgdG9nZ2xlSXRlbSgpIHtcclxuICAgIGNvbnN0IHJvd3MgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuanMtaW5wdXQtcm93Jyk7XHJcbiAgICBjb25zdCBvcHRpb25zSW5wdXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuanMtb3B0aW9ucycpO1xyXG5cclxuICAgIGNvbnN0IHJlbW92ZUV2ZW50ID0gKCkgPT4ge1xyXG4gICAgICBmb3IgKGNvbnN0IG9wdGlvbiBvZiBvcHRpb25zSW5wdXQpIHtcclxuICAgICAgICBvcHRpb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgdG9nZ2xlKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCB0b2dnbGUgPSAoKSA9PiB7XHJcbiAgICAgIGlmIChldmVudC50YXJnZXQuY2hlY2tlZCkge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgaWYgKGkgIT09IDApIHJvd3NbaV0uY2xhc3NMaXN0LnJlbW92ZSgnaXMtaGlkZScpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZW1vdmVFdmVudCgpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIG9wdGlvbnNJbnB1dCkge1xyXG4gICAgICBvcHRpb24uYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgdG9nZ2xlKTtcclxuICAgIH1cclxuICB9LFxyXG4gIHdpdGhkcmF3YWwoKSB7XHJcbiAgICBsZXQgaXNTdWJtaXQgPSBmYWxzZTtcclxuICAgIGNvbnN0IGV4QnV0dG9ucyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5qcy1zdWJtaXQsIC5qcy1sb2dpbicpO1xyXG4gICAgZm9yIChjb25zdCBidXR0b24gb2YgZXhCdXR0b25zKSB7XHJcbiAgICAgIGJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcclxuICAgICAgICBpc1N1Ym1pdCA9IHRydWU7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2JlZm9yZXVubG9hZCcsIChldmVudCkgPT4ge1xyXG4gICAgICBpZiAoIWlzU3VibWl0KSB7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBldmVudC5yZXR1cm5WYWx1ZSA9ICcnO1xyXG4gICAgICB9XHJcbiAgICAgIGlzU3VibWl0ID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICB9LFxyXG59O1xyXG5cclxuY29uc3QgZm9ybSA9IG5ldyBGb3JtKCk7XHJcblxyXG5leHBvcnQgeyBmb3JtIH07XHJcbiIsImltcG9ydCBBY2NvcmRpb24gZnJvbSAnYWNjb3JkaW9uLWpzJztcclxuLy8gaW1wb3J0IFl1YmluQmFuZ28gZnJvbSAneXViaW5iYW5nby1jb3JlMic7XHJcbmltcG9ydCB7IHRocm90dGxlIH0gZnJvbSAndGhyb3R0bGUtZGVib3VuY2UnO1xyXG5pbXBvcnQgU3dpcGVyLCB7IFBhZ2luYXRpb24sIE5hdmlnYXRpb24sIEF1dG9wbGF5IH0gZnJvbSAnc3dpcGVyJztcclxuaW1wb3J0IE1pY3JvTW9kYWwgZnJvbSAnbWljcm9tb2RhbCc7XHJcbmltcG9ydCB7
15IFZWVSB9IGZyb20gJy4vbGlicmFyeS9WYXJpb3VzVmFsdWVzVXRpbCc7XHJcbmltcG9ydCB7IGJhY2tTdXJmYWNlRml4ZWQgfSBmcm9tICcuL2xpYnJhcnkvQmFja1N1cmZhY2VGaXhlZCc7XHJcbmltcG9ydCB7IEJ1eVNlYXJjaCB9IGZyb20gJy4vcGFnZS9idXlfc2VhcmNoJztcclxuaW1wb3J0IHJlc2VydmUgZnJvbSAnLi9wYWdlL3Jlc2VydmUnO1xyXG5pbXBvcnQgeyBUYWIgfSBmcm9tICcuL2xpYnJhcnkvdGFiJztcclxuaW1wb3J0IHsgZm9ybSB9IGZyb20gJy4vbGlicmFyeS9mb3JtJztcclxuaW1wb3J0IHsgY29tbW9uIH0gZnJvbSAnLi9jb21tb24nO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQge1xyXG4gIHRvcCgpIHtcclxuICAgIHRoaXMuc3RvcmVfYmxvZygpO1xyXG5cclxuICAgIGNvbnN0IHNsaWRlciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5qcy1tdi1zbGlkZXInKTtcclxuICAgIGlmIChzbGlkZXIpIHtcclxuICAgICAgY29uc3Qgc2xpZGVzID0gc2xpZGVyLnF1ZXJ5U2VsZWN0b3JBbGwoJy5zd2lwZXItc2xpZGUgaW1nJyk7XHJcblxyXG4gICAgICBuZXcgU3dpcGVyKHNsaWRlciwge1xyXG4gICAgICAgIG1vZHVsZXM6IFtQYWdpbmF0aW9uLCBBdXRvcGxheV0sXHJcbiAgICAgICAgc2xpZGVzUGVyVmlldzogMi4yLFxyXG4gICAgICAgIHNwYWNlQmV0d2VlbjogMTAsXHJcbiAgICAgICAgcGFnaW5hdGlvbjoge1xyXG4gICAgICAgICAgZWw6ICcuanMtbXYtcGFnZXInLFxyXG4gICAgICAgICAgYnVsbGV0QWN0aXZlQ2xhc3M6ICdpcy1hY3RpdmUnLFxyXG4gICAgICAgICAgYnVsbGV0Q2xhc3M6ICdpdGVtJyxcclxuICAgICAgICAgIGNsaWNrYWJsZTogdHJ1ZSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGxvb3A6IHRydWUsXHJcbiAgICAgICAgY2VudGVyZWRTbGlkZXM6IHRydWUsXHJcbiAgICAgICAgYXV0b3BsYXk6IHtcclxuICAgICAgICAgIGRlbGF5OiAzMDAwLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgYnJlYWtwb2ludHM6IHtcclxuICAgICAgICAgIDc2OToge1xyXG4gICAgICAgICAgICBzcGFjZUJldHdlZW46IDIwLFxyXG4gICAgICAgICAgICBzbGlkZXNQZXJWaWV3OiAnYXV0bycsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGRpZmZIZWlnaHRDYWxjID0gKHNlbGVjdG9yLCB0YXJnZXRzKSA9PiB7XHJcbiAgICAgIGNvbnN0IHNlbGYgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKTtcclxuICAgICAgY29uc3QgY2FsYyA9ICgpID0+IHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSB0YXJnZXRzLnJlZHVjZSgocHJldiwgY3JyKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBlbG0gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGNycik7XHJcbiAgICAgICAgICBjb25zdCBoID0gZWxtLm9mZnNldEhlaWdodDtcclxuICAgICAgICAgIGlmICgwIDwgcHJldikge1xyXG4gICAgICAgICAgICBsZXQgbXQgPVxyXG4gICAgICAgICAgICAgIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsbSkuZ2V0UHJvcGVydHlWYWx1ZSgnbWFyZ2luLXRvcCcpIHx8XHJcbiAgICAgICAgICAgICAgZWxtLnN0eWxlLm1hcmdpblRvcDtcclxuICAgICAgICAgICAgbXQgPSBwYXJzZUludChtdCk7XHJcbiAgICAgICAgICAgIHJldHVybiBwcmV2IC0gaCAtIG10O1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIGg7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSwgMCk7XHJcbiAgICAgICAgc2VsZi5zdHlsZS5tYXJnaW5Ub3AgPSBgJHtNYXRoLmFicyhyZXN1bHQpICogLTF9cHhgO1xyXG4gICAgICB9O1xyXG5cclxuICAgICAgaWYgKCFWVlUubWVkaWFMZykge1xyXG4gICAgICAgIGNhbGMoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXHJcbiAgICAgICAgJ3Jlc2l6ZScsXHJcbiAgICAgICAgdGhyb3R0bGUoMTAwLCAoKSA9PiB7XHJcbiAgICAgICAgICBpZiAoIVZWVS5tZWRpYUxnKSB7XHJcbiAgICAgICAgICAgIGNhbGMoKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHNlbGYuc3R5bGUubWFyZ2luVG9wID0gJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgZmFsc2UsXHJcbiAgICAgICAgeyBwYXNzaXZlOiB0cnVlIH1cclxuICAgICAgKTtcclxuICAgIH07XHJcblxyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCAoKSA9PiB7XHJcbiAgICAgIGRpZmZIZWlnaHRDYWxjKCcuanMtYWJvdmUtYmxvY2sxJywgW1xyXG4gICAgICAgICcuanMtc2VhcmNoLXN0eWxlJyxcclxuICAgICAgICAnLmpzLXNlYXJjaC1tYXJrZXInLFxyXG4gICAgICBdKTtcclxuICAgICAgZGlmZkhlaWdodENhbGMoJy5qcy1hYm92ZS1ibG9jazInLCBbXHJcbiAgICAgICAgJy5qcy1zZWFyY2gtY29sb3InLFxyXG4gICAgICAgICcuanMtc2VhcmNoLWV4aGF1c3QnLFxyXG4gICAgICBdKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGxldCB0ZXJtVGFiID0gJyc7XHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcclxuICAgICAgJ2xvYWQnLFxyXG4gICAgICAoKSA9PiB7XHJcbiAgICAgICAgaWYgKFZWVS5tZWRpYSkge1xyXG4gICAgICAgICAgdGVybVRhYiA9IG5ldyBUYWIoJy5qcy10ZXJtLXRhYicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmpzLXJlY29tbWVuZC10YWInKSkge1xyXG4gICAgICAgICAgbmV3IFRhYignLmpzLXJlY29tbWVuZC10YWInKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXHJcbiAgICAgICAgICAncmVzaXplJyxcclxuICAgICAgICAgIHRocm90dGxlKDEwMCwgKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoVlZVLm1lZGlhKSB7XHJcbiAgICAgICAgICAgICAgaWYgKCF0ZXJtVGFiKSB7XHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgdGVybVRhYiA9IG5ldyBUYWIoJy5qcy10ZXJtLXRhYicpO1xyXG4gICAgICAgICAgICAgICAgfSwgMTAwKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgI
15H0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgaWYgKHRlcm1UYWIpIHtcclxuICAgICAgICAgICAgICAgIHRlcm1UYWIuZGVzdHJveSgpO1xyXG4gICAgICAgICAgICAgICAgdGVybVRhYiA9IG51bGw7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICAgIGZhbHNlLFxyXG4gICAgICAgICAgeyBwYXNzaXZlOiB0cnVlIH1cclxuICAgICAgICApO1xyXG4gICAgICB9LFxyXG4gICAgICB7IG9uY2U6IHRydWUgfVxyXG4gICAgKTtcclxuICB9LFxyXG4gIGJ1eSgpIHtcclxuICAgIHRoaXMudG9wKCk7XHJcblxyXG4gICAgQnV5U2VhcmNoLnByaWNlQXR0ZW50aW9uTW9kYWwoKTtcclxuXHJcbiAgICBuZXcgU3dpcGVyKCcuanMtaW5mby1zbGlkZXInLCB7XHJcbiAgICAgIG1vZHVsZXM6IFtQYWdpbmF0aW9uLCBOYXZpZ2F0aW9uLCBBdXRvcGxheV0sXHJcbiAgICAgIHNwYWNlQmV0d2VlbjogMjMsXHJcbiAgICAgIGxvb3A6IHRydWUsXHJcbiAgICAgIHBhZ2luYXRpb246IHtcclxuICAgICAgICBlbDogJy5qcy1zbGlkZXItcGFnZXInLFxyXG4gICAgICAgIGJ1bGxldEFjdGl2ZUNsYXNzOiAnLWN1cnJlbnQnLFxyXG4gICAgICAgIGJ1bGxldENsYXNzOiAnaXRlbScsXHJcbiAgICAgICAgY2xpY2thYmxlOiB0cnVlLFxyXG4gICAgICB9LFxyXG4gICAgICBzbGlkZXNQZXJWaWV3OiAxLjUsXHJcbiAgICAgIGNlbnRlcmVkU2xpZGVzOiB0cnVlLFxyXG4gICAgICAvLyBzbGlkZXNQZXJHcm91cDogMSxcclxuICAgICAgYXV0b3BsYXk6IHtcclxuICAgICAgICBkZWxheTogMzAwMCxcclxuICAgICAgfSxcclxuICAgICAgYnJlYWtwb2ludHM6IHtcclxuICAgICAgICA3Njk6IHtcclxuICAgICAgICAgIGNlbnRlcmVkU2xpZGVzOiBmYWxzZSxcclxuICAgICAgICAgIHNwYWNlQmV0d2VlbjogMzAsXHJcbiAgICAgICAgICBzbGlkZXNQZXJWaWV3OiAzLFxyXG4gICAgICAgICAgLy8gc2xpZGVzUGVyR3JvdXA6IDMsXHJcbiAgICAgICAgICBuYXZpZ2F0aW9uOiB7XHJcbiAgICAgICAgICAgIG5leHRFbDogJy5qcy1pbmZvLXNsaWRlci1uZXh0JyxcclxuICAgICAgICAgICAgcHJldkVsOiAnLmpzLWluZm8tc2xpZGVyLXByZXYnLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfSxcclxuICBtYWludGVuYW5jZSgpIHtcclxuICAgIHJlc2VydmUoKTtcclxuICAgIHRoaXMubWVudGVfYmlrZWVwKCk7XHJcbiAgICBmb3JtLnppcGNvZGUoKTtcclxuICAgIGZvcm0udmFsaWRhdGUoKTtcclxuICB9LFxyXG4gIGVzdGltYXRlKCkge1xyXG4gICAgZm9ybS53aXRoZHJhd2FsKCk7XHJcbiAgICBmb3JtLnRvZ2dsZUl0ZW0oKTtcclxuICAgIGZvcm0uemlwY29kZSgpO1xyXG4gICAgZm9ybS5vcHRpb25Eb21haW4oKTtcclxuICAgIGZvcm0udG9nZ2VSZXFJdGVtKCk7XHJcbiAgICBmb3JtLnZhbGlkYXRlKCk7XHJcbiAgfSxcclxuICByZXNlcnZlKCkge1xyXG4gICAgcmVzZXJ2ZSgpO1xyXG5cclxuICAgIGZvcm0ud2l0aGRyYXdhbCgpO1xyXG4gICAgZm9ybS56aXBjb2RlKCk7XHJcbiAgICBmb3JtLm9wdGlvbkRvbWFpbigpO1xyXG4gICAgZm9ybS50b2dnZVJlcUl0ZW0oKTtcclxuICAgIGZvcm0udmFsaWRhdGUoKTtcclxuICB9LFxyXG4gIHNpZ251cCgpIHtcclxuICAgIHRoaXMubWFpbnRlbmFuY2UoKTtcclxuXHJcbiAgICBsZXQgc2xpZGVyID0gJyc7XHJcbiAgICBjb25zdCBvcHQgPSB7XHJcbiAgICAgIG1vZHVsZXM6IFtOYXZpZ2F0aW9uXSxcclxuICAgICAgc2xpZGVzUGVyVmlldzogMSxcclxuICAgICAgbmF2aWdhdGlvbjoge1xyXG4gICAgICAgIG5leHRFbDogJy5qcy1tZXJpdC1hcnJvdy4tbmV4dCcsXHJcbiAgICAgICAgcHJldkVsOiAnLmpzLW1lcml0LWFycm93Li1wcmV2JyxcclxuICAgICAgfSxcclxuICAgIH07XHJcblxyXG4gICAgaWYgKFZWVS5tZWRpYSkge1xyXG4gICAgICBzbGlkZXIgPSBuZXcgU3dpcGVyKCcuanMtbWVyaXQtc2xpZGVyJywgb3B0KTtcclxuICAgIH1cclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFxyXG4gICAgICAncmVzaXplJyxcclxuICAgICAgdGhyb3R0bGUoXHJcbiAgICAgICAgMTUsXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgaWYgKFZWVS5tZWRpYSkge1xyXG4gICAgICAgICAgICBpZiAoIXNsaWRlcikge1xyXG4gICAgICAgICAgICAgIHNsaWRlciA9IG5ldyBTd2lwZXIoJy5qcy1tZXJpdC1zbGlkZXInLCBvcHQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoc2xpZGVyKSB7XHJcbiAgICAgICAgICAgICAgc2xpZGVyLmRlc3Ryb3koKTtcclxuICAgICAgICAgICAgICBzbGlkZXIgPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBmYWxzZVxyXG4gICAgICApLFxyXG4gICAgICB7IHBhc3NpdmU6IHRydWUgfVxyXG4gICAgKTtcclxuICB9LFxyXG4gIHN0b3JlX2Jsb2coKSB7XHJcbiAgICBjb25zdCBzbGlkZXJzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmpzLXNsaWRlcicpO1xyXG4gICAgbGV0IHN3aXBlciA9IFtdO1xyXG4gICAgY29uc3QgZGVmYXVsdHMgPSB7XHJcbiAgICAgIG1vZHVsZXM6IFtQYWdpbmF0aW9uXSxcclxuICAgICAgc2xpZGVzUGVyVmlldzogMS4xNSxcclxuICAgICAgLy8gbG9vcDogdHJ1ZSxcclxuICAgICAgc3BhY2VCZXR3ZWVuOiAyMCxcclxuICAgICAgcGFnaW5hdGlvbjoge1xyXG4gICAgICAgIGVsOiAnLmpzLXNsaWRlci1wYWdlcicsXHJcbiAgICAgICAgYnVsbGV0QWN0aXZlQ2xhc3M6ICctY3VycmVudCcsXHJcbiAgICAgICAgYnVsbGV0Q2xhc3M6ICdpdGVtJyxcclxuICAgICAgICBjbGlja2FibGU6IHRydWUsXHJcbiAgICAgIH0sXHJcbiAgICAgIGJyZWFrcG9pbnRzOiB7XHJcbiAgICAgICAgNzY5OiB7XHJcbiAgICAgICAgICBzbGlkZXNQZXJWaWV3OiAzLjIsXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgIH07XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzbGlkZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IHNsaWRlciA9IHNsaWRlcnNbaV07XHJcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0cyk7XHJcbiAgICAgIGNvbnN0IG9iaiA9IHtcclxuICAgICAgICBzbGlkZXI6IG51bGwsXHJcbiAgICAgICAgZW5hYmxlOiBmYWxzZSxcclxuICAgICAgICBzbGlkZXM6IHNsaWRlci5xdWVyeVNlbGVjdG9yQWxsKCcuc3dpcGVyLXNsaWRlJyksXHJcbiAgICAgICAgb3B0aW9uczogJycsXHJcbiAgICAgIH07XHJcbiAgICAgIGlmIChzbGlkZXIuZ2V0QXR0cmlidXRlKCdkYXRhLXNsaWRlci12aWV3cycpKSB7XHJcbiAgICAgICAgb3B0aW9ucy5zbGlkZXNQZXJWaWV3ID0gTnVtYmVyKFxyXG4gICAgICAgICAgc2xpZGVyLmdldEF0dHJpYnV0ZSgnZGF0YS1zbGlkZXItdmlld3MnKVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgb2JqLm9wdGlvbnMgPSBvcHRpb25zO1xyXG4gICAgICBzd2lwZXJbaV0gPSBvYmo7XHJcblxyXG4gICAgICBsZXQgYnAgPVxyXG4gICAgICAgI
15HNsaWRlci5nZXRBdHRyaWJ1dGUoJ2RhdGEtc2xpZGVyLWJwJykgPT09ICdsZydcclxuICAgICAgICAgID8gVlZVLm1lZGlhTGdcclxuICAgICAgICAgIDogc2xpZGVyLmdldEF0dHJpYnV0ZSgnZGF0YS1zbGlkZXItYnAnKSA9PT0gJ25vbmUnXHJcbiAgICAgICAgICA/ICcnXHJcbiAgICAgICAgICA6IFZWVS5tZWRpYTtcclxuICAgICAgaWYgKGJwID09PSAnJykge1xyXG4gICAgICAgIHN3aXBlcltpXS5lbmFibGUgPSB0cnVlO1xyXG4gICAgICAgIHN3aXBlcltpXS5vcHRpb25zLmJyZWFrcG9pbnRzWzc2OV0uc2xpZGVzUGVyVmlldyA9IDQ7XHJcbiAgICAgICAgc3dpcGVyW2ldLnNsaWRlciA9IG5ldyBTd2lwZXIoc2xpZGVyLCBvcHRpb25zKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoYnApIHtcclxuICAgICAgICAgIHN3aXBlcltpXS5lbmFibGUgPSB0cnVlO1xyXG4gICAgICAgICAgc3dpcGVyW2ldLnNsaWRlciA9IG5ldyBTd2lwZXIoc2xpZGVyLCBvcHRpb25zKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKHNsaWRlci5xdWVyeVNlbGVjdG9yKCcuanMtc2xpZGVyLXBhZ2VyJykpIHtcclxuICAgICAgICAgICAgc2xpZGVyLnF1ZXJ5U2VsZWN0b3IoJy5qcy1zbGlkZXItcGFnZXInKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZm9yIChjb25zdCBzbGlkZSBvZiBvYmouc2xpZGVzKSB7XHJcbiAgICAgICAgICAgIHNsaWRlLmNsYXNzTGlzdC5yZW1vdmUoJ3N3aXBlci1zbGlkZScpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFxyXG4gICAgICAncmVzaXplJyxcclxuICAgICAgdGhyb3R0bGUoXHJcbiAgICAgICAgMTUsXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzbGlkZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCBicCA9XHJcbiAgICAgICAgICAgICAgc2xpZGVyc1tpXS5nZXRBdHRyaWJ1dGUoJ2RhdGEtc2xpZGVyLWJwJykgPT09ICdsZydcclxuICAgICAgICAgICAgICAgID8gVlZVLm1lZGlhTGdcclxuICAgICAgICAgICAgICAgIDogVlZVLm1lZGlhO1xyXG4gICAgICAgICAgICBpZiAoYnApIHtcclxuICAgICAgICAgICAgICBpZiAoIXN3aXBlcltpXS5lbmFibGUgJiYgIXN3aXBlcltpXS5zbGlkZXIpIHtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgc2xpZGUgb2Ygc3dpcGVyW2ldLnNsaWRlcykge1xyXG4gICAgICAgICAgICAgICAgICBzbGlkZS5jbGFzc0xpc3QuYWRkKCdzd2lwZXItc2xpZGUnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHN3aXBlcltpXS5zbGlkZXIgPSBuZXcgU3dpcGVyKHNsaWRlcnNbaV0sIHN3aXBlcltpXS5vcHRpb25zKTtcclxuICAgICAgICAgICAgICAgIHN3aXBlcltpXS5lbmFibGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgaWYgKHNsaWRlcnNbaV0ucXVlcnlTZWxlY3RvcignLmpzLXNsaWRlci1wYWdlcicpKSB7XHJcbiAgICAgICAgICAgICAgICAgIHNsaWRlcnNbaV0ucXVlcnlTZWxlY3RvcignLmpzLXNsaWRlci1wYWdlcicpLnN0eWxlLmRpc3BsYXkgPVxyXG4gICAgICAgICAgICAgICAgICAgICcnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBpZiAoc3dpcGVyW2ldLmVuYWJsZSAmJiBzd2lwZXJbaV0uc2xpZGVyKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoc2xpZGVyc1tpXS5xdWVyeVNlbGVjdG9yKCcuanMtc2xpZGVyLXBhZ2VyJykpIHtcclxuICAgICAgICAgICAgICAgICAgc2xpZGVyc1tpXS5xdWVyeVNlbGVjdG9yKCcuanMtc2xpZGVyLXBhZ2VyJykuc3R5bGUuZGlzcGxheSA9XHJcbiAgICAgICAgICAgICAgICAgICAgJ25vbmUnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgc3dpcGVyW2ldLnNsaWRlci5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgICAgICBzd2lwZXJbaV0uc2xpZGVyID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIHN3aXBlcltpXS5lbmFibGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgc2xpZGUgb2Ygc3dpcGVyW2ldLnNsaWRlcykge1xyXG4gICAgICAgICAgICAgICAgICBzbGlkZS5jbGFzc0xpc3QucmVtb3ZlKCdzd2lwZXItc2xpZGUnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGZhbHNlXHJcbiAgICAgICksXHJcbiAgICAgIHsgcGFzc2l2ZTogdHJ1ZSB9XHJcbiAgICApO1xyXG4gIH0sXHJcbiAgc3RvcmVfYmxvZ19hcnRpY2xlKCkge1xyXG4gICAgLy8gdGhpcy5zdG9yZV9ibG9nKCk7XHJcbiAgfSxcclxuICBzdG9yZV9kZXRhaWwoKSB7XHJcbiAgICB0aGlzLnN0b3JlX2Jsb2coKTtcclxuICB9LFxyXG4gIG5ld3NfYXJ0aWNsZSgpIHtcclxuICAgIHRoaXMuc3RvcmVfYmxvZygpO1xyXG4gIH0sXHJcbiAgbWVudGVfYmlrZWVwKCkge1xyXG4gICAgY29uc3QgYWNDb250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuanMtYWMtY29udGFpbmVyJyk7XHJcbiAgICBpZiAoYWNDb250YWluZXIpIHtcclxuICAgICAgZm9yIChjb25zdCBhYyBvZiBhY0NvbnRhaW5lcikge1xyXG4gICAgICAgIG5ldyBBY2NvcmRpb24oYWMsIHtcclxuICAgICAgICAgIHNob3dNdWx0aXBsZTogdHJ1ZSxcclxuICAgICAgICAgIGVsZW1lbnRDbGFzczogJ2pzLWFjJyxcclxuICAgICAgICAgIHRyaWdnZXJDbGFzczogJ2pzLWFjLXRyaWdnZXInLFxyXG4gICAgICAgICAgcGFuZWxDbGFzczogJ2pzLWFjLXBhbmVsJyxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0sXHJcbiAgbWVudGVfdGVua2VuKCkge1xyXG4gICAgbGV0IGVuYWJsZSA9IGZhbHNlO1xyXG4gICAgY29uc3QgbW9yZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5qcy1tb3JlJyk7XHJcblxyXG4gICAgY29uc3QgdG9nZ2xlID0gKCkgPT4ge1xyXG4gICAgICBjb25zdCB0cmlnZ2VyID0gZXZlbnQuY3VycmVudFRhcmdldDtcclxuICAgICAgY29uc3QgY29udGVudCA9IHRyaWdnZXIucHJldmlvdXNFbGVtZW50U2libGluZztcclxuXHJcbiAgICAgIGlmIChjb250ZW50LmNsYXNzTGlzdC5jb250YWlucygnanMtbW9yZS1jb250ZW50JykpIHtcclxuICAgICAgICBpZiAodHJpZ2dlci5jbGFzc0xpc3QuY29udGFpbnMoJ2lzLWFjdGl2ZScpKSB7XHJcbiAgICAgICAgICBjb250ZW50LnN0eWxlLmhlaWdodCA9ICcnO1xyXG4gICAgICAgICAgdHJpZ2dlci5jbGFzc0xpc3QucmVtb3ZlKCdpcy1hY3RpdmUnKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29udGVudC5zdHlsZS5oZWlnaHQgPSBjb250ZW50LnNjcm9sbEhlaWdodCArICdweCc7XHJcbiAgICAgICAgICB0cmlnZ2VyLmNsYXNzTGlzdC5hZGQoJ2lzLWFjdGl2ZScpO1xyXG4gICAgICAgI
15H1cclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAoVlZVLm1lZGlhKSB7XHJcbiAgICAgIGVuYWJsZSA9IHRydWU7XHJcbiAgICAgIGZvciAoY29uc3QgdGFyZ2V0IG9mIG1vcmUpIHtcclxuICAgICAgICB0YXJnZXRcclxuICAgICAgICAgIC5xdWVyeVNlbGVjdG9yKCcuanMtbW9yZS10cmlnZ2VyJylcclxuICAgICAgICAgIC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRvZ2dsZSwgeyBwYXNzaXZlOiB0cnVlIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXHJcbiAgICAgICdyZXNpemUnLFxyXG4gICAgICB0aHJvdHRsZShcclxuICAgICAgICAxNSxcclxuICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICBpZiAoVlZVLm1lZGlhKSB7XHJcbiAgICAgICAgICAgIGlmICghZW5hYmxlKSB7XHJcbiAgICAgICAgICAgICAgZm9yIChjb25zdCB0YXJnZXQgb2YgbW9yZSkge1xyXG4gICAgICAgICAgICAgICAgZW5hYmxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRhcmdldFxyXG4gICAgICAgICAgICAgICAgICAucXVlcnlTZWxlY3RvcignLmpzLW1vcmUtdHJpZ2dlcicpXHJcbiAgICAgICAgICAgICAgICAgIC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRvZ2dsZSwgeyBwYXNzaXZlOiB0cnVlIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBmb3IgKGNvbnN0IHRhcmdldCBvZiBtb3JlKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50ID0gdGFyZ2V0LnF1ZXJ5U2VsZWN0b3IoJy5qcy1tb3JlLWNvbnRlbnQnKTtcclxuICAgICAgICAgICAgICAgIGlmIChjb250ZW50LnN0eWxlLmhlaWdodCkge1xyXG4gICAgICAgICAgICAgICAgICBjb250ZW50LnN0eWxlLnRyYW5zaXRpb24gPSAnbm9uZSc7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnRlbnQuc3R5bGUuaGVpZ2h0ID0gJyc7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGhlaWdodCA9IGNvbnRlbnQuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgICAgICAgICAgICAgICBjb250ZW50LnN0eWxlLnRyYW5zaXRpb24gPSAnJztcclxuICAgICAgICAgICAgICAgICAgY29udGVudC5zdHlsZS5oZWlnaHQgPSBoZWlnaHQgKyAncHgnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCB0YXJnZXQgb2YgbW9yZSkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSB0YXJnZXQucXVlcnlTZWxlY3RvcignLmpzLW1vcmUtY29udGVudCcpO1xyXG4gICAgICAgICAgICAgIGlmIChjb250ZW50LnN0eWxlLmhlaWdodCkge1xyXG4gICAgICAgICAgICAgICAgY29udGVudC5zdHlsZS5oZWlnaHQgPSAnJztcclxuICAgICAgICAgICAgICAgIHRhcmdldFxyXG4gICAgICAgICAgICAgICAgICAucXVlcnlTZWxlY3RvcignLmpzLW1vcmUtdHJpZ2dlcicpXHJcbiAgICAgICAgICAgICAgICAgIC5jbGFzc0xpc3QucmVtb3ZlKCdpcy1hY3RpdmUnKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGZhbHNlXHJcbiAgICAgICksXHJcbiAgICAgIHsgcGFzc2l2ZTogdHJ1ZSB9XHJcbiAgICApO1xyXG4gIH0sXHJcbiAgbWVudGVfc3lha2VuKCkge1xyXG4gICAgdGhpcy5tZW50ZV90ZW5rZW4oKTtcclxuICB9LFxyXG4gIG15cGFnZV9hY2NvdW50X2VkaXQoKSB7XHJcbiAgICB0aGlzLm1haW50ZW5hbmNlKCk7XHJcbiAgfSxcclxuICBidXlfYmVnaW5uZXIoKSB7XHJcbiAgICB0aGlzLnN0b3JlX2Jsb2coKTtcclxuICB9LFxyXG4gIGJ1eV9kZXRhaWwoKSB7XHJcbiAgICB0aGlzLnN0b3JlX2Jsb2coKTtcclxuXHJcbiAgICBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmpzLWFjLWNvbnRhaW5lcicpKSB7XHJcbiAgICAgIG5ldyBBY2NvcmRpb24oZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmpzLWFjLWNvbnRhaW5lcicpLCB7XHJcbiAgICAgICAgc2hvd011bHRpcGxlOiB0cnVlLFxyXG4gICAgICAgIGVsZW1lbnRDbGFzczogJ2pzLWFjJyxcclxuICAgICAgICB0cmlnZ2VyQ2xhc3M6ICdqcy1hYy10cmlnZ2VyJyxcclxuICAgICAgICBwYW5lbENsYXNzOiAnanMtYWMtcGFuZWwnLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBNaWNyb01vZGFsLmluaXQoe1xyXG4gICAgICBvcGVuQ2xhc3M6ICdpcy12aXNpYmxlJyxcclxuICAgICAgb3BlblRyaWdnZXI6ICdkYXRhLW1vZGFsLXRyaWdnZXInLFxyXG4gICAgICBjbG9zZVRyaWdnZXI6ICdkYXRhLW1vZGFsLWNsb3NlJyxcclxuICAgICAgb25TaG93OiAoKSA9PiB7XHJcbiAgICAgICAgYmFja1N1cmZhY2VGaXhlZCh0cnVlKTtcclxuICAgICAgfSxcclxuICAgICAgb25DbG9zZTogKCkgPT4ge1xyXG4gICAgICAgIGJhY2tTdXJmYWNlRml4ZWQoZmFsc2UpO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgdG1iT3B0ID0ge1xyXG4gICAgICBtb2R1bGVzOiBbTmF2aWdhdGlvbl0sXHJcbiAgICAgIHNsaWRlc1BlclZpZXc6IDMsXHJcbiAgICAgIHNwYWNlQmV0d2VlbjogMTAsXHJcbiAgICAgIG5hdmlnYXRpb246IHtcclxuICAgICAgICBuZXh0RWw6ICcuanMtc2xpZGVyLXRtYi1uZXh0JyxcclxuICAgICAgICBwcmV2RWw6ICcuanMtc2xpZGVyLXRtYi1wcmV2JyxcclxuICAgICAgfSxcclxuICAgIH07XHJcbiAgICBjb25zdCBzbGlkZXJzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmpzLXNsaWRlci1tYWluJyk7XHJcbiAgICBjb25zdCB0aHVtYm5haWxTbGlkZXJzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmpzLXNsaWRlci10aHVtYm5haWwnKTtcclxuICAgIGNvbnN0IHNsaWRlcnNBcnJheSA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzbGlkZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IHNsaWRlciA9IHNsaWRlcnNbaV07XHJcbiAgICAgIGNvbnN0IG9wdCA9IHtcclxuICAgICAgICBzbGlkZXNQZXJWaWV3OiAxLFxyXG4gICAgICAgIG1vZHVsZXM6IFtOYXZpZ2F0aW9uXSxcclxuICAgICAgICBuYXZpZ2F0aW9uOiB7XHJcbiAgICAgICAgICBuZXh0RWw6ICcuanMtc2xpZGVyLW1haW4tbmV4dCcsXHJcbiAgICAgICAgICBwcmV2RWw6ICcuanMtc2xpZGVyLW1haW4tcHJldicsXHJcbiAgICAgICAgfSxcclxuICAgICAgfTtcclxuICAgICAgaWYgKGkgPT09IDEpIHtcclxuICAgICAgICBvcHQubW9kdWxlcyA9IFtOYXZpZ2F0aW9uXTtcclxuICAgICAgICBvcHQubmF2aWdhdGlvbiA9IHtcclxuICAgICAgICAgIG5leHRFbDogJy5qcy1zbGlkZXItbmV4dCcsXHJcbiAgICAgICAgICBwcmV2RWw6ICcuanMtc2xpZGVyLXByZXYnLFxyXG4gICAgICAgI
15H07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IHdhdGVybWFyayA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5qcy13YXRlcm1hcmsnKTtcclxuICAgICAgaWYgKHNsaWRlcnNBcnJheS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgc2xpZGVyc0FycmF5WzBdLnN3aXBlci5vbignc2xpZGVDaGFuZ2UnLCAocykgPT4ge1xyXG4gICAgICAgICAgd2F0ZXJtYXJrLmNsYXNzTGlzdC50b2dnbGUoJ2lzLWhpZGUnLCBzLnJlYWxJbmRleCAhPT0gMCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IHN3aXBlciA9IG5ldyBTd2lwZXIoc2xpZGVyLCBvcHQpO1xyXG4gICAgICBsZXQgdGh1bWJuYWlsID0gdGh1bWJuYWlsU2xpZGVyc1tpXS5xdWVyeVNlbGVjdG9yQWxsKCcuanMtdGh1bWJuYWlsJyk7XHJcbiAgICAgIGxldCB0aHVtYm5haWxTd2lwZXIgPSAnJztcclxuICAgICAgaWYgKFZWVS5tZWRpYSkge1xyXG4gICAgICAgIHRodW1ibmFpbFN3aXBlciA9IG5ldyBTd2lwZXIodGh1bWJuYWlsU2xpZGVyc1tpXSwgdG1iT3B0KTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBvYmogPSB7XHJcbiAgICAgICAgc2xpZGVyOiBzbGlkZXIsXHJcbiAgICAgICAgc3dpcGVyOiBzd2lwZXIsXHJcbiAgICAgICAgdGh1bWJuYWlsU2xpZGVyOiB0aHVtYm5haWxTbGlkZXJzW2ldLFxyXG4gICAgICAgIHRodW1ibmFpbFN3aXBlcjogdGh1bWJuYWlsU3dpcGVyLFxyXG4gICAgICAgIHRodW1ibmFpbDogdGh1bWJuYWlsLFxyXG4gICAgICAgIHRodW1ibmFpbEFycmF5OiBBcnJheS5mcm9tKHRodW1ibmFpbCksXHJcbiAgICAgIH07XHJcbiAgICAgIHNsaWRlcnNBcnJheS5wdXNoKG9iaik7XHJcbiAgICAgIHRodW1ibmFpbFswXS5jbGFzc0xpc3QuYWRkKCdpcy1jdXJyZW50Jyk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdGh1bWJuYWlsUmVzZXQgPSAodGh1bWJuYWlsKSA9PiB7XHJcbiAgICAgIGZvciAoY29uc3QgdG1iIG9mIHRodW1ibmFpbCkge1xyXG4gICAgICAgIGlmICh0bWIuY2xhc3NMaXN0LmNvbnRhaW5zKCdpcy1jdXJyZW50JykpIHtcclxuICAgICAgICAgIHRtYi5jbGFzc0xpc3QucmVtb3ZlKCdpcy1jdXJyZW50Jyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2xpZGVyc0FycmF5Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIHNsaWRlcnNBcnJheVtpXS5zd2lwZXIub24oJ3NsaWRlQ2hhbmdlJywgKHMpID0+IHtcclxuICAgICAgICB0aHVtYm5haWxSZXNldChzbGlkZXJzQXJyYXlbaV0udGh1bWJuYWlsKTtcclxuICAgICAgICBzbGlkZXJzQXJyYXlbaV0udGh1bWJuYWlsW3MucmVhbEluZGV4XS5jbGFzc0xpc3QuYWRkKCdpcy1jdXJyZW50Jyk7XHJcbiAgICAgICAgaWYgKHNsaWRlcnNBcnJheVtpXS50aHVtYm5haWxTd2lwZXIpIHtcclxuICAgICAgICAgIHNsaWRlcnNBcnJheVtpXS50aHVtYm5haWxTd2lwZXIuc2xpZGVUbyhzLnJlYWxJbmRleCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgaWYgKGkgPT09IDApIHtcclxuICAgICAgICBzbGlkZXJzQXJyYXlbaV0uc3dpcGVyLm9uKCdzbGlkZUNoYW5nZScsIChzKSA9PiB7XHJcbiAgICAgICAgICBzbGlkZXJzQXJyYXlbMV0uc3dpcGVyLnNsaWRlVG8ocy5yZWFsSW5kZXgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIH0gZWxzZSB7XHJcbiAgICAgIC8vICAgc2xpZGVyc0FycmF5W2ldLnN3aXBlci5vbignc2xpZGVDaGFuZ2UnLCAocykgPT4ge1xyXG4gICAgICAvLyAgICAgc2xpZGVyc0FycmF5WzBdLnN3aXBlci5zbGlkZVRvKHMucmVhbEluZGV4KTtcclxuICAgICAgLy8gICB9KTtcclxuICAgICAgLy8gfVxyXG5cclxuICAgICAgY29uc3QgdGh1bWJuYWlsQXJyYXkgPSBzbGlkZXJzQXJyYXlbaV0udGh1bWJuYWlsQXJyYXk7XHJcbiAgICAgIGZvciAoY29uc3QgdG1iIG9mIHRodW1ibmFpbEFycmF5KSB7X
15HJcbiAgICAgICAgdG1iLmFkZEV2ZW50TGlzdGVuZXIoXHJcbiAgICAgICAgICAnY2xpY2snLFxyXG4gICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC5jdXJyZW50VGFyZ2V0O1xyXG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHRodW1ibmFpbEFycmF5LmZpbmRJbmRleCgodG1iKSA9PiB0bWIgPT09IHRhcmdldCk7XHJcbiAgICAgICAgICAgIHRodW1ibmFpbFJlc2V0KHNsaWRlcnNBcnJheVtpXS50aHVtYm5haWwpO1xyXG4gICAgICAgICAgICB0YXJnZXQuY2xhc3NMaXN0LmFkZCgnaXMtY3VycmVudCcpO1xyXG4gICAgICAgICAgICBzbGlkZXJzQXJyYXlbaV0uc3dpcGVyLnNsaWRlVG8oaW5kZXgpO1xyXG4gICAgICAgICAgICBpZiAoaSA9PT0gMCkge1xyXG4gICAgICAgICAgICAgIHRodW1ibmFpbFJlc2V0KHNsaWRlcnNBcnJheVsxXS50aHVtYm5haWwpO1xyXG4gICAgICAgICAgICAgIHNsaWRlcnNBcnJheVsxXS5zd2lwZXIuc2xpZGVUbyhpbmRleCk7XHJcbiAgICAgICAgICAgICAgc2xpZGVyc0FycmF5WzFdLnRodW1ibmFpbEFycmF5W2luZGV4XS5jbGFzc0xpc3QuYWRkKCdpcy1jdXJyZW50Jyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7IHBhc3NpdmU6IHRydWUgfVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcclxuICAgICAgJ3Jlc2l6ZScsXHJcbiAgICAgIHRocm90dGxlKFxyXG4gICAgICAgIDE1LFxyXG4gICAgICAgICgpID0+IHtcclxuICAgICAgICAgIGlmIChWVlUubWVkaWEpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzbGlkZXJzQXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICBpZiAoIXNsaWRlcnNBcnJheVtpXS50aHVtYm5haWxTd2lwZXIpIHtcclxuICAgICAgICAgICAgICAgIHNsaWRlcnNBcnJheVtpXS50aHVtYm5haWxTd2lwZXIgPSBuZXcgU3dpcGVyKFxyXG4gICAgICAgICAgICAgICAgICBzbGlkZXJzQXJyYXlbaV0udGh1bWJuYWlsU2xpZGVyLFxyXG4gICAgICAgICAgICAgICAgICB0bWJPcHRcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNsaWRlcnNBcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIGlmIChzbGlkZXJzQXJyYXlbaV0udGh1bWJuYWlsU3dpcGVyKSB7XHJcbiAgICAgICAgICAgICAgICBzbGlkZXJzQXJyYXlbaV0udGh1bWJuYWlsU3dpcGVyLmRlc3Ryb3koKTtcclxuICAgICAgICAgICAgICAgIHNsaWRlcnNBcnJheVtpXS50aHVtYm5haWxTd2lwZXIgPSAnJztcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGZhbHNlXHJcbiAgICAgICksXHJcbiAgICAgIHsgcGFzc2l2ZTogdHJ1ZSB9XHJcbiAgICApO1xyXG4gIH0sXHJcbiAgLy8gYnV5X3NlYXJjaCgpIHtcclxuICAvLyAgIEJ1eVNlYXJjaC5pbml0KCk7XHJcbiAgLy8gfSxcclxuICBidXlfbWFrZXJfc2hvdygpIHtcclxuICAgIGNvbnN0IGFjID0gbmV3IEFjY29yZGlvbignLmpzLWFjLWxpc3QnLCB7XHJcbiAgICAgIHNob3dNdWx0aXBsZTogdHJ1ZSxcclxuICAgICAgZWxlbWVudENsYXNzOiAnanMtYWMnLFxyXG4gICAgICB0cmlnZ2VyQ2xhc3M6ICdqcy1hYy10cmlnZ2VyJyxcclxuICAgICAgcGFuZWxDbGFzczogJ2pzLWFjLXBhbmVsJyxcclxuICAgICAgb25seUNoaWxkTm9kZXM6IGZhbHNlLFxyXG4gICAgfSk7XHJcbiAgICBhYy5vcGVuQWxsKCk7XHJcbiAgfSxcclxuICBteXBhZ2VfaGlzdG9yeSgpIHtcclxuICAgIG5ldyBUYWIoJy5qcy10YWInLCB7XHJcbiAgICAgIGhlaWdodDogZmFsc2UsXHJcbiAgICB9KTtcclxuICAgIG5ldyBBY2NvcmRpb24oJy5qcy1hYy1jb250YWluZXInLCB7XHJcbiAgICAgIHNob3dNdWx0aXBsZTogdHJ1ZSxcclxuICAgICAgZWxlbWVudENsYXNzOiAnanMtYWMnLFxyXG4gICAgICB0cmlnZ2VyQ2xhc3M6ICdqcy1hYy10cmlnZ2VyJyxcclxuICAgICAgcGFuZWxDbGFzczogJ2pzLWFjLXBhbmVsJyxcclxuICAgIH0pO1xyXG4gIH0sXHJcbiAgLy8gbWVkaWEoKSB7XHJcbiAgLy8gICBuZXcgVGFiKCcuanMtdGFiJyk7XHJcbiAgLy8gfSxcclxuICBtZWRpYV9hcnRpY2xlKCkge1xyXG4gICAgY29uc3QgYm9keSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5qcy1yZXBvcnQtYm9keScpO1xyXG4gICAgY29uc3QgdG9jV3JhcHBlciA9IGBcclxuICAgICAgPGRpdiBjbGFzcz1cImMtYmxvY2stdG9jIGpzLWFjXCI+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJjLWJsb2NrLXRvY19fbGFiZWxcIj7nm67mrKE8L3A+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImMtYmxvY2stdG9jX190cmlnZ2VyIGpzLWFjLXRyaWdnZXJcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYy1ibG9jay10b2NfX2xpc3QganMtYWMtcGFuZWxcIj5cclxuICAgICAgICAgIDxkaXYgaWQ9XCJ0b2NfY29udGFpbmVyXCIgY2xhc3M9XCJub19idWxsZXRzXCI+XHJcbiAgICAgICAgICAgIDx1bCBjbGFzcz1cInRvY19saXN0IGpzLXJlcG9ydC10b2NcIj5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIGA7XHJcbiAgICBpZiAoYm9keSkge1xyXG4gICAgICBjb25zdCBoMkxpc3QgPSBib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoJ2gyJyk7XHJcbiAgICAgIGlmICgwIDwgaDJMaXN0Lmxlbmd0aCkge1xyXG4gICAgICAgIGJvZHkuaW5zZXJ0QWRqYWNlbnRIVE1MKCdhZnRlcmJlZ2luJywgdG9jV3JhcHBlcik7XHJcbiAgICAgICAgY29uc3QgdG9jID0gYm9keS5xdWVyeVNlbGVjdG9yKCcuanMtcmVwb3J0LXRvYycpO1xyXG4gICAgICAgIGNvbnN0IGFUYWdzID0gW107XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBoMkxpc3QubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGNvbnN0IGgyID0gaDJMaXN0W2ldO1xyXG4gICAgICAgICAgY29uc3QgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpO1xyXG4gICAgICAgICAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgICAgICAgIGNvbnN0IGlkID0gYHRvYy0ke2l9YDtcclxuICAgICAgICAgIGgyLnNldEF0dHJpYnV0ZSgnaWQnLCBpZCk7XHJcbiAgICAgICAgICBhLnRleHRDb250ZW50ID0gaDIudGV4dENvbnRlbnQ7XHJcbiAgICAgICAgICBhLnNldEF0dHJpYnV0ZSgnaHJlZicsIGAjJHtpZH1gKTtcclxuICAgICAgICAgIGxpLmFwcGVuZChhKTtcclxuICAgICAgICAgI
15HRvYy5hcHBlbmQobGkpO1xyXG4gICAgICAgICAgYVRhZ3MucHVzaChhKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yIChjb25zdCBhIG9mIGFUYWdzKSB7XHJcbiAgICAgICAgICBjb21tb24uc21vb3RoU2Nyb2xsKGEpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGFjID0gbmV3IEFjY29yZGlvbignLmpzLWFjLWNvbnRhaW5lcicsIHtcclxuICAgICAgZWxlbWVudENsYXNzOiAnanMtYWMnLFxyXG4gICAgICB0cmlnZ2VyQ2xhc3M6ICdqcy1hYy10cmlnZ2VyJyxcclxuICAgICAgcGFuZWxDbGFzczogJ2pzLWFjLXBhbmVsJyxcclxuICAgICAgb3Blbk9uSW5pdDogWzBdLFxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgZ2FsbGVyeVN3aXBlck9wdCA9IHtcclxuICAgICAgbW9kdWxlczogW1BhZ2luYXRpb25dLFxyXG4gICAgICBzbGlkZXNQZXJWaWV3OiAxLFxyXG4gICAgICBwYWdpbmF0aW9uOiB7XHJcbiAgICAgICAgYnVsbGV0QWN0aXZlQ2xhc3M6ICdpcy1hY3RpdmUnLFxyXG4gICAgICAgIGJ1bGxldENsYXNzOiAndGh1bWJuYWlsJyxcclxuICAgICAgICBjbGlja2FibGU6IHRydWUsXHJcbiAgICAgIH0sXHJcbiAgICAgIGxvb3A6IHRydWUsXHJcbiAgICAgIGF1dG9IZWlnaHQ6IHRydWUsXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGdhbGxlcnlTbGlkZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuanMtZ2FsbGVyeS1zbGlkZXInKTtcclxuICAgIGlmIChnYWxsZXJ5U2xpZGVyLmxlbmd0aCA+IDApIHtcclxuICAgICAgZm9yIChjb25zdCBnYWxsZXJ5IG9mIGdhbGxlcnlTbGlkZXIpIHtcclxuICAgICAgICBjb25zdCBzbGlkZXMgPSBnYWxsZXJ5LnF1ZXJ5U2VsZWN0b3JBbGwoJy5zd2lwZXItc2xpZGUgaW1nJyk7XHJcbiAgICAgICAgY29uc3Qgb3B0ID0geyAuLi5nYWxsZXJ5U3dpcGVyT3B0IH07XHJcbiAgICAgICAgb3B0LnBhZ2luYXRpb24uZWwgPSBnYWxsZXJ5Lm5leHRFbGVtZW50U2libGluZztcclxuICAgICAgICBvcHQucGFnaW5hdGlvbi5yZW5kZXJCdWxsZXQgPSAoaW5kZXgsIGNsYXNzTmFtZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIGA8ZGl2IGNsYXNzPVwiJHtjbGFzc05hbWV9XCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJHtzbGlkZXNbXHJcbiAgICAgICAgICAgIGluZGV4XHJcbiAgICAgICAgICBdLmdldEF0dHJpYnV0ZSgnc3JjJyl9KVwiPjwvZGl2PmA7XHJcbiAgICAgICAgfTtcclxuICAgICAgICBuZXcgU3dpcGVyKGdhbGxlcnksIG9wdCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9LFxyXG4gIHN0b3JlX2thd2FzYWtpX3BsYXphKCkge1xyXG4gICAgdGhpcy5zdG9yZV9ibG9nKCk7XHJcbiAgfSxcclxuICBpbnN1cmFuY2UoKSB7XHJcbiAgICBjb25zdCBhY0NvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5qcy1hYy1jb250YWluZXInKTtcclxuICAgIGlmIChhY0NvbnRhaW5lcikge1xyXG4gICAgICBmb3IgKGNvbnN0IGFjIG9mIGFjQ29udGFpbmVyKSB7XHJcbiAgICAgICAgbmV3IEFjY29yZGlvbihhYywge1xyXG4gICAgICAgICAgc2hvd011bHRpcGxlOiB0cnVlLFxyXG4gICAgICAgICAgZWxlbWVudENsYXNzOiAnanMtYWMnLFxyXG4gICAgICAgICAgdHJpZ2dlckNsYXNzOiAnanMtYWMtdHJpZ2dlcicsXHJcbiAgICAgICAgICBwYW5lbENsYXNzOiAnanMtYWMtcGFuZWwnLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSxcclxuICBpbnN1cmFuY2VfaG9rZW5famliYWkoKSB7XHJcbiAgICB0aGlzLmluc3VyYW5jZSgpO1xyXG4gIH0sXHJcbiAgaW5zdXJhbmNlX2hva2VuX25pbmkoKSB7XHJcbiAgICB0aGlzLmluc3VyYW5jZSgpO1xyXG4gIH0sXHJcbiAgaW5zdXJhbmNlX2hva2VuX3RvbmFuKCkge1xyXG4gICAgdGhpcy5pbnN1cmFuY2UoKTtcclxuICAgIG5ldyBUYWIoJy5qcy10YWInLCB7XHJcbiAgICAgIGhlaWdodDogZmFsc2UsXHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCB1cmxQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO1xyXG4gICAgaWYgKHVybFBhcmFtcy5oYXMoJ2FjdGl2ZScpKSB7XHJcbiAgICAgIGNvbnN0IGFjdGl2ZUluZGV4ID0gcGFyc2VJbnQodXJsUGFyYW1zLmdldCgnYWN0aXZlJyksIDEwKTtcclxuICAgICAgY29uc3QgdHJpZ2dlcnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuanMtdGFiLXRyaWdnZXInKTtcclxuICAgICAgaWYgKHRyaWdnZXJzW2FjdGl2ZUluZGV4XSkge1xyXG4gICAgICAgIHRyaWdnZXJzW2FjdGl2ZUluZGV4XS5jbGljaygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdGFiVHJpZ2dlcnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuanMtdGFiLXRyaWdnZXInKTtcclxuICAgIHRhYlRyaWdnZXJzLmZvckVhY2goKHRyaWdnZXIsIGluZGV4KSA9PiB7XHJcbiAgICAgIHRyaWdnZXIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgIGNvbnN0IG5ld1VybCA9IG5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpO1xyXG4gICAgICBpZiAoaW5kZXggIT09IDApIHtcclxuICAgICAgICBuZXdVcmwuc2VhcmNoUGFyYW1zLnNldCgnYWN0aXZlJywgaW5kZXgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5ld1VybC5zZWFyY2hQYXJhbXMuZGVsZXRlKCdhY3RpdmUnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaGlzdG9yeS5yZXBsYWNlU3RhdGUobnVsbCwgJycsIG5ld1VybC50b1N0cmluZygpKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcbn07XHJcbiIsImltcG9ydCBzbW9vdGhzY3JvbGwgZnJvbSAnc21vb3Roc2Nyb2xsLXBvbHlmaWxsJztcclxuaW1wb3J0IHsgVlZVIH0gZnJvbSAnLi9saWJyYXJ5L1ZhcmlvdXNWYWx1ZXNVdGlsJztcclxuaW1wb3J0IHsgY29tbW9uIH0gZnJvbSAnLi9jb21tb24nO1xyXG5pbXBvcnQgcGFnZSBmcm9tICcuL3BhZ2UnO1xyXG5pbXBvcnQgeyBCdXlTZWFyY2ggfSBmcm9tICcuL3BhZ2UvYnV5X3NlYXJjaCc7XHJcblxyXG5zbW9vdGhzY3JvbGwucG9seWZpbGwoKTtcclxuY29tbW9uLmluaXQoKTtcclxuXHJcbndpbmRvdy5hZGR
15FdmVudExpc3RlbmVyKFxyXG4gICdET01Db250ZW50TG9hZGVkJyxcclxuICAoKSA9PiB7XHJcbiAgICBCdXlTZWFyY2guaW5pdCgpO1xyXG5cclxuICAgIGxldCBwYWdlaWQgPSBkb2N1bWVudC5ib2R5LmdldEF0dHJpYnV0ZSgnZGF0YS1wYWdlJyk7XHJcbiAgICBwYWdlaWQgPSBwYWdlaWQucmVwbGFjZUFsbCgnLScsICdfJyk7XHJcbiAgICBpZiAocGFnZWlkIGluIHBhZ2UpIHBhZ2VbcGFnZWlkXSgpO1xyXG5cclxuICAgIGlmIChwYWdlaWQgPT09ICdidXlfc2VhcmNoJykge1xyXG4gICAgICBpZiAoIWxvY2F0aW9uLnNlYXJjaCkge1xyXG4gICAgICAgIGNvbW1vbi5maXhTZWFyY2hCYXIoKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29tbW9uLmZpeFNlYXJjaEJhcigpO1xyXG4gICAgfVxyXG4gIH0sXHJcbiAgeyBvbmNlOiB0cnVlIH1cclxuKTtcclxuXHJcbndpbmRvdy5hZGRFdmVudExpc3RlbmVyKFxyXG4gICdsb2FkJyxcclxuICAoKSA9PiB7XHJcbiAgICBWVlUucmVzaXplKCk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoJ2lzLXByZWxvYWQnKTtcclxuICB9LFxyXG4gIHsgb25jZTogdHJ1ZSB9XHJcbik7XHJcblxyXG53aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgKCkgPT4ge1xyXG4gIFZWVS5yZXNpemUoKTtcclxufSk7XHJcblxyXG53aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgKCkgPT4ge1xyXG4gIFZWVS5zY3JvbGwoKTtcclxufSk7XHJcbiJdLCJuYW1lcyI6WyJwb2x5ZmlsbCIsInciLCJ3aW5kb3ciLCJkIiwiZG9jdW1lbnQiLCJkb2N1bWVudEVsZW1lbnQiLCJzdHlsZSIsIl9fZm9yY2VTbW9vdGhTY3JvbGxQb2x5ZmlsbF9fIiwidXNlckFnZW50IiwiRWxlbWVudCIsIkhUTUxFbGVtZW50IiwiU0NST0xMX1RJTUUiLCJvcmlnaW5hbCIsInNjcm9sbCIsInNjcm9sbFRvIiwic2Nyb2xsQnkiLCJlbGVtZW50U2Nyb2xsIiwicHJvdG90eXBlIiwic2Nyb2xsRWxlbWVudCIsInNjcm9sbEludG9WaWV3Iiwibm93IiwicGVyZm9ybWFuY2UiLCJiaW5kIiwiRGF0ZSIsIlJPVU5ESU5HX1RPTEVSQU5DRSIsIm5hdmlnYXRvciIsIlJlZ0V4cCIsImpvaW4iLCJ0ZXN0IiwidW5kZWZpbmVkIiwiYXJndW1lbnRzIiwic2hvdWxkQmFpbE91dCIsInNtb290aFNjcm9sbCIsImNhbGwiLCJib2R5IiwibGVmdCIsInNjcm9sbFgiLCJwYWdlWE9mZnNldCIsInRvcCIsInNjcm9sbFkiLCJwYWdlWU9mZnNldCIsInRoaXMiLCJzY3JvbGxMZWZ0Iiwic2Nyb2xsVG9wIiwiU3ludGF4RXJyb3IiLCJiZWhhdmlvciIsInNjcm9sbGFibGVQYXJlbnQiLCJlbCIsImlzU2Nyb2xsYWJsZSIsInBhcmVudE5vZGUiLCJob3N0IiwiZmluZFNjcm9sbGFibGVQYXJlbnQiLCJwYXJlbnRSZWN0cyIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsIm
15NsaWVudFJlY3RzIiwiZ2V0Q29tcHV0ZWRTdHlsZSIsInBvc2l0aW9uIiwieCIsInkiLCJmaXJzdEFyZyIsIlR5cGVFcnJvciIsImhhc1Njcm9sbGFibGVTcGFjZSIsImF4aXMiLCJjbGllbnRIZWlnaHQiLCJzY3JvbGxIZWlnaHQiLCJjbGllbnRXaWR0aCIsInNjcm9sbFdpZHRoIiwiY2FuT3ZlcmZsb3ciLCJvdmVyZmxvd1ZhbHVlIiwiaXNTY3JvbGxhYmxlWSIsImlzU2Nyb2xsYWJsZVgiLCJzdGVwIiwiY29udGV4dCIsInZhbHVlIiwiY3VycmVudFgiLCJjdXJyZW50WSIsImsiLCJlbGFwc2VkIiwic3RhcnRUaW1lIiwiTWF0aCIsImNvcyIsIlBJIiwic3RhcnRYIiwic3RhcnRZIiwibWV0aG9kIiwic2Nyb2xsYWJsZSIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsIlZhcmlvdXNWYWx1ZXNVdGlsIiwic3RhdGljIiwicCIsImlubmVyV2lkdGgiLCJpbm5lckhlaWdodCIsIm8iLCJtIiwibWF0Y2hNZWRpYSIsIm1hdGNoZXMiLCJsZyIsImgiLCJzaXplIiwiT2JqZWN0IiwiYXNzaWduIiwiX3NpemVzIiwicGFnZSIsIndpZHRoIiwiaGVpZ2h0Iiwib2Zmc2V0IiwibWVkaWEiLCJtZWRpYUxnIiwidG91Y2giLCJ0IiwiaG92ZXIiLCJyZXNpemUiLCJlIiwibiIsInMiLCJpIiwiciIsIkFycmF5IiwiaXNBcnJheSIsImxlbmd0aCIsIm1hcCIsImEiLCJpbml0Iiwib3B0aW9ucyIsImR1cmF0aW9uIiwiYXJpYUVuYWJsZWQiLCJjb2xsYXBzZSIsInNob3dNdWx0aXBsZSIsIm9ubHlDaGlsZE5vZGVzIiwib3Blbk9uSW5pdCIsImVsZW1lbnRDbGFzcyIsInRyaWdnZXJDbGFzcyIsInBhbmVsQ2xhc3MiLCJhY3RpdmVDbGFzcyIsImJlZm9yZU9wZW4iLCJvbk9wZW4iLCJiZWZvcmVDbG9zZSIsIm9uQ2xvc2UiLCJjb250YWluZXIiLCJxdWVyeVNlbGVjdG9yIiwiY3JlYXRlRGVmaW5pdGlvbnMiLCJhdHRhY2hFdmVudHMiLCJ
15jaGlsZE5vZGVzIiwicXVlcnlTZWxlY3RvckFsbCIsInUiLCJlbGVtZW50cyIsImZyb20iLCJmaWx0ZXIiLCJjbGFzc0xpc3QiLCJjb250YWlucyIsImZpcnN0RWxlbWVudCIsImxhc3RFbGVtZW50IiwiZm9yRWFjaCIsImFkZCIsImdlbmVyYXRlSURzIiwic2V0QVJJQSIsInNldFRyYW5zaXRpb24iLCJpbmRleE9mIiwiaW5jbHVkZXMiLCJzaG93RWxlbWVudCIsImNsb3NlRWxlbWVudCIsImwiLCJjb25jYXQiLCJzZXRBdHRyaWJ1dGUiLCJpZCIsInJlbW92ZUlEcyIsInN0YXJ0c1dpdGgiLCJyZW1vdmVBdHRyaWJ1dGUiLCJ1cGRhdGVBUklBIiwiYXJpYUV4cGFuZGVkIiwiYXJpYURpc2FibGVkIiwicmVtb3ZlQVJJQSIsImZvY3VzIiwicHJldmVudERlZmF1bHQiLCJmb2N1c0ZpcnN0RWxlbWVudCIsImN1cnJGb2N1c2VkSWR4IiwiZm9jdXNMYXN0RWxlbWVudCIsImZvY3VzTmV4dEVsZW1lbnQiLCJmb2N1c1ByZXZFbGVtZW50IiwicmVtb3ZlIiwidG9nZ2xlRWxlbWVudCIsImNsb3NlRWxlbWVudHMiLCJoYW5kbGVDbGljayIsImN1cnJlbnRUYXJnZXQiLCJ0YXJnZXQiLCJub2RlTmFtZSIsImhhbmRsZUtleWRvd24iLCJrZXkiLCJoYW5kbGVGb2N1cyIsImZpbmQiLCJoYW5kbGVUcmFuc2l0aW9uRW5kIiwic3RvcFByb3BhZ2F0aW9uIiwicHJvcGVydHlOYW1lIiwicGFyc2VJbnQiLCJhZGRFdmVudExpc3RlbmVyIiwiZGV0YWNoRXZlbnRzIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInRvZ2dsZSIsIm9wZW4iLCJvcGVuQWxsIiwiY2xvc2UiLCJjbG9zZUFsbCIsImRlc3Ryb3kiLCJ1cGRhdGUiLCJjIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJzbGljZSIsIkNTUyIsImVzY2FwZSIsIm1vZHVsZSIsImV4cG9ydHMiLCJBY2NvcmRpb24iLCJ0aHJvdHRsZSIsImRlbGF5Iiwibm9UcmFpbGluZyIsImNhbGxiYWNrIiwiZGVib3VuY2VNb2RlIiwidGltZW91dElEIiwiY2FuY2VsbGVkIiwibGFzdEV4ZWMiLCJjbGVhckV4aXN0aW5nVGltZW91dCIsImNsZWFyVGltZW91dCIsIndyYXBwZXIiLCJfbGVuIiwiYXJndW1lbnRzXyIsIl9rZXkiLCJzZWxmIiwiZXhlYyIsImFwcGx5Iiwic2V0VGltZW91dCIsImNhbmNlbCIsImVsZW1lbnRPZmZzZXQiLCJjb25zdHJ1Y3RvciIsImhlYWRlciIsInBvcyIsImdldEVsZW1lbnRCeUlkIiwib2Zmc2V0SGVpZ2h0IiwiZmxvb3IiLCJNZW51IiwidHJpZ2dlciIsIm1lbnUiLCJtZW51TGFiZWwiLCJvcGVuQW5pbWF0ZSIsIm9wYWNpdHkiLCJvcGVuQW5pbWF0ZVRpbWluZyIsInJlZ2lzdGVyRWxtIiwib25jZSIsImdldEF0dHJpYnV0ZSIsInBhc3NpdmUiLCJmbGFnIiwiZGlzYWJsZWQiLCJ0ZXh0Q29udGVudCIsImJhY2tTdXJmYWNlRml4ZWQiLCJyb290Iiwic2Nyb2xsUG9zIiwic3R5bGVzIiwib3ZlcmZsb3dZIiwic2V0UHJvcGVydHkiLCJwcm9wIiwiZGlzcGxheSIsImFuaW1hdGUiLCJyZXZlcnNlIiwiZmluaXNoZWQiLCJ0aGVuIiwiY29tbWl0U3R5bGVzIiwiQ29tbW9uIiwibWVudUFjY3MiLCJhY2MiLCJWVlUiLCJqIiwiYXR0YWNoU21vb3RoU2Nyb2xsIiwibXlwYWdlTmF2IiwibG9jYXRpb24iLCJoYXNoIiwiaGFzaFNjcm9sbCIsInJlcGxhY2UiLCJsaW5rRWxtIiwiaHJlZiIsImVuYWJsZSIsIm5hdkl0ZW0iLCJldmVudCIsIm5leHRFbGVtZW50U2libGluZyIsImF0dGFjaEV2ZW50IiwiaXRlbSIsImZpeFNlYXJjaEJhciIsImZvbGxvd0J1dHRvbiIsInBhZGRpbmdUb3AiLCJ6SW5kZXgiLCJjb21tb24iLCJpc09iamVjdCIsIm9iaiIsImV4dGVuZCIsInNyYyIsImtleXMiLCJzc3JEb2N1bWVudCIsImFjdGl2ZUVsZW1lbnQiLCJibHVyIiwiY3JlYXRlRXZlbnQiLCJpbml0RXZlbnQiLCJjcmVhdGVFbGVtZW50IiwiY2hpbGRyZW4iLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsImNyZWF0ZUVsZW1lbnROUyIsImltcG9ydE5vZGUiLCJob3N0bmFtZSIsIm9yaWdpbiIsInBhdGhuYW1lIiwicHJvdG9jb2wiLCJzZWFyY2giLCJnZXREb2N1bWVudCIsImRvYyIsInNzcldpbmRvdyIsImhpc3RvcnkiLCJyZXBsYWNlU3RhdGUiLCJwdXNoU3RhdGUiLCJnbyIsImJhY2siLCJDdXN0b21FdmVudCIsImdldFByb3BlcnR5VmFsdWUiLCJJbWFnZSIsInNjcmVlbiIsImNhbmNlbEFuaW1hdGlvbkZyYW1lIiwiZ2V0V2luZG93Iiwid2luIiwiRG9tNyIsIml0ZW1zIiwic3VwZXIiLCJwcm90byIsIl9fcHJvdG9fXyIsImRlZmluZVByb3BlcnR5IiwiZ2V0Iiwic2V0IiwibWFrZVJlYWN0aXZlIiwiYXJyYXlGbGF0IiwiYXJyIiwicmVzIiwicHVzaCIsImFycmF5RmlsdGVyIiwiJCIsInNlbGVjdG9yIiwiaHRtbCIsInRyaW0iLCJ0b0NyZWF0ZSIsInRlbXBQYXJlbnQiLCJpbm5lckhUTUwiLCJxc2EiLCJub2RlVHlwZSIsInVuaXF1ZUFycmF5IiwiYXJyYXlVbmlxdWUiLCJmbiIsIk1ldGhvZHMiLCJhZGRDbGFzcyIsImNsYXNzZXMiLCJjbGFzc05hbWVzIiwic3BsaXQiLCJyZW1vdmVDbGFzcyIsImhhc0NsYXNzIiwiY2xhc3NOYW1lIiwidG9nZ2xlQ2xhc3MiLCJhdHRyIiwiYXR0cnMiLCJhdHRyTmFtZSIsInJlbW92ZUF0dHIiLCJ0cmFuc2Zvcm0iLCJ0cmFuc2l0aW9uRHVyYXRpb24iLCJhcmdzIiwiZXZlbnRUeXBlIiwidGFyZ2V0U2VsZWN0b3IiLCJsaXN0ZW5lciIsImNhcHR1cmUiLCJoYW5kbGVMaXZlRXZlbnQiLCJldmVudERhdGEiLCJkb203RXZlbnREYXRhIiwidW5zaGlmdCIsImlzIiwicGFyZW50cyIsImhhbmRsZUV2ZW50IiwiZXZlbnRzIiwiZG9tN0xpdmVMaXN0ZW5lcnMiLCJwcm94eUxpc3RlbmVyIiwiZG9tN0xpc3RlbmVycyIsImhhbmRsZXJzIiwiaGFuZGxlciIsImRvbTdwcm94eSIsInNwbGljZSIsImV2dCIsImRldGFpbCIsImJ1YmJsZXMiLCJjYW5jZWxhYmxlIiwiZGF0YSIsImRhdGFJbmRleCIsImRpc3BhdGNoRXZlbnQiLCJkb20iLCJvbiIsImZpcmVDYWxsQmFjayIsIm9mZiIsIm91dGVyV2lkdGgiLCJpbmNsdWRlTWFyZ2lucyIsIm9mZnNldFdpZHRoIiwicGFyc2VGbG9hdCIsIm91dGVySGVpZ2h0IiwiYm94IiwiY2xpZW50VG9wIiwiY2xpZW50TGVmdCIsImNzcyIsInByb3BzIiwiZWFjaCIsImluZGV4IiwidGV4dCIsImNvbXBhcmVXaXRoIiwid2Via2l0TWF0Y2hlc1NlbGVjdG9yIiwibXNNYXRjaGVzU2VsZWN0b3IiLCJjaGlsZCIsInByZXZpb3VzU2libGluZyIsImVxIiwicmV0dXJuSW5kZXgiLCJhcHBlbmQiLCJlbHMiLCJuZXdDaGlsZCIsInRlbXBEaXYiLCJmaXJzdENoaWxkIiwiYXBwZW5kQ2hpbGQiLCJwcmVwZW5kIiwiaW5zZXJ0QmVmb3JlIiwibmV4dCIsIm5leHRBbGwiLCJuZXh0RWxzIiwicHJldiIsInByZXZpb3VzRWxlbWVudFNpYmxpbmciLCJwcmV2QWxsIiwicHJldkVscyIsInBhcmVudCIsImNsb3Nlc3QiLCJmb3VuZEVsZW1lbnRzIiwiZm91bmQiLCJyZW1vdmVDaGlsZCIsIm5leHRUaWNrIiwiZ2V0VHJhbnNsYXRlIiwibWF0cml4IiwiY3VyVHJhbnNmb3JtIiwidHJhbnNmb3JtTWF0cml4IiwiY3VyU3R5bGUiLCJjdXJyZW50U3R5bGUiLCJXZWJLaXRDU1NNYXRyaXgiLCJ3ZWJraXRUcmFuc2Zvcm0iLCJNb3pUcmFuc2Zvcm0iLCJPVHJhbnNmb3JtIiwiTXNUcmFuc2Zvcm0iLCJtc1RyYW5zZm9ybSIsInRvU3RyaW5nIiwibTQxIiwibTQyIiwidG8iLCJub0V4dGVuZCIsIm5leHRTb3VyY2UiLCJub2RlIiwia2V5c0FycmF
155IiwibmV4dEluZGV4IiwibGVuIiwibmV4dEtleSIsImRlc2MiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwiX19zd2lwZXJfXyIsInNldENTU1Byb3BlcnR5IiwidmFyTmFtZSIsInZhclZhbHVlIiwiYW5pbWF0ZUNTU01vZGVTY3JvbGwiLCJzd2lwZXIiLCJ0YXJnZXRQb3NpdGlvbiIsInNpZGUiLCJzdGFydFBvc2l0aW9uIiwidHJhbnNsYXRlIiwidGltZSIsInBhcmFtcyIsInNwZWVkIiwid3JhcHBlckVsIiwic2Nyb2xsU25hcFR5cGUiLCJjc3NNb2RlRnJhbWVJRCIsImRpciIsImlzT3V0T2ZCb3VuZCIsImN1cnJlbnQiLCJnZXRUaW1lIiwicHJvZ3Jlc3MiLCJtYXgiLCJtaW4iLCJlYXNlUHJvZ3Jlc3MiLCJjdXJyZW50UG9zaXRpb24iLCJvdmVyZmxvdyIsInN1cHBvcnQiLCJkZXZpY2VDYWNoZWQiLCJicm93c2VyIiwiZ2V0U3VwcG9ydCIsIkRvY3VtZW50VG91Y2giLCJwYXNzaXZlTGlzdGVuZXIiLCJzdXBwb3J0c1Bhc3NpdmUiLCJvcHRzIiwiZ2VzdHVyZXMiLCJjYWxjU3VwcG9ydCIsImdldERldmljZSIsIm92ZXJyaWRlcyIsInBsYXRmb3JtIiwidWEiLCJkZXZpY2UiLCJpb3MiLCJhbmRyb2lkIiwic2NyZWVuV2lkdGgiLCJzY3JlZW5IZWlnaHQiLCJtYXRjaCIsImlwYWQiLCJpcG9kIiwiaXBob25lIiwid2luZG93cyIsIm1hY29zIiwib3MiLCJjYWxjRGV2aWNlIiwiZ2V0QnJvd3NlciIsImlzU2FmYXJpIiwidG9Mb3dlckNhc2UiLCJpc1dlYlZpZXciLCJjYWxjQnJvd3NlciIsIm1ldGhvZE5hbWUiLCJ3cml0YWJsZSIsImV2ZW50c0VtaXR0ZXIiLCJwcmlvcml0eSIsImV2ZW50c0xpc3RlbmVycyIsImRlc3Ryb3llZCIsIm9uY2VIYW5kbGVyIiwiX19lbWl0dGVyUHJveHkiLCJvbkFueSIsImV2ZW50c0FueUxpc3RlbmVycyIsIm9mZkFueSIsImV2ZW50SGFuZGxlciIsImVtaXQiLCJ1cGRhdGVTaXplIiwiJGVsIiwiaXNIb3Jpem9udGFsIiwiaXNWZXJ0aWNhbCIsIk51bWJlciIsImlzTmFOIiwidXBkYXRlU2xpZGVzIiwiZ2V0RGlyZWN0aW9uTGFiZWwiLCJwcm9wZXJ0eSIsIm1hcmdpblJpZ2h0IiwiZ2V0RGlyZWN0aW9uUHJvcGVydHlWYWx1ZSIsImxhYmVsIiwiJHdyYXBwZXJFbCIsInN3aXBlclNpemUiLCJydGxUcmFuc2xhdGUiLCJydGwiLCJ3cm9uZ1JUTCIsImlzVmlydHVhbCIsInZpcnR1YWwiLCJlbmFibGVkIiwicHJldmlvdXNTbGlkZXNMZW5ndGgiLCJzbGlkZXMiLCJzbGlkZUNsYXNzIiwic2xpZGVzTGVuZ3RoIiwic25hcEdyaWQiLCJzbGlkZXNHcmlkIiwic2xpZGVzU2l6ZXNHcmlkIiwib2Zmc2V0QmVmb3JlIiwic2xpZGVzT2Zmc2V0QmVmb3JlIiwib2Zmc2V0QWZ0ZXIiLCJzbGlkZXNPZmZzZXRBZnRlciIsInByZXZpb3VzU25hcEdyaWRMZW5ndGgiLCJwcmV2aW91c1NsaWRlc0dyaWRMZW5ndGgiLCJzcGFjZUJldHdlZW4iLCJzbGlkZVBvc2l0aW9uIiwicHJldlNsaWRlU2l6ZSIsInZpcnR1YWxTaXplIiwibWFyZ2luTGVmdCIsIm1hcmdpbkJvdHRvbSIsIm1hcmdpblRvcCIsImNlbnRlcmVkU2xpZGVzIiwiY3NzTW9kZSIsImdyaWRFbmFibGVkIiwiZ3JpZCIsInJvd3MiLCJzbGlkZVNpemUiLCJpbml0U2xpZGVzIiwic2hvdWxkUmVzZXRTbGlkZVNpemUiLCJzbGlkZXNQZXJWaWV3IiwiYnJlYWtwb2ludHMiLCJzbGlkZSIsInVwZGF0ZVNsaWRlIiwic2xpZGVTdHlsZXMiLCJjdXJyZW50VHJhbnNmb3JtIiwiY3VycmVudFdlYktpdFRyYW5zZm9ybSIsInJvdW5kTGVuZ3RocyIsInBhZGRpbmdMZWZ0IiwicGFkZGluZ1JpZ2h0IiwiYm94U2l6aW5nIiwic3dpcGVyU2xpZGVTaXplIiwiYWJzIiwic2xpZGVzUGVyR3JvdXAiLCJzbGlkZXNQZXJHcm91cFNraXAiLCJlZmZlY3QiLCJzZXRXcmFwcGVyU2l6ZSIsInVwZGF0ZVdyYXBwZXJTaXplIiwibmV3U2xpZGVzR3JpZCIsInNsaWRlc0dyaWRJdGVtIiwiXyIsInNsaWRlSW5kZXgiLCJjZW50ZXJlZFNsaWRlc0JvdW5kcyIsImFsbFNsaWRlc1NpemUiLCJzbGlkZVNpemVWYWx1ZSIsIm1heFNuYXAiLCJzbmFwIiwiY2VudGVySW5zdWZmaWNpZW50U2xpZGVzIiwiYWxsU2xpZGVzT2Zmc2V0Iiwic25hcEluZGV4IiwiYWRkVG9TbmFwR3JpZCIsImFkZFRvU2xpZGVzR3JpZCIsInYiLCJ3YXRjaE92ZXJmbG93IiwiY2hlY2tPdmVyZmxvdyIsIndhdGNoU2xpZGVzUHJvZ3Jlc3MiLCJ1cGRhdGVTbGlkZXNPZmZzZXQiLCJiYWNrRmFjZUhpZGRlbkNsYXNzIiwiY29udGFpbmVyTW9kaWZpZXJDbGFzcyIsImhhc0NsYXNzQmFja2ZhY2VDbGFzc0FkZGVkIiwibWF4QmFja2ZhY2VIaWRkZW5TbGlkZXMiLCJ1cGRhdGVBdXRvSGVpZ2h0IiwiYWN0aXZlU2xpZGVzIiwibmV3SGVpZ2h0IiwiZ2V0U2xpZGVCeUluZGV4IiwidmlzaWJsZVNsaWRlcyIsImNlaWwiLCJhY3RpdmVJbmRleCIsInN3aXBlclNsaWRlT2Zmc2V0Iiwib2Zmc2V0TGVmdCIsIm9mZnNldFRvcCIsInVwZGF0ZVNsaWRlc1Byb2dyZXNzIiwib2Zmc2V0Q2VudGVyIiwic2xpZGVWaXNpYmxlQ2xhc3MiLCJ2aXNpYmxlU2xpZGVzSW5kZXhlcyIsInNsaWRlT2Zmc2V0Iiwic2xpZGVQcm9ncmVzcyIsIm1pblRyYW5zbGF0ZSIsIm9yaWdpbmFsU2xpZGVQcm9ncmVzcyIsInNsaWRlQmVmb3JlIiwic2xpZGVBZnRlciIsIm9yaWdpbmFsUHJvZ3Jlc3MiLCJ1cGRhdGVQcm9ncmVzcyIsIm11bHRpcGxpZXIiLCJ0cmFuc2xhdGVzRGlmZiIsIm1heFRyYW5zbGF0ZSIsImlzQmVnaW5uaW5nIiwiaXNFbmQiLCJ3YXNCZWdpbm5pbmciLCJ3YXNFbmQiLCJhdXRvSGVpZ2h0IiwidXBkYXRlU2xpZGVzQ2xhc3NlcyIsInJlYWxJbmRleCIsImFjdGl2ZVNsaWRlIiwic2xpZGVBY3RpdmVDbGFzcyIsInNsaWRlTmV4dENsYXNzIiwic2xpZGVQcmV2Q2xhc3MiLCJzbGlkZUR1cGxpY2F0ZUFjdGl2ZUNsYXNzIiwic2xpZGVEdXBsaWNhdGVOZXh0Q2xhc3MiLCJzbGlkZUR1cGxpY2F0ZVByZXZDbGFzcyIsImxvb3AiLCJzbGlkZUR1cGxpY2F0ZUNsYXNzIiwibmV4dFNsaWRlIiwicHJldlNsaWRlIiwiZW1pdFNsaWRlc0NsYXNzZXMiLCJ1cGRhdGVBY3RpdmVJbmRleCIsIm5ld0FjdGl2ZUluZGV4IiwicHJldmlvdXNJbmRleCIsInByZXZpb3VzUmVhbEluZGV4IiwicHJldmlvdXNTbmFwSW5kZXgiLCJub3JtYWxpem
15VTbGlkZUluZGV4Iiwic2tpcCIsImluaXRpYWxpemVkIiwicnVuQ2FsbGJhY2tzT25Jbml0IiwidXBkYXRlQ2xpY2tlZFNsaWRlIiwic2xpZGVGb3VuZCIsImNsaWNrZWRTbGlkZSIsImNsaWNrZWRJbmRleCIsInNsaWRlVG9DbGlja2VkU2xpZGUiLCJ2aXJ0dWFsVHJhbnNsYXRlIiwiY3VycmVudFRyYW5zbGF0ZSIsInNldFRyYW5zbGF0ZSIsImJ5Q29udHJvbGxlciIsIm5ld1Byb2dyZXNzIiwicHJldmlvdXNUcmFuc2xhdGUiLCJ0cmFuc2xhdGVUbyIsInJ1bkNhbGxiYWNrcyIsInRyYW5zbGF0ZUJvdW5kcyIsImludGVybmFsIiwiYW5pbWF0aW5nIiwicHJldmVudEludGVyYWN0aW9uT25UcmFuc2l0aW9uIiwibmV3VHJhbnNsYXRlIiwiaXNIIiwib25UcmFuc2xhdGVUb1dyYXBwZXJUcmFuc2l0aW9uRW5kIiwidHJhbnNpdGlvbkVtaXQiLCJkaXJlY3Rpb24iLCJzbGlkZVRvIiwiaW5pdGlhbCIsIkVycm9yIiwiaW5kZXhBc051bWJlciIsImlzRmluaXRlIiwibm9ybWFsaXplZFRyYW5zbGF0ZSIsIm5vcm1hbGl6ZWRHcmlkIiwibm9ybWFsaXplZEdyaWROZXh0IiwiYWxsb3dTbGlkZU5leHQiLCJhbGxvd1NsaWRlUHJldiIsInRyYW5zaXRpb25TdGFydCIsInRyYW5zaXRpb25FbmQiLCJfaW1tZWRpYXRlVmlydHVhbCIsIl9zd2lwZXJJbW1lZGlhdGVWaXJ0dWFsIiwib25TbGlkZVRvV3JhcHBlclRyYW5zaXRpb25FbmQiLCJzbGlkZVRvTG9vcCIsIm5ld0luZGV4IiwibG9vcGVkU2xpZGVzIiwic2xpZGVOZXh0IiwicGVyR3JvdXAiLCJzbGlkZXNQZXJHcm91cEF1dG8iLCJzbGlkZXNQZXJWaWV3RHluYW1pYyIsImluY3JlbWVudCIsImxvb3BQcmV2ZW50c1NsaWRlIiwibG9vcEZpeCIsIl9jbGllbnRMZWZ0IiwicmV3aW5kIiwic2xpZGVQcmV2Iiwibm9ybWFsaXplIiwidmFsIiwibm9ybWFsaXplZFNuYXBHcmlkIiwicHJldlNuYXAiLCJwcmV2U25hcEluZGV4IiwicHJldkluZGV4IiwibGFzdEluZGV4Iiwic2xpZGVSZXNldCIsInNsaWRlVG9DbG9zZXN0IiwidGhyZXNob2xkIiwiY3VycmVudFNuYXAiLCJzbGlkZVRvSW5kZXgiLCJsb29wQ3JlYXRlIiwiJHNlbGVjdG9yIiwibG9vcEZpbGxHcm91cFdpdGhCbGFuayIsImJsYW5rU2xpZGVzTnVtIiwiYmxhbmtOb2RlIiwic2xpZGVCbGFua0NsYXNzIiwibG9vcEFkZGl0aW9uYWxTbGlkZXMiLCJsb29wZWRTbGlkZXNMaW1pdCIsInByZXBlbmRTbGlkZXMiLCJhcHBlbmRTbGlkZXMiLCJjbG9uZU5vZGUiLCJkaWZmIiwibG9vcERlc3Ryb3kiLCJvblRvdWNoU3RhcnQiLCJ0b3VjaEV2ZW50c0RhdGEiLCJ0b3VjaGVzIiwib3JpZ2luYWxFdmVudCIsIiR0YXJnZXRFbCIsInRvdWNoRXZlbnRzVGFyZ2V0IiwiaXNUb3VjaEV2ZW50IiwidHlwZSIsIndoaWNoIiwiYnV0dG9uIiwiaXNUb3VjaGVkIiwiaXNNb3ZlZCIsInN3aXBpbmdDbGFzc0hhc1ZhbHVlIiwibm9Td2lwaW5nQ2xhc3MiLCJldmVudFBhdGgiLCJjb21wb3NlZFBhdGgiLCJwYXRoIiwic2hhZG93Um9vdCIsIm5vU3dpcGluZ1NlbGVjdG9yIiwiaXNUYXJnZXRTaGFkb3ciLCJub1N3aXBpbmciLCJiYXNlIiwiX19jbG9zZXN0RnJvbSIsImFzc2lnbmVkU2xvdCIsImdldFJvb3ROb2RlIiwiY2xvc2VzdEVsZW1lbnQiLCJhbGxvd0NsaWNrIiwic3dpcGVIYW5kbGVyIiwidGFyZ2V0VG91Y2hlcyIsInBhZ2VYIiwicGFnZVkiLCJlZGdlU3dpcGVEZXRlY3Rpb24iLCJpT1NFZGdlU3dpcGVEZXRlY3Rpb24iLCJlZGdlU3dpcGVUaHJlc2hvbGQiLCJpT1NFZGdlU3dpcGVUaHJlc2hvbGQiLCJhbGxvd1RvdWNoQ2FsbGJhY2tzIiwiaXNTY3JvbGxpbmciLCJzdGFydE1vdmluZyIsInRvdWNoU3RhcnRUaW1lIiwic3dpcGVEaXJlY3Rpb24iLCJhbGxvd1RocmVzaG9sZE1vdmUiLCJmb2N1c2FibGVFbGVtZW50cyIsInNob3VsZFByZXZlbnREZWZhdWx0IiwiYWxsb3dUb3VjaE1vdmUiLCJ0b3VjaFN0YXJ0UHJldmVudERlZmF1bHQiLCJ0b3VjaFN0YXJ0Rm9yY2VQcmV2ZW50RGVmYXVsdCIsImlzQ29udGVudEVkaXRhYmxlIiwiZnJlZU1vZGUiLCJvblRvdWNoTW92ZSIsInRhcmdldFRvdWNoIiwiY2hhbmdlZFRvdWNoZXMiLCJwcmV2ZW50ZWRCeU5lc3RlZFN3aXBlciIsInRvdWNoUmVsZWFzZU9uRWRnZXMiLCJkaWZmWCIsImRpZmZZIiwic3FydCIsInRvdWNoQW5nbGUiLCJhdGFuMiIsInRvdWNoTW92ZVN0b3BQcm9wYWdhdGlvbiIsIm5lc3RlZCIsInN0YXJ0VHJhbnNsYXRlIiwiYWxsb3dNb21lbnR1bUJvdW5jZSIsImdyYWJDdXJzb3IiLCJzZXRHcmFiQ3Vyc29yIiwidG91Y2hSYXRpbyIsImRpc2FibGVQYXJlbnRTd2lwZXIiLCJyZXNpc3RhbmNlUmF0aW8iLCJyZXNpc3RhbmNlIiwiZm9sbG93RmluZ2VyIiwib25Ub3VjaEVuZCIsInRvdWNoRW5kVGltZSIsInRpbWVEaWZmIiwicGF0aFRyZWUiLCJsYXN0Q2xpY2tUaW1lIiwiY3VycmVudFBvcyIsInN0b3BJbmRleCIsImdyb3VwU2l6ZSIsInJld2luZEZpcnN0SW5kZXgiLCJyZXdpbmRMYXN0SW5kZXgiLCJyYXRpbyIsImxvbmdTd2lwZXNNcyIsImxvbmdTd2lwZXMiLCJsb25nU3dpcGVzUmF0aW8iLCJzaG9ydFN3aXBlcyIsIm5hdmlnYXRpb24iLCJuZXh0RWwiLCJwcmV2RWwiLCJvblJlc2l6ZSIsInNldEJyZWFrcG9pbnQiLCJhdXRvcGxheSIsInJ1bm5pbmciLCJwYXVzZWQiLCJydW4iLCJvbkNsaWNrIiwicHJldmVudENsaWNrcyIsInByZXZlbnRDbGlja3NQcm9wYWdhdGlvbiIsInN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbiIsIm9uU2Nyb2xsIiwiZHVtbXlFdmVudEF0dGFjaGVkIiwiZHVtbXlFdmVudExpc3RlbmVyIiwidG91Y2hFdmVudHMiLCJkb21NZXRob2QiLCJzd2lwZXJNZXRob2QiLCJzdGFydCIsInBhc3NpdmVMaXN0ZW5lcnMiLCJtb3ZlIiwiZW5kIiwidXBkYXRlT25XaW5kb3dSZXNpemUiLCJldmVudHMkMSIsImlzR3JpZEVuYWJsZWQiLCJicmVha3BvaW50IiwiZ2V0QnJlYWtwb2ludCIsImJyZWFrcG9pbnRzQmFzZSIsImN1cnJlbnRCcmVha3BvaW50IiwiYnJlYWtwb2ludFBhcmFtcyIsIm9yaWdpbmFsUGFyYW1zIiwid2FzTXVsdGlSb3ciLCJpc011bHRpUm93Iiwid2FzRW5hYmxlZCIsImVtaXRDb250YWluZXJDbGFzc2VzIiwiZmlsbCIsIndhc01vZHVsZUVuYWJsZWQiLCJpc01vZHVsZUVuYWJsZWQiLCJkaXNhYmxlIiwiZGlyZWN0aW9uQ2hhbmdlZCIsIm5lZWRzUmVMb29wIiwiY2hhbmdlRGlyZWN0aW9uIiwiaXNFbmFibGVkIiwiY29udGFpbmVyRWwiLCJjdXJyZW50SGVpZ2h0IiwicG9pbnRzIiwicG9pbnQiLCJtaW5SYXRpbyIsInN1YnN0ciIsInNvcnQiLCJiIiwiYWRkQ2xhc3NlcyIsInN1ZmZpeGVzIiwiZW50cmllcyIsInByZWZpeCIsInJlc3VsdENsYXNzZXMiLCJwcmVwYXJlQ2xhc3NlcyIsImF1dG9oZWlnaHQiLCJjZW50ZXJlZCIsInJlbW92ZUNsYXNzZXMiLCJpbWFnZXMiLCJsb2FkSW1hZ2UiLCJpbWFnZUVsIiwic3Jjc2V0Iiwic2l6ZXMiLCJjaGVja0ZvckNvbXBsZXRlIiwiaW1hZ2UiLCJvblJlYWR5IiwiY29tcGxldGUiLCJvbmxvYWQiLCJvbmVycm9yIiwicHJlbG9hZEltYWdlcyIsImltYWdlc0xvYWRlZCIsImltYWdlc1RvTG9hZCIsInVwZGF0ZU9uSW1hZ2VzUmVhZHkiLCJjdXJyZW50U3JjIiwiZGVmYXVsdHMkNCIsImluaXRpYWxTbGlkZSIsInJlc2l6ZU9ic2VydmVyIiwiY3JlYXRlRWxlbWVudHMiLCJ1cmwiLCJzaW11bGF0ZVRvdWNoIiwidW5
15pcXVlTmF2RWxlbWVudHMiLCJ3cmFwcGVyQ2xhc3MiLCJfZW1pdENsYXNzZXMiLCJtb2R1bGVFeHRlbmRQYXJhbXMiLCJhbGxNb2R1bGVzUGFyYW1zIiwibW9kdWxlUGFyYW1OYW1lIiwibW9kdWxlUGFyYW1zIiwiYXV0byIsInByb3RvdHlwZXMiLCJ0cmFuc2l0aW9uIiwibW92aW5nIiwiaXNMb2NrZWQiLCJjdXJzb3IiLCJ1bnNldEdyYWJDdXJzb3IiLCJ3YXNMb2NrZWQiLCJsYXN0U2xpZGVJbmRleCIsImxhc3RTbGlkZVJpZ2h0RWRnZSIsImV4dGVuZGVkRGVmYXVsdHMiLCJTd2lwZXIiLCJzd2lwZXJzIiwibmV3UGFyYW1zIiwibW9kdWxlcyIsIl9fbW9kdWxlc19fIiwibW9kIiwiZXh0ZW5kUGFyYW1zIiwic3dpcGVyUGFyYW1zIiwiZGVmYXVsdHMiLCJwYXNzZWRQYXJhbXMiLCJldmVudE5hbWUiLCJ2ZWxvY2l0eSIsImRlc2t0b3AiLCJ0b3VjaEV2ZW50c1RvdWNoIiwidG91Y2hFdmVudHNEZXNrdG9wIiwiY2xpY2tUaW1lb3V0IiwidmVsb2NpdGllcyIsInNldFByb2dyZXNzIiwiY2xzIiwiZ2V0U2xpZGVDbGFzc2VzIiwic2xpZGVFbCIsInVwZGF0ZXMiLCJ2aWV3IiwiZXhhY3QiLCJzcHYiLCJicmVha0xvb3AiLCJ0cmFuc2xhdGVWYWx1ZSIsInRyYW5zbGF0ZWQiLCJuZXdEaXJlY3Rpb24iLCJuZWVkVXBkYXRlIiwiY3VycmVudERpcmVjdGlvbiIsImNoYW5nZUxhbmd1YWdlRGlyZWN0aW9uIiwibW91bnQiLCJtb3VudGVkIiwiZ2V0V3JhcHBlclNlbGVjdG9yIiwiZ2V0V3JhcHBlciIsImRlbGV0ZUluc3RhbmNlIiwiY2xlYW5TdHlsZXMiLCJvYmplY3QiLCJkZWxldGVQcm9wcyIsImV4dGVuZERlZmF1bHRzIiwibmV3RGVmYXVsdHMiLCJpbnN0YWxsTW9kdWxlIiwidXNlIiwiY3JlYXRlRWxlbWVudElmTm90RGVmaW5lZCIsImNoZWNrUHJvcHMiLCJlbGVtZW50IiwiTmF2aWdhdGlvbiIsImdldEVsIiwidG9nZ2xlRWwiLCJkaXNhYmxlZENsYXNzIiwidGFnTmFtZSIsImxvY2tDbGFzcyIsIiRuZXh0RWwiLCIkcHJldkVsIiwib25QcmV2Q2xpY2siLCJvbk5leHRDbGljayIsImhpZGVPbkNsaWNrIiwiaGlkZGVuQ2xhc3MiLCJuYXZpZ2F0aW9uRGlzYWJsZWRDbGFzcyIsIl9zIiwidGFyZ2V0RWwiLCJwYWdpbmF0aW9uIiwiY2xpY2thYmxlIiwiaXNIaWRkZW4iLCJjbGFzc2VzVG9TZWxlY3RvciIsIlBhZ2luYXRpb24iLCJwZngiLCJidWxsZXRTaXplIiwiYnVsbGV0RWxlbWVudCIsInJlbmRlckJ1bGxldCIsInJlbmRlclByb2dyZXNzYmFyIiwicmVuZGVyRnJhY3Rpb24iLCJyZW5kZXJDdXN0b20iLCJwcm9ncmVzc2Jhck9wcG9zaXRlIiwiZHluYW1pY0J1bGxldHMiLCJkeW5hbWljTWFpbkJ1bGxldHMiLCJmb3JtYXRGcmFjdGlvbkN1cnJlbnQiLCJudW1iZXIiLCJmb3JtYXRGcmFjdGlvblRvdGFsIiwiYnVsbGV0Q2xhc3MiLCJidWxsZXRBY3RpdmVDbGFzcyIsIm1vZGlmaWVyQ2xhc3MiLCJjdXJyZW50Q2xhc3MiLCJ0b3RhbENsYXNzIiwicHJvZ3Jlc3NiYXJGaWxsQ2xhc3MiLCJwcm9ncmVzc2Jhck9wcG9zaXRlQ2xhc3MiLCJjbGlja2FibGVDbGFzcyIsImhvcml6b250YWxDbGFzcyIsInZlcnRpY2FsQ2xhc3MiLCJwYWdpbmF0aW9uRGlzYWJsZWRDbGFzcyIsImJ1bGxldHMiLCJkeW5hbWljQnVsbGV0SW5kZXgiLCJpc1BhZ2luYXRpb25EaXNhYmxlZCIsInNldFNpZGVCdWxsZXRzIiwiJGJ1bGxldEVsIiwidG90YWwiLCJwYWdpbmF0aW9uVHlwZSIsImZpcnN0SW5kZXgiLCJtaWRJbmRleCIsInN1ZmZpeCIsImJ1bGxldCIsIiRidWxsZXQiLCJidWxsZXRJbmRleCIsIiRmaXJzdERpc3BsYXllZEJ1bGxldCIsIiRsYXN0RGlzcGxheWVkQnVsbGV0IiwiZHluYW1pY0J1bGxldHNMZW5ndGgiLCJidWxsZXRzT2Zmc2V0Iiwib2Zmc2V0UHJvcCIsInByb2dyZXNzYmFyRGlyZWN0aW9uIiwic2NhbGUiLCJzY2FsZVgiLCJzY2FsZVkiLCJyZW5kZXIiLCJwYWdpbmF0aW9uSFRNTCIsIm51bWJlck9mQnVsbGV0cyIsIkF1dG9wbGF5IiwidGltZW91dCIsIiRhY3RpdmVTbGlkZUVsIiwiYXV0b3BsYXlSZXN1bHQiLCJyZXZlcnNlRGlyZWN0aW9uIiwic3RvcE9uTGFzdFNsaWRlIiwic3RvcCIsInBhdXNlIiwid2FpdEZvclRyYW5zaXRpb24iLCJvblRyYW5zaXRpb25FbmQiLCJvblZpc2liaWxpdHlDaGFuZ2UiLCJ2aXNpYmlsaXR5U3RhdGUiLCJvbk1vdXNlRW50ZXIiLCJkaXNhYmxlT25JbnRlcmFjdGlvbiIsIm9uTW91c2VMZWF2ZSIsInBhdXNlT25Nb3VzZUVudGVyIiwiYXBwZW5kU2xpZGUiLCJvYnNlcnZlciIsInByZXBlbmRTbGlkZSIsImFkZFNsaWRlIiwiYWN0aXZlSW5kZXhCdWZmZXIiLCJiYXNlTGVuZ3RoIiwic2xpZGVzQnVmZmVyIiwiY3VycmVudFNsaWRlIiwicmVtb3ZlU2xpZGUiLCJzbGlkZXNJbmRleGVzIiwiaW5kZXhUb1JlbW92ZSIsInJlbW92ZUFsbFNsaWRlcyIsIk1hbmlwdWxhdGlvbiIsIlN5bWJvbCIsIml0ZXJhdG9yIiwibmFtZSIsInByb3RvdHlwZUdyb3VwIiwicHJvdG9NZXRob2QiLCJhbmltYXRpb25GcmFtZSIsInJlc2l6ZUhhbmRsZXIiLCJvcmllbnRhdGlvbkNoYW5nZUhhbmRsZXIiLCJSZXNpemVPYnNlcnZlciIsIm5ld1dpZHRoIiwiY29udGVudEJveFNpemUiLCJjb250ZW50UmVjdCIsImlubGluZVNpemUiLCJibG9ja1NpemUiLCJvYnNlcnZlIiwidW5vYnNlcnZlIiwib2JzZXJ2ZXJzIiwiYXR0YWNoIiwiTXV0YXRpb25PYnNlcnZlciIsIldlYmtpdE11dGF0aW9uT2JzZXJ2ZXIiLCJtdXRhdGlvbnMiLCJvYnNlcnZlclVwZGF0ZSIsImF0dHJpYnV0ZXMiLCJjaGlsZExpc3QiLCJjaGFyYWN0ZXJEYXRhIiwib2JzZXJ2ZVBhcmVudHMiLCJvYnNlcnZlU2xpZGVDaGlsZHJlbiIsImNvbnRhaW5lclBhcmVudHMiLCJkaXNjb25uZWN0IiwidGFyZ2V0TW9kYWwiLCJ0cmlnZ2VycyIsIm9uU2hvdyIsIm9wZW5UcmlnZ2VyIiwiZiIsImNsb3NlVHJpZ2dlciIsIm9wZW5DbGFzcyIsImciLCJkaXNhYmxlU2Nyb2xsIiwiZGlzYWJsZUZvY3VzIiwiYXdhaXRDbG9zZUFuaW1hdGlvbiIsIkUiLCJhd2FpdE9wZW5BbmltYXRpb24iLCJNIiwiQSIsImRlYnVnTW9kZSIsIkMiLCJtb2RhbCIsImNvbmZpZyIsInJlZ2lzdGVyVHJpZ2dlcnMiLCJvbktleWRvd24iLCJCb29sZWFuIiwic2hvd01vZGFsIiwic2Nyb2xsQmVoYXZpb3VyIiwiYWRkRXZlbnRMaXN0ZW5lcnMiLCJzZXRGb2N1c1RvRmlyc3ROb2RlIiwicmVtb3ZlRXZlbnRMaXN0ZW5lcnMiLCJjbG9zZU1vZGFsIiwiaGFzQXR0cmlidXRlIiwia2V5Q29kZSIsInJldGFpbkZvY3VzIiwiZ2V0Rm9jdXNhYmxlTm9kZXMiLCJvZmZzZXRQYXJlbnQiLCJzaGlmdEtleSIsImNvbmZpZ3VyYWJsZSIsImNvbnNvbGUiLCJ3YXJuIiwic2hvdyIsImNsb3NlTW9kYWxCeUlkIiwiTWljcm9Nb2RhbCIsImNhY2hlIiwidGhpc0FyZyIsInJlcXVpcmUkJDAiLCJraW5kT2YiLCJjcmVhdGUiLCJ0aGluZyIsInN0ciIsImtpbmRPZlRlc3QiLCJpc1VuZGVmaW5lZCIsImlzQXJyYXlCdWZmZXIiLCJpc1BsYWluT2JqZWN0IiwiZ2V0UHJvdG90eXBlT2YiLCJpc0RhdGUiLCJpc0ZpbGUiLCJpc0Jsb2IiLCJpc0ZpbGVMaXN0IiwiaXNGdW5jdGlvbiIsImlzVVJMU2VhcmNoUGFyYW1zIiwiaGFzT3duUHJvcGVydHkiLCJUeXBlZEFycmF5IiwiaXNUeXBlZEFycmF5IiwiVWludDhBcnJheSIsInV0aWxzIiwiaXNCdWZmZXIiLCJpc0Zvcm1EYXRhIiwicGF0dGVybiIsIkZvcm1EYXRhIiwiaXNBcnJheUJ1ZmZlclZpZXciLCJBcnJheUJ1ZmZlciIsImlzVmlldyIsImJ1ZmZlciIsImlzU3RyaW5nIiwiaXNOdW1iZXIiLCJpc1N0cmVhbSIsInBpcGUiLCJpc1N0YW5kYXJkQnJvd3NlckVudiIsInByb2R1Y3QiLCJtZXJnZSIsInJlc3VsdCIsImFzc2lnblZhbHVlIiwic3RyaXBCT00iLCJjb250ZW50IiwiY2hhckNvZGVBdCIsImluaGVyaXRzIiwic3VwZXJDb25zdHJ1Y3RvciIsImRlc2NyaXB0b3JzIiwidG9GbGF0T2JqZWN0Iiwic291cmNlT2JqIiwiZGVzdE9iaiIsIm1lcmdlZCIsImdldE93blByb3BlcnR5TmFtZXMiLCJlbmRzV2l0aCIsInNlYXJjaFN0cmluZyIsIlN0cmluZyIsInRvQXJyYXkiLCJlbmNvZGUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJi
15dWlsZFVSTCIsInBhcmFtc1NlcmlhbGl6ZXIiLCJzZXJpYWxpemVkUGFyYW1zIiwicGFydHMiLCJ0b0lTT1N0cmluZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJoYXNobWFya0luZGV4IiwiSW50ZXJjZXB0b3JNYW5hZ2VyIiwiZnVsZmlsbGVkIiwicmVqZWN0ZWQiLCJzeW5jaHJvbm91cyIsInJ1bldoZW4iLCJJbnRlcmNlcHRvck1hbmFnZXIkMSIsImVqZWN0IiwiSW50ZXJjZXB0b3JNYW5hZ2VyXzEiLCJnbG9iYWwkMSIsImdsb2JhbCIsImRlZmF1bHRTZXRUaW1vdXQiLCJkZWZhdWx0Q2xlYXJUaW1lb3V0IiwiY2FjaGVkU2V0VGltZW91dCIsImNhY2hlZENsZWFyVGltZW91dCIsInJ1blRpbWVvdXQiLCJmdW4iLCJjdXJyZW50UXVldWUiLCJxdWV1ZSIsImRyYWluaW5nIiwicXVldWVJbmRleCIsImNsZWFuVXBOZXh0VGljayIsImRyYWluUXVldWUiLCJtYXJrZXIiLCJydW5DbGVhclRpbWVvdXQiLCJJdGVtIiwiYXJyYXkiLCJub29wIiwiYWRkTGlzdGVuZXIiLCJyZW1vdmVMaXN0ZW5lciIsInJlbW92ZUFsbExpc3RlbmVycyIsInBlcmZvcm1hbmNlTm93IiwibW96Tm93IiwibXNOb3ciLCJvTm93Iiwid2Via2l0Tm93IiwiYnJvd3NlciQxIiwidGl0bGUiLCJlbnYiLCJhcmd2IiwidmVyc2lvbiIsInZlcnNpb25zIiwiYmluZGluZyIsImN3ZCIsImNoZGlyIiwidW1hc2siLCJocnRpbWUiLCJwcmV2aW91c1RpbWVzdGFtcCIsImNsb2NrdGltZSIsInNlY29uZHMiLCJuYW5vc2Vjb25kcyIsInJlbGVhc2UiLCJ1cHRpbWUiLCJwcm9jZXNzIiwiQXhpb3NFcnJvciIsIm1lc3NhZ2UiLCJjb2RlIiwicmVxdWVzdCIsInJlc3BvbnNlIiwidG9KU09OIiwiZGVzY3JpcHRpb24iLCJmaWxlTmFtZSIsImxpbmVOdW1iZXIiLCJjb2x1bW5OdW1iZXIiLCJzdGFjayIsInN0YXR1cyIsImRlZmluZVByb3BlcnRpZXMiLCJlcnJvciIsImN1c3RvbVByb3BzIiwiYXhpb3NFcnJvciIsIkF4aW9zRXJyb3JfMSIsInRyYW5zaXRpb25hbCIsInNpbGVudEpTT05QYXJzaW5nIiwiZm9yY2VkSlNPTlBhcnNpbmciLCJ
15jbGFyaWZ5VGltZW91dEVycm9yIiwibG9va3VwIiwicmV2TG9va3VwIiwiQXJyIiwiaW5pdGVkIiwiZW5jb2RlQ2h1bmsiLCJ1aW50OCIsInRtcCIsIm51bSIsIm91dHB1dCIsImZyb21CeXRlQXJyYXkiLCJleHRyYUJ5dGVzIiwibWF4Q2h1bmtMZW5ndGgiLCJsZW4yIiwicmVhZCIsImlzTEUiLCJtTGVuIiwibkJ5dGVzIiwiZUxlbiIsImVNYXgiLCJlQmlhcyIsIm5CaXRzIiwiTmFOIiwiSW5maW5pdHkiLCJwb3ciLCJ3cml0ZSIsInJ0IiwibG9nIiwiTE4yIiwia01heExlbmd0aCIsIkJ1ZmZlciIsIlRZUEVEX0FSUkFZX1NVUFBPUlQiLCJjcmVhdGVCdWZmZXIiLCJ0aGF0IiwiUmFuZ2VFcnJvciIsImFyZyIsImVuY29kaW5nT3JPZmZzZXQiLCJhbGxvY1Vuc2FmZSIsImJ5dGVPZmZzZXQiLCJieXRlTGVuZ3RoIiwiZnJvbUFycmF5TGlrZSIsImZyb21BcnJheUJ1ZmZlciIsInN0cmluZyIsImVuY29kaW5nIiwiaXNFbmNvZGluZyIsImFjdHVhbCIsImZyb21TdHJpbmciLCJpbnRlcm5hbElzQnVmZmVyIiwiY2hlY2tlZCIsImNvcHkiLCJmcm9tT2JqZWN0IiwiYXNzZXJ0U2l6ZSIsIl9pc0J1ZmZlciIsImxvd2VyZWRDYXNlIiwidXRmOFRvQnl0ZXMiLCJiYXNlNjRUb0J5dGVzIiwic2xvd1RvU3RyaW5nIiwiaGV4U2xpY2UiLCJ1dGY4U2xpY2UiLCJhc2NpaVNsaWNlIiwibGF0aW4xU2xpY2UiLCJiYXNlNjRTbGljZSIsInV0ZjE2bGVTbGljZSIsInN3YXAiLCJiaWRpcmVjdGlvbmFsSW5kZXhPZiIsImFycmF5SW5kZXhPZiIsImxhc3RJbmRleE9mIiwiaW5kZXhTaXplIiwiYXJyTGVuZ3RoIiwidmFsTGVuZ3RoIiwiYnVmIiwicmVhZFVJbnQxNkJFIiwiZm91bmRJbmRleCIsImhleFdyaXRlIiwicmVtYWluaW5nIiwic3RyTGVuIiwicGFyc2VkIiwidXRmOFdyaXRlIiwiYmxpdEJ1ZmZlciIsImFzY2lpV3JpdGUiLCJieXRlQXJyYXkiLCJhc2NpaVRvQnl0ZXMiLCJsYXRpbjFXcml0ZSIsImJhc2U2NFdyaXRlIiwidWNzMldyaXRlIiwidW5pdHMiLCJoaSIsImxvIiwidXRmMTZsZVRvQnl0ZXMiLCJzZWNvbmRCeXRlIiwidGhpcmRCeXRlIiwiZm91cnRoQnl0ZSIsInRlbXBDb2RlUG9pbnQiLCJmaXJzdEJ5dGUiLCJjb2RlUG9pbnQiLCJieXRlc1BlclNlcXVlbmNlIiwiY29kZVBvaW50cyIsIk1BWF9BUkdVTUVOVFNfTEVOR1RIIiwiZnJvbUNoYXJDb2RlIiwiZGVjb2RlQ29kZVBvaW50c0FycmF5IiwicG9vbFNpemUiLCJfYXVnbWVudCIsImFsbG9jIiwiYWxsb2NVbnNhZmVTbG93IiwiaXNGYXN0QnVmZmVyIiwicmVhZEZsb2F0TEUiLCJpc1Nsb3dCdWZmZXIiLCJjb21wYXJlIiwibGlzdCIsInN3YXAxNiIsInN3YXAzMiIsInN3YXA2NCIsImVxdWFscyIsImluc3BlY3QiLCJ0aGlzU3RhcnQiLCJ0aGlzRW5kIiwidGhpc0NvcHkiLCJ0YXJnZXRDb3B5IiwiX2FyciIsInJldCIsIm91dCIsInRvSGV4IiwiYnl0ZXMiLCJjaGVja09mZnNldCIsImV4dCIsImNoZWNrSW50Iiwib2JqZWN0V3JpdGVVSW50MTYiLCJsaXR0bGVFbmRpYW4iLCJvYmplY3RXcml0ZVVJbnQzMiIsImNoZWNrSUVFRTc1NCIsIndyaXRlRmxvYXQiLCJub0Fzc2VydCIsIndyaXRlRG91YmxlIiwibmV3QnVmIiwic3ViYXJyYXkiLCJzbGljZUxlbiIsInJlYWRVSW50TEUiLCJtdWwiLCJyZWFkVUludEJFIiwicmVhZFVJbnQ4IiwicmVhZFVJbnQxNkxFIiwicmVhZFVJbnQzMkxFIiwicmVhZFVJbnQzMkJFIiwicmVhZEludExFIiwicmVhZEludEJFIiwicmVhZEludDgiLCJyZWFkSW50MTZMRSIsInJlYWRJbnQxNkJFIiwicmVhZEludDMyTEUiLCJyZWFkSW50MzJCRSIsInJlYWRGbG9hdEJFIiwicmVhZERvdWJsZUxFIiwicmVhZERvdWJsZUJFIiwid3JpdGVVSW50TEUiLCJ3cml0ZVVJbnRCRSIsIndyaXRlVUludDgiLCJ3cml0ZVVJbnQxNkxFIiwid3JpdGVVSW50MTZCRSIsIndyaXRlVUludDMyTEUiLCJ3cml0ZVVJbnQzMkJFIiwid3JpdGVJbnRMRSIsImxpbWl0Iiwic3ViIiwid3JpdGVJbnRCRSIsIndyaXRlSW50OCIsIndyaXRlSW50MTZMRSIsIndyaXRlSW50MTZCRSIsIndyaXRlSW50MzJMRSIsIndyaXRlSW50MzJCRSIsIndyaXRlRmxvYXRMRSIsIndyaXRlRmxvYXRCRSIsIndyaXRlRG91YmxlTEUiLCJ3cml0ZURvdWJsZUJFIiwidGFyZ2V0U3RhcnQiLCJJTlZBTElEX0JBU0U2NF9SRSIsImxlYWRTdXJyb2dhdGUiLCJiNjQiLCJwbGFjZUhvbGRlcnMiLCJMIiwidG9CeXRlQXJyYXkiLCJzdHJpbmd0cmltIiwiYmFzZTY0Y2xlYW4iLCJkc3QiLCJ0b0Zvcm1EYXRhXzEiLCJmb3JtRGF0YSIsImNvbnZlcnRWYWx1ZSIsIkJsb2IiLCJidWlsZCIsInBhcmVudEtleSIsImZ1bGxLZXkiLCJwb3AiLCJjb29raWVzIiwiZXhwaXJlcyIsImRvbWFpbiIsInNlY3VyZSIsImNvb2tpZSIsInRvR01UU3RyaW5nIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiaXNBYnNvbHV0ZVVSTCIsImNvbWJpbmVVUkxzIiwiYmFzZVVSTCIsInJlbGF0aXZlVVJMIiwiYnVpbGRGdWxsUGF0aCIsInJlcXVlc3RlZFVSTCIsImlnbm9yZUR1cGxpY2F0ZU9mIiwiaXNVUkxTYW1lT3JpZ2luIiwib3JpZ2luVVJMIiwibXNpZSIsInVybFBhcnNpbmdOb2RlIiwicmVzb2x2ZVVSTCIsInBvcnQiLCJyZXF1ZXN0VVJMIiwiQ2FuY2VsZWRFcnJvciIsIkVSUl9DQU5DRUxFRCIsInJlcXVpcmUkJDEiLCJfX0NBTkNFTF9fIiwiQ2FuY2VsZWRFcnJvcl8xIiwic2V0dGxlIiwicmVzb2x2ZSIsInJlamVjdCIsInZhbGlkYXRlU3RhdHVzIiwiRVJSX0JBRF9SRVFVRVNUIiwiRVJSX0JBRF9SRVNQT05TRSIsInJlcXVpcmUkJDIiLCJyZXF1aXJlJCQzIiwicmVxdWlyZSQkNCIsInBhcnNlSGVhZGVycyIsImhlYWRlcnMiLCJsaW5lIiwicmVxdWlyZSQkNiIsInRyYW5zaXRpb25hbERlZmF1bHRzIiwicmVxdWlyZSQkNyIsInJlcXVpcmUkJDgiLCJyZXF1aXJlJCQ5IiwicGFyc2VQcm90b2NvbCIsInhociIsIlByb21pc2UiLCJvbkNhbmNlbGVkIiwicmVxdWVzdERhdGEiLCJyZXF1ZXN0SGVhZGVycyIsInJlc3BvbnNlVHlwZSIsImRvbmUiLCJjYW5jZWxUb2tlbiIsInVuc3Vic2NyaWJlIiwic2lnbmFsIiwiWE1MSHR0cFJlcXVlc3QiLCJhdXRoIiwidXNlcm5hbWUiLCJwYXNzd29yZCIsInVuZXNjYXBlIiwiQXV0aG9yaXphdGlvbiIsImJ0b2EiLCJmdWxsUGF0aCIsIm9ubG9hZGVuZCIsInJlc3BvbnNlSGVhZGVycyIsImdldEFsbFJlc3BvbnNlSGVhZGVycyIsInJlc3BvbnNlVGV4dCIsInN0YXR1c1RleHQiLCJlcnIiLCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCJyZWFkeVN0YXRlIiwicmVzcG9uc2VVUkwiLCJvbmFib3J0IiwiRUNPTk5BQk9SVEVEIiwiRVJSX05FVFdPUksiLCJvbnRpbWVvdXQiLCJ0aW1lb3V0RXJyb3JNZXNzYWdlIiwiRVRJTUVET1VUIiwieHNyZlZhbHVlIiwid2l0aENyZWRlbnRpYWxzIiwieHNyZkNvb2tpZU5hbWUiLCJ4c3JmSGVhZGVyTmFtZSIsInNldFJlcXVlc3RIZWFkZXIiLCJvbkRvd25sb2FkUHJvZ3Jlc3MiLCJvblVwbG9hZFByb2dyZXNzIiwidXBsb2FkIiwiYWJvcnQiLCJzdWJzY3JpYmUiLCJhYm9ydGVkIiwic2VuZCIsIm5vcm1hbGl6ZUhlYWRlck5hbWUiLCJub3JtYWxpem
15VkTmFtZSIsInRvRm9ybURhdGEiLCJERUZBVUxUX0NPTlRFTlRfVFlQRSIsInNldENvbnRlbnRUeXBlSWZVbnNldCIsImFkYXB0ZXIiLCJyZXF1aXJlJCQ1IiwidHJhbnNmb3JtUmVxdWVzdCIsImlzT2JqZWN0UGF5bG9hZCIsImNvbnRlbnRUeXBlIiwiX0Zvcm1EYXRhIiwicmF3VmFsdWUiLCJwYXJzZXIiLCJlbmNvZGVyIiwicGFyc2UiLCJzdHJpbmdpZnlTYWZlbHkiLCJ0cmFuc2Zvcm1SZXNwb25zZSIsInN0cmljdEpTT05QYXJzaW5nIiwibWF4Q29udGVudExlbmd0aCIsIm1heEJvZHlMZW5ndGgiLCJBY2NlcHQiLCJkZWZhdWx0c18xIiwiaXNDYW5jZWwiLCJ0cmFuc2Zvcm1EYXRhIiwiZm5zIiwidGhyb3dJZkNhbmNlbGxhdGlvblJlcXVlc3RlZCIsInRocm93SWZSZXF1ZXN0ZWQiLCJtZXJnZUNvbmZpZyIsImNvbmZpZzEiLCJjb25maWcyIiwiZ2V0TWVyZ2VkVmFsdWUiLCJzb3VyY2UiLCJtZXJnZURlZXBQcm9wZXJ0aWVzIiwidmFsdWVGcm9tQ29uZmlnMiIsImRlZmF1bHRUb0NvbmZpZzIiLCJtZXJnZURpcmVjdEtleXMiLCJtZXJnZU1hcCIsInRpbWVvdXRNZXNzYWdlIiwiZGVjb21wcmVzcyIsImJlZm9yZVJlZGlyZWN0IiwidHJhbnNwb3J0IiwiaHR0cEFnZW50IiwiaHR0cHNBZ2VudCIsInNvY2tldFBhdGgiLCJyZXNwb25zZUVuY29kaW5nIiwiY29uZmlnVmFsdWUiLCJWRVJTSU9OIiwidmFsaWRhdG9ycyIsImRlcHJlY2F0ZWRXYXJuaW5ncyIsInZhbGlkYXRvcnMkMSIsInZhbGlkYXRvciIsImZvcm1hdE1lc3NhZ2UiLCJvcHQiLCJFUlJfREVQUkVDQVRFRCIsImFzc2VydE9wdGlvbnMiLCJzY2hlbWEiLCJhbGxvd1Vua25vd24iLCJFUlJfQkFEX09QVElPTl9WQUxVRSIsIkVSUl9CQURfT1BUSU9OIiwiZGlzcGF0Y2hSZXF1ZXN0IiwicmVhc29uIiwiQXhpb3MiLCJpbnN0YW5jZUNvbmZpZyIsImludGVyY2VwdG9ycyIsIkF4aW9zJDEiLCJjb25maWdPclVybCIsImJvb2xlYW4iLCJyZXF1ZXN0SW50ZXJjZXB0b3JDaGFpbiIsInN5bmNocm9ub3VzUmVxdWVzdEludGVyY2VwdG9ycyIsImludGVyY2VwdG9yIiwicHJvbWlzZSIsInJlc3BvbnNlSW50ZXJjZXB0b3JDaGFpbiIsImNoYWluIiwic2hpZnQiLCJuZXdDb25maWciLCJvbkZ1bGZpbGxlZCIsIm9uUmVqZWN0ZWQiLCJnZXRVcmkiLCJnZW5lcmF0ZUhUVFBNZXRob2QiLCJpc0Zvcm0iLCJBeGlvc18xIiwiQ2FuY2VsVG9rZW4iLCJleGVjdXRvciIsInJlc29sdmVQcm9taXNlIiwidG9rZW4iLCJfbGlzdGVuZXJzIiwib25mdWxmaWxsZWQiLCJfcmVzb2x2ZSIsIkNhbmNlbFRva2VuXzEiLCJheGlvcyIsImNyZWF0ZUluc3RhbmNlIiwiZGVmYXVsdENvbmZpZyIsImluc3RhbmNlIiwicmVxdWlyZSQkMTAiLCJDYW5jZWwiLCJhbGwiLCJwcm9taXNlcyIsInNwcmVhZCIsImlzQXhpb3NFcnJvciIsInBheWxvYWQiLCJheGlvc01vZHVsZSIsImF4aW9zJDIiLCJkZWZhdWx0IiwiYnV5U2VhcmNoIiwiY29tcGFyaXNvblNsaWRlciIsImNhdGFsb2dTbGlkZXIiLCJjYXRhbG9nU2xpZGVyVGh1bWJuYWlsIiwiY2F0YWxvZ1NsaWRlck9wdCIsImNhdGFsb2dTbGlkZXJUaHVtYm5haWxPcHQiLCJjb21wYXJpc29uU3RvcmFnZSIsImFwaVVybCIsInRlcm1zUmVzZXQiLCJhYyIsInNsaWRlciIsInByaWNlQXR0ZW50aW9uTW9kYWwiLCJjaGVja0NvbXBhcmlzb25JdGVtcyIsImFkZENvbXBhcmlzb24iLCJ0ZXJtcyIsInJlc2V0IiwiaW5wdXRzIiwiaW5wdXQiLCJwYXNzdmUiLCJhY1Rlcm1zIiwic2V0SGVpZ2h0IiwiY2F0YWxvZ1RyaWdnZXIiLCJjYXRhbG9nTW9kYWwiLCJjYXRhbG9nU2xpZGVMYWJlbCIsImNhdGFsb2dTbGlkZVRpdGxlIiwiY2F0YWxvZ1NsaWRlVXJsIiwicG9zdCIsIm1ha2VyIiwiaW5zZXJ0QWRqYWNlbnRIVE1MIiwic2xpZGVDaGFuZ2UiLCJjbGljayIsInN0b3JhZ2UiLCJzZXNzaW9uU3RvcmFnZSIsImdldEl0ZW0iLCJhZGRDb21wYXJpc29uU2xpZGUiLCJjYXRjaCIsImlzX25ldyIsImlzX2ltcG9ydCIsImlzX3N0b3JlX3BpY2t1cHMiLCJwcmljZSIsInllYXIiLCJkaXN0YW5jZSIsImNjIiwiYWRkVHJpZ2dlciIsInNvbWUiLCJhZGRBbGVydCIsImFsZXJ0IiwiZmluZEluZGV4IiwiaWRQb3MiLCJzZXRJdGVtIiwiQnV5U2VhcmNoIiwibWFrZU1hcCIsImV4cGVjdHNMb3dlckNhc2UiLCJTZXQiLCJoYXMiLCJFTVBUWV9PQkoiLCJOT0RFX0VOViIsImZyZWV6ZSIsIkVNUFRZX0FSUiIsIk5PT1AiLCJOTyIsImlzT24iLCJpc01vZGVsTGlzdGVuZXIiLCJoYXNPd24iLCJpc01hcCIsInRvVHlwZVN0cmluZyIsImlzU2V0IiwiaXNTeW1ib2wiLCJpc1Byb21pc2UiLCJvYmplY3RUb1N0cmluZyIsInRvUmF3VHlwZSIsImlzSW50ZWdlcktleSIsImlzUmVzZXJ2ZWRQcm9wIiwiaXNCdWlsdEluRGlyZWN0aXZlIiwiY2FjaGVTdHJpbmdGdW5jdGlvbiIsImNhbWVsaXplUkUiLCJjYW1lbGl6ZSIsImh5cGhlbmF0ZVJFIiwiaHlwaGVuYXRlIiwiY2FwaXRhbGl6ZSIsInRvSGFuZGxlcktleSIsImhhc0NoYW5nZWQiLCJvbGRWYWx1ZSIsImludm9rZUFycmF5Rm5zIiwiZGVmIiwibG9vc2VUb051bWJlciIsInRvTnVtYmVyIiwiX2dsb2JhbFRoaXMiLCJnZXRHbG9iYWxUaGlzIiwiZ2xvYmFsVGhpcyIsIlBhdGNoRmxhZ05hbWVzIiwic2xvdEZsYWdzVGV4dCIsImlzR2xvYmFsbHlBbGxvd2VkIiwicmFuZ2UiLCJub3JtYWxpemVTdHlsZSIsIm5vcm1hbGl6ZWQiLCJwYXJzZVN0cmluZ1N0eWxlIiwibGlzdERlbGltaXRlclJFIiwicHJvcGVydHlEZWxpbWl0ZXJSRSIsInN0eWxlQ29tbWVudFJFIiwiY3NzVGV4dCIsIm5vcm1hbGl6ZUNsYXNzIiwiaXNIVE1MVGFnIiwiaXNTVkdUYWciLCJpc01hdGhNTFRhZyIsImlzVm9pZFRhZyIsInNwZWNpYWxCb29sZWFuQXR0cnMiLCJpc1NwZWNpYWxCb29sZWFuQXR0ciIsImlzQm9vbGVhbkF0dHIiLCJpbmNsdWRlQm9vbGVhbkF0dHIiLCJpc0tub3duSHRtbEF0dHIiLCJpc0tub3duU3ZnQXR0ciIsImxvb3NlRXF1YWwiLCJhVmFsaWRUeXBlIiwiYlZhbGlkVHlwZSIsImVxdWFsIiwibG9vc2VDb21wYXJlQXJyYXlzIiwiYUhhc0tleSIsImJIYXNLZXkiLCJsb29zZUluZGV4T2YiLCJpc1JlZiIsIl9fdl9pc1JlZiIsInRvRGlzcGxheVN0cmluZyIsInJlcGxhY2VyIiwicmVkdWNlIiwidmFsMiIsInN0cmluZ2lmeVN5bWJvbCIsInZhbHVlcyIsIl9hIiwibXNnIiwiYWN0aXZlRWZmZWN0U2NvcGUiLCJhY3RpdmVFZmZlY3QiLCJFZmZlY3RTY29wZSIsImRldGFjaGVkIiwiX2FjdGl2ZSIsImVmZmVjdHMiLCJjbGVhbnVwcyIsInNjb3BlcyIsImFjdGl2ZSIsIm
15N1cnJlbnRFZmZlY3RTY29wZSIsImZyb21QYXJlbnQiLCJsYXN0IiwicmVjb3JkRWZmZWN0U2NvcGUiLCJzY29wZSIsImdldEN1cnJlbnRTY29wZSIsIlJlYWN0aXZlRWZmZWN0Iiwic2NoZWR1bGVyIiwiZGVwcyIsIl9kaXJ0eUxldmVsIiwiX3RyYWNrSWQiLCJfcnVubmluZ3MiLCJfc2hvdWxkU2NoZWR1bGUiLCJfZGVwc0xlbmd0aCIsImRpcnR5IiwicGF1c2VUcmFja2luZyIsImRlcCIsImNvbXB1dGVkIiwidHJpZ2dlckNvbXB1dGVkIiwicmVzZXRUcmFja2luZyIsImxhc3RTaG91bGRUcmFjayIsInNob3VsZFRyYWNrIiwibGFzdEVmZmVjdCIsInByZUNsZWFudXBFZmZlY3QiLCJwb3N0Q2xlYW51cEVmZmVjdCIsIm9uU3RvcCIsImVmZmVjdDIiLCJjbGVhbnVwRGVwRWZmZWN0IiwidHJhY2tJZCIsImRlbGV0ZSIsImNsZWFudXAiLCJwYXVzZVNjaGVkdWxlU3RhY2siLCJ0cmFja1N0YWNrIiwicGF1c2VTY2hlZHVsaW5nIiwicmVzZXRTY2hlZHVsaW5nIiwicXVldWVFZmZlY3RTY2hlZHVsZXJzIiwidHJhY2tFZmZlY3QiLCJkZWJ1Z2dlckV2ZW50RXh0cmFJbmZvIiwib2xkRGVwIiwib25UcmFjayIsInRyaWdnZXJFZmZlY3RzIiwiZGlydHlMZXZlbCIsInRyYWNraW5nIiwib25UcmlnZ2VyIiwiYWxsb3dSZWN1cnNlIiwiY3JlYXRlRGVwIiwiTWFwIiwidGFyZ2V0TWFwIiwiV2Vha01hcCIsIklURVJBVEVfS0VZIiwiTUFQX0tFWV9JVEVSQVRFX0tFWSIsInRyYWNrIiwiZGVwc01hcCIsIm5ld1ZhbHVlIiwib2xkVGFyZ2V0IiwibmV3TGVuZ3RoIiwia2V5MiIsImlzTm9uVHJhY2thYmxlS2V5cyIsImJ1aWx0SW5TeW1ib2xzIiwiYXJyYXlJbnN0cnVtZW50YXRpb25zIiwiY3JlYXRlQXJyYXlJbnN0cnVtZW50YXRpb25zIiwiaW5zdHJ1bWVudGF0aW9ucyIsInRvUmF3IiwiQmFzZVJlYWN0aXZlSGFuZGxlciIsIl9pc1JlYWRvbmx5IiwiX2lzU2hhbGxvdyIsInJlY2VpdmVyIiwiaXNSZWFkb25seTIiLCJpc1NoYWxsb3cyIiwic2hhbGxvd1JlYWRvbmx5TWFwIiwicmVhZG9ubHlNYXAiLCJzaGFsbG93UmVhY3RpdmVNYXAiLCJyZWFjdGl2ZU1hcCIsInRhcmdldElzQXJyYXkiLCJSZWZsZWN0IiwicmVhZG9ubHkiLCJyZWFjdGl2ZSIsIk11dGFibGVSZWFjdGl2ZUhhbmRsZXIiLCJpc09sZFZhbHVlUmVhZG9ubHkiLCJpc1JlYWRvbmx5IiwiaXNTaGFsbG93IiwiaGFkS2V5IiwiZGVsZXRlUHJvcGVydHkiLCJvd25LZXlzIiwiUmVhZG9ubHlSZWFjdGl2ZUhhbmRsZXIiLCJtdXRhYmxlSGFuZGxlcnMiLCJyZWFkb25seUhhbmRsZXJzIiwic2hhbGxvd1JlYWN0aXZlSGFuZGxlcnMiLCJzaGFsbG93UmVhZG9ubHlIYW5kbGVycyIsInRvU2hhbGxvdyIsImdldFByb3RvIiwicmF3VGFyZ2V0IiwicmF3S2V5IiwiaGFzMiIsIndyYXAiLCJ0b1JlYWRvbmx5IiwidG9SZWFjdGl2ZSIsImdldDIiLCJjaGVja0lkZW50aXR5S2V5cyIsImRlbGV0ZUVudHJ5IiwiY2xlYXIiLCJoYWRJdGVtcyIsImNyZWF0ZUZvckVhY2giLCJvYnNlcnZlZCIsImNyZWF0ZUl0ZXJhYmxlTWV0aG9kIiwidGFyZ2V0SXNNYXAiLCJpc1BhaXIiLCJpc0tleU9ubHkiLCJpbm5lckl0ZXJhdG9yIiwiY3JlYXRlUmVhZG9ubHlNZXRob2QiLCJjcmVhdGVJbnN0cnVtZW50YXRpb25zIiwibXV0YWJsZUluc3RydW1lbnRhdGlvbnMyIiwic2hhbGxvd0luc3RydW1lbnRhdGlvbnMyIiwicmVhZG9ubHlJbnN0cnVtZW50YXRpb25zMiIsInNoYWxsb3dSZWFkb25seUluc3RydW1lbnRhdGlvbnMyIiwibXV0YWJsZUluc3RydW1lbnRhdGlvbnMiLCJyZWFkb25seUluc3RydW1lbnRhdGlvbnMiLCJzaGFsbG93SW5zdHJ1bWVudGF0aW9ucyIsInNoYWxsb3dSZWFkb25seUluc3RydW1lbnRhdGlvbnMiLCJjcmVhdGVJbnN0cnVtZW50YXRpb25HZXR0ZXIiLCJzaGFsbG93IiwibXV0YWJsZUNvbGxlY3Rpb25IYW5kbGVycyIsInNoYWxsb3dDb2xsZWN0aW9uSGFuZGxlcnMiLCJyZWFkb25seUNvbGxlY3Rpb25IYW5kbGVycyIsInNoYWxsb3dSZWFkb25seUNvbGxlY3Rpb25IYW5kbGVycyIsImNyZWF0ZVJlYWN0aXZlT2JqZWN0Iiwic2hhbGxvd1JlYWN0aXZlIiwic2hhbGxvd1JlYWRvbmx5IiwiYmFzZUhhbmRsZXJzIiwiY29sbGVjdGlvbkhhbmRsZXJzIiwicHJveHlNYXAiLCJleGlzdGluZ1Byb3h5IiwidGFyZ2V0VHlwZSIsImlzRXh0ZW5zaWJsZSIsInJhd1R5cGUiLCJ0YXJnZXRUeXBlTWFwIiwicHJveHkiLCJQcm94eSIsImlzUmVhY3RpdmUiLCJpc1Byb3h5IiwicmF3IiwibWFya1JhdyIsIkNvbXB1dGVkUmVmSW1wbCIsImdldHRlciIsIl9zZXR0ZXIiLCJpc1NTUiIsIl92YWx1ZSIsInRyaWdnZXJSZWZWYWx1ZSIsIl9jYWNoZWFibGUiLCJ0cmFja1JlZlZhbHVlIiwiX3dhcm5SZWN1cnNpdmUiLCJfZGlydHkiLCJyZWYyIiwibmV3VmFsIiwib2xkVmFsIiwicmVmIiwiY3JlYXRlUmVmIiwiUmVmSW1wbCIsIl9fdl9pc1NoYWxsb3ciLCJfcmF3VmFsdWUiLCJ1c2VEaXJlY3RWYWx1ZSIsInVucmVmIiwic2hhbGxvd1Vud3JhcEhhbmRsZXJzIiwicHJveHlSZWZzIiwib2JqZWN0V2l0aFJlZnMiLCJDdXN0b21SZWZJbXBsIiwiZmFjdG9yeSIsIl9nZXQiLCJfc2V0IiwiY3VzdG9tUmVmIiwiT2JqZWN0UmVmSW1wbCIsIl9vYmplY3QiLCJfZGVmYXVsdFZhbHVlIiwiZ2V0RGVwRnJvbVJlYWN0aXZlIiwiR2V0dGVyUmVmSW1wbCIsIl9nZXR0ZXIiLCJfX3ZfaXNSZWFkb25seSIsInByb3BlcnR5VG9SZWYiLCJkZWZhdWx0VmFsdWUiLCJwdXNoV2FybmluZ0NvbnRleHQiLCJ2bm9kZSIsInBvcFdhcm5pbmdDb250ZXh0IiwiaXNXYXJuaW5nIiwid2FybiQxIiwiY29tcG9uZW50IiwiYXBwV2FybkhhbmRsZXIiLCJhcHBDb250ZXh0Iiwid2FybkhhbmRsZXIiLCJ0cmFjZSIsImN1cnJlbnRWTm9kZSIsIm5vcm1hbGl6ZWRTdGFjayIsInJlY3Vyc2VDb3VudCIsInBhcmVudEluc3RhbmNlIiwiZ2V0Q29tcG9uZW50VHJhY2UiLCJjYWxsV2l0aEVycm9ySGFuZGxpbmciLCJfYiIsImZvcm1hdENvbXBvbmVudE5hbWUiLCJ3YXJuQXJncyIsImxvZ3MiLCJlbnRyeSIsInBvc3RmaXgiLCJpc1Jvb3QiLCJmb3JtYXRQcm9wcyIsImZvcm1hdFRyYWNlRW50cnkiLCJmb3JtYXRUcmFjZSIsImZvcm1hdFByb3AiLCJhc3NlcnROdW1iZXIiLCJFcnJvclR5cGVTdHJpbmdzJDEiLCJzcCIsImJjIiwiYm0iLCJidSIsImJ1bSIsInVtIiwiZGEiLCJlYyIsInJ0YyIsInJ0ZyIsImhhbmRsZUVycm9yIiwiY2FsbFdpdGhBc3luY0Vycm9ySGFuZGxpbmciLCJ0aHJvd0luRGV2IiwiY29udGV4dFZOb2RlIiwiY3VyIiwi
15ZXhwb3NlZEluc3RhbmNlIiwiZXJyb3JJbmZvIiwiZXJyb3JDYXB0dXJlZEhvb2tzIiwiYXBwRXJyb3JIYW5kbGVyIiwiZXJyb3JIYW5kbGVyIiwiaW5mbyIsImxvZ0Vycm9yIiwiaXNGbHVzaGluZyIsImlzRmx1c2hQZW5kaW5nIiwiZmx1c2hJbmRleCIsInBlbmRpbmdQb3N0Rmx1c2hDYnMiLCJhY3RpdmVQb3N0Rmx1c2hDYnMiLCJwb3N0Rmx1c2hJbmRleCIsInJlc29sdmVkUHJvbWlzZSIsImN1cnJlbnRGbHVzaFByb21pc2UiLCJSRUNVUlNJT05fTElNSVQiLCJxdWV1ZUpvYiIsImpvYiIsIm1pZGRsZSIsIm1pZGRsZUpvYiIsIm1pZGRsZUpvYklkIiwiZ2V0SWQiLCJwcmUiLCJmaW5kSW5zZXJ0aW9uSW5kZXgiLCJxdWV1ZUZsdXNoIiwiZmx1c2hKb2JzIiwicXVldWVQb3N0Rmx1c2hDYiIsImNiIiwiZmx1c2hQcmVGbHVzaENicyIsInNlZW4iLCJ1aWQiLCJjaGVja1JlY3Vyc2l2ZVVwZGF0ZXMiLCJmbHVzaFBvc3RGbHVzaENicyIsImRlZHVwZWQiLCJjb21wYXJhdG9yIiwiY2hlY2siLCJjb3VudCIsImNvbXBvbmVudE5hbWUiLCJnZXRDb21wb25lbnROYW1lIiwiaXNIbXJVcGRhdGluZyIsImhtckRpcnR5Q29tcG9uZW50cyIsIl9fVlVFX0hNUl9SVU5USU1FX18iLCJjcmVhdGVSZWNvcmQiLCJ0cnlXcmFwIiwicmVyZW5kZXIiLCJuZXdSZW5kZXIiLCJyZWNvcmQiLCJpbml0aWFsRGVmIiwiaW5zdGFuY2VzIiwibm9ybWFsaXplQ2xhc3NDb21wb25lbnQiLCJyZW5kZXJDYWNoZSIsInJlbG9hZCIsIm5ld0NvbXAiLCJ1cGRhdGVDb21wb25lbnREZWYiLCJvbGRDb21wIiwiZGlydHlJbnN0YW5jZXMiLCJwcm9wc0NhY2hlIiwiZW1pdHNDYWNoZSIsIm9wdGlvbnNDYWNoZSIsImNlUmVsb2FkIiwiaXNDbGFzc0NvbXBvbmVudCIsIl9fdmNjT3B0cyIsImRldnRvb2xzJDEiLCJkZXZ0b29sc05vdEluc3RhbGxlZCIsImVtaXQkMSIsInNldERldnRvb2xzSG9vayQxIiwiaG9vayIsIl9fVlVFX0RFVlRPT0xTX0hPT0tfUkVQTEFZX18iLCJuZXdIb29rIiwiZGV2dG9vbHNDb21wb25lbnRBZGRlZCIsImNyZWF0ZURldnRvb2xzQ29tcG9uZW50SG9vayIsImRldnRvb2xzQ29tcG9uZW50VXBkYXRlZCIsIl9kZXZ0b29sc0NvbXBvbmVudFJlbW92ZWQiLCJkZXZ0b29sc0NvbXBvbmVudFJlbW92ZWQiLCJjbGVhbnVwQnVmZmVyIiwiYXBwIiwiZGV2dG9vbHNQZXJmU3RhcnQiLCJjcmVhdGVEZXZ0b29sc1BlcmZvcm1hbmNlSG9vayIsImRldnRvb2xzUGVyZkVuZCIsImN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZSIsImN1cnJlbnRTY29wZUlkIiwic2V0Q3VycmVudFJlbmRlcmluZ0luc3RhbmNlIiwiX19zY29wZUlkIiwid2l0aEN0eCIsImN0eCIsImlzTm9uU2NvcGVkU2xvdCIsIl9uIiwicmVuZGVyRm5XaXRoQ29udGV4dCIsIl9kIiwic2V0QmxvY2tUcmFja2luZyIsInByZXZJbnN0YW5jZSIsIl9fVlVFX1BST0RfREVWVE9PTFNfXyIsIl9jIiwidmFsaWRhdGVEaXJlY3RpdmVOYW1lIiwiaW52b2tlRGlyZWN0aXZlSG9vayIsInByZXZWTm9kZSIsImJpbmRpbmdzIiwiZGlycyIsIm9sZEJpbmRpbmdzIiwibGVhdmVDYktleSIsImVudGVyQ2JLZXkiLCJ1c2VUcmFuc2l0aW9uU3RhdGUiLCJzdGF0ZSIsImlzTW91bnRlZCIsImlzTGVhdmluZyIsImlzVW5tb3VudGluZyIsImxlYXZpbmdWTm9kZXMiLCJvbk1vdW50ZWQiLCJvbkJlZm9yZVVubW91bnQiLCJUcmFuc2l0aW9uSG9va1ZhbGlkYXRvciIsIkZ1bmN0aW9uIiwiQmFzZVRyYW5zaXRpb25Qcm9wc1ZhbGlkYXRvcnMiLCJtb2RlIiwiYXBwZWFyIiwicGVyc2lzdGVkIiwib25CZWZvcmVFbnRlciIsIm9uRW50ZXIiLCJvbkFmdGVyRW50ZXIiLCJvbkVudGVyQ2FuY2VsbGVkIiwib25CZWZvcmVMZWF2ZSIsIm9uTGVhdmUiLCJvbkFmdGVyTGVhdmUiLCJvbkxlYXZlQ2FuY2VsbGVkIiwib25CZWZvcmVBcHBlYXIiLCJvbkFwcGVhciIsIm9uQWZ0ZXJBcHBlYXIiLCJvbkFwcGVhckNhbmNlbGxlZCIsInJlY3Vyc2l2ZUdldFN1YnRyZWUiLCJzdWJUcmVlIiwiQmFzZVRyYW5zaXRpb25JbXBsIiwic2V0dXAiLCJzbG90cyIsImdldEN1cnJlbnRJbnN0YW5jZSIsImdldFRyYW5zaXRpb25SYXdDaGlsZHJlbiIsImhhc0ZvdW5kIiwiQ29tbWVudCIsInJhd1Byb3BzIiwiZW1wdHlQbGFjZWhvbGRlciIsImlubmVyQ2hpbGQiLCJnZXRLZWVwQWxpdmVDaGlsZCIsImVudGVySG9va3MiLCJyZXNvbHZlVHJhbnNpdGlvbkhvb2tzIiwiaG9va3MiLCJzZXRUcmFuc2l0aW9uSG9va3MiLCJvbGRDaGlsZCIsIm9sZElubmVyQ2hpbGQiLCJpc1NhbWVWTm9kZVR5cGUiLCJsZWF2aW5nSG9va3MiLCJhZnRlckxlYXZlIiwiZGVsYXlMZWF2ZSIsImVhcmx5UmVtb3ZlIiwiZGVsYXllZExlYXZlIiwiZ2V0TGVhdmluZ05vZGVzRm9yVHlwZSIsIkJhc2VUcmFuc2l0aW9uIiwibGVhdmluZ1ZOb2Rlc0NhY2hlIiwicG9zdENsb25lIiwiY2FsbEhvb2siLCJjYWxsQXN5bmNIb29rIiwiZXZlcnkiLCJob29rMiIsImJlZm9yZUVudGVyIiwibGVhdmluZ1ZOb2RlIiwiZW50ZXIiLCJhZnRlckhvb2siLCJjYW5jZWxIb29rIiwiY2FsbGVkIiwibGVhdmUiLCJjbG9uZSIsInZub2RlMiIsImhvb2tzMiIsImlzS2VlcEFsaXZlIiwiY2xvbmVWTm9kZSIsInNoYXBlRmxhZyIsInNzQ29udGVudCIsInNzRmFsbGJhY2siLCJrZWVwQ29tbWVudCIsImtleWVkRnJhZ21lbnRDb3VudCIsIkZyYWdtZW50IiwicGF0Y2hGbGFnIiwiZGVmaW5lQ29tcG9uZW50IiwiZXh0cmFPcHRpb25zIiwiaXNBc3luY1dyYXBwZXIiLCJfX2FzeW5jTG9hZGVyIiwiY3JlYXRlSW5uZXJDb21wIiwiY29tcCIsImNlIiwiY3JlYXRlVk5vZGUiLCJfX2lzS2VlcEFsaXZlIiwiS2VlcEFsaXZlSW1wbCIsImluY2x1ZGUiLCJleGNsdWRlIiwic2hhcmVkQ29udGV4dCIsInJlbmRlcmVyIiwiX192X2NhY2hlIiwicGFyZW50U3VzcGVuc2UiLCJzdXNwZW5zZSIsInBhdGNoIiwiX3VubW91bnQiLCJzdG9yYWdlQ29udGFpbmVyIiwidW5tb3VudCIsInJlc2V0U2hhcGVGbGFnIiwicHJ1bmVDYWNoZSIsInBydW5lQ2FjaGVFbnRyeSIsImNhY2hlZCIsImFjdGl2YXRlIiwiYW5jaG9yIiwibmFtZXNwYWNlIiwib3B0aW1pemVkIiwiaW5zdGFuY2UyIiwic2xvdFNjb3BlSWRzIiwicXVldWVQb3N0UmVuZGVyRWZmZWN0IiwiaXNEZWFjdGl2YXRlZCIsInZub2RlSG9vayIsIm9uVm5vZGVNb3VudGVkIiwiaW52b2tlVk5vZGVIb29rIiwiZGVhY3RpdmF0ZSIsImludmFsaWRhdGVNb3VudCIsIm9uVm5vZGVVbm1vdW50ZWQiLCJ3YXRjaCIsImZsdXNoIiwiZGVlcCIsInBlbmRpbmdDYWNoZUtleSIsImNhY2hlU3VidHJlZSIsImlzU3VzcGVuc2UiLCJnZXRJbm5lckNoaWxkIiwib25VcGRhdGVkIiwicmF3Vk5vZGUiLCJpc1ZOb2RlIiwiX19hc3luY1Jlc29sdmVkIiwiY2FjaGVkVk5vZGUiLCJLZWVwQWxpdmUiLCJvbkFjdGl2YXRlZCIsInJlZ2lzdGVyS2VlcEFsaXZlSG9vayIsIm9uRGVhY3RpdmF0ZWQiLCJjdXJyZW50SW5zdGFuY2UiLCJ3cmFwcGVkSG9vayIsIl9fd2RjIiwiaW5qZWN0SG9vayIsImluamVjdFRvS2VlcEFsaXZlUm9vdCIsImtlZXBBbGl2ZVJvb3QiLCJpbmplY3RlZCIsIm9uVW5tb3VudGVkIiwiX193ZWgiLCJzZXRDdXJyZW50SW5zdGFuY2UiLCJjcmVhdGVIb29rIiwibGlmZWN5Y2xlIiwiaXNJblNTUkNvbXBvbmVudFNldHVwIiwib25CZWZvcmVNb3VudCIsIm9uQmVmb3JlVXBkYXRlIiwib25TZXJ2ZXJQcmVmZXRjaCIsIm9uUmVuZGVyVHJpZ2dlcmVkIiwib25SZW5kZXJUcmFja2VkIiwib25FcnJvckNhcHR1cmVkIiwiQ09NUE9ORU5UUyIsIk5VTExfRFlOQU1JQ19DT01QT05FTlQiLCJmb3IiLCJyZXNvbHZlQXNzZXQiLCJ3YXJuTWlzc2luZyIsIm1heWJlU2VsZlJlZmVyZW5jZSIsIkNvbXBvbmVudCIsInNlbGZOYW1lIiwiZXh0cmEiLCJyZWdpc3RyeSIsImVuc3VyZVZhbGlkVk5vZGUiLCJ2bm9kZXMiLCJnZXRQdWJsaWNJbnN0YW5jZSIsImlzU3RhdGVmdWxDb21wb25lbnQiLCJnZXRDb21wb25lbnRQdWJsaWNJbnN0YW5jZSIsInB1YmxpY1Byb3BlcnRpZXNNYXAiLCIkZGF0YSIsIiRwcm9wcyIsIiRhdHRycyIsIiRzbG90cyIsIiRyZWZzIiwicmVmcyIsIiRwYXJlbnQiLCIkcm9vdCIsIiRlbWl0IiwiJG9wdGlvbnMiLCJfX1ZVRV9PUFRJT05TX0FQSV9fIiwicmVzb2x2ZU1lcmdlZE9wdGlvbnMiLCIkZm9yY2VVcGRhdGUiLCIkbmV4dFRpY2siLCIkd2F0Y2giLCJpbnN0YW5jZVdhdGNoIiwiaXNSZXNlcnZlZFByZWZpeCIsImhhc1NldHVwQmluZGluZyIsIl9faXNTY3JpcHRTZXR1cCIsIlB1YmxpY0luc3RhbmNlUHJveHlIYW5kbGVycyIsInNldHVwU3RhdGUiLCJhY2Nlc3NDYWNoZSIsIm5vcm1hbGl6ZWRQcm9wcyIsInByb3BzT3B0aW9ucyIsInNob3VsZENhY2hlQWNjZXNzIiwicHVibGljR2V0dGVyIiwiY3NzTW9kdWxlIiwiZ2xvYmFsUHJvcGVydGllcyIsIm1hcmtBdHRyc0FjY2Vzc2VkIiwiX19jc3NNb2R1bGVzIiwiZGVzY3JpcHRvciIsIlJ1bnRpbWVDb21waWxlZFB1YmxpY0luc3RhbmNlUHJveHlIYW5kbGVycyIsInVuc2NvcGFibGVzIiwid2FyblJ1bnRpbWVVc2FnZSIsImdldENvbnRleHQiLCJzZXR1cENvbnRleHQiLCJ
15jcmVhdGVTZXR1cENvbnRleHQiLCJub3JtYWxpemVQcm9wc09yRW1pdHMiLCJhcHBseU9wdGlvbnMiLCJwdWJsaWNUaGlzIiwiYmVmb3JlQ3JlYXRlIiwiZGF0YU9wdGlvbnMiLCJjb21wdXRlZE9wdGlvbnMiLCJtZXRob2RzIiwid2F0Y2hPcHRpb25zIiwicHJvdmlkZSIsInByb3ZpZGVPcHRpb25zIiwiaW5qZWN0IiwiaW5qZWN0T3B0aW9ucyIsImNyZWF0ZWQiLCJiZWZvcmVNb3VudCIsImJlZm9yZVVwZGF0ZSIsInVwZGF0ZWQiLCJhY3RpdmF0ZWQiLCJkZWFjdGl2YXRlZCIsImJlZm9yZURlc3Ryb3kiLCJiZWZvcmVVbm1vdW50IiwidW5tb3VudGVkIiwicmVuZGVyVHJhY2tlZCIsInJlbmRlclRyaWdnZXJlZCIsImVycm9yQ2FwdHVyZWQiLCJzZXJ2ZXJQcmVmZXRjaCIsImV4cG9zZSIsImluaGVyaXRBdHRycyIsImNvbXBvbmVudHMiLCJkaXJlY3RpdmVzIiwiZmlsdGVycyIsImNoZWNrRHVwbGljYXRlUHJvcGVydGllcyIsImNyZWF0ZUR1cGxpY2F0ZUNoZWNrZXIiLCJub3JtYWxpemVJbmplY3QiLCJyZXNvbHZlSW5qZWN0aW9ucyIsIm1ldGhvZEhhbmRsZXIiLCJjcmVhdGVXYXRjaGVyIiwicHJvdmlkZXMiLCJyZWdpc3RlckxpZmVjeWNsZUhvb2siLCJyZWdpc3RlciIsIl9ob29rIiwiZXhwb3NlZCIsImNyZWF0ZVBhdGhHZXR0ZXIiLCJtaXhpbnMiLCJleHRlbmRzIiwiZXh0ZW5kc09wdGlvbnMiLCJnbG9iYWxNaXhpbnMiLCJvcHRpb25NZXJnZVN0cmF0ZWdpZXMiLCJyZXNvbHZlZCIsIm1lcmdlT3B0aW9ucyIsInN0cmF0cyIsImFzTWl4aW4iLCJzdHJhdCIsImludGVybmFsT3B0aW9uTWVyZ2VTdHJhdHMiLCJtZXJnZURhdGFGbiIsIm1lcmdlRW1pdHNPclByb3BzT3B0aW9ucyIsImVtaXRzIiwibWVyZ2VPYmplY3RPcHRpb25zIiwibWVyZ2VBc0FycmF5IiwiY3JlYXRlQXBwQ29udGV4dCIsImlzTmF0aXZlVGFnIiwiY29tcGlsZXJPcHRpb25zIiwidWlkJDEiLCJjcmVhdGVBcHBBUEkiLCJoeWRyYXRlIiwicm9vdENvbXBvbmVudCIsInJvb3RQcm9wcyIsImluc3RhbGxlZFBsdWdpbnMiLCJXZWFrU2V0IiwiX3VpZCIsIl9jb21wb25lbnQiLCJfcHJvcHMiLCJfY29udGFpbmVyIiwiX2NvbnRleHQiLCJfaW5zdGFuY2UiLCJwbHVnaW4iLCJpbnN0YWxsIiwibWl4aW4iLCJ2YWxpZGF0ZUNvbXBvbmVudE5hbWUiLCJkaXJlY3RpdmUiLCJyb290Q29udGFpbmVyIiwiaXNIeWRyYXRlIiwiX192dWVfYXBwX18iLCJUZXh0IiwiU3RhdGljIiwiZGV2dG9vbHNJbml0QXBwIiwiZGV2dG9vbHNVbm1vdW50QXBwIiwicnVuV2l0aENvbnRleHQiLCJsYXN0QXBwIiwiY3VycmVudEFwcCIsInBhcmVudFByb3ZpZGVzIiwidHJlYXREZWZhdWx0QXNGYWN0b3J5IiwiaW50ZXJuYWxPYmplY3RQcm90byIsImNyZWF0ZUludGVybmFsT2JqZWN0IiwiaXNJbnRlcm5hbE9iamVjdCIsInNldEZ1bGxQcm9wcyIsIm5lZWRDYXN0S2V5cyIsInJhd0Nhc3RWYWx1ZXMiLCJoYXNBdHRyc0NoYW5nZWQiLCJjYW1lbEtleSIsImlzRW1pdExpc3RlbmVyIiwiZW1pdHNPcHRpb25zIiwicmF3Q3VycmVudFByb3BzIiwiY2FzdFZhbHVlcyIsInJlc29sdmVQcm9wVmFsdWUiLCJpc0Fic2VudCIsImhhc0RlZmF1bHQiLCJza2lwRmFjdG9yeSIsInByb3BzRGVmYXVsdHMiLCJtaXhpblByb3BzQ2FjaGUiLCJub3JtYWxpemVQcm9wc09wdGlvbnMiLCJoYXNFeHRlbmRzIiwiZXh0ZW5kUHJvcHMiLCJyYXcyIiwibm9ybWFsaXplZEtleSIsInZhbGlkYXRlUHJvcE5hbWUiLCJwcm9wVHlwZSIsInNob3VsZENhc3QiLCJzaG91bGRDYXN0VHJ1ZSIsInR5cGVOYW1lIiwidmFsaWRhdGVQcm9wcyIsInJlc29sdmVkVmFsdWVzIiwidmFsaWRhdGVQcm9wIiwicmVxdWlyZWQiLCJza2lwQ2hlY2siLCJpc1ZhbGlkIiwidHlwZXMiLCJleHBlY3RlZFR5cGVzIiwidmFsaWQiLCJleHBlY3RlZFR5cGUiLCJhc3NlcnRUeXBlIiwicmVjZWl2ZWRUeXBlIiwiZXhwZWN0ZWRWYWx1ZSIsInN0eWxlVmFsdWUiLCJyZWNlaXZlZFZhbHVlIiwiaXNFeHBsaWNhYmxlIiwiZWxlbSIsImlzQm9vbGVhbiIsImdldEludmFsaWRUeXBlTWVzc2FnZSIsImlzU2ltcGxlVHlwZSIsImN0b3IiLCJnZXRUeXBlIiwiaXNJbnRlcm5hbEtleSIsIm5vcm1hbGl6ZVNsb3RWYWx1ZSIsIm5vcm1hbGl6ZVZOb2RlIiwibm9ybWFsaXplU2xvdCIsInJhd1Nsb3QiLCJub3JtYWxpemVPYmplY3RTbG90cyIsInJhd1Nsb3RzIiwiX2N0eCIsIm5vcm1hbGl6ZVZOb2RlU2xvdHMiLCJhc3NpZ25TbG90cyIsImluaXRTbG90cyIsInVwZGF0ZVNsb3RzIiwibmVlZERlbGV0aW9uQ2hlY2siLCJkZWxldGlvbkNvbXBhcmlzb25UYXJnZXQiLCIkc3RhYmxlIiwic2V0UmVmIiwicmF3UmVmIiwib2xkUmF3UmVmIiwiaXNVbm1vdW50IiwicmVmVmFsdWUiLCJvd25lciIsIm9sZFJlZiIsIl9pc1N0cmluZyIsIl9pc1JlZiIsImRvU2V0IiwiZXhpc3RpbmciLCJUZWxlcG9ydEVuZEtleSIsImlzVGVsZXBvcnREaXNhYmxlZCIsImlzVGFyZ2V0U1ZHIiwiU1ZHRWxlbWVudCIsImlzVGFyZ2V0TWF0aE1MIiwiTWF0aE1MRWxlbWVudCIsInJlc29sdmVUYXJnZXQiLCJzZWxlY3QiLCJUZWxlcG9ydEltcGwiLCJfX2lzVGVsZXBvcnQiLCJuMSIsIm4yIiwicGFyZW50Q29tcG9uZW50IiwiaW50ZXJuYWxzIiwibWMiLCJtb3VudENoaWxkcmVuIiwicGMiLCJwYXRjaENoaWxkcmVuIiwicGJjIiwicGF0Y2hCbG9ja0NoaWxkcmVuIiwiaW5zZXJ0IiwiY3JlYXRlVGV4dCIsImNyZWF0ZUNvbW1lbnQiLCJkeW5hbWljQ2hpbGRyZW4iLCJwbGFjZWhvbGRlciIsIm1haW5BbmNob3IiLCJ0YXJnZXRBbmNob3IiLCJwcmVwYXJlQW5jaG9yIiwiY29udGFpbmVyMiIsImFuY2hvcjIiLCJ3YXNEaXNhYmxlZCIsImN1cnJlbnRDb250YWluZXIiLCJjdXJyZW50QW5jaG9yIiwidHJhdmVyc2VTdGF0aWNDaGlsZHJlbiIsIm1vdmVUZWxlcG9ydCIsIm5leHRUYXJnZXQiLCJ1cGRhdGVDc3NWYXJzIiwiaG9zdFJlbW92ZSIsImRvUmVtb3ZlIiwic2hvdWxkUmVtb3ZlIiwibmV4dFNpYmxpbmciLCJoeWRyYXRlQ2hpbGRyZW4iLCJ0YXJnZXROb2RlIiwiX2xwYSIsInBhcmVudEFuY2hvciIsIm1vdmVUeXBlIiwiaXNSZW9yZGVyIiwiVGVsZXBvcnQiLCJ1dCIsImhhc0xvZ2dlZE1pc21hdGNoRXJyb3IiLCJsb2dNaXNtYXRjaEVycm9yIiwiZ2V0Q29udGFpbmVyVHlwZSIsIm5hbWVzcGFjZVVSSSIsImlzU1ZHQ29udGFpbmVyIiwiaXNNYXRoTUxDb250YWluZXIiLCJpc0NvbW1lbnQiLCJjcmVhdGVIeWRyYXRpb25GdW5jdGlvbnMiLCJyZW5kZXJlckludGVybmFscyIsIm10IiwibW91bnRDb21wb25lbnQiLCJwYXRjaFByb3AiLCJoeWRyYXRlTm9kZSIsImlzRnJhZ21lbn
15RTdGFydCIsIm9uTWlzbWF0Y2giLCJoYW5kbGVNaXNtYXRjaCIsImRvbVR5cGUiLCJuZXh0Tm9kZSIsIl9fVlVFX1BST0RfSFlEUkFUSU9OX01JU01BVENIX0RFVEFJTFNfXyIsImlzVGVtcGxhdGVOb2RlIiwicmVwbGFjZU5vZGUiLCJuZWVkVG9BZG9wdENvbnRlbnQiLCJzdGF0aWNDb3VudCIsIm91dGVySFRNTCIsImh5ZHJhdGVGcmFnbWVudCIsImh5ZHJhdGVFbGVtZW50IiwibG9jYXRlQ2xvc2luZ0FuY2hvciIsImxhc3RDaGlsZCIsImNyZWF0ZVRleHRWTm9kZSIsImZvcmNlUGF0Y2giLCJ2bm9kZUhvb2tzIiwibmVlZENhbGxUcmFuc2l0aW9uSG9va3MiLCJuZWVkVHJhbnNpdGlvbiIsImhhc1dhcm5lZCIsImlzQ3VzdG9tRWxlbWVudCIsInByb3BIYXNNaXNtYXRjaCIsIm9uVm5vZGVCZWZvcmVNb3VudCIsInF1ZXVlRWZmZWN0V2l0aFN1c3BlbnNlIiwicGFyZW50Vk5vZGUiLCJpc1RleHQiLCJmcmFnbWVudFNsb3RTY29wZUlkcyIsImlzRnJhZ21lbnQiLCJuZXh0MiIsIm5ld05vZGUiLCJvbGROb2RlIiwicGFyZW50Tm9kZTIiLCJyZXBsYWNlQ2hpbGQiLCJoYXNDaGlsZE5vZGVzIiwiX3Zub2RlIiwiY2xpZW50VmFsdWUiLCJtaXNtYXRjaFR5cGUiLCJtaXNtYXRjaEtleSIsImV4cGVjdGVkIiwiaXNTZXRFcXVhbCIsInRvQ2xhc3NTZXQiLCJzdHJpbmdpZnlTdHlsZSIsImFjdHVhbE1hcCIsInRvU3R5bGVNYXAiLCJleHBlY3RlZE1hcCIsInJlc29sdmVDc3NWYXJzIiwiaXNNYXBFcXVhbCIsImlzUmVuZGVyYWJsZUF0dHJWYWx1ZSIsImZvcm1hdCIsInN0eWxlTWFwIiwiZ2V0Q3NzVmFycyIsImNzc1ZhcnMiLCJzdXBwb3J0ZWQiLCJwZXJmIiwic3RhcnRNZWFzdXJlIiwiaXNTdXBwb3J0ZWQiLCJtYXJrIiwiZW5kTWVhc3VyZSIsInN0YXJ0VGFnIiwiZW5kVGFnIiwibWVhc3VyZSIsImNsZWFyTWFya3MiLCJjcmVhdGVSZW5kZXJlciIsImJhc2VDcmVhdGVSZW5kZXJlciIsImNyZWF0ZUh5ZHJhdGlvblJlbmRlcmVyIiwiY3JlYXRlSHlkcmF0aW9uRm5zIiwibmVlZFdhcm4iLCJtdWx0aSIsImluaXRGZWF0dXJlRmxhZ3MiLCJfX1ZVRV9fIiwiX19WVUVfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyIsImhvc3RJbnNlcnQiLCJob3N0UGF0Y2hQcm9wIiwiaG9zdENyZWF0ZUVsZW1lbnQiLCJob3N0Q3JlYXRlVGV4dCIsImhvc3RDcmVhdGVDb21tZW50Iiwic2V0VGV4dCIsImhvc3RTZXRUZXh0Iiwic2V0RWxlbWVudFRleHQiLCJob3N0U2V0RWxlbWVudFRleHQiLCJob3N0UGFyZW50Tm9kZSIsImhvc3ROZXh0U2libGluZyIsInNldFNjb3BlSWQiLCJob3N0U2V0U2NvcGVJZCIsImluc2VydFN0YXRpY0NvbnRlbnQiLCJob3N0SW5zZXJ0U3RhdGljQ29udGVudCIsImdldE5leHRIb3N0Tm9kZSIsInByb2Nlc3NUZXh0IiwicHJvY2Vzc0NvbW1lbnROb2RlIiwibW91bnRTdGF0aWNOb2RlIiwicGF0Y2hTdGF0aWNOb2RlIiwicHJvY2Vzc0ZyYWdtZW50IiwicHJvY2Vzc0VsZW1lbnQiLCJwcm9jZXNzQ29tcG9uZW50IiwicmVtb3ZlU3RhdGljTm9kZSIsIm1vdW50RWxlbWVudCIsInBhdGNoRWxlbWVudCIsInJlc29sdmVDaGlsZHJlbk5hbWVzcGFjZSIsInNjb3BlSWQiLCJmaWx0ZXJTaW5nbGVSb290IiwiY2xvbmVJZk1vdW50ZWQiLCJfX3Zub2RlIiwib2xkUHJvcHMiLCJuZXdQcm9wcyIsInRvZ2dsZVJlY3Vyc2UiLCJvblZub2RlQmVmb3JlVXBkYXRlIiwicGF0Y2hQcm9wcyIsImNsYXNzIiwicHJvcHNUb1VwZGF0ZSIsImR5bmFtaWNQcm9wcyIsIm9uVm5vZGVVcGRhdGVkIiwib2xkQ2hpbGRyZW4iLCJuZXdDaGlsZHJlbiIsImZhbGxiYWNrQ29udGFpbmVyIiwib2xkVk5vZGUiLCJuZXdWTm9kZSIsImZyYWdtZW50U3RhcnRBbmNob3IiLCJmcmFnbWVudEVuZEFuY2hvciIsInVwZGF0ZUNvbXBvbmVudCIsImluaXRpYWxWTm9kZSIsImNyZWF0ZUNvbXBvbmVudEluc3RhbmNlIiwiX19obXJJZCIsInJlZ2lzdGVySE1SIiwic2V0dXBDb21wb25lbnQiLCJhc3luY0RlcCIsInJlZ2lzdGVyRGVwIiwic2V0dXBSZW5kZXJFZmZlY3QiLCJuZXh0Vk5vZGUiLCJwcmV2UHJvcHMiLCJwcmV2Q2hpbGRyZW4iLCJuZXh0UHJvcHMiLCJuZXh0Q2hpbGRyZW4iLCJoYXNQcm9wc0NoYW5nZWQiLCJzaG91bGRVcGRhdGVDb21wb25lbnQiLCJhc3luY1Jlc29sdmVkIiwidXBkYXRlQ29tcG9uZW50UHJlUmVuZGVyIiwiaW52YWxpZGF0ZUpvYiIsImNvbXBvbmVudFVwZGF0ZUZuIiwibm9uSHlkcmF0ZWRBc3luY1Jvb3QiLCJsb2NhdGVOb25IeWRyYXRlZEFzeW5jUm9vdCIsImlzVW5tb3VudGVkIiwib3JpZ2luTmV4dCIsIm5leHRUcmVlIiwicmVuZGVyQ29tcG9uZW50Um9vdCIsInByZXZUcmVlIiwidXBkYXRlSE9DSG9zdEVsIiwiaXNBc3luY1dyYXBwZXJWTm9kZSIsImh5ZHJhdGVTdWJUcmVlIiwic2NvcGVkSW5pdGlhbFZOb2RlIiwicmF3UHJldlByb3BzIiwiaXNJbkhtckNvbnRleHQiLCJrZWJhYktleSIsImNhbWVsaXplZEtleSIsInVwZGF0ZVByb3BzIiwiYzEiLCJwcmV2U2hhcGVGbGFnIiwiYzIiLCJwYXRjaEtleWVkQ2hpbGRyZW4iLCJwYXRjaFVua2V5ZWRDaGlsZHJlbiIsInVubW91bnRDaGlsZHJlbiIsIm9sZExlbmd0aCIsImNvbW1vbkxlbmd0aCIsIm5leHRDaGlsZCIsImwyIiwiZTEiLCJlMiIsIm5leHRQb3MiLCJzMSIsInMyIiwia2V5VG9OZXdJbmRleE1hcCIsInBhdGNoZWQiLCJ0b0JlUGF0Y2hlZCIsIm1vdmVkIiwibWF4TmV3SW5kZXhTb0ZhciIsIm5ld0luZGV4VG9PbGRJbmRleE1hcCIsInByZXZDaGlsZCIsImluY3JlYXNpbmdOZXdJbmRleFNlcXVlbmNlIiwiYXJySSIsImdldFNlcXVlbmNlIiwibW92ZVN0YXRpY05vZGUiLCJyZW1vdmUyIiwicGVyZm9ybUxlYXZlIiwiY2FjaGVJbmRleCIsInNob3VsZEludm9rZURpcnMiLCJzaG91bGRJbnZva2VWbm9kZUhvb2siLCJvblZub2RlQmVmb3JlVW5tb3VudCIsInVubW91bnRDb21wb25lbnQiLCJoYXNPbmNlIiwicmVtb3ZlRnJhZ21lbnQiLCJwZXJmb3JtUmVtb3ZlIiwidW5yZWdpc3RlckhNUiIsInBlbmRpbmdCcmFuY2giLCJzdXNwZW5zZUlkIiwicGVuZGluZ0lkIiwidGVsZXBvcnRFbmQiLCJjcmVhdGVBcHAiLCJjdXJyZW50TmFtZXNwYWNlIiwiYWxsb3dlZCIsImNoMSIsImNoMiIsInN1YkNvbXBvbmVudCIsInNzckNvbnRleHRLZXkiLCJ1c2VTU1JDb250ZXh0Iiwid2F0Y2hQb3N0RWZmZWN0IiwiZG9XYXRjaCIsIndhdGNoU3luY0VmZmVjdCIsIklOSVRJQUxfV0FUQ0hFUl9WQUxVRSIsImltbWVkaWF0ZSIsIl9jYiIsInVud2F0Y2giLCJ3YXJuSW52YWxpZFNvdXJjZSIsInJlYWN0aXZlR2V0dGVyIiwic291cmNlMiIsInRyYXZlcnNlIiwiZm9yY2VUcmlnZ2VyIiwiaXNNdWx0aVNvdXJjZSIsIm9uQ2xlYW51cCIsImJhc2VHZXR0ZXIiLCJzc3JDbGVhbnVwIiwiX193YXRjaGVySGFuZGxlcyIsInNlZ21lbnRzIiwiZGVwdGgiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImdldE1vZGVsTW9kaWZpZXJzIiwibW9kZWxOYW1lIiwibW9kZWxNb2RpZmllcnMiLCJyYXdBcmdzIiwibW9kaWZpZXJzIiwiZGV2dG9vbHNDb21wb25lbnRFbWl0IiwibG93ZXJDYXNlRXZlbnQiLCJoYW5kbGVyTmFtZSIsImVtaXR0ZWQiLCJub3JtYWxpem
15VFbWl0c09wdGlvbnMiLCJleHRlbmRFbWl0cyIsIm5vcm1hbGl6ZWRGcm9tRXh0ZW5kIiwiYWNjZXNzZWRBdHRycyIsIndpdGhQcm94eSIsImZhbGx0aHJvdWdoQXR0cnMiLCJwcm94eVRvVXNlIiwidGhpc1Byb3h5IiwicmVuZGVyMiIsImdldEZ1bmN0aW9uYWxGYWxsdGhyb3VnaCIsImJsb2NrU3RhY2siLCJzZXRSb290IiwiZ2V0Q2hpbGRSb290IiwiZmlsdGVyTW9kZWxMaXN0ZW5lcnMiLCJhbGxBdHRycyIsImV2ZW50QXR0cnMiLCJleHRyYUF0dHJzIiwiaXNFbGVtZW50Um9vdCIsInJhd0NoaWxkcmVuIiwiY2hpbGRSb290IiwiZHluYW1pY0luZGV4IiwidXBkYXRlZFJvb3QiLCJyZWN1cnNlIiwic2luZ2xlUm9vdCIsIm5leHRLZXlzIiwiYWN0aXZlQnJhbmNoIiwiX19pc1N1c3BlbnNlIiwiU3VzcGVuc2VJbXBsIiwiaGlkZGVuQ29udGFpbmVyIiwiY3JlYXRlU3VzcGVuc2VCb3VuZGFyeSIsInRyaWdnZXJFdmVudCIsInNldEFjdGl2ZUJyYW5jaCIsIm1vdW50U3VzcGVuc2UiLCJpc0luRmFsbGJhY2siLCJuZXdCcmFuY2giLCJuZXdGYWxsYmFjayIsImlzSHlkcmF0aW5nIiwiZmFsbGJhY2siLCJwYXRjaFN1c3BlbnNlIiwiaXNTbG90Q2hpbGRyZW4iLCJub3JtYWxpemVTdXNwZW5zZVNsb3QiLCJTdXNwZW5zZSIsImV2ZW50TGlzdGVuZXIiLCJwYXJlbnRTdXNwZW5zZUlkIiwiaXNTdXNwZW5zaWJsZSIsInN1c3BlbnNpYmxlIiwiaXNWTm9kZVN1c3BlbnNpYmxlIiwiaW5pdGlhbEFuY2hvciIsInJlc3VtZSIsInN5bmMiLCJwYXJlbnRDb21wb25lbnQyIiwiZGVsYXlFbnRlciIsImhhc1VucmVzb2x2ZWRBbmNlc3RvciIsImZhbGxiYWNrVk5vZGUiLCJuYW1lc3BhY2UyIiwibW91bnRGYWxsYmFjayIsIm9wdGltaXplZDIiLCJpc0luUGVuZGluZ1N1c3BlbnNlIiwiaHlkcmF0ZWRFbCIsImFzeW5jU2V0dXBSZXN1bHQiLCJoYW5kbGVTZXR1cFJlc3VsdCIsInBhcmVudFN1c3BlbnNlMiIsImJsb2NrIiwidHJhY2tCbG9jayIsImlzQmxvY2tUcmVlRW5hYmxlZCIsIm9wZW5CbG9jayIsImN1cnJlbnRCbG9jayIsImNsb3NlQmxvY2siLCJzaW5nbGVDaGlsZCIsImJyYW5jaCIsImRpc2FibGVUcmFja2luZyIsInZub2RlQXJnc1RyYW5zZm9ybWVyIiwic2V0dXBCbG9jayIsImNyZWF0ZUJsb2NrIiwiX192X2lzVk5vZGUiLCJub3JtYWxpemVLZXkiLCJub3JtYWxpemVSZWYiLCJyZWZfa2V5IiwicmVmX2ZvciIsImNyZWF0ZUJhc2VWTm9kZSIsImlzQmxvY2tOb2RlIiwibmVlZEZ1bGxDaGlsZHJlbk5vcm1hbGl6YXRpb24iLCJfX3Zfc2tpcCIsIm5vcm1hbGl6ZUNoaWxkcmVuIiwiY3JlYXRlVk5vZGVXaXRoQXJnc1RyYW5zZm9ybSIsIl9jcmVhdGVWTm9kZSIsImNsb25lZCIsImd1YXJkUmVhY3RpdmVQcm9wcyIsImtsYXNzIiwiaXNUZWxlcG9ydCIsImV4dHJhUHJvcHMiLCJtZXJnZVJlZiIsImNsb25lVHJhbnNpdGlvbiIsIm1lcmdlZFByb3BzIiwibWVyZ2VQcm9wcyIsImRlZXBDbG9uZVZOb2RlIiwibWVtbyIsInNsb3QiLCJzbG90RmxhZyIsInRvTWVyZ2UiLCJpbmNvbWluZyIsImVtcHR5QXBwQ29udGV4dCIsImV4cG9zZVByb3h5IiwiY3JlYXRlRGV2UmVuZGVyQ29udGV4dCIsImludGVybmFsU2V0Q3VycmVudEluc3RhbmNlIiwic2V0SW5TU1JTZXR1cFN0YXRlIiwicmVnaXN0ZXJHbG9iYWxTZXR0ZXIiLCJzZXR0ZXIiLCJzZXR0ZXJzIiwidW5zZXRDdXJyZW50SW5zdGFuY2UiLCJpc0J1aWx0SW5UYWciLCJjb21waWxlIiwiaW5zdGFsbFdpdGhQcm94eSIsImlzU3RhdGVmdWwiLCJpbml0UHJvcHMiLCJzZXR1cFJlc3VsdCIsIm5hbWVzIiwiaXNSdW50aW1lT25seSIsImV4cG9zZVByb3BzT25SZW5kZXJDb250ZXh0IiwicmVzb2x2ZWRSZXN1bHQiLCJmaW5pc2hDb21wb25lbnRTZXR1cCIsInNldHVwU3RhdGVmdWxDb21wb25lbnQiLCJfX3NzcklubGluZVJlbmRlciIsInNzclJlbmRlciIsImRldnRvb2xzUmF3U2V0dXBTdGF0ZSIsImV4cG9zZVNldHVwU3RhdGVPblJlbmRlckNvbnRleHQiLCJyZWdpc3RlclJ1bnRpbWVDb21waWxlciIsIl9jb21waWxlIiwiX3JjIiwic2tpcE9wdGlvbnMiLCJ0ZW1wbGF0ZSIsImRlbGltaXRlcnMiLCJjb21wb25lbnRDb21waWxlck9wdGlvbnMiLCJmaW5hbENvbXBpbGVyT3B0aW9ucyIsImF0dHJzUHJveHlIYW5kbGVycyIsImV4cG9zZWRUeXBlIiwiYXR0cnNQcm94eSIsInNsb3RzUHJveHkiLCJnZXRTbG90c1Byb3h5IiwiY2xhc3NpZnlSRSIsImNsYXNzaWZ5IiwiaW5jbHVkZUluZmVycmVkIiwiZGlzcGxheU5hbWUiLCJfX25hbWUiLCJfX2ZpbGUiLCJpbmZlckZyb21SZWdpc3RyeSIsImdldHRlck9yT3B0aW9ucyIsImRlYnVnT3B0aW9ucyIsIm9ubHlHZXR0ZXIiLCJjUmVmIiwiY29tcHV0ZWQkMSIsIndhcm5SZWN1cnNpdmVDb21wdXRlZCIsInByb3BzT3JDaGlsZHJlbiIsImluaXRDdXN0b21Gb3JtYXR0ZXIiLCJ2dWVTdHlsZSIsIm51bWJlclN0eWxlIiwic3RyaW5nU3R5bGUiLCJrZXl3b3JkU3R5bGUiLCJmb3JtYXR0ZXIiLCJfX3Z1ZV9jdXN0b21fZm9ybWF0dGVyIiwiX19pc1Z1ZSIsImdlblJlZkZsYWciLCJmb3JtYXRWYWx1ZSIsImhhc0JvZHkiLCJmb3JtYXRJbnN0YW5jZSIsImJsb2NrcyIsImNyZWF0ZUluc3RhbmNlQmxvY2siLCJleHRyYWN0S2V5cyIsImFzUmF3IiwiQ29tcCIsImV4dHJhY3RlZCIsImlzS2V5T2ZUeXBlIiwiZGV2dG9vbHNGb3JtYXR0ZXJzIiwiaXNNZW1vU2FtZSIsIkVycm9yVHlwZVN0cmluZ3MiLCJkZXZ0b29scyIsInNldERldnRvb2xzSG9vayIsInNzclV0aWxzIiwidGVtcGxhdGVDb250YWluZXIiLCJub2RlT3BzIiwidGFnIiwibXVsdGlwbGUiLCJjcmVhdGVUZXh0Tm9kZSIsIm5vZGVWYWx1ZSIsImJlZm9yZSIsIlRSQU5TSVRJT04iLCJBTklNQVRJT04iLCJ2dGNLZXkiLCJUcmFuc2l0aW9uIiwicmVzb2x2ZVRyYW5zaXRpb25Qcm9wcyIsIkRPTVRyYW5zaXRpb25Qcm9wc1ZhbGlkYXRvcnMiLCJlbnRlckZyb21DbGFzcyIsImVudGVyQWN0aXZlQ2xhc3MiLCJlbnRlclRvQ2xhc3MiLCJhcHBlYXJGcm9tQ2xhc3MiLCJhcHBlYXJBY3RpdmVDbGFzcyIsImFwcGVhclRvQ2xhc3MiLCJsZWF2ZUZyb21DbGFzcyIsImxlYXZlQWN0aXZlQ2xhc3MiLCJsZWF2ZVRvQ2xhc3MiLCJUcmFuc2l0aW9uUHJvcHNWYWxpZGF0b3JzIiwiaDIiLCJoYXNFeHBsaWNpdENhbGxiYWNrIiwiYmFzZVByb3BzIiwiZHVyYXRpb25zIiwiTnVtYmVyT2YiLCJub3JtYWxpem
15VEdXJhdGlvbiIsImVudGVyRHVyYXRpb24iLCJsZWF2ZUR1cmF0aW9uIiwiZmluaXNoRW50ZXIiLCJpc0FwcGVhciIsInJlbW92ZVRyYW5zaXRpb25DbGFzcyIsImZpbmlzaExlYXZlIiwiX2lzTGVhdmluZyIsIm1ha2VFbnRlckhvb2siLCJuZXh0RnJhbWUiLCJhZGRUcmFuc2l0aW9uQ2xhc3MiLCJ3aGVuVHJhbnNpdGlvbkVuZHMiLCJmb3JjZVJlZmxvdyIsIl92dGMiLCJlbmRJZCIsImV4cGxpY2l0VGltZW91dCIsIl9lbmRJZCIsInJlc29sdmVJZk5vdFN0YWxlIiwicHJvcENvdW50IiwiZ2V0VHJhbnNpdGlvbkluZm8iLCJlbmRFdmVudCIsImVuZGVkIiwib25FbmQiLCJnZXRTdHlsZVByb3BlcnRpZXMiLCJ0cmFuc2l0aW9uRGVsYXlzIiwidHJhbnNpdGlvbkR1cmF0aW9ucyIsInRyYW5zaXRpb25UaW1lb3V0IiwiZ2V0VGltZW91dCIsImFuaW1hdGlvbkRlbGF5cyIsImFuaW1hdGlvbkR1cmF0aW9ucyIsImFuaW1hdGlvblRpbWVvdXQiLCJoYXNUcmFuc2Zvcm0iLCJkZWxheXMiLCJ0b01zIiwidlNob3dPcmlnaW5hbERpc3BsYXkiLCJ2U2hvd0hpZGRlbiIsInZTaG93Iiwic2V0RGlzcGxheSIsIkNTU19WQVJfVEVYVCIsInNldFZhcnNPblZOb2RlIiwidmFycyIsInNldFZhcnNPbk5vZGUiLCJkaXNwbGF5UkUiLCJzZW1pY29sb25SRSIsImltcG9ydGFudFJFIiwic2V0U3R5bGUiLCJwcmVmaXhlZCIsInJhd05hbWUiLCJwcmVmaXhDYWNoZSIsInByZWZpeGVzIiwiYXV0b1ByZWZpeCIsInhsaW5rTlMiLCJwYXRjaEF0dHIiLCJpc1NWRyIsInJlbW92ZUF0dHJpYnV0ZU5TIiwic2V0QXR0cmlidXRlTlMiLCJ2ZWlLZXkiLCJwYXRjaEV2ZW50IiwicHJldlZhbHVlIiwibmV4dFZhbHVlIiwiaW52b2tlcnMiLCJleGlzdGluZ0ludm9rZXIiLCJzYW5pdGl6ZUV2ZW50VmFsdWUiLCJvcHRpb25zTW9kaWZpZXJSRSIsInBhcnNlTmFtZSIsImludm9rZXIiLCJpbml0aWFsVmFsdWUiLCJfdnRzIiwiYXR0YWNoZWQiLCJvcmlnaW5hbFN0b3AiLCJfc3RvcHBlZCIsInBhdGNoU3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uIiwiZ2V0Tm93IiwiY3JlYXRlSW52b2tlciIsImNhY2hlZE5vdyIsInByb3BOYW1lIiwiaXNOYXRpdmVPbiIsImRlZmluZUN1c3RvbUVsZW1lbnQiLCJoeWRyYXRlMiIsIlZ1ZUN1c3RvbUVsZW1lbnQiLCJWdWVFbGVtZW50IiwiaW5pdGlhbFByb3BzIiwiQmFzZUNsYXNzIiwiX2RlZiIsIl9jb25uZWN0ZWQiLCJfcmVzb2x2ZWQiLCJfb
15nVtYmVyUHJvcHMiLCJfb2IiLCJhdHRhY2hTaGFkb3ciLCJfcmVzb2x2ZVByb3BzIiwiY29ubmVjdGVkQ2FsbGJhY2siLCJfdXBkYXRlIiwiX3Jlc29sdmVEZWYiLCJkaXNjb25uZWN0ZWRDYWxsYmFjayIsIl9zZXRBdHRyIiwiYXR0cmlidXRlTmFtZSIsImlzQXN5bmMiLCJudW1iZXJQcm9wcyIsImNhbWVsaXplJDEiLCJfYXBwbHlTdHlsZXMiLCJhc3luY0RlZiIsImRlY2xhcmVkUHJvcEtleXMiLCJfc2V0UHJvcCIsIl9nZXRQcm9wIiwic2hvdWxkUmVmbGVjdCIsInNob3VsZFVwZGF0ZSIsImlzQ0UiLCJuZXdTdHlsZXMiLCJfc3R5bGVzIiwiZGlzcGF0Y2giLCJwb3NpdGlvbk1hcCIsIm5ld1Bvc2l0aW9uTWFwIiwibW92ZUNiS2V5IiwiVHJhbnNpdGlvbkdyb3VwSW1wbCIsIm1vdmVDbGFzcyIsImhhc0NTU1RyYW5zZm9ybSIsImNhbGxQZW5kaW5nQ2JzIiwicmVjb3JkUG9zaXRpb24iLCJtb3ZlZENoaWxkcmVuIiwiYXBwbHlUcmFuc2xhdGlvbiIsImNzc1RyYW5zaXRpb25Qcm9wcyIsIlRyYW5zaXRpb25Hcm91cCIsIm9sZFBvcyIsIm5ld1BvcyIsImR4IiwiZHkiLCJnZXRNb2RlbEFzc2lnbmVyIiwib25Db21wb3NpdGlvblN0YXJ0IiwiY29tcG9zaW5nIiwib25Db21wb3NpdGlvbkVuZCIsIkV2ZW50IiwiYXNzaWduS2V5Iiwidk1vZGVsVGV4dCIsImxhenkiLCJjYXN0VG9OdW1iZXIiLCJkb21WYWx1ZSIsInZNb2RlbENoZWNrYm94IiwibW9kZWxWYWx1ZSIsIl9tb2RlbFZhbHVlIiwiZWxlbWVudFZhbHVlIiwiZ2V0VmFsdWUiLCJmaWx0ZXJlZCIsImdldENoZWNrYm94VmFsdWUiLCJzZXRDaGVja2VkIiwidk1vZGVsUmFkaW8iLCJ2TW9kZWxTZWxlY3QiLCJpc1NldE1vZGVsIiwic2VsZWN0ZWRWYWwiLCJzZWxlY3RlZCIsIl9hc3NpZ25pbmciLCJzZXRTZWxlY3RlZCIsIl9iaW5kaW5nIiwiaXNNdWx0aXBsZSIsImlzQXJyYXlWYWx1ZSIsIm9wdGlvbiIsIm9wdGlvblZhbHVlIiwib3B0aW9uVHlwZSIsInNlbGVjdGVkSW5kZXgiLCJ2TW9kZWxEeW5hbWljIiwiY2FsbE1vZGVsSG9vayIsInJlc29sdmVEeW5hbWljTW9kZWwiLCJzeXN0ZW1Nb2RpZmllcnMiLCJtb2RpZmllckd1YXJkcyIsInByZXZlbnQiLCJjdHJsIiwiY3RybEtleSIsImFsdCIsImFsdEtleSIsIm1ldGEiLCJtZXRhS2V5IiwicmlnaHQiLCJrZXlOYW1lcyIsImVzYyIsInNwYWNlIiwidXAiLCJkb3duIiwicmVuZGVyZXJPcHRpb25zIiwidHJhbnNpdGlvbkNsYXNzZXMiLCJwYXRjaENsYXNzIiwiaXNDc3NTdHJpbmciLCJoYXNDb250cm9sbGVkRGlzcGxheSIsInByZXZTdHlsZSIsImNzc1ZhclRleHQiLCJwYXRjaFN0eWxlIiwic2hvdWxkU2V0QXNQcm9wIiwibmVlZFJlbW92ZSIsInBhdGNoRE9NUHJvcCIsIl90cnVlVmFsdWUiLCJfZmFsc2VWYWx1ZSIsImVuYWJsZWRIeWRyYXRpb24iLCJlbnN1cmVSZW5kZXJlciIsImVuc3VyZUh5ZHJhdGlvblJlbmRlcmVyIiwiaW5qZWN0TmF0aXZlVGFnQ2hlY2siLCJpbmplY3RDb21waWxlck9wdGlvbnNDaGVjayIsImNvbnRhaW5lck9yU2VsZWN0b3IiLCJub3JtYWxpemVDb250YWluZXIiLCJyZXNvbHZlUm9vdE5hbWVzcGFjZSIsIlNoYWRvd1Jvb3QiLCJzc3JEaXJlY3RpdmVJbml0aWFsaXplZCIsImNyZWF0ZVNTUkFwcCIsImRlZmluZVNTUkN1c3RvbUVsZW1lbnQiLCJpbml0RGlyZWN0aXZlc0ZvclNTUiIsImdldFNTUlByb3BzIiwibW9kZWxUb1VzZSIsInVwZGF0ZVRlbGVwb3J0cyIsInNldFZhcnMiLCJvYiIsIndpdGhLZXlzIiwiX3dpdGhLZXlzIiwiY2FjaGVLZXkiLCJldmVudEtleSIsIndpdGhNb2RpZmllcnMiLCJfd2l0aE1vZHMiLCJndWFyZCIsIkdFVCIsIkhBUyIsIklURVJBVEUiLCJTRVQiLCJBREQiLCJERUxFVEUiLCJDTEVBUiIsIl9lZmZlY3QiLCJydW5uZXIiLCJTRVRVUF9GVU5DVElPTiIsIlJFTkRFUl9GVU5DVElPTiIsIldBVENIX0dFVFRFUiIsIldBVENIX0NBTExCQUNLIiwiV0FUQ0hfQ0xFQU5VUCIsIk5BVElWRV9FVkVOVF9IQU5ETEVSIiwiQ09NUE9ORU5UX0VWRU5UX0hBTkRMRVIiLCJWTk9ERV9IT09LIiwiRElSRUNUSVZFX0hPT0siLCJUUkFOU0lUSU9OX0hPT0siLCJBUFBfRVJST1JfSEFORExFUiIsIkFQUF9XQVJOX0hBTkRMRVIiLCJGVU5DVElPTl9SRUYiLCJBU1lOQ19DT01QT05FTlRfTE9BREVSIiwiU0NIRURVTEVSIiwiQ09NUE9ORU5UX1VQREFURSIsImFzQmxvY2siLCJleGNsdWRlZEtleXMiLCJkeW5hbWljU2xvdHMiLCJudW1iZXJPZk5vZGVzIiwibG9hZGVyIiwibG9hZGluZ0NvbXBvbmVudCIsImVycm9yQ29tcG9uZW50Iiwib25FcnJvciIsInVzZXJPbkVycm9yIiwicmVzb2x2ZWRDb21wIiwicGVuZGluZ1JlcXVlc3QiLCJyZXRyaWVzIiwibG9hZCIsInRoaXNSZXF1ZXN0IiwidXNlclJldHJ5IiwidXNlckZhaWwiLCJfX2VzTW9kdWxlIiwidG9TdHJpbmdUYWciLCJsb2FkZWQiLCJkZWxheWVkIiwicmVuZGVySXRlbSIsImlzSW50ZWdlciIsIm5vU2xvdHRlZCIsInZhbGlkU2xvdENvbnRlbnQiLCJyZW5kZXJlZCIsInByZXNlcnZlQ2FzZUlmTmVjZXNzYXJ5IiwidHJhbnNmb3JtZXIiLCJjYW1lbGl6ZWROYW1lIiwiaHlwaGVuYXRlZE5hbWUiLCJsb2NhbFZhbHVlIiwicHJldkVtaXR0ZWRWYWx1ZSIsInByZXZTZXRWYWx1ZSIsInByb3BWYWx1ZSIsImVtaXR0ZWRWYWx1ZSIsImkyIiwiZ2V0QXdhaXRhYmxlIiwiYXdhaXRhYmxlIiwiX2lkIiwiRlJBR01FTlQiLCJURUxFUE9SVCIsIlNVU1BFTlNFIiwiS0VFUF9BTElWRSIsIkJBU0VfVFJBTlNJVElPTiIsIk9QRU5fQkxPQ0siLCJDUkVBVEVfQkxPQ0siLCJDUkVBVEVfRUxFTUVOVF9CTE9DSyIsIkNSRUFURV9WTk9ERSIsIkNSRUFURV9FTEVNRU5UX1ZOT0RFIiwiQ1JFQVRFX0NPTU1FTlQiLCJDUkVBVEVfVEVYVCIsIkNSRUFURV9TVEFUSUMiLCJSRVNPTFZFX0NPTVBPTkVOVCIsIlJFU09MVkVfRFlOQU1JQ19DT01QT05FTlQiLCJSRVNPTFZFX0RJUkVDVElWRSIsIlJFU09MVkVfRklMVEVSIiwiV0lUSF9ESVJFQ1RJVkVTIiwiUkVOREVSX0xJU1QiLCJSRU5ERVJfU0xPVCIsIkNSRUFURV9TTE9UUyIsIlRPX0RJU1BMQVlfU1RSSU5HIiwiTUVSR0VfUFJPUFMiLCJOT1JNQUxJWkVfQ0xBU1MiLCJOT1JNQUxJWkVfU1RZTEUiLCJOT1JNQUxJWkVfUFJPUFMiLCJHVUFSRF9SRUFDVElWRV9QUk9QUyIsIlRPX0hBTkRMRVJTIiwiQ0FNRUxJWkUiLCJDQVBJVEFMSVpFIiwiVE9fSEFORExFUl9LRVkiLCJTRVRfQkxPQ0tfVFJBQ0tJTkciLCJQVVNIX1NDT1BFX0lEIiwiUE9QX1NDT1BFX0lEIiwiV0lUSF9DVFgiLCJVTlJFRiIsIklTX1JFRiIsIldJVEhfTUVNTyIsIklTX01FTU9fU0FNRSIsImhlbHBlck5hbWVNYXAiLCJsb2NTdHViIiwiY29sdW1uIiwiY3JlYXRlVk5vZGVDYWxsIiwiaXNCbG9jayIsImlzQ29tcG9uZW50IiwibG9jIiwiaGVscGVyIiwiZ2V0Vk5vZGVCbG9ja0hlbHBlciIsImluU1NSIiwiZ2V0Vk5vZGVIZWxwZXIiLCJjcmVhdGVBcnJheUV4cHJlc3Npb24iLCJjcmVhdGVPYmplY3RFeHByZXNzaW9uIiwicHJvcGVydGllcyIsImNyZWF0ZU9iamVjdFByb3BlcnR5IiwiY3JlYXRlU2ltcGxlRXhwcmVzc2lvbiIsImlzU3RhdGljIiwiY29uc3RUeXBlIiwiY3JlYXRlQ29tcG91bmRFeHByZXNzaW9uIiwiY3JlYXRlQ2FsbEV4cHJlc3Npb24iLCJjYWxsZWUiLCJjcmVhdGVGdW5jdGlvbkV4cHJlc3Npb24iLCJyZXR1cm5zIiwibmV3bGluZSIsImlzU2xvdCIsImNyZWF0ZUNvbmRpdGlvbmFsRXhwcmVzc2lvbiIsImNvbnNlcXVlbnQiLCJhbHRlcm5hdGUiLCJzc3IiLCJjb252ZXJ0VG9CbG9jayIsInJlbW92ZUhlbHBlciIsImRlZmF1bHREZWxpbWl0ZXJzT3BlbiIsImRlZmF1bHREZWxpbWl0ZXJzQ2xvc2UiLCJpc1RhZ1N0YXJ0Q2hhciIsImlzV2hpdGVzcGFjZSIsImlzRW5kT2ZUYWdTZWN0aW9uIiwidG9DaGFyQ29kZXMiLCJTZXF1ZW5jZXMiLCJDZGF0YSIsIkNkYXRhRW5kIiwiQ29tbWVudEVuZCIsIlNjcmlwdEVuZCIsIlN0eWxlRW5kIiwiVGl0bGVFbmQiLCJUZXh0YXJlYUVuZCIsImRlcHJlY2F0aW9uRGF0YSIsIkNPTVBJTEVSX0lTX09OX0VMRU1FTlQiLCJsaW5rIiwiQ09NUElMRVJfVl9CSU5EX1NZTkMiLCJDT01QSUxFUl9WX0JJTkRfT0JKRUNUX09SREVSIiwiQ09NUElMRVJfVl9PTl9OQVRJVkUiLCJDT01QSUxFUl9WX0lGX1ZfRk9SX1BSRUNFREVOQ0UiLCJDT01QSUxFUl9OQVRJVkVfVEVNUExBVEUiLCJDT01QSUxFUl9JTkxJTkVfVEVNUExBVEUiLCJDT01QSUxFUl9GSUxURVJTIiwiZ2V0Q29tcGF0VmFsdWUiLCJjb21wYXRDb25maWciLCJpc0NvbXBhdEVuYWJsZWQiLCJjaGVja0NvbXBhdEVuYWJsZWQiLCJ3YXJuRGVwcmVjYXRpb24iLCJvbldhcm4iLCJkZWZhdWx0T25FcnJvciIsImRlZmF1bHRPbldhcm4iLCJjcmVhdGVDb21waWxlckVycm9yIiwibWVzc2FnZXMiLCJhZGRpdGlvbmFsTWVzc2FnZSIsImVycm9yTWVzc2FnZXMiLCJpc1N0YXRpY0V4cCIsImlzQ29yZUNvbXBvbmVudCIsIm5vbklkZW50aWZpZXJSRSIsImlzU2ltcGxlSWRlbnRpZmllciIsInZhbGlkRmlyc3RJZGVudENoYXJSRSIsInZhbGlkSWRlbnRDaGFyUkUiLCJ3aGl0ZXNwYWNlUkUiLCJnZXRFeHBTb3VyY2UiLCJleHAiLCJpc01lbWJlckV4cHJl
15c3Npb24iLCJzdGF0ZVN0YWNrIiwiY3VycmVudE9wZW5CcmFja2V0Q291bnQiLCJjdXJyZW50T3BlblBhcmVuc0NvdW50IiwiY3VycmVudFN0cmluZ1R5cGUiLCJjaGFyIiwiZm5FeHBSRSIsImlzRm5FeHByZXNzaW9uIiwiYXNzZXJ0IiwiY29uZGl0aW9uIiwiZmluZERpciIsImFsbG93RW1wdHkiLCJmaW5kUHJvcCIsImR5bmFtaWNPbmx5IiwiaXNTdGF0aWNBcmdPZiIsImlzVGV4dCQxIiwiaXNWU2xvdCIsInRhZ1R5cGUiLCJpc1Nsb3RPdXRsZXQiLCJwcm9wc0hlbHBlclNldCIsImdldFVubm9ybWFsaXplZFByb3BzIiwiY2FsbFBhdGgiLCJpbmplY3RQcm9wIiwicHJvcHNXaXRoSW5qZWN0aW9uIiwicGFyZW50Q2FsbCIsImZpcnN0IiwiaGFzUHJvcCIsInByb3BLZXlOYW1lIiwidG9WYWxpZEFzc2V0SWQiLCJzZWFyY2hWYWx1ZSIsInJlcGxhY2VWYWx1ZSIsImZvckFsaWFzUkUiLCJkZWZhdWx0UGFyc2VyT3B0aW9ucyIsInBhcnNlTW9kZSIsIm5zIiwiZ2V0TmFtZXNwYWNlIiwiaXNQcmVUYWciLCJjb21tZW50cyIsInByZWZpeElkZW50aWZpZXJzIiwiY3VycmVudE9wdGlvbnMiLCJjdXJyZW50Um9vdCIsImN1cnJlbnRJbnB1dCIsImN1cnJlbnRPcGVuVGFnIiwiY3VycmVudFByb3AiLCJjdXJyZW50QXR0clZhbHVlIiwiY3VycmVudEF0dHJTdGFydEluZGV4IiwiY3VycmVudEF0dHJFbmRJbmRleCIsImluUHJlIiwiaW5WUHJlIiwiY3VycmVudFZQcmVCb3VuZGFyeSIsInRva2VuaXplciIsImNicyIsInNlY3Rpb25TdGFydCIsImVudGl0eVN0YXJ0IiwiYmFzZVN0YXRlIiwiaW5SQ0RBVEEiLCJpblhNTCIsIm5ld2xpbmVzIiwiZGVsaW1pdGVyT3BlbiIsImRlbGltaXRlckNsb3NlIiwiZGVsaW1pdGVySW5kZXgiLCJjdXJyZW50U2VxdWVuY2UiLCJzZXF1ZW5jZUluZGV4IiwiaW5TRkNSb290IiwiZ2V0UG9zIiwibmV3bGluZUluZGV4IiwicGVlayIsInN0YXRlVGV4dCIsIm9udGV4dCIsInN0YXRlSW50ZXJwb2xhdGlvbk9wZW4iLCJzdGF0ZUluUkNEQVRBIiwic3RhdGVJbnRlcnBvbGF0aW9uIiwic3RhdGVJbnRlcnBvbGF0aW9uQ2xvc2UiLCJvbmludGVycG9sYXRpb24iLCJzdGF0ZVNwZWNpYWxTdGFydFNlcXVlbmNlIiwic3RhdGVJblRhZ05hbWUiLCJlbmRPZlRleHQiLCJhY3R1YWxJbmRleCIsInN0YXRlSW5DbG9zaW5nVGFnTmFtZSIsImZhc3RGb3J3YXJkVG8iLCJzdGF0ZUNEQVRBU2VxdWVuY2UiLCJzdGF0ZUluRGVjbGFyYXRpb24iLCJzdGF0ZUluQ29tbWVudExpa2UiLCJvbmNkYXRhIiwib25jb21tZW50Iiwic3RhcnRTcGVjaWFsIiwic2VxdWVuY2UiLCJlbnRlclJDREFUQSIsInN0YXRlQmVmb3JlVGFnTmFtZSIsImhhbmRsZVRhZ05hbWUiLCJzdGF0ZUluU0ZDUm9vdFRhZ05hbWUiLCJvbm9wZW50YWduYW1lIiwic3RhdGVCZWZvcmVBdHRyTmFtZSIsInN0YXRlQmVmb3JlQ2xvc2luZ1RhZ05hbWUiLCJvbmVyciIsIm9uY2xvc2V0YWciLCJzdGF0ZUFmdGVyQ2xvc2luZ1RhZ05hbWUiLCJvbm9wZW50YWdlbmQiLCJoYW5kbGVBdHRyU3RhcnQiLCJvbmRpcm5hbWUiLCJzdGF0ZUluU2VsZkNsb3NpbmdUYWciLCJvbnNlbGZjbG9zaW5ndGFnIiwic3RhdGVJbkF0dHJOYW1lIiwib25hdHRyaWJuYW1lIiwiaGFuZGxlQXR0ck5hbWVFbmQiLCJzdGF0ZUluRGlyTmFtZSIsInN0YXRlSW5EaXJBcmciLCJvbmRpcmFyZyIsInN0YXRlSW5EeW5hbWljRGlyQXJnIiwic3RhdGVJbkRpck1vZGlmaWVyIiwib25kaXJtb2RpZmllciIsIm9uYXR0cmlibmFtZWVuZCIsInN0YXRlQWZ0ZXJBdHRyTmFtZSIsIm9uYXR0cmliZW5kIiwic3RhdGVCZWZvcmVBdHRyVmFsdWUiLCJzdGF0ZUluQXR0clZhbHVlTm9RdW90ZXMiLCJoYW5kbGVJbkF0dHJWYWx1ZSIsInF1b3RlIiwib25hdHRyaWJkYXRhIiwic3RhdGVJbkF0dHJWYWx1ZURvdWJsZVF1b3RlcyIsInN0YXRlSW5BdHRyVmFsdWVTaW5nbGVRdW90ZXMiLCJzdGF0ZUJlZm9yZURlY2xhcmF0aW9uIiwic3RhdGVJblByb2Nlc3NpbmdJbnN0cnVjdGlvbiIsIm9ucHJvY2Vzc2luZ2luc3RydWN0aW9uIiwic3RhdGVCZWZvcmVDb21tZW50Iiwic3RhdGVJblNwZWNpYWxDb21tZW50Iiwic3RhdGVCZWZvcmVTcGVjaWFsUyIsInN0YXRlQmVmb3JlU3BlY2lhbFQiLCJzdGFydEVudGl0eSIsInN0YXRlSW5FbnRpdHkiLCJmaW5pc2giLCJoYW5kbGVUcmFpbGluZ0RhdGEiLCJvbmVuZCIsImVuZEluZGV4IiwiZW1pdENvZGVQb2ludCIsImNwIiwiY29uc3VtZWQiLCJlbWl0RXJyb3IiLCJvblRleHQiLCJnZXRTbGljZSIsIm9udGV4dGVudGl0eSIsImlubmVyU3RhcnQiLCJpbm5lckVuZCIsImRlY29kZUVudGl0aWVzIiwiYWRkTm9kZSIsImNyZWF0ZUV4cCIsImdldExvYyIsImNvZGVnZW5Ob2RlIiwiZW5kT3BlblRhZyIsIm9uQ2xvc2VUYWciLCJiYWNrVHJhY2siLCJpc1NlbGZDbG9zaW5nIiwibmFtZUxvYyIsImRpclRvQXR0ciIsInNldExvY0VuZCIsIm9uYXR0cmliZW50aXR5IiwiY29uZGVuc2UiLCJleHBQYXJzZU1vZGUiLCJmb3JQYXJzZVJlc3VsdCIsImluTWF0Y2giLCJMSFMiLCJSSFMiLCJjcmVhdGVBbGlhc0V4cHJlc3Npb24iLCJhc1BhcmFtIiwiZmluYWxpemVkIiwidmFsdWVDb250ZW50Iiwic3RyaXBQYXJlbnNSRSIsInRyaW1tZWRPZmZzZXQiLCJpdGVyYXRvck1hdGNoIiwiZm9ySXRlcmF0b3JSRSIsImtleUNvbnRlbnQiLCJrZXlPZmZzZXQiLCJpbmRleENvbnRlbnQiLCJwYXJzZUZvckV4cHJlc3Npb24iLCJzeW5jSW5kZXgiLCJpbm5lckxvYyIsImxhc3ROb2RlIiwiaXNJbXBsaWVkIiwibG9va0FoZWFkIiwiaXNGcmFnbWVudFRlbXBsYXRlIiwiaXNCdWlsdEluQ29tcG9uZW50IiwiY29uZGVuc2VXaGl0ZXNwYWNlIiwiaGFzSWYiLCJoYXNGb3IiLCJpbmxpbmVUZW1wbGF0ZVByb3AiLCJzcGVjaWFsVGVtcGxhdGVEaXIiLCJ3aW5kb3dzTmV3bGluZVJFIiwibm9kZXMiLCJzaG91bGRDb25kZW5zZSIsIndoaXRlc3BhY2UiLCJyZW1vdmVkV2hpdGVzcGFjZSIsImlzQWxsV2hpdGVzcGFjZSIsImhhc05ld2xpbmVDaGFyIiwicHJldkNoYXJJc1doaXRlc3BhY2UiLCJiYXNlUGFyc2UiLCJoZWxwZXJzIiwiaG9pc3RzIiwiaW1wb3J0cyIsInRlbXBzIiwiY3JlYXRlUm9vdCIsImhvaXN0U3RhdGljIiwid2FsayIsImlzU2luZ2xlRWxlbWVudFJvb3QiLCJkb05vdEhvaXN0Tm9kZSIsIm9yaWdpbmFsQ291bnQiLCJob2lzdGVkQ291bnQiLCJjb25zdGFudFR5cGUiLCJnZXRDb25zdGFudFR5cGUiLCJob2lzdCIsImdldEdlbmVyYXRlZFByb3BzQ29uc3RhbnRUeXBlIiwiZ2V0Tm9kZVByb3BzIiwidlNsb3QiLCJicmFuY2hlcyIsInRyYW5zZm9ybUhvaXN0IiwiaG9pc3RlZCIsImhtciIsImNvbnN0YW50Q2FjaGUiLCJyZXR1cm5UeXBlMiIsImdlbmVyYXRlZFByb3BzVHlwZSIsImNoaWxkVHlwZSIsImV4cFR5cGUiLCJyZXR1cm5UeXBlIiwiYWxsb3dIb2lzdGVkSGVscGVyU2V0IiwiZ2V0Q29uc3RhbnRUeXBlT2ZIZWxwZXJDYWxsIiwia2V5VHlwZSIsInZhbHVlVHlwZSIsImNyZWF0ZVRyYW5zZm9ybUNvbnRleHQiLCJmaWxlbmFtZSIsImhvaXN0U3RhdGljMiIsImNhY2hlSGFuZGxlcnMiLCJub2RlVHJhbnNmb3JtcyIsImRpcmVjdGl2ZVRyYW5zZm9ybXMiLCJleHByZXNzaW9uUGx1Z2lucyIsInNsb3R0ZWQiLCJzc3JDc3NWYXJzIiwiYmluZGluZ01ldGFkYXRhIiwiaW5saW5lIiwiaXNUUyIsIm5hbWVNYXRjaCIsImlkZW50aWZpZXJzIiwidkZvciIsInZQcmUiLCJ2T25jZSIsImdyYW5kUGFyZW50IiwiY3VycmVudE5vZGUiLCJjaGlsZEluZGV4IiwiaW5WT25jZSIsImN1cnJlbnRDb3VudCIsImhlbHBlclN0cmluZyIsInJlbW92ZU5vZGUiLCJyZW1vdmFsSW5kZXgiLCJvbk5vZGVSZW1vdmVkIiwiYWRkSWRlbnRpZmllcnMiLCJyZW1vdmVJZGVudGlmaWVycyIsImlkZW50aWZpZXIiLCJpc1ZPbmNlIiwiY3JlYXRlQ2FjaG
15VFeHByZXNzaW9uIiwidHJhdmVyc2VOb2RlIiwicGF0Y2hGbGFnVGV4dCIsImNyZWF0ZVJvb3RDb2RlZ2VuIiwidHJhbnNmb3JtZWQiLCJleGl0Rm5zIiwib25FeGl0Iiwibm9kZVJlbW92ZWQiLCJ0cmF2ZXJzZUNoaWxkcmVuIiwiY3JlYXRlU3RydWN0dXJhbERpcmVjdGl2ZVRyYW5zZm9ybSIsIlBVUkVfQU5OT1RBVElPTiIsImFsaWFzSGVscGVyIiwiZ2VuZXJhdGUiLCJhc3QiLCJzb3VyY2VNYXAiLCJvcHRpbWl6ZUltcG9ydHMiLCJydW50aW1lR2xvYmFsTmFtZSIsInJ1bnRpbWVNb2R1bGVOYW1lIiwic3NyUnVudGltZU1vZHVsZU5hbWUiLCJpbmRlbnRMZXZlbCIsInB1cmUiLCJpbmRlbnQiLCJkZWluZGVudCIsIndpdGhvdXROZXdMaW5lIiwicmVwZWF0IiwiY3JlYXRlQ29kZWdlbkNvbnRleHQiLCJvbkNvbnRleHRDcmVhdGVkIiwiaGFzSGVscGVycyIsInVzZVdpdGhCbG9jayIsIlZ1ZUJpbmRpbmciLCJnZW5Ob2RlIiwiZ2VuSG9pc3RzIiwiZ2VuRnVuY3Rpb25QcmVhbWJsZSIsImdlbkFzc2V0cyIsInByZWFtYmxlIiwiYXNzZXRzIiwicmVzb2x2ZXIiLCJnZW5Ob2RlTGlzdEFzQXJyYXkiLCJtdWx0aWxpbmVzIiwiZ2VuTm9kZUxpc3QiLCJjb21tYSIsImdlblRleHQiLCJnZW5FeHByZXNzaW9uIiwiZ2VuSW50ZXJwb2xhdGlvbiIsImdlbkNvbXBvdW5kRXhwcmVzc2lvbiIsImdlbkNvbW1lbnQiLCJwYXRjaEZsYWdTdHJpbmciLCJmbGFnTmFtZXMiLCJjYWxsSGVscGVyIiwiZ2VuTnVsbGFibGVBcmdzIiwiZ2VuVk5vZGVDYWxsIiwiZ2VuQ2FsbEV4cHJlc3Npb24iLCJnZW5FeHByZXNzaW9uQXNQcm9wZXJ0eUtleSIsImdlbk9iamVjdEV4cHJlc3Npb24iLCJnZW5BcnJheUV4cHJlc3Npb24iLCJnZW5GdW5jdGlvbkV4cHJlc3Npb24iLCJuZWVkTmV3bGluZSIsIm5lZWRzUGFyZW5zIiwiaXNOZXN0ZWQiLCJnZW5Db25kaXRpb25hbEV4cHJlc3Npb24iLCJnZW5DYWNoZUV4cHJlc3Npb24iLCJwcm9oaWJpdGVkS2V5d29yZFJFIiwic3RyaXBTdHJpbmdSRSIsInZhbGlkYXRlQnJvd3NlckV4cHJl
15c3Npb24iLCJhc1BhcmFtcyIsImFzUmF3U3RhdGVtZW50cyIsImtleXdvcmRNYXRjaCIsInRyYW5zZm9ybUV4cHJlc3Npb24iLCJwcm9jZXNzRXhwcmVzc2lvbiIsImxvY2FsVmFycyIsInRyYW5zZm9ybUlmIiwicHJvY2Vzc0NvZGVnZW4iLCJjcmVhdGVJZkJyYW5jaCIsImlmTm9kZSIsInNpYmxpbmdzIiwic2libGluZyIsInVzZXJLZXkiLCJpc1NhbWVLZXkiLCJwcm9jZXNzSWYiLCJjcmVhdGVDb2RlZ2VuTm9kZUZvckJyYW5jaCIsInBhcmVudENvbmRpdGlvbiIsImdldFBhcmVudENvbmRpdGlvbiIsImlzVGVtcGxhdGVJZiIsImtleUluZGV4IiwiY3JlYXRlQ2hpbGRyZW5Db2RlZ2VuTm9kZSIsImtleVByb3BlcnR5Iiwidm5vZGVDYWxsIiwiYnJhbmNoRXhwIiwidHJhbnNmb3JtQmluZCIsIl9ub2RlIiwidHJhbnNmb3JtQmluZFNob3J0aGFuZCIsImluamVjdFByZWZpeCIsInRyYW5zZm9ybUZvciIsInBhcnNlUmVzdWx0IiwiZmluYWxpemVGb3JQYXJzZVJlc3VsdCIsImZvck5vZGUiLCJ2YWx1ZUFsaWFzIiwia2V5QWxpYXMiLCJvYmplY3RJbmRleEFsaWFzIiwicHJvY2Vzc0ZvciIsInJlbmRlckV4cCIsImlzVGVtcGxhdGUiLCJrZXlQcm9wIiwia2V5RXhwIiwiaXNTdGFibGVGcmFnbWVudCIsImZyYWdtZW50RmxhZyIsImNoaWxkQmxvY2siLCJuZWVkRnJhZ21lbnRXcmFwcGVyIiwic2xvdE91dGxldCIsImNyZWF0ZUZvckxvb3BQYXJhbXMiLCJtZW1vQXJncyIsImNyZWF0ZVBhcmFtc0xpc3QiLCJkZWZhdWx0RmFsbGJhY2siLCJ0cmFja1Nsb3RTY29wZXMiLCJidWlsZENsaWVudFNsb3RGbiIsIl92Rm9yRXhwIiwiYnVpbGRTbG90cyIsImJ1aWxkU2xvdEZuIiwic2xvdHNQcm9wZXJ0aWVzIiwiaGFzRHluYW1pY1Nsb3RzIiwib25Db21wb25lbnRTbG90IiwiaGFzVGVtcGxhdGVTbG90cyIsImhhc05hbWVkRGVmYXVsdFNsb3QiLCJpbXBsaWNpdERlZmF1bHRDaGlsZHJlbiIsInNlZW5TbG90TmFtZXMiLCJjb25kaXRpb25hbEJyYW5jaEluZGV4Iiwic2xvdEVsZW1lbnQiLCJzbG90RGlyIiwic2xvdENoaWxkcmVuIiwic2xvdExvYyIsInNsb3ROYW1lIiwic2xvdFByb3BzIiwiZGlyTG9jIiwic3RhdGljU2xvdE5hbWUiLCJzbG90RnVuY3Rpb24iLCJ2SWYiLCJ2RWxzZSIsImJ1aWxkRHluYW1pY1Nsb3QiLCJjb25kaXRpb25hbCIsImJ1aWxkRGVmYXVsdFNsb3RQcm9wZXJ0eSIsImNoaWxkcmVuMiIsIm5vZGUyIiwiaXNOb25XaGl0ZXNwYWNlQ29udGVudCIsImhhc0ZvcndhcmRlZFNsb3RzIiwiZGlyZWN0aXZlSW1wb3J0TWFwIiwidHJhbnNmb3JtRWxlbWVudCIsInZub2RlVGFnIiwiaXNFeHBsaWNpdER5bmFtaWMiLCJpc0NvbXBvbmVudFRhZyIsImlzUHJvcCIsImJ1aWx0SW4iLCJyZXNvbHZlQ29tcG9uZW50VHlwZSIsImlzRHluYW1pY0NvbXBvbmVudCIsInZub2RlUHJvcHMiLCJ2bm9kZUNoaWxkcmVuIiwidm5vZGVEeW5hbWljUHJvcHMiLCJkeW5hbWljUHJvcE5hbWVzIiwidm5vZGVEaXJlY3RpdmVzIiwic2hvdWxkVXNlQmxvY2siLCJwcm9wc0J1aWxkUmVzdWx0IiwiYnVpbGRQcm9wcyIsImRpckFyZ3MiLCJydW50aW1lIiwidHJ1ZUV4cHJlc3Npb24iLCJtb2RpZmllciIsImJ1aWxkRGlyZWN0aXZlQXJncyIsImhhc0R5bmFtaWNUZXh0Q2hpbGQiLCJwcm9wc05hbWVzU3RyaW5nIiwic3RyaW5naWZ5RHluYW1pY1Byb3BOYW1lcyIsImVsZW1lbnRMb2MiLCJtZXJnZUFyZ3MiLCJydW50aW1lRGlyZWN0aXZlcyIsImhhc0NoaWxkcmVuIiwiaGFzUmVmIiwiaGFzQ2xhc3NCaW5kaW5nIiwiaGFzU3R5bGVCaW5kaW5nIiwiaGFzSHlkcmF0aW9uRXZlbnRCaW5kaW5nIiwiaGFzRHluYW1pY0tleXMiLCJoYXNWbm9kZUhvb2siLCJwdXNoTWVyZ2VBcmciLCJkZWR1cGVQcm9wZXJ0aWVzIiwicHVzaFJlZlZGb3JNYXJrZXIiLCJhbmFseXplUGF0Y2hGbGFnIiwiaXNFdmVudEhhbmRsZXIiLCJpc1ZCaW5kIiwiaXNWT24iLCJhcmcyIiwiZGlyZWN0aXZlVHJhbnNmb3JtIiwicHJvcHMyIiwibmVlZFJ1bnRpbWUiLCJwcm9wc0V4cHJlc3Npb24iLCJjbGFzc0tleUluZGV4Iiwic3R5bGVLZXlJbmRleCIsImhhc0R5bmFtaWNLZXkiLCJpc0hhbmRsZXJLZXkiLCJjbGFzc1Byb3AiLCJzdHlsZVByb3AiLCJrbm93blByb3BzIiwidHJhbnNmb3JtU2xvdE91dGxldCIsIm5vbk5hbWVQcm9wcyIsInByb2Nlc3NTbG90T3V0bGV0Iiwic2xvdEFyZ3MiLCJleHBlY3RlZExlbiIsInRyYW5zZm9ybU9uIiwiYXVnbWVudG9yIiwic2hvdWxkQ2FjaGUiLCJpc01lbWJlckV4cCIsImlzSW5saW5lU3RhdGVtZW50IiwiaGFzTXVsdGlwbGVTdGF0ZW1lbnRzIiwidHJhbnNmb3JtVGV4dCIsImhhc1RleHQiLCJjYWxsQXJncyIsInNlZW4kMSIsInRyYW5zZm9ybU9uY2UiLCJ0cmFuc2Zvcm1Nb2RlbCIsImNyZWF0ZVRyYW5zZm9ybVByb3BzIiwicmF3RXhwIiwiZXhwU3RyaW5nIiwiYmluZGluZ1R5cGUiLCJhc3NpZ25tZW50RXhwIiwibW9kaWZpZXJzS2V5IiwidmFsaWREaXZpc2lvbkNoYXJSRSIsInRyYW5zZm9ybUZpbHRlciIsInJld3JpdGVGaWx0ZXIiLCJwYXJzZUZpbHRlciIsImV4cHJlc3Npb24iLCJpblNpbmdsZSIsImluRG91YmxlIiwiaW5UZW1wbGF0ZVN0cmluZyIsImluUmVnZXgiLCJjdXJseSIsInNxdWFyZSIsInBhcmVuIiwibGFzdEZpbHRlckluZGV4IiwicHVzaEZpbHRlciIsIndyYXBGaWx0ZXIiLCJ0cmFuc2Zvcm1NZW1vIiwiYmFzZUNvbXBpbGUiLCJpc01vZHVsZU1vZGUiLCJyZXNvbHZlZE9wdGlvbnMiLCJtb2RlbCIsIlZfTU9ERUxfUkFESU8iLCJWX01PREVMX0NIRUNLQk9YIiwiVl9NT0RFTF9URVhUIiwiVl9NT0RFTF9TRUxFQ1QiLCJWX01PREVMX0RZTkFNSUMiLCJWX09OX1dJVEhfTU9ESUZJRVJTIiwiVl9PTl9XSVRIX0tFWVMiLCJWX1NIT1ciLCJUUkFOU0lUSU9OX0dST1VQIiwiZGVjb2RlciIsInBhcnNlck9wdGlvbnMiLCJhc0F0dHIiLCJyb290TmFtZXNwYWNlIiwicGFyc2VJbmxpbmVDU1MiLCJjcmVhdGVET01Db21waWxlckVycm9yIiwiRE9NRXJyb3JNZXNzYWdlcyIsImlzRXZlbnRPcHRpb25Nb2RpZmllciIsImlzTm9uS2V5TW9kaWZpZXIiLCJtYXliZUtleU1vZGlmaWVyIiwiaXNLZXlib2FyZEV2ZW50IiwidHJhbnNmb3JtQ2xpY2siLCJoYXNNdWx0aXBsZUNoaWxkcmVuIiwiaWdub3JlU2lkZUVmZmVjdFRhZ3MiLCJET01Ob2RlVHJhbnNmb3JtcyIsInRyYW5zZm9ybVRyYW5zaXRpb24iLCJET01EaXJlY3RpdmVUcmFuc2Zvcm1zIiwiY2xvYWsiLCJub29wRGlyZWN0aXZlVHJhbnNmb3JtIiwidHJhbnNmb3JtVkh0bWwiLCJ0cmFuc2Zvcm1WVGV4dCIsImJhc2VSZXN1bHQiLCJ0cmFuc2Zvcm1Nb2RlbCQxIiwiY2hlY2tEdXBsaWNhdGVkVmFsdWUiLCJkaXJlY3RpdmVUb1VzZSIsImlzSW52YWxpZFR5cGUiLCJoYXNEeW5hbWljS2V5VkJpbmQiLCJ0cmFuc2Zvcm1PbiQxIiwiaGFuZGxlckV4cCIsImtleU1vZGlmaWVycyIsIm5vbktleU1vZGlmaWVycyIsImV2ZW50T3B0aW9uTW9kaWZpZXJzIiwicmVzb2x2ZU1vZGlmaWVycyIsIm1vZGlmaWVyUG9zdGZpeCIsInRyYW5zZm9ybVNob3ciLCJjb21waWxlQ2FjaGUiLCJnZXRDYWNoZSIsImN1c3RvbUVsZW1lbnRzIiwiYXNXYXJuaW5nIiwiY29kZUZyYW1lIiwibGluZXMiLCJuZXdsaW5lU2VxdWVuY2VzIiwiaWR4IiwibGluZUxlbmd0aCIsIm5ld0xpbmVTZXFMZW5ndGgiLCJwYWQiLCJnZW5lcmF0ZUNvZGVGcmFtZSIsInJ1bnRpbWVEb20iLCJyZXNlcnZlIiwic3RvcmVQdWxsZG93biIsImRh
15dGVMaXN0IiwiZGF0ZUlubmVyIiwiZGF0ZUl0ZW1zIiwic3RvcmVJRCIsIm5leHRFbmFibGUiLCJwcmV2RW5hYmxlIiwic3RvcmVEYXRhIiwidGltZUxpc3QiLCJyZXNlcnZlRGF0YUluaXRpYWwiLCJkYXRlIiwiZGF5SUQiLCJyZXNlcnZlRGF0YSIsImRhdGVNb3ZlSW5pdCIsImdldEJ1c2luZXNzSG91cnMiLCJzdGFydERhdGUiLCJlbmREYXRlIiwiZm9ybWF0T3B0IiwiaG91cjEyIiwiaG91ciIsIm1pbnV0ZSIsImNyciIsInRvTG9jYWxlU3RyaW5nIiwic2Zvcm1hdCIsInNldE1pbnV0ZXMiLCJnZXRNaW51dGVzIiwiZWZvcm1hdCIsImFkZERhdGVJdGVtIiwib25TZWxlY3RTdG9yZSIsImFzeW5jIiwib25TZWxlY3REYXRlIiwib25Nb3ZlIiwiZGF5cyIsImRhdGVJdGVtIiwiVGFiIiwidGFiIiwidGFiVHJpZ2dlcnMiLCJ0YWJQYW5lbCIsInRhYlBhbmVscyIsInBhbmVsIiwicGFkZGl2ZSIsImN1cnJlbnRQYW5lbCIsIl90eXBlb2YiLCJpbnZhbGlkVHlwZSIsIl9hc3NlcnRTdHJpbmciLCJhbHBoYV8xIiwiZmFyc2lMb2NhbGVzIiwiZW5nbGlzaExvY2FsZXMiLCJkZWNpbWFsIiwiY29tbWFEZWNpbWFsIiwiYXJhYmljTG9jYWxlcyIsImFscGhhbnVtZXJpYyIsImxvY2FsZSIsImFscGhhIiwiYXIiLCJoZSIsImZhIiwiYm4iLCJlbyIsIl9sb2NhbGUiLCJfaSIsIl9sb2NhbGUyIiwiX2kyIiwiX2xvY2FsZTMiLCJiZW5nYWxpTG9jYWxlcyIsIl9pMyIsImRvdERlY2ltYWwiLCJfaTQiLCJfaTUiLCJpc0Zsb2F0XzEiLCJpc0Zsb2F0JDEiLCJmbG9hdCIsIl9hbHBoYSIsImx0IiwiZ3QiLCJsb2NhbGVzIiwiX2lzRmxvYXQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmFkaXgiLCJzdHJpY3QiLCJjb21wYXJpc29uIiwiX21lcmdlIiwiZGVmYXVsQ29udGFpbnNPcHRpb25zIiwiaWdub3JlQ2FzZSIsIl90b1N0cmluZyIsIm1pbk9jY3VycmVuY2VzIiwiZW5jb2RlVVJJIiwiZGVmYXVsdF9mcWRuX29wdGlvbnMiLCJhbGxvd190cmFpbGluZ19kb3QiLCJzdWJzdHJpbmciLCJhbGxvd193aWxkY2FyZCIsInRsZCIsInJlcXVpcmVfdGxkIiwiYWxsb3dfbnVtZXJpY190bGQiLCJwYXJ0IiwiaWdub3JlX21heF9sZW5ndGgiLCJhbGxvd191bmRlcnNjb3JlcyIsImlzSVAiLCJJUHY0QWRkcmVzc1JlZ0V4cCIsIklQdjZBZGRyZXNzUmVnRXhwIiwiSVB2NFNlZ21lbnRGb3JtYXQiLCJJUHY0QWRkcmVzc0Zvcm1hdCIsIklQdjZTZWdtZW50Rm9ybWF0IiwiZGVmYXVsdF9lbWFpbF9vcHRpb25zIiwicmVxdWlyZV9kaXNwbGF5X25hbWUiLCJhbGxvd19kaXNwbGF5X25hbWUiLCJkaXNwbGF5X2VtYWlsIiwic3BsaXROYW1lQWRkcmVzcyIsImRpc3BsYXlfbmFtZSIsImRpc3BsYXlfbmFtZV93aXRob3V0X3F1b3RlcyIsInZhbGlkYXRlRGlzcGxheU5hbWUiLCJkZWZhdWx0TWF4RW1haWxMZW5ndGgiLCJsb3dlcl9kb21haW4iLCJob3N0X2JsYWNrbGlzdCIsImhvc3Rfd2hpdGVsaXN0IiwidXNlciIsImRvbWFpbl9zcGVjaWZpY192YWxpZGF0aW9uIiwiX2lzQnl0ZUxlbmd0aCIsIl91c2VyX3BhcnRzIiwiZ21haWxVc2VyUGFydCIsIl9pc0ZRRE4iLCJhbGxvd19pcF9kb21haW4iLCJfaXNJUCIsIm5vQnJhY2tldGRvbWFpbiIsImFsbG93X3V0ZjhfbG9jYWxfcGFydCIsInF1b3RlZEVtYWlsVXNlclV0ZjgiLCJxdW90ZWRFbWFpbFVzZXIiLCJlbWFpbFVzZXJVdGY4UGFydCIsImVtYWlsVXNlclBhcnQiLCJ1c2VyX3BhcnRzIiwiYmxhY2tsaXN0ZWRfY2hhcnMiLCJkZWZhdWx0X3VybF9vcHRpb25zIiwidmFsaWRhdGVfbGVuZ3RoIiwiYWxsb3dfZnJhZ21lbnRzIiwiYWxsb3dfcXVlcnlfY29tcG9uZW50cyIsInBvcnRfc3RyIiwiaXB2NiIsInJlcXVpcmVfdmFsaWRfcHJvdG9jb2wiLCJwcm90b2NvbHMiLCJyZXF1aXJlX3Byb3RvY29sIiwiYWxsb3dfcHJvdG9jb2xfcmVsYXRpdmVfdXJscyIsInJlcXVpcmVfaG9zdCIsImRpc2FsbG93X2F1dGgiLCJfYXV0aCRzcGxpdDIiLCJfYXJyYXlXaXRoSG9sZXMiLCJyZXR1cm4iLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJtaW5MZW4iLCJfYXJyYXlMaWtlVG9BcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVJlc3QiLCJfc2xpY2VkVG9BcnJheSIsImlwdjZfbWF0Y2giLCJ3cmFwcGVkX2lwdjYiLCJyZXF1aXJlX3BvcnQiLCJjaGVja0hvc3QiLCJhcnIyIiwiaXNSZWdFeHAiLCJpc01BQ0FkZHJlc3MiLCJldWkiLCJub19jb2xvbnMiLCJub19zZXBhcmF0b3JzIiwibWFjQWRkcmVzczQ4Tm9TZXBhcmF0b3JzIiwibWFjQWRkcmVzczY0Tm9TZXBhcmF0b3JzIiwibWFjQWRkcmVzczQ4IiwibWFjQWRkcmVzczQ4V2l0aERvdHMiLCJtYWNBZGRyZXNzNjQiLCJtYWNBZGRyZXNzNjRXaXRoRG90cyIsInN1Ym5ldE1heWJlIiwiaXNWYWxpZElQIiwiZXhwZWN0ZWRTdWJuZXQiLCJ2NFN1Ym5ldCIsInY2U3VibmV0IiwiZGVmYXVsdF9kYXRlX29wdGlvbnMiLCJfc3RlcCIsImZvcm1hdERlbGltaXRlciIsImRlbGltaXRlciIsImRhdGVEZWxpbWl0ZXIiLCJzdHJpY3RNb2RlIiwiZGF0ZUFuZEZvcm1hdCIsInppcHBlZEFyciIsInppcCIsImRhdGVPYmoiLCJfaXRlcmF0b3IiLCJhbGxvd0FycmF5TGlrZSIsIml0IiwiRiIsIl9lIiwibm9ybWFsQ29tcGxldGlvbiIsImRpZEVyciIsIl9lMiIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiX3N0ZXAkdmFsdWUiLCJkYXRlV29yZCIsImZvcm1hdFdvcmQiLCJmdWxsWWVhciIsInBhcnNlZFllYXIiLCJnZXRGdWxsWWVhciIsIm1vbnRoIiwiZGF5IiwiZ2V0VVRDRGF0ZSIsImRlZmF1bHRfdGltZV9vcHRpb25zIiwiZm9ybWF0cyIsImhvdXJGb3JtYXQiLCJob3VyMjQiLCJ3aXRoU2Vjb25kcyIsImRlZmF1bHRPcHRpb25zIiwibG9vc2UiLCJsb29zZUJvb2xlYW5zIiwic3RyaWN0Qm9vbGVhbnMiLCJsYW5ndWFnZVRhZ1JlZ2V4IiwibGFuZ3VhZ2UiLCJleHRlbnNpb24iLCJwcml2YXRldXNlIiwiZ3JhbmRmYXRoZXJlZCIsImxhbmd0YWciLCJpc1JvdXRpbmdSZWciLCJjaGVja1N1bVZhbCIsImlzQWxwaGFfMSIsImlzQWxwaGEkMSIsIl9zdHIiLCJpZ25vcmUiLCJpc0FscGhhbnVtZXJpY18xIiwiaXNBbHBoYW51bWVyaWMkMSIsIm5vX3N5bWJvbHMiLCJudW1lcmljTm9TeW1ib2xzIiwiY291bnRyeUNvZGUiLCJub3JtYWxpem
15VkU3RyIiwicGFzc3BvcnRSZWdleEJ5Q291bnRyeUNvZGUiLCJBTSIsIkFSIiwiQVQiLCJBVSIsIkFaIiwiQkUiLCJCRyIsIkJSIiwiQlkiLCJDQSIsIkNIIiwiQ04iLCJDWSIsIkNaIiwiREUiLCJESyIsIkRaIiwiRUUiLCJFUyIsIkZJIiwiRlIiLCJHQiIsIkdSIiwiSFIiLCJIVSIsIklFIiwiSU4iLCJJRCIsIklSIiwiSVMiLCJJVCIsIkpNIiwiSlAiLCJLUiIsIktaIiwiTEkiLCJMVCIsIkxVIiwiTFYiLCJMWSIsIk1UIiwiTVoiLCJNWSIsIk1YIiwiTkwiLCJOWiIsIlBIIiwiUEsiLCJQTCIsIlBUIiwiUk8iLCJSVSIsIlNFIiwiU0wiLCJTSyIsIlRIIiwiVFIiLCJVQSIsIlVTIiwiWkEiLCJyZWdleCIsImFsbG93X2xlYWRpbmdfemVyb2VzIiwiaW50IiwiaW50TGVhZGluZ1plcm9lcyIsIm1pbkNoZWNrUGFzc2VkIiwibWF4Q2hlY2tQYXNzZWQiLCJsdENoZWNrUGFzc2VkIiwiZ3RDaGVja1Bhc3NlZCIsIl9pc0ludCIsImltZWlSZWdleCIsImltZWlSZWdleFdpdGhvdXRIeXBlbnMiLCJhbGxvd19oeXBoZW5zIiwiaW1laVJlZ2V4V2l0aEh5cGVucyIsInN1bSIsImRpZ2l0IiwidHAiLCJhc2NpaSIsImlzRnVsbFdpZHRoXzEiLCJpc0Z1bGxXaWR0aCQxIiwiZnVsbFdpZHRoIiwiaXNIYWxmV2lkdGhfMSIsImlzSGFsZldpZHRoJDEiLCJoYWxmV2lkdGgiLCJfaXNGdWxsV2lkdGgiLCJfaXNIYWxmV2lkdGgiLCJtdWx0aWJ5dGUiLCJmbGFncyIsInJlZ2V4cEFzU3RyaW5nTGl0ZXJhbCIsInNlbWFudGljVmVyc2lvbmluZ1JlZ2V4Iiwic3Vycm9nYXRlUGFpciIsImFyclZhbCIsImRlZmF1bHRfZGVjaW1hbF9vcHRpb25zIiwiX2luY2x1ZGVzIiwiYmxhY2tsaXN0IiwicmVnRXhwIiwiZGVjaW1hbF9kaWdpdHMiLCJmb3JjZV9kZWNpbWFsIiwiZGVjaW1hbFJlZ0V4cCIsImhleGFkZWNpbWFsIiwib2N0YWwiLCJfdG9GbG9hdCIsImhleGNvbG9yIiwiaW5jbHVkZVBlcmNlbnRWYWx1ZXMiLCJyZ2JDb2xvciIsInJnYmFDb2xvciIsInJnYkNvbG9yUGVyY2VudCIsInJnYmFDb2xvclBlcmNlbnQiLCJzdHJpcHBlZFN0ciIsImhzbENvbW1hIiwiaHNsU3BhY2UiLCJpc3JjIiwiaXNJQkFOXzEiLCJpc0lCQU4kMSIsImlzb0NvdW50cnlDb2RlIiwiaXNvQ291bnRyeUNvZGVJbkliYW5SZWdleENvZGVPYmplY3QiLCJpYmFuUmVnZXhUaHJvdWdoQ291bnRyeUNvZGUiLCJ3aGl0ZWxpc3QiLCJjb3VudHJ5Q29kZUFycmF5IiwiaGFzT25seVZhbGlkQ291bnRyeUNvZGVzIiwiaGFzVmFsaWRJYmFuRm9ybWF0IiwiaGFzVmFsaWRJYmFuQ2hlY2tzdW0iLCJBRCIsIkFFIiwiQUwiLCJCQSIsIkJIIiwiQ1IiLCJETyIsIkVHIiwiRk8iLCJHRSIsIkdJIiwiR0wiLCJHVCIsIklMIiwiSVEiLCJKTyIsIktXIiwiTEIiLCJMQyIsIk1BIiwiTUMiLCJNRCIsIk1FIiwiTUsiLCJNUiIsIk1VIiwiUFMiLCJRQSIsIlJTIiwiU0EiLCJTQyIsIlNJIiwiU00iLCJTViIsIlRMIiwiVE4iLCJWQSIsIlZHIiwiWEsiLCJpc0lTTzMxNjYxQWxwaGEyXzEiLCJDb3VudHJ5Q29kZXMiLCJpc0lTTzMxNjYxQWxwaGEyJDEiLCJ2YWxpZElTTzMxNjYxQWxwaGEyQ291bnRyaWVzQ29kZXMiLCJfaXNJU08zMTY2MUFscGhhIiwiaXNCSUNSZWciLCJtZDUiLCJhbGdvcml0aG0iLCJsZW5ndGhzIiwibWQ0Iiwic2hhMSIsInNoYTI1NiIsInNoYTM4NCIsInNoYTUxMiIsInJpcGVtZDEyOCIsInJpcGVtZDE2MCIsInRpZ2VyMTI4IiwidGlnZXIxNjAiLCJ0aWdlcjE5MiIsImNyYzMyIiwiY3JjMzJiIiwiZGVmYXVsdEJhc2U2NE9wdGlvbnMiLCJ1cmxTYWZlIiwidXJsU2FmZUJhc2U2NCIsIm5vdEJhc2U2NCIsImZpcnN0UGFkZGluZ0NoYXIiLCJkb3RTcGxpdCIsImN1cnJFbGVtIiwiX2lzQmFzZSIsImRlZmF1bHRfanNvbl9vcHRpb25zIiwicHJpbWl0aXZlcyIsImFsbG93X3ByaW1pdGl2ZXMiLCJkZWZhdWx0X2lzX2VtcHR5X29wdGlvbnMiLCJpZ25vcmVfd2hpdGVzcGFjZSIsInByZXNlbnRhdGlvblNlcXVlbmNlcyIsInN1cnJvZ2F0ZVBhaXJzIiwidXVpZCIsIl9pc0hleGFkZWNpbWFsIiwiY29tcGFyaXNvbkRhdGUiLCJfdG9EYXRlIiwidG1wTnVtIiwic2hvdWxkRG91YmxlIiwic2FuaXRpemVkIiwiY2FyZCIsInByb3ZpZGVyIiwiY2FyZHMiLCJhbGxDYXJkcyIsImNhcmRQcm92aWRlciIsIl9pc0x1aG5OdW1iZXIiLCJhbWV4IiwiZGluZXJzY2x1YiIsImRpc2NvdmVyIiwiamNiIiwibWFzdGVyY2FyZCIsInVuaW9ucGF5IiwidmlzYSIsInRtcENhcmRzQXJyYXkiLCJ3ZWlnaHRPZkRpZ2l0cyIsIm1vZHVsbyIsImxhc3REaWdpdCIsImNoYXJzVmFsdWUiLCJYIiwiWSIsIloiLCJsYXN0TnVtYmVyIiwiazEiLCJrMiIsIkxLIiwiaW5jTnVtIiwiaWRDYXJkTm8iLCJwcm92aW5jZXNBbmRDaXRpZXMiLCJwb3dlcnMiLCJwYXJpdHlCaXQiLCJjaGVja0FkZHJlc3NDb2RlIiwiYWRkcmVzc0NvZGUiLCJjaGVja0JpcnRoRGF5Q29kZSIsImJpckRheUNvZGUiLCJ5eXl5IiwibW0iLCJkZCIsInhkYXRhIiwiZ2V0TW9udGgiLCJnZXREYXRlIiwiY2hlY2tQYXJpdHlCaXQiLCJpZDE3IiwicG93ZXIiLCJnZXRQYXJpdHlCaXQiLCJjaGVjazE1SWRDYXJkTm8iLCJjaGVjazE4SWRDYXJkTm8iLCJyZWdleElzRGlnaXQiLCJBTFBIQUJFVF9DT0RFUyIsIkIiLCJEIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiYWN0dWFsQ2hlY2tEaWdpdCIsInZhbGlkRWFuUmVnZXgiLCJlYW4iLCJjaGVja3N1bSIsIkxFTkdUSF9FQU5fOCIsIkxFTkdUSF9FQU5fMTQiLCJnZXRQb3NpdGlvbldlaWdodFRocm91Z2hMZW5ndGhBbmRJbmRleCIsInBhcnRpYWxTdW0iLCJyZW1haW5kZXIiLCJpc2luIiwiZG91YmxlIiwidHJ1bmMiLCJfZGlnaXQiLCJpc0lTQk4iLCJpc2JuIiwic2FuaXRpemVkSXNibiIsInBvc3NpYmxlSXNibjEwIiwicG9zc2libGVJc2JuMTMiLCJmYWN0b3IiLCJ0ZXN0SXNzbiIsImlzc24iLCJyZXF1aXJlX2h5cGhlbiIsImNhc2Vfc2Vuc2l0aXZlIiwiZGlnaXRzIiwiYWxnb3JpdGhtcyIsImFsZ29yaXRobXMkMSIsImlzbzcwNjRDaGVjayIsImNoZWNrdmFsdWUiLCJsdWhuQ2hlY2siLCJzZWNvbmQiLCJyZXZlcnNlTXVsdGlwbHlBbmRTdW0iLCJ2ZXJob2VmZkNoZWNrIiwiZF90YWJsZSIsInBfdGFibGUiLCJzdHJfY29weSIsInN0cmNvcHkiLCJ0YXhJZEZvcm1hdCIsInNhbml0aXpl
15UmVnZXhlcyIsInRheElkQ2hlY2siLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9pc0RhdGUiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJpdGVyIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsImVuVXNDYW1wdXNQcmVmaXgiLCJhbmRvdmVyIiwiYXRsYW50YSIsImF1c3RpbiIsImJyb29raGF2ZW4iLCJjaW5jaW5uYXRpIiwiZnJlc25vIiwiaW50ZXJuZXQiLCJrYW5zYXMiLCJtZW1waGlzIiwib2dkZW4iLCJwaGlsYWRlbHBoaWEiLCJzYmEiLCJpdEl0TmFtZUNoZWNrIiwidm93ZWxmbGFnIiwieGZsYWciLCJ0aW4iLCJjZW50dXJ5X3llYXIiLCJtdWx0aXBfbG9va3VwIiwiZnVsbF95ZWFyIiwiY2hlY2tkaWdpdCIsIm9jY3VyZW5jZXMiLCJ0cmlwX2xvY2F0aW9ucyIsInJlY3VycmVudCIsIndlaWdodCIsImRpZ2l0c0FycmF5IiwiZXZlbiIsImVuVXNHZXRQcmVmaXhlcyIsImFjY3VtIiwidmVyaWYiLCJjaGFycyIsImxlYWRfcmVwbGFjZSIsImNoZWNrZGlnaXRzIiwibnVtYmVyX3JlcGxhY2UiLCJfbnVtYmVyX2xvY2F0aW9ucyIsImNoYXJfdG9faW50Iiwib2RkX2NvbnZlcnQiLCJfaTYiLCJfY2hhcl90b19pbnQiLCJmaXJzdF9wYXJ0IiwiX2NoZWNrc3VtIiwiX2k3IiwiX3N1bSIsIl9pOCIsInZlcmlmaWNhdG9ycyIsIl9pOSIsIl9pMTAiLCJtdWx0aXBsaWVycyIsInRpbl9jb3B5IiwiY3VycmVudF95ZWFyIiwiY3VycmVudF9jZW50dXJ5IiwiYWxsc3ltYm9scyIsImlzTW9iaWxlUGhvbmVfMSIsImlzTW9iaWxlUGhvbmUkMSIsInBob25lcyIsImV0aCIsImRpZ2l0c19hZnRlcl9kZWNpbWFsIiwic3ltYm9sIiwicmVxdWlyZV9zeW1ib2wiLCJuZWdhdGl2ZSIsIndob2xlX2RvbGxhcl9hbW91bnRfd2l0aF9zZXAiLCJ0aG91c2FuZHNfc2VwYXJhdG9yIiwid2hvbGVfZG9sbGFyX2Ftb3VudCIsImRlY2ltYWxfYW1vdW50IiwiZGVjaW1hbF9zZXBhcmF0b3IiLCJyZXF1aXJlX2RlY2ltYWwiLCJhbGxvd19kZWNpbWFsIiwiYWxsb3dfbmVnYXRpdmVzIiwicGFyZW5zX2Zvcl9uZWdhdGl2ZXMiLCJuZWdhdGl2ZV9zaWduX2FmdGVyX2RpZ2l0cyIsIm5lZ2F0aXZlX3NpZ25fYmVmb3JlX2RpZ2l0cyIsImFsbG93X25lZ2F0aXZlX3NpZ25fcGxhY2Vob2xkZXIiLCJhbGxvd19zcGFjZV9hZnRlcl9zeW1ib2wiLCJhbGxvd19zcGFjZV9hZnRlcl9kaWdpdHMiLCJzeW1ib2xfYWZ0ZXJfZGlnaXRzIiwiY3VycmVuY3lSZWdleCIsImRlZmF1bHRfY3VycmVuY3lfb3B0aW9ucyIsImJlY2gzMiIsImJhc2U1OCIsImlzSVNPNjM0Nl8xIiwiaXNGcmVpZ2h0Q29udGFpbmVySUQiLCJpc0lTTzYzNDYkMSIsImlzSVNPNjM0NiIsImlzSVNPNjM0NlN0ciIsImlzRGlnaXQiLCJsZXR0ZXJDb2RlIiwiY2hlY2tTdW1EaWdpdCIsImlzSVNPNjM5MVNldCIsInN0cmljdFNlcGFyYXRvciIsImlzbzg2MDFTdHJpY3RTZXBhcmF0b3IiLCJpc284NjAxIiwiaXNWYWxpZERhdGUiLCJvcmRpbmFsTWF0Y2giLCJvWWVhciIsIm9EYXkiLCJtb250aFN0cmluZyIsImRheVN0cmluZyIsImdldFVUQ0Z1bGxZZWFyIiwiZ2V0VVRDTW9udGgiLCJyZmMzMzM5IiwidGltZUhvdXIiLCJ0aW1lTWludXRlIiwidGltZU51bU9mZnNldCIsInRpbWVPZmZzZXQiLCJwYXJ0aWFsVGltZSIsImZ1bGxEYXRlIiwiZnVsbFRpbWUiLCJ2YWxpZElTTzMxNjYxQWxwaGEzQ291bnRyaWVzQ29kZXMiLCJpc0lTTzQyMTdfMSIsIkN1cnJlbmN5Q29kZXMiLCJpc0lTTzQyMTckMSIsInZhbGlkSVNPNDIxN0N1cnJlbmN5Q29kZXMiLCJkZWZhdWx0QmFzZTMyT3B0aW9ucyIsImNyb2NrZm9yZCIsImNyb2NrZm9yZEJhc2UzMiIsImJhc2UzMiIsImJhc2U1OFJlZyIsInNjaGVtZUFuZE1lZGlhVHlwZSIsIm1lZGlhVHlwZSIsInZhbGlkTWVkaWFUeXBlIiwidmFsaWRBdHRyaWJ1dGUiLCJ2YWxpZERhdGEiLCJtYWduZXRVUklDb21wb25lbnQiLCJzdHJJbmRleCIsIl9ydHJpbSIsIl9sdHJpbSIsIl91cmwkcmVwbGFjZSRzcGxpdDIiLCJfdXJsJHJlcGxhY2Ukc3BsaXQyJCIsInF1ZXJ5U3RyaW5nIiwicXVlcnkiLCJhbGxvd2VkUGFyYW1zIiwiYmNjIiwiaXNQYXJzZUZhaWxlZCIsInF1ZXJ5UGFyYW1zIiwiX3Ekc3BsaXQyIiwicGFyc2VNYWlsdG9RdWVyeVN0cmluZyIsImVtYWlsIiwiX3RyaW0iLCJfaXNFbWFpbCIsIm1pbWVUeXBlU2ltcGxlIiwibWltZVR5cGVUZXh0IiwibWltZVR5cGVNdWx0aXBhcnQiLCJkZWZhdWx0TGF0TG9uZ09wdGlvbnMiLCJwYWlyIiwiY2hlY2tETVMiLCJsYXRETVMiLCJsb25nRE1TIiwibGF0IiwibG9uZyIsImlzUG9zdGFsQ29kZV8xIiwiaXNQb3N0YWxDb2RlJDEiLCJwYXR0ZXJucyIsInRocmVlRGlnaXQiLCJmb3VyRGlnaXQiLCJmaXZlRGlnaXQiLCJzaXhEaWdpdCIsIkhUIiwiS0UiLCJNRyIsIk5QIiwiUFIiLCJTRyIsIlRXIiwiWk0iLCJrZWVwX25ld19saW5lcyIsIl9ibGFja2xpc3QiLCJkZWZhdWx0X25vcm1hbGl6ZV9lbWFpbF9vcHRpb25zIiwicmF3X3BhcnRzIiwiZ21haWxfcmVtb3ZlX3N1YmFkZHJlc3MiLCJnbWFpbF9yZW1vdmVfZG90cyIsImRvdHNSZXBsYWNlciIsImFsbF9sb3dlcmNhc2UiLCJnbWFpbF9sb3dlcmNhc2UiLCJnbWFpbF9jb252ZXJ0X2dvb2dsZW1haWxkb3Rjb20iLCJpY2xvdWRfZG9tYWlucyIsImljbG91ZF9yZW1vdmVfc3ViYWRkcmVzcyIsImljbG91ZF9sb3dlcmNhc2UiLCJvdXRsb29rZG90Y29tX2RvbWFpbnMiLCJvdXRsb29rZG90Y29tX3JlbW92ZV9zdWJhZGRyZXNzIiwib3V0bG9va2RvdGNvbV9sb3dlcmNhc2UiLCJ5YWhvb19kb21haW5zIiwieWFob29fcmVtb3ZlX3N1YmFkZHJlc3MiLCJ5YWhvb19sb3dlcmNhc2UiLCJ5YW5kZXhfZG9tYWlucyIsInlhbmRleF9sb3dlcmNhc2UiLCJjaGFyc2V0UmVnZXgiLCJhbmFseXNpcyIsImNoYXJNYXAiLCJjb3VudENoYXJzIiwidW5pcXVlQ2hhcnMiLCJ1cHBlcmNhc2VDb3VudCIsImxvd2VyY2FzZUNvdW50IiwibnVtYmVyQ291bnQiLCJzeW1ib2xDb3VudCIsInVwcGVyQ2FzZVJlZ2V4IiwibG93ZXJDYXNlUmVnZXgiLCJudW1iZXJSZWdleCIsInN5bWJvbFJlZ2V4IiwiYW5hbHl6ZVBhc3N3b3JkIiwicmV0dXJuU2Nvcm
15UiLCJzY29yaW5nT3B0aW9ucyIsInBvaW50c1BlclVuaXF1ZSIsInBvaW50c1BlclJlcGVhdCIsInBvaW50c0ZvckNvbnRhaW5pbmdMb3dlciIsInBvaW50c0ZvckNvbnRhaW5pbmdVcHBlciIsInBvaW50c0ZvckNvbnRhaW5pbmdOdW1iZXIiLCJwb2ludHNGb3JDb250YWluaW5nU3ltYm9sIiwic2NvcmVQYXNzd29yZCIsIm1pbkxlbmd0aCIsIm1pbkxvd2VyY2FzZSIsIm1pblVwcGVyY2FzZSIsIm1pbk51bWJlcnMiLCJtaW5TeW1ib2xzIiwiaXNWQVRfMSIsImlzVkFUJDEiLCJ2YXRNYXRjaGVycyIsIkVMIiwid2VpZ2h0cyIsIkFCTiIsIk5HIiwiVVoiLCJCTyIsIkNMIiwiQ08iLCJFQyIsIkhOIiwiTkkiLCJQQSIsIlBZIiwiUEUiLCJVWSIsIlZFIiwiX3RvSW50IiwiX3RvQm9vbGVhbiIsIl9lcXVhbHMiLCJfY29udGFpbnMiLCJfbWF0Y2hlcyIsIl9pc1VSTCIsIl9pc01BQ0FkZHJlc3MiLCJfaXNJUFJhbmdlIiwicmVxdWlyZSQkMTEiLCJyZXF1aXJlJCQxMiIsInJlcXVpcmUkJDEzIiwiX2lzVGltZSIsInJlcXVpcmUkJDE0IiwiX2lzQm9vbGVhbiIsInJlcXVpcmUkJDE1IiwiX2lzTG9jYWxlIiwicmVxdWlyZSQkMTYiLCJfaXNBYmFSb3V0aW5nIiwicmVxdWlyZSQkMTciLCJfaXNBbHBoYSIsInJlcXVpcmUkJDE4IiwiX2lzQWxwaGFudW1lcmljIiwicmVxdWlyZSQkMTkiLCJfaXNOdW1lcmljIiwicmVxdWlyZSQkMjAiLCJfaXNQYXNzcG9ydE51bWJlciIsInJlcXVpcmUkJDIxIiwiX2lzUG9ydCIsInJlcXVpcmUkJDIyIiwiX2lzTG93ZXJjYXNlIiwicmVxdWlyZSQkMjMiLCJfaXNVcHBlcmNhc2UiLCJyZXF1aXJlJCQyNCIsIl9pc0lNRUkiLCJyZXF1aXJlJCQyNSIsIl9pc0FzY2lpIiwicmVxdWlyZSQkMjYiLCJyZXF1aXJlJCQyNyIsInJlcXVpcmUkJDI4IiwiX2lzVmFyaWFibGVXaWR0aCIsInJlcXVpcmUkJDI5IiwiX2lzTXVsdGlieXRlIiwicmVxdWlyZSQkMzAiLCJfaXNTZW1WZXIiLCJyZXF1aXJlJCQzMSIsIl9pc1N1cnJvZ2F0ZVBhaXIiLCJyZXF1aXJlJCQzMiIsInJlcXVpcmUkJDMzIiwicmVxdWlyZSQkMzQiLCJfaXNEZWNpbWFsIiwicmVxdWlyZSQkMzUiLCJyZXF1aXJlJCQzNiIsIl9pc09jdGFsIiwicmVxdWlyZSQkMzciLCJfaXNEaXZpc2libGVCeSIsInJlcXVpcmUkJDM4IiwiX2lzSGV4Q29sb3IiLCJyZXF1aXJlJCQzOSIsIl9pc1JnYkNvbG9yIiwicmVxdWlyZSQkNDAiLCJfaXNIU0wiLCJyZXF1aXJlJCQ0MSIsIl9pc0lTUkMiLCJyZXF1aXJlJCQ0MiIsIl9pc0lCQU4iLCJyZXF1aXJlJCQ0MyIsIl9pc0JJQyIsInJlcXVpcmUkJDQ0IiwiX2lzTUQiLCJyZXF1aXJlJCQ0NSIsIl9pc0hhc2giLCJyZXF1aXJlJCQ0NiIsIl9pc0pXVCIsInJlcXVpcmUkJDQ3IiwiX2lzSlNPTiIsInJlcXVpcmUkJDQ4IiwiX2lzRW1wdHkiLCJyZXF1aXJlJCQ0OSIsIl9pc0xlbmd0aCIsInJlcXVpcmUkJDUwIiwicmVxdWlyZSQkNTEiLCJfaXNVVUlEIiwicmVxdWlyZSQkNTIiLCJfaXNNb25nb0lkIiwicmVxdWlyZSQkNTMiLCJfaXNBZnRlciIsInJlcXVpcmUkJDU0IiwiX2lzQmVmb3JlIiwicmVxdWlyZSQkNTUiLCJfaXNJbiIsInJlcXVpcmUkJDU2IiwicmVxdWlyZSQkNTciLCJfaXNDcmVkaXRDYXJkIiwicmVxdWlyZSQkNTgiLCJfaXNJZGVudGl0eUNhcmQiLCJyZXF1aXJlJCQ1OSIsIl9pc0VBTiIsInJlcXVpcmUkJDYwIiwiX2lzSVNJTiIsInJlcXVpcmUkJDYxIiwiX2lzSVNCTiIsInJlcXVpcmUkJDYyIiwiX2lzSVNTTiIsInJlcXVpcmUkJDYzIiwiX2lzVGF4SUQiLCJyZXF1aXJlJCQ2NCIsIl9pc01vYmlsZVBob25lIiwicmVxdWlyZSQkNjUiLCJfaXNFdGhlcmV1bUFkZHJlc3MiLCJyZXF1aXJlJCQ2NiIsIl9pc0N1cnJlbmN5IiwicmVxdWlyZSQkNjciLCJfaXNCdGNBZGRyZXNzIiwicmVxdWlyZSQkNjgiLCJfaXNJU08iLCJyZXF1aXJlJCQ2OSIsIl9pc0lTTzIiLCJyZXF1aXJlJCQ3MCIsIl9pc0lTTzMiLCJyZXF1aXJlJCQ3MSIsIl9pc1JGQyIsInJlcXVpcmUkJDcyIiwicmVxdWlyZSQkNzMiLCJfaXNJU08zMTY2MUFscGhhMiIsInJlcXVpcmUkJDc0IiwiX2lzSVNPNCIsInJlcXVpcmUkJDc1IiwicmVxdWlyZSQkNzYiLCJfaXNCYXNlMiIsInJlcXVpcmUkJDc3IiwiX2lzQmFzZTMiLCJyZXF1aXJlJCQ3OCIsIl9pc0RhdGFVUkkiLCJyZXF1aXJlJCQ3OSIsIl9pc01hZ25ldFVSSSIsInJlcXVpcmUkJDgwIiwiX2lzTWFpbHRvVVJJIiwicmVxdWlyZSQkODEiLCJfaXNNaW1lVHlwZSIsInJlcXVpcmUkJDgyIiwiX2lzTGF0TG9uZyIsInJlcXVpcmUkJDgzIiwiX2lzUG9zdGFsQ29kZSIsInJlcXVpcmUkJDg0IiwicmVxdWlyZSQkODUiLCJyZXF1aXJlJCQ4NiIsInJlcXVpcmUkJDg3IiwiX2VzY2FwZSIsInJlcXVpcmUkJDg4IiwiX3VuZXNjYXBlIiwicmVxdWlyZSQkODkiLCJfc3RyaXBMb3ciLCJyZXF1aXJlJCQ5MCIsIl93aGl0ZWxpc3QiLCJyZXF1aXJlJCQ5MSIsInJlcXVpcmUkJDkyIiwiX2lzV2hpdGVsaXN0ZWQiLCJyZXF1aXJlJCQ5MyIsIl9ub3JtYWxpemVFbWFpbCIsInJlcXVpcmUkJDk0IiwiX2lzU2x1ZyIsInJlcXVpcmUkJDk1IiwiX2lzTGljZW5zZVBsYXRlIiwicmVxdWlyZSQkOTYiLCJfaXNTdHJvbmdQYXNzd29yZCIsInJlcXVpcmUkJDk3IiwiX2lzVkFUIiwicmVxdWlyZSQkOTgiLCJ0b0RhdGUiLCJ0b0Zsb2F0IiwidG9JbnQiLCJ0b0Jvb2xlYW4iLCJpc0VtYWlsIiwiaXNVUkwiLCJpc0lQUmFuZ2UiLCJpc0ZRRE4iLCJpc0lCQU4iLCJpc0JJQyIsImlzQWJhUm91dGluZyIsImlzQWxwaGEiLCJpc0FscGhhTG9jYWxlcyIsImlzQWxwaGFudW1lcmljIiwiaXNBbHBoYW51bWVyaWNMb2NhbGVzIiwiaXNOdW1lcmljIiwiaXNQYXNzcG9ydE51bWJlciIsImlzUG9ydCIsImlzTG93ZXJjYXNlIiwiaXNVcHBlcmNhc2UiLCJpc0FzY2lpIiwiaXNGdWxsV2lkdGgiLCJpc0hhbGZXaWR0aCIsImlzVmFyaWFibGVXaWR0aCIsImlzTXVsdGlieXRlIiwiaXNTZW1WZXIiLCJpc1N1cnJvZ2F0ZVBhaXIiLCJpc0ludCIsImlzSU1FSSIsImlzRmxvYXQiLCJpc0Zsb2F0TG9jYWxlcyIsImlzRGVjaW1hbCIsImlzSGV4YWRlY2ltYWwiLCJpc09jdGFsIiwiaXNEaXZpc2libGVCeSIsImlzSGV4Q29sb3IiLCJpc1JnYkNvbG9yIiwiaXNIU0wiLCJpc0lTUkMiLCJpc01ENSIsImlzSGFzaCIsImlzSldUIiwiaXNKU09OIiwiaXNFbXB0eSIsImlzTGVuZ3RoIiwiaXNMb2NhbGUiLCJpc0J5dGVMZW5ndGgiLCJpc1VVSUQiLCJpc01vbmdvSWQiLCJpc0FmdGVyIiwiaXNCZWZvcmUiLCJpc0luIiwiaXNMdWhuTnVtYmVyIiwiaXNDcmVkaXRDYXJkIiwiaXNJZGVudGl0eUNhcmQiLCJpc0VBTiIsImlzSVNJTiIsImlzSVNTTiIsImlzTW9iaWxlUGhvbmUiLCJpc01vYmlsZVBob25lTG9jYWxlcyIsImlzUG9zdGFsQ29kZSIsImlzUG9zdGFsQ29kZUxvY2FsZXMiLCJpc0V0aGVyZXVtQWRkcmVzcyIsImlzQ3VycmVuY3kiLCJpc0J0Y0FkZHJlc3MiLCJpc0lTTzYzOTEiLCJpc0lTTzg2MDEiLCJpc1JGQzMzMzkiLCJpc0lTTzMxNjYxQWxwaGEyIiwiaXNJU08zMTY2MUFscGhhMyIsImlzSVNPNDIxNyIsImlzQmFzZTMyIiwiaXNCYXNlNTgiLCJpc0Jhc2U2NCIsImlzRGF0YVVSSSIsImlzTWFnbmV0VVJJIiwiaXNNYWlsdG9VUkkiLCJpc01pbWVUeXBlIiwiaXNMYXRMb25nIiwibHRyaW0iLCJydHJpbSIsInN0cmlwTG93IiwiaXNXaGl0ZWxpc3RlZCIsIm5vcm1hbGl6ZUVtYWlsIiwiaXNTbHVnIiwiaXNTdHJvbmdQYXNzd29yZCIsImlzVGF4SUQiLCJpc1RpbWUiLCJpc0xpY2Vuc2VQbGF0ZSIsImlzVkFUIiwiaWJhbkxvY2FsZXMiLCJZdWJpbkJhbmdvIiwiQ29yZSIsImlucHV0VmFsIiwiVVJMIiwiUkVHSU9OIiwieXViaW43IiwiY2hrNyIsImdldEFkZHIiLCJhZGRyRGljIiwicmVnaW9uX2lkIiwicmVnaW9uIiwibG9jYWxpdHkiLCJzdHJlZXQiLCJleHRlbmRlZCIsInNlbGVjdEFkZHIiLCJhZGRyIiwianNvbnAiLCJzY3JpcHRUYWciLCJoZWFkIiwiX3RoaXMiLCJ5dWJpbjMiLCJDQUNIRSIsIkZvcm0iLCJ0YXJnZXRzIiwicGFyZW50Q2xhc3MiLCJlcnJvckNsYXNzIiwiZXJyb3J0ZXh0Q2xhc3MiLCJlcnJvck1lc3NhZ2UiLCJlbXB0eSIsInRlbCIsImthbmEiLCJydWxlcyIsInVwZGF0ZVJ1bGVzIiwicnVsZSIsImVsbSIsImV4ZWN1dGlvbiIsInZhbGlkYXRlIiwiZm9ybSIsImlucHV0VGltZXIiLCJlbG1zIiwic3VibWl0IiwicmVtb3ZlRXJyb3IiLCJ0cmFuc0hhcmZzaXplIiwiZXJyb3JJbmRleCIsImFwcGVuZEVycm9yIiwiYWxsQ2hlY2siLCJydWxlSW5kZXgiLCJmZWxsb3dzIiwiZmVsbG93IiwicnVsZXNHcm91cCIsImVycm9ycyIsInppcGNvZGUiLCJwcmVmZWN0dXJlcyIsImFkZHJlc3MiLCJjaGFuZ2VFdmVudCIsImhhbGZWYWwiLCJvcHRpb25Eb21haW4iLCJlbWFpbElucHV0cyIsImRvbWFpbkl0ZW1zIiwiZG9tYWluUHVsbGRvd24iLCJ0YXJnZXRFbWFpbElucHV0IiwidG9nZ2VSZXFJdGVtIiwiY29udGFjdElucHV0IiwiZW1haWxJbnB1dCIsInRlbElucHV0IiwiZW1haWxJbnB1dExhYmVsIiwidGVsSW5wdXRMYWJlbCIsInRvZ2dsZUl0ZW0iLCJvcHRpb25zSW5wdXQiLCJyZW1vdmVFdmVudCIsIndpdGhkcmF3YWwiLCJpc1N1Ym1pdCIsImV4QnV0dG9ucyIsInJldHVyblZhbHVlIiwic3RvcmVfYmxvZyIsImRpZmZIZWlnaHRDYWxjIiwiY2FsYyIsInRlcm1UYWIiLCJidXkiLCJtYWludGVuYW5jZSIsIm1lbnRlX2Jpa2VlcCIsImVzdGltYXRlIiwic2lnbnVwIiwic2xpZGVycyIsImJwIiwic3RvcmVfYmxvZ19hcnRpY2xlIiwic3RvcmVfZGV0YWlsIiwibmV3c19hcnRpY2xlIiwiYWNDb250YWluZXIiLCJtZW50ZV90ZW5rZW4iLCJtb3JlIiwibWVudGVfc3lha2VuIiwibXlwYWdlX2FjY291bnRfZWRpdCIsImJ1eV9iZWdpbm5lciIsImJ1eV9kZXRhaWwiLCJ0bWJPcHQiLCJ0aHVtYm5haWxTbGlkZXJzIiwic2xpZGVyc0FycmF5Iiwid2F0ZXJtYXJrIiwidGh1bWJuYWlsIiwidGh1bWJuYWlsU3dpcGVyIiwidGh1bWJuYWlsU2xpZGVyIiwidGh1bWJuYWlsQXJyYXkiLCJ0aHVtYm5haWxSZXNldCIsInRtYiIsImJ1eV9tYWtlcl9zaG93IiwibXlwYWdlX2hpc3RvcnkiLCJtZWRpYV9hcnRpY2xlIiwiaDJMaXN0IiwidG9jIiwiYVRhZ3MiLCJsaSIsImdhbGxlcnlTd2lwZXJPcHQiLCJnYWxsZXJ5U2xpZGVyIiwi
15Z2FsbGVyeSIsInN0b3JlX2thd2FzYWtpX3BsYXphIiwiaW5zdXJhbmNlIiwiaW5zdXJhbmNlX2hva2VuX2ppYmFpIiwiaW5zdXJhbmNlX2hva2VuX25pbmkiLCJpbnN1cmFuY2VfaG9rZW5fdG9uYW4iLCJ1cmxQYXJhbXMiLCJVUkxTZWFyY2hQYXJhbXMiLCJuZXdVcmwiLCJzZWFyY2hQYXJhbXMiLCJzbW9vdGhzY3JvbGwiLCJwYWdlaWQiLCJyZXBsYWNlQWxsIl0sIm1hcHBpbmdzIjoiMEpBMGFxQixDQUFFQSxTQXJhckIsV0FFRSxJQUFJQyxFQUFJQyxPQUNKQyxFQUFJQyxTQUdSLEtBQ0UsbUJBQW9CRCxFQUFFRSxnQkFBZ0JDLFNBQ0YsSUFBcENMLEVBQUVNLDhCQUZKLENBUUEsSUF1QjRCQyxFQXZCeEJDLEVBQVVSLEVBQUVTLGFBQWVULEVBQUVRLFFBQzdCRSxFQUFjLElBR2RDLEVBQVcsQ0FDYkMsT0FBUVosRUFBRVksUUFBVVosRUFBRWEsU0FDdEJDLFNBQVVkLEVBQUVjLFNBQ1pDLGNBQWVQLEVBQVFRLFVBQVVKLFFBQVVLLEVBQzNDQyxlQUFnQlYsRUFBUVEsVUFBVUUsZ0JBSWhDQyxFQUNGbkIsRUFBRW9CLGFBQWVwQixFQUFFb0IsWUFBWUQsSUFDM0JuQixFQUFFb0IsWUFBWUQsSUFBSUUsS0FBS3JCLEVBQUVvQixhQUN6QkUsS0FBS0gsSUFtQlBJLEdBWHdCaEIsRUFXZ0JQLEVBQUV3QixVQUFVakIsVUFSL0MsSUFBSWtCLE9BRmEsQ0FBQyxRQUFTLFdBQVksU0FFVkMsS0FBSyxNQUFNQyxLQUFLcEIsR0FRZSxFQUFJLEdBMEx6RVAsRUFBRVksT0FBU1osRUFBRWEsU0FBVyxnQkFFRGUsSUFBakJDLFVBQVUsTUFLc0IsSUFBaENDLEVBQWNELFVBQVUsSUFvQjVCRSxFQUFhQyxLQUNYaEMsRUFDQUUsRUFBRStCLFVBQ29CTCxJQUF0QkMsVUFBVSxHQUFHSyxPQUNQTCxVQUFVLEdBQUdLLEtBQ2ZsQyxFQUFFbUMsU0FBV25DLEVBQUVvQyxpQkFDRVIsSUFBckJDLFVBQVUsR0FBR1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EtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxPQUsxOUM4akYsR0FBQU
15QsYUFBR0UsaUJDYjFDenBJLE9BQU91TyxlQUF3QnZILEVBQUEsYUFBYyxDQUMzQzFJLE9BQU8sSUFFVDBJLEVBQUFvN0MsUUFNQSxTQUFlbGdCLElBQ2IsRUFBSTJ4RixFQUFjenhFLFNBQVNsZ0IsR0FJM0IsSUFBSWk5RixFQUFjajlGLEVBQUl0N0IsTUFBTSxFQUFHLEdBQUdELGNBQ2xDLElBQUsraUksRUFBaUJILGFBQWE1akYsSUFBSXc1RSxJQUFnQyxPQUFoQkEsRUFDckQsT0FBTyxFQUVULE9BQU93SyxFQUFTbHVJLEtBQUt5bUMsRUFDdkIsRUFmQSxJQUFJMnhGLEVBRUosU0FBZ0M3bkgsR0FBTyxPQUFPQSxHQUFPQSxFQUFJNjVGLFdBQWE3NUYsRUFBTSxDQUFFbzJDLFFBQVNwMkMsRUFBUSxDQUYzRThwSCxDQUF1QmgwRixHQUFBQSxTQUN2QzRuRyxFQUFtQjl4RixHQUd2QixJQUFJK3hGLEVBQVcsK0NBWWY1aUksRUFBaUJDLFFBQUFBLEVBQVFvN0MsUUFDekJyN0MsRUFBeUJDLFFBQUFvN0MsUUFBQXA3QyxFQUFRbzdDLDJEQ3JCakNwaUQsT0FBT3VPLGVBQXdCdkgsRUFBQSxhQUFjLENBQzNDMUksT0FBTyxJQUVUMEksRUFBQW83QyxRQUlBLFNBQWVsZ0IsR0FFYixPQURBLEVBQUkyeEYsRUFBY3p4RSxTQUFTbGdCLEdBQ3BCMG5HLEVBQUludUksS0FBS3ltQyxFQUNsQixFQU5BLElBQUkyeEYsRUFDSixTQUFnQzduSCxHQUFPLE9BQU9BLEdBQU9BLEVBQUk2NUYsV0FBYTc1RixFQUFNLENBQUVvMkMsUUFBU3AyQyxFQUFRLENBRDNFOHBILENBQXVCaDBGLEdBQUFBLFNBRTNDLElBQUk4bkcsRUFBTSxpQkFLVjdpSSxFQUFpQkMsUUFBQUEsRUFBUW83QyxRQUN6QnI3QyxFQUF5QkMsUUFBQW83QyxRQUFBcDdDLEVBQVFvN0MsMkRDWmpDcGlELE9BQU91TyxlQUF3QnZILEVBQUEsYUFBYyxDQUMzQzFJLE9BQU8sSUFFVDBJLEVBQUFvN0MsUUFrQkEsU0FBZ0JsZ0IsRUFBSzJuRyxH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FHLEdBQUksQ0FBQyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLENBQUMsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxDQUFDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksQ0FBQyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLENBQUMsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxDQUFDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksQ0FBQyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxJQUdqVXNGLEVBQUksQ0FBQyxDQUFDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksQ0FBQyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLENBQUMsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxDQUFDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksQ0FBQyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLENBQUMsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxDQUFDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksQ0FBQyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxJQUdqUTBzSSxFQUFZOXBHLEVBQUkveUIsT0FHcEIsSUFaVSwrQkFZRDFULEtBQUt1d0ksR0FDWixPQU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SxDQUFDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksQ0FBQyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLENBQUMsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsSUFDdlVDLEVBQVUsQ0FBQyxDQUFDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksQ0FBQyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLENBQUMsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxDQUFDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksQ0FBQyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxHQU
15FJLENBQUMsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxDQUFDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksQ0FBQyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxJQUd2UUMsRUFBV2x3RyxFQUFJbHlCLE1BQU0sSUFBSTdGLFVBQVUzTyxLQUFLLElBQ3hDNjBJLEVBQVcsRUFDTnJ2SSxFQUFJLEVBQUdBLEVBQUlveEksRUFBU2h4SSxPQUFRSixJQUNuQ3F2SSxFQUFXNkIsRUFBUTdCLEdBQVU4QixFQUFRbnhJLEVBQUksR0FBRzhFLFNBQVNzc0ksRUFBU3B4SSxHQUFJLE1BRXBFLE9BQW9CLElBQWJxdkksQ0FDVCxnQkNyRkEsU0FBUzFjLEVBQVFsMEgsR0FBZ0MsT0FBT2swSCxFQUFVLG1CQUFxQnAyRixRQUFVLGlCQUFtQkEsT0FBT0MsU0FBVyxTQUFVLzlCLEdBQUssY0FBY0EsQ0FBSSxFQUFHLFNBQVVBLEdBQUssT0FBT0EsR0FBSyxtQkFBcUI4OUIsUUFBVTk5QixFQUFFNkksY0FBZ0JpMUIsUUFBVTk5QixJQUFNODlCLE9BQU96aUMsVUFBWSxnQkFBa0IyRSxDQUFFLEVBQUlrMEgsRUFBUWwwSCxFQUFLLENBQzlUTyxPQUFPdU8sZUFBd0J2SCxFQUFBLGFBQWMsQ0FDM0MxSSxPQUFPLElBRVQwSSxFQUFBbzdDLFFBMjFDQSxTQUFpQmxnQixHQUNmLElBQUlteUYsRUFBUzE0SCxVQUFVeUYsT0FBUyxRQUFzQjFGLElBQWpCQyxVQUFVLEdBQW1CQSxVQUFVLEdBQUssU0FDakYsRUFBSWs0SCxFQUFjenhFLFNBQVNsZ0IsR0FFM0IsSUFBSW13RyxFQUFVbndHLEVBQUl0N0IsTUFBTSxHQUN4QixHQUFJeXRILEtBQVVpZSxFQUlaLE9BSElqZSxLQUFVa2UsSUFDWkYsRUFBVUEsRUFBUXBuSSxRQUFRc25JLEVBQWdCbGUsR0FBUyxPQUVoRGllLEVBQVlqZSxHQUFRNTRILEtBQUs0MkksT0FHMUJoZSxLQUFVbWUsSUFDTEEsRUFBV25lLEdBQVFnZSxJQUs5QixNQUFNLElBQUkzc0gsTUFBTSxtQkFBbUIzaEIsT0FBT3N3SCxFQUFRLEtBQ3BELEVBNzJDQSxJQUFJUixFQUFnQmlDLEVBQXVCaDBGLEdBQUFBLFNBQ3ZDNHZHLEVBR0osU0FBaUM3d0ksRUFBR0ksR0FBSyxJQUFLQSxHQUFLSixHQUFLQSxFQUFFZ2xHLFdBQVksT0FBT2hsRyxFQUFHLEdBQUksT0FBU0EsR0FBSyxVQUFZOHlILEVBQVE5eUgsSUFBTSxtQkFBcUJBLEVBQUcsTUFBTyxDQUFFdWhELFFBQVN2aEQsR0FBSyxJQUFJSCxFQUFJK3hJLEVBQXlCeHhJLEdBQUksR0FBSVAsR0FBS0EsRUFBRWlsRCxJQUFJOWtELEdBQUksT0FBT0gsRUFBRThOLElBQUkzTixHQUFJLElBQUlDLEVBQUksQ0FBRXdOLFVBQVcsTUFBUWhOLEVBQUl0QixPQUFPdU8sZ0JBQWtCdk8sT0FBTzJXLHlCQUEwQixJQUFLLElBQUk5VCxLQUFLaEMsRUFBRyxHQUFJLFlBQWNnQyxHQUFLLENBQUUsRUFBQ2lnQyxlQUFlaG5DLEtBQUsrRSxFQUFHZ0MsR0FBSSxDQUFFLElBQUk3QixFQUFJTSxFQUFJdEIsT0FBTzJXLHlCQUF5QjlWLEVBQUdnQyxHQUFLLEtBQU03QixJQUFNQSxFQUFFd04sS0FBT3hOLEVBQUV5TixLQUFPek8sT0FBT3VPLGVBQWV6TixFQUFHK0IsRUFBRzdCLEdBQUtGLEVBQUUrQixHQUFLaEMsRUFBRWdDLEdBQU0sT0FBTy9CLEVBQUVzaEQsUUFBVXZoRCxFQUFHSCxHQUFLQSxFQUFFK04sSUFBSTVOLEVBQUdDLEdBQUlBLENBQUksQ0FIcGpCNHhJLENBQXdCOTZGLElBQ3JDKzZGLEVBQVU3YyxFQUF1Qno5RSxHQUFBQSxTQUNyQyxTQUFTbzZGLEVBQXlCNXhJLEdBQUssR0FBSSxtQkFBcUJtdEQsUUFBUyxPQUFPLEtBQU0sSUFBSS9zRCxFQUFJLElBQUkrc0QsUUFBV3R0RCxFQUFJLElBQUlzdEQsUUFBVyxPQUFReWtGLEVBQTJCLFNBQWtDNXhJLEdBQUssT0FBT0EsRUFBSUgsRUFBSU8sQ0FBSSxHQUFFSixFQUFLLENBRXBPLFNBQVNpMUgsRUFBdUI5cEgsR0FBTyxPQUFPQSxHQUFPQSxFQUFJNjVGLFdBQWE3NUYsRUFBTSxDQUFFbzJDLFFBQVNwMkMsRUFBUSxDQUMvRixTQUFTNG1JLEVBQW1CaGtJLEdBQU8sT0FJbkMsU0FBNEJBLEdBQU8sR0FBSTFOLE1BQU1DLFFBQVF5TixHQUFNLE9BQU95ckgsRUFBa0J6ckgsRUFBTyxDQUpqRGlrSSxDQUFtQmprSSxJQUc3RCxTQUEwQmtrSSxHQU
15FRLEdBQXNCLG9CQUFYdjFHLFFBQW1ELE1BQXpCdTFHLEVBQUt2MUcsT0FBT0MsV0FBMkMsTUFBdEJzMUcsRUFBSyxjQUF1QixPQUFPNXhJLE1BQU02QixLQUFLK3ZJLEVBQVEsQ0FIekZDLENBQWlCbmtJLElBRXRGLFNBQXFDblAsRUFBRzI2SCxHQUFVLElBQUszNkgsRUFBRyxPQUFRLEdBQWlCLGlCQUFOQSxFQUFnQixPQUFPNDZILEVBQWtCNTZILEVBQUcyNkgsR0FBUyxJQUFJdDVILEVBQUlkLE9BQU9sRixVQUFVaWIsU0FBU2phLEtBQUsyRCxHQUFHbUgsTUFBTSxHQUFJLEdBQWMsV0FBTjlGLEdBQWtCckIsRUFBRTZJLGNBQWF4SCxFQUFJckIsRUFBRTZJLFlBQVltMUIsTUFBTSxHQUFVLFFBQU4zOEIsR0FBcUIsUUFBTkEsRUFBYSxPQUFPSSxNQUFNNkIsS0FBS3RELEdBQUksR0FBVSxjQUFOcUIsR0FBcUIsMkNBQTJDckYsS0FBS3FGLEdBQUksT0FBT3U1SCxFQUFrQjU2SCxFQUFHMjZILEVBQVUsQ0FGbFVFLENBQTRCMXJILElBQzFILFdBQWdDLE1BQU0sSUFBSW5SLFVBQVUsdUlBQTBJLENBRDVEdTFJLEVBQXVCLENBS3pKLFNBQVMzWSxFQUFrQnpySCxFQUFLNEgsSUFBa0IsTUFBUEEsR0FBZUEsRUFBTTVILEVBQUl4TixVQUFRb1YsRUFBTTVILEVBQUl4TixRQUFRLElBQUssSUFBSUosRUFBSSxFQUFHNjVILEVBQU8sSUFBSTM1SCxNQUFNc1YsR0FBTXhWLEVBQUl3VixFQUFLeFYsSUFBSzY1SCxFQUFLNzVILEdBQUs0TixFQUFJNU4sR0FBSSxPQUFPNjVILENBQU8sQ0FrWG5MLElBQUlvWSxFQUFtQixDQUNyQkMsUUFBUyxDQUFDLEtBQU0sTUFDaEJDLFFBQVMsQ0FBQyxLQUFNLE1BQ2hCQyxPQUFRLENBQUMsS0FBTSxNQUNmQyxXQUFZLENBQUMsS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLE1BQ3ZKQyxXQUFZLENBQUMsS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sTUFDakRDLE9BQVEsQ0FBQyxLQUFNLE1BQ2ZDLFNBQVUsQ0FBQyxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sTUFDekNDLE9BQVEsQ0FBQyxLQUFNLE1BQ2ZDLFFBQVMsQ0FBQyxLQUFNLE1BQ2hCQyxNQUFPLENBQUMsS0FBTSxNQUNkQyxhQUFjLENBQUMsS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxNQUN6TUMsSUFBSyxDQUFDLE9BMFJSLFNBQVNDLEVBQWNyMkcsR0FPckIsSUFMQSxJQUFJczJHLEdBQVksRUFJWkMsR0FBUSxFQUNIaHpJLEVBQUksRUFBR0EsRUFBSSxFQUFHQSxJQUNyQixJQUFLK3lJLEdBQWEsVUFBVXQ0SSxLQUFLZ2lDLEVBQUt6OEIsSUFDcEMreUksR0FBWSxPQUNQLElBQUtDLEdBQVNELEdBQXlCLE1BQVp0MkcsRUFBS3o4QixHQUNyQ2d6SSxHQUFRLE9BQ0gsR0FBSWh6SSxFQUFJLEVBQUcsQ0FDaEIsR0FBSSt5SSxJQUFjQyxJQUNYLFVBQVV2NEksS0FBS2dpQyxFQUFLejhCLElBQ3ZCLE9BQU8sRUFHWCxHQUFJZ3pJLElBQ0csSUFBSXY0SSxLQUFLZ2lDLEVBQUt6OEIsSUFDakIsT0FBTyxDQUdaLENBRUgsT0FBTyxDQUNULENBMmpCQSxJQUFJc3hJLEVBQWMsQ0FDaEIsUUFBUyxXQUNULFFBQVMsd0JBQ1QsUUFBUyxVQUNULFFBQVMsZ0JBQ1QsUUFBUyxxQkFDVCxRQUFTLG1CQUNULFFBQVMsdUJBQ1QsUUFBUyxVQUNULFFBQVMsNkVBQ1QsUUFBUywyQkFDVCxRQUFTLHdCQUNULFFBQVMsc0NBQ1QsUUFBUywyQ0FDVCxRQUFTLGdFQUNULFFBQVMscUNBQ1QsUUFBUyxXQUNULFFBQVMsNkNBRVQsUUFBUyxXQUNULFFBQVMsV0FDVCxRQUFTLFdBQ1QsUUFBUyxpRkFDVCxRQUFTLHFCQUVULFFBQVMsd0NBQ1QsUUFBUyxVQUNULFFBQVMsY0FDVCxRQUFTLDRCQUNULFFBQVMsVUFDVCxRQUFTLFdBQ1QsUUFBUyx3QkFDVCxRQUFTLGVBQ1QsUUFBUyx3REFDVCxRQUFTLFlBR1hBLEVBQVksU0FBV0EsRUFBWSxTQUNuQ0EsRUFBWSxTQUFXQSxFQUFZLFNBQ25DQSxFQUFZLFNBQVdBLEVBQVksU0FDbkNBLEVBQVksU0FBV0EsRUFBWSxTQUduQyxJQUFJRSxFQUFhLENBQ2YsUUE1dkNGLFNBQW1CeUIsR0FFakIsSUFBSUMsRUFBZUQsRUFBSXJ0SSxNQUFNLEVBQUcsR0FDNUIyMkgsRUFBUXozSCxTQUFTbXVJLEVBQUlydEksTUFBTSxFQUFHLEdBQUksSUFDbEMyMkgsRUFBUSxJQUNWQSxHQUFTLEdBQ1QyVyxFQUFlLEtBQUtud0ksT0FBT213SSxJQUNsQjNXLEVBQVEsSUFDakJBLEdBQVMsR0FDVDJXLEVBQWUsS0FBS253SSxPQUFPbXdJLElBRTNCQSxFQUFlLEtBQUtud0ksT0FBT213SSxHQUV6QjNXLEVBQVEsS0FDVkEsRUFBUSxJQUFJeDVILE9BQU93NUgsSUFFckIsSUFBSTVMLEVBQU8sR0FBRzV0SCxPQUFPbXdJLEVBQWMsS0FBS253SSxPQUFPdzVILEVBQU8sS0FBS3g1SCxPQUFPa3dJLEVBQUlydEksTUFBTSxFQUFHLElBQy9FLEtBQUssRUFBSStySSxFQUFRdndGLFNBQVN1dkUsRUFBTSxjQUM5QixPQUFPLEVBV1QsSUFQQSxJQUFJOGYsRUFBU3dDLEVBQUlqa0ksTUFBTSxJQUFJM08sS0FBSSxTQUFVQyxHQUN2QyxPQUFPd0UsU0FBU3hFLEVBQUcsR0FDdkIsSUFHTTZ5SSxFQUFnQixDQUFDLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsRUFBRyxHQUMxQzlELEVBQVcsRUFDTnJ2SSxFQUFJLEVBQUdBLEVBQUltekksRUFBYy95SSxPQUFRSixJQUN4Q3F2SSxHQUFZb0IsRUFBT3p3SSxHQUFLbXpJLEVBQWNuekksR0FHeEMsT0FEQXF2SSxFQUFXQSxFQUFXLElBQU8sR0FBSyxFQUFJQSxFQUFXLE1BQzdCb0IsRUFBTyxFQUM3QixFQTJ0Q0UsUUFuckNGLFNBQW1Cd0MsR0FDakJBLEVBQU1BLEVBQUlocEksUUFBUSxLQUFNLElBR3hCLElBQUltcEksRUFBWXR1SSxTQUFTbXVJLEVBQUlydEksTUFBTSxFQUFHLEdBQUksSUFDMUMsR0FBbUIsS0FBZnF0SSxFQUFJN3lJLE9BRUpnekksRUFERUEsRUFBWSxHQUNGLEtBQUtyd0ksT0FBT3F3SSxHQUVaLEtBQUtyd0ksT0FBT3F3SSxPQUVyQixDQUNMLEdBQXFCLFFBQWpCSCxFQUFJcnRJLE1BQU0sR0FDWixPQUFPLEVBRVQsS0FBSXd0SSxFQUFZLElBR2QsT0FBTyxFQUZQQSxFQUFZLEtB
15QUtyd0ksT0FBT3F3SSxFQUkzQixDQUV3QixJQUFyQkEsRUFBVWh6SSxTQUNaZ3pJLEVBQVksQ0FBQ0EsRUFBVXh0SSxNQUFNLEVBQUcsR0FBSSxJQUFLd3RJLEVBQVV4dEksTUFBTSxJQUFJcEwsS0FBSyxLQUlwRSxJQUFJK2hJLEVBQVF6M0gsU0FBU211SSxFQUFJcnRJLE1BQU0sRUFBRyxHQUFJLElBSXRDLEdBSEkyMkgsRUFBUSxLQUNWQSxHQUFTLElBRVBBLEVBQVEsR0FBSSxDQUVkLEdBQUl6M0gsU0FBU3N1SSxFQUFXLElBQU0sS0FDNUIsT0FBTyxFQUVUN1csR0FBUyxFQUNWLENBQ0dBLEVBQVEsS0FDVkEsRUFBUSxJQUFJeDVILE9BQU93NUgsSUFJckIsSUFBSTVMLEVBQU8sR0FBRzV0SCxPQUFPcXdJLEVBQVcsS0FBS3J3SSxPQUFPdzVILEVBQU8sS0FBS3g1SCxPQUFPa3dJLEVBQUlydEksTUFBTSxFQUFHLElBQzVFLEtBQUssRUFBSStySSxFQUFRdndGLFNBQVN1dkUsRUFBTSxjQUM5QixPQUFPLEVBSVQsR0FBbUIsS0FBZnNpQixFQUFJN3lJLFFBQ0YwRSxTQUFTbXVJLEVBQUssSUFBTSxJQUFPLEVBQUcsQ0FHaEMsSUFBSUksRUFBYXZ1SSxTQUFTbXVJLEVBQUlydEksTUFBTSxFQUFHLEdBQUksSUFBTSxHQUNqRCxLQUFJZCxTQUFTc3VJLEVBQVcsSUFBTSxNQUF1QixLQUFmQyxHQUtwQyxPQUFPLEVBSlAsR0FBbUMsSUFBL0J2dUksU0FBU211SSxFQUFJcnRJLE1BQU0sR0FBSSxJQUN6QixPQUFPLENBS1osQ0FFSCxPQUFPLENBQ1QsRUFvbkNFLFFBN21DRixTQUFtQnF0SSxHQUNqQixPQUFPdkMsRUFBV0ksVUFBVW1DLEVBQzlCLEVBNG1DRSxRQXBtQ0YsU0FBbUJBLEdBUWpCLElBTkEsSUFBSXhDLEVBQVN3QyxFQUFJamtJLE1BQU0sSUFBSTNPLEtBQUksU0FBVUMsR0FDdkMsT0FBT3dFLFNBQVN4RSxFQUFHLEdBQ3ZCLElBR01nekksRUFBYSxHQUNSdHpJLEVBQUksRUFBR0EsRUFBSXl3SSxFQUFPcndJLE9BQVMsRUFBR0osSUFBSyxDQUMxQ3N6SSxFQUFXeGxJLEtBQUssSUFDaEIsSUFBSyxJQUFJbkUsRUFBSSxFQUFHQSxFQUFJOG1JLEVBQU9yd0ksT0FBUyxFQUFHdUosSUFDakM4bUksRUFBT3p3SSxLQUFPeXdJLEVBQU85bUksS0FDdkIycEksRUFBV3R6SSxJQUFNMkosRUFHdEIsQ0FNRCxHQUhBMnBJLEVBQWFBLEVBQVd0eEksUUFBTyxTQUFVMUIsR0FDdkMsT0FBT0EsRUFBRUYsT0FBUyxDQUN0QixJQUM0QixJQUF0Qmt6SSxFQUFXbHpJLFFBQXNDLElBQXRCa3pJLEVBQVdsekksT0FDeEMsT0FBTyxFQUlULEdBQTZCLElBQXpCa3pJLEVBQVcsR0FBR2x6SSxPQUFjLENBSzlCLElBSkEsSUFBSW16SSxFQUFpQkQsRUFBVyxHQUFHdGtJLE1BQU0sSUFBSTNPLEtBQUksU0FBVUMsR0FDekQsT0FBT3dFLFNBQVN4RSxFQUFHLEdBQ3pCLElBQ1FrekksRUFBWSxFQUNQM2YsRUFBSyxFQUFHQSxFQUFLMGYsRUFBZW56SSxPQUFTLEVBQUd5ekgsSUFDM0MwZixFQUFlMWYsR0FBTSxJQUFNMGYsRUFBZTFmLEVBQUssS0FDakQyZixHQUFhLEdBR2pCLEdBQWtCLElBQWRBLEVBQ0YsT0FBTyxDQUVWLENBQ0QsT0FBTzlDLEVBQVdFLGFBQWFxQyxFQUNqQyxFQTRqQ0UsUUFwakNGLFNBQW1CQSxHQUNqQkEsRUFBTUEsRUFBSWhwSSxRQUFRLEtBQU0sSUFHeEIsSUFBSTQ1QyxFQUFPLytDLFNBQVNtdUksRUFBSXJ0SSxNQUFNLEVBQUcsR0FBSSxJQUVyQyxPQURvQnF0SSxFQUFJcnRJLE1BQU0sRUFBRyxJQUUvQixJQUFLLElBQ0wsSUFBSyxJQUNMLElBQUssSUFDTCxJQUFLLElBQ0hpK0MsRUFBTyxLQUFLOWdELE9BQU84Z0QsR0FDbkIsTUFDRixJQUFLLElBQ0wsSUFBSyxJQUVEQSxFQURFQSxFQUFPLEdBQ0YsS0FBSzlnRCxPQUFPOGdELEdBRVosS0FBSzlnRCxPQUFPOGdELEdBRXJCLE1BQ0YsUUFDRSxHQUFJQSxFQUFPLEdBQ1RBLEVBQU8sS0FBSzlnRCxPQUFPOGdELE9BQ2QsTUFBSUEsRUFBTyxJQUdoQixPQUFPLEVBRlBBLEVBQU8sS0FBSzlnRCxPQUFPOGdELEVBR3BCLEVBSWUsSUFBaEJBLEVBQUt6akQsU0FDUHlqRCxFQUFPLENBQUNBLEVBQUtqK0MsTUFBTSxFQUFHLEdBQUksSUFBS2krQyxFQUFLaitDLE1BQU0sSUFBSXBMLEtBQUssS0FHckQsSUFBSW0ySCxFQUFPLEdBQUc1dEgsT0FBTzhnRCxFQUFNLEtBQUs5Z0QsT0FBT2t3SSxFQUFJcnRJLE1BQU0sRUFBRyxHQUFJLEtBQUs3QyxPQUFPa3dJLEVBQUlydEksTUFBTSxFQUFHLElBQ2pGLEtBQUssRUFBSStySSxFQUFRdndGLFNBQVN1dkUsRUFBTSxjQUM5QixPQUFPLEVBVVQsSUFOQSxJQUFJOGYsRUFBU3dDLEVBQUlqa0ksTUFBTSxJQUFJM08sS0FBSSxTQUFVQyxHQUN2QyxPQUFPd0UsU0FBU3hFLEVBQUcsR0FDdkIsSUFDTSt1SSxFQUFXLEVBQ1hvRSxFQUFTLEVBRUp6ekksRUFBSSxFQUFHQSxFQUFJLEVBQUdBLElBQ3JCcXZJLEdBQVlvQixFQUFPendJLEdBQUt5ekksRUFFVCxLQURmQSxHQUFVLEtBRVJBLEVBQVMsR0FJYixPQUFpQixLQURqQnBFLEdBQVksTUFJUSxJQUFiQSxFQUErQixJQUFkb0IsRUFBTyxHQUFXQSxFQUFPLEtBQU8sR0FBS3BCLEVBQy9ELEVBeS9CRSxRQWwvQkYsU0FBbUI0RCxHQU9qQixJQUxBLElBQUl4QyxFQUFTd0MsRUFBSXJ0SSxNQUFNLEVBQUcsR0FBR29KLE1BQU0sSUFBSTNPLEtBQUksU0FBVUMsR0FDbkQsT0FBT3dFLFNBQVN4RSxFQUFHLEdBQ3ZCLElBQ00rdUksRUFBVyxFQUVOcnZJLEVBQUksRUFBR0EsRUFBSXl3SSxFQUFPcndJLE9BQVFKLEdBQUssRUFDdENxdkksR0FBWW9CLEVBQU96d0ksR0FJckIsSUFBSyxJQUFJK3pILEVBQU0sRUFBR0EsRUFBTTBjLEVBQU9yd0ksT0FBUTJ6SCxHQUFPLEVBQ3hDMGMsRUFBTzFjLEdBQU8sRUFDaEJzYixHQUFZLEVBQUlvQixFQUFPMWMsSUFFdkJzYixHQUFZLEdBQUtvQixFQUFPMWMsR0FBTyxHQUFLLEVBQ2hDMGMsRUFBTzFjLEdBQU8sSUFDaEJzYixHQUFZLElBSWxCLE9BQU9wckcsT0FBT3VMLGFBQWE2L0YsRUFBVyxHQUFLLE1BQVE0RCxFQUFJdnRJLE9BQU8sRUFDaEUsRUE0OUJFLFFBbjlCRixTQUFtQnV0SSxHQU1qQixJQUpBLElBQUl4QyxFQUFTd0MsRUFBSWprSSxNQUFNLElBQUkzTyxLQUFJLFNBQVVDLEdBQ3ZDLE9BQU93RSxTQUFTeEUsRUFBRyxHQUN2QixJQUNNK3VJLEVBQVcsRUFDTnJ2SSxFQUFJLEVBQUdBLEVBQUksRUFBR0EsSUFDckJxdkksR0FBWW9CLEVBQU96d0ksR0FBS3BDLEtB
15QUtrdEMsSUFBSSxFQUFHLEVBQUk5cUMsR0FFMUMsT0FBT3F2SSxFQUFXLEdBQUssS0FBT29CLEVBQU8sRUFDdkMsRUEwOEJFLFFBbHRDRixTQUF1Qm51RixHQUNyQixJQUFJb3hGLEVBQWNweEYsRUFBTXR6QyxNQUFNLElBQzFCMmtJLEVBQU9ELEVBQVkxeEksUUFBTyxTQUFVd2MsRUFBR2t4RyxHQUN6QyxPQUFPQSxFQUFNLENBQ2pCLElBQUtydkgsS0FBSSxTQUFVTCxHQUNmLE9BQW1CLEVBQVp3YSxPQUFPeGEsRUFDZixJQUFFeEYsS0FBSyxJQUFJd1UsTUFBTSxJQUNkc3FCLEVBQVFvNkcsRUFBWTF4SSxRQUFPLFNBQVV3YyxFQUFHa3hHLEdBQzFDLFFBQVNBLEVBQU0sRUFDaEIsSUFBRTNzSCxPQUFPNHdJLEdBQU10ekksS0FBSSxTQUFVTCxHQUM1QixPQUFPd2EsT0FBT3hhLEVBQ2YsSUFBRWlwRCxRQUFPLFNBQVV4L0MsRUFBS3F1RCxHQUN2QixPQUFPcnVELEVBQU1xdUQsQ0FDakIsSUFDRSxPQUFPeCtCLEVBQVEsSUFBTyxDQUN4QixFQW9zQ0UsUUE5N0JGLFNBQW1CMjVHLEdBQ2pCLElBQUk1RCxFQUFXcUIsRUFBV00sc0JBQXNCaUMsRUFBSWprSSxNQUFNLElBQUlwSixNQUFNLEVBQUcsR0FBR3ZGLEtBQUksU0FBVUMsR0FDdEYsT0FBT3dFLFNBQVN4RSxFQUFHLE9BQ2pCLEdBS0osT0FKbUIsSUFBZjJ5SSxFQUFJN3lJLFFBQTJCLE1BQVg2eUksRUFBSSxLQUMxQjVELEdBQTBDLEdBQTdCNEQsRUFBSSxHQUFHM3ZHLFdBQVcsR0FBSyxLQUdyQixLQURqQityRyxHQUFZLElBRXNCLE1BQXpCNEQsRUFBSSxHQUFHdHRJLGNBRVRzdEksRUFBSSxHQUFHdHRJLGdCQUFrQnMrQixPQUFPdUwsYUFBYSxHQUFLNi9GLEVBQzNELEVBbTdCRSxRQWg1QkYsU0FBbUI0RCxHQUNqQixPQUF1RCxJQWpCekQsV0FDRSxJQUFJbDdDLEVBQVcsR0FDZixJQUFLLElBQUlqdUYsS0FBWW1vSSxFQUdmQSxFQUFpQm53RyxlQUFlaDRCLElBQ2xDaXVGLEVBQVNqcUYsS0FBSzVHLE1BQU02d0YsRUFBVTY1QyxFQUFtQkssRUFBaUJub0ksS0FHdEUsT0FBT2l1RixDQUNULENBT1M2N0MsR0FBa0JseEksUUFBUXV3SSxFQUFJcnRJLE1BQU0sRUFBRyxHQUNoRCxFQSs0QkUsUUFyNEJGLFNBQW1CcXRJLEdBSWpCLElBSEEsSUFBSVksRUFBUSxFQUNScEQsRUFBU3dDLEVBQUlqa0ksTUFBTSxJQUNuQmcwSCxFQUFRbCtILFNBQVMyckksRUFBT3I3RixNQUFPLElBQzFCcDFDLEVBQUksRUFBR0EsRUFBSXl3SSxFQUFPcndJLE9BQVFKLElBQ2pDNnpJLEdBQVNwRCxFQUFPLEVBQUl6d0ksSUFBTSxFQUFJQSxFQUFJLEdBRXBDLElBQUk4ekksRUFBUSxHQUFLRCxFQUFRLEdBTXpCLE9BTGMsS0FBVkMsRUFDRkEsRUFBUSxFQUNXLEtBQVZBLElBQ1RBLEVBQVEsR0FFSDlRLElBQVU4USxDQUNuQixFQXczQkUsUUFoM0JGLFNBQW1CYixHQUVqQixJQUFJYyxFQUFRZCxFQUFJdHRJLGNBQWNxSixNQUFNLElBR3BDLEdBQUl5TCxNQUFNM1YsU0FBU2l2SSxFQUFNLEdBQUksTUFBUUEsRUFBTTN6SSxPQUFTLEVBQUcsQ0FDckQsSUFBSTR6SSxFQUFlLEVBQ25CLE9BQVFELEVBQU0sSUFDWixJQUFLLElBQ0hDLEVBQWUsRUFDZixNQUNGLElBQUssSUFDSEEsRUFBZSxFQUluQkQsRUFBTWpqSSxPQUFPLEVBQUcsRUFBR2tqSSxFQUV2QixNQUNJLEtBQU9ELEVBQU0zekksT0FBUyxHQUNwQjJ6SSxFQUFNNWpJLFFBQVEsR0FNbEI0akksRUFBUUEsRUFBTXY1SSxLQUFLLElBQ25CLElBQUk2MEksRUFBV3ZxSSxTQUFTaXZJLEVBQU1udUksTUFBTSxFQUFHLEdBQUksSUFBTSxHQUNqRCxPQUFPbXVJLEVBQU0sS0FIQSxDQUFDLElBQUssSUFBSyxJQUFLLElBQUssSUFBSyxJQUFLLElBQUssSUFBSyxJQUFLLElBQUssSUFBSyxJQUFLLElBQUssSUFBSyxJQUFLLElBQUssSUFBSyxJQUFLLElBQUssSUFBSyxJQUFLLElBQUssS0FHakcxRSxFQUM3QixFQW8xQkUsUUEzMEJGLFNBQW1CNEQsR0FFakIsSUFBSUcsRUFBWUgsRUFBSXJ0SSxNQUFNLEVBQUcsR0FFN0IsT0FEb0JxdEksRUFBSXJ0SSxNQUFNLEVBQUcsSUFFL0IsSUFBSyxJQUNMLElBQUssSUFDSHd0SSxFQUFZLEtBQUtyd0ksT0FBT3F3SSxHQUN4QixNQUNGLElBQUssSUFDTCxJQUFLLElBQ0hBLEVBQVksS0FBS3J3SSxPQUFPcXdJLEdBQ3hCLE1BQ0YsUUFDRUEsRUFBWSxLQUFLcndJLE9BQU9xd0ksR0FJNUIsSUFBSXppQixFQUFPLEdBQUc1dEgsT0FBT3F3SSxFQUFXLEtBQUtyd0ksT0FBT2t3SSxFQUFJcnRJLE1BQU0sRUFBRyxHQUFJLEtBQUs3QyxPQUFPa3dJLEVBQUlydEksTUFBTSxFQUFHLElBQ3RGLEtBQUssRUFBSStySSxFQUFRdndGLFNBQVN1dkUsRUFBTSxjQUM5QixPQUFPLEVBVVQsSUFOQSxJQUFJOGYsRUFBU3dDLEVBQUlqa0ksTUFBTSxJQUFJM08sS0FBSSxTQUFVQyxHQUN2QyxPQUFPd0UsU0FBU3hFLEVBQUcsR0FDdkIsSUFDTSt1SSxFQUFXLEVBQ1hvRSxFQUFTLEVBRUp6ekksRUFBSSxFQUFHQSxFQUFJLEdBQUlBLElBQ3RCcXZJLEdBQVlvQixFQUFPendJLEdBQUt5ekksRUFFVCxNQURmQSxHQUFVLEtBRVJBLEVBQVMsR0FJYixHQUFJcEUsRUFBVyxJQUFPLEdBQUksQ0FDeEJBLEVBQVcsRUFDWG9FLEVBQVMsRUFDVCxJQUFLLElBQUl2ZixFQUFNLEVBQUdBLEVBQU0sR0FBSUEsSUFDMUJtYixHQUFZb0IsRUFBT3ZjLEdBQU91ZixFQUVYLE1BRGZBLEdBQVUsS0FFUkEsRUFBUyxHQUdiLEdBQUlwRSxFQUFXLElBQU8sR0FDcEIsT0FBc0IsSUFBZm9CLEVBQU8sR0FFakIsQ0FDRCxPQUFPcEIsRUFBVyxLQUFPb0IsRUFBTyxHQUNsQyxFQXV4QkUsUUEvd0JGLFNBQW1Cd0MsR0FFakIsSUFBSUcsRUFBWUgsRUFBSXJ0SSxNQUFNLEVBQUcsR0FFN0IsT0FEcUJxdEksRUFBSXJ0SSxNQUFNLEVBQUcsSUFFaEMsSUFBSyxJQUNId3RJLEVBQVksS0FBS3J3SSxPQUFPcXdJLEdBQ3hCLE1BQ0YsSUFBSyxJQUNIQSxFQUFZLEtBQUtyd0ksT0FBT3F3SSxHQUN4QixNQUNGLFFBQ0VBLEVBQVksS0FBS3J3SSxPQUFPcXdJLEdBSTVCLElBQUl6aUIsRUFBTyxHQUFHNXRILE9BQU9xd0ksRUFBVyxLQUFLcndJLE9BQU9rd0ksRUFBSXJ0SSxNQUFNLEVBQUcsR0FBSSxLQUFLN0MsT0FBT2t3SSxFQUFJcnRJLE1BQU0sRUFBRyxJQUN0RixLQUFLLEVBQUkrckksRUFBUXZ3RixTQUFTdXZFLEVBQU0sY0FDOUIsT0FBTyxFQUlULElBQUkwZSxFQUFXdnFJLFNBQVNtdUksRUFBSXJ0SSxNQUFNLEVBQUcsR0FBS3F0SSxFQUFJcnRJLE1BQU0sRUFBRyxJQUFLLElBQU0sR0FDbEUsT0FBSXlwSSxFQUFXLEdBQ05BLElBQWF2cUksU0FBU211SSxFQUFJcnRJLE1BQU0sSUFBSyxJQUd6QixDQUFDLElBQUssSUFBSyxJQUFLLElBQUssSUFBSyxJQUFLLElBQUssSUFBSyxJQUFLLElBQUssSUFBSyxJQUFLLElBQUssSUFBSyxJQUFLLElBQUssSUFBSyxJQUFLLElBQUssSUFBSyxLQUQxSHlwSSxHQUFZLE1BRXdCNEQsRUFBSXJ0SSxNQUFNLEdBQ2hELEVBbXZCRSxRQTV1QkYsU0FBbUJxdEksR0FFakIsR0FBd0IsT0FBcEJBLEVBQUlydEksTUFBTSxFQUFHLElBQW1DLE9BQXBCcXRJLEVBQUlydEksTUFBTSxFQUFHLEdBQWEsQ0FFeEQsSUFBSStxSCxFQUFPLEdBQUc1dEgsT0FBT2t3SSxFQUFJcnRJLE1BQU0sRUFBRyxHQU
15FJLEtBQUs3QyxPQUFPa3dJLEVBQUlydEksTUFBTSxFQUFHLEdBQUksS0FBSzdDLE9BQU9rd0ksRUFBSXJ0SSxNQUFNLEVBQUcsSUFDNUYsS0FBSyxFQUFJK3JJLEVBQVF2d0YsU0FBU3V2RSxFQUFNLFlBQzlCLE9BQU8sQ0FFVixDQUNELElBQUkwZSxFQUFXLEdBQUt2cUksU0FBU211SSxFQUFJcnRJLE1BQU0sRUFBRyxHQUFJLElBQU0sR0FDaERxdUksRUFBY252SSxTQUFTbXVJLEVBQUlydEksTUFBTSxFQUFHLElBQUssSUFDN0MsT0FBSXlwSSxJQUFhNEUsSUFDZjVFLEVBQVcsR0FBS3ZxSSxTQUFTLElBQUkvQixPQUFPa3dJLEVBQUlydEksTUFBTSxFQUFHLElBQUssSUFBTSxNQUMzQ3F1SSxDQUtyQixFQTJ0QkUsUUFwdEJGLFNBQW1CaEIsR0FJakIsT0FIQUEsRUFBTUEsRUFBSWhwSSxRQUFRLE1BQU8sSUFDVm5GLFNBQVNtdUksRUFBSXJ0SSxNQUFNLEVBQUcsSUFBSyxJQUFNLE1BQzlCZCxTQUFTbXVJLEVBQUlydEksTUFBTSxHQUFJLElBQUssR0FFaEQsRUFndEJFLFFBenNCRixTQUFtQnF0SSxHQUVqQixJQUFJdGlCLEVBQU8sR0FBRzV0SCxPQUFPa3dJLEVBQUlydEksTUFBTSxFQUFHLEdBQUksS0FBSzdDLE9BQU9rd0ksRUFBSXJ0SSxNQUFNLEVBQUcsR0FBSSxLQUFLN0MsT0FBT2t3SSxFQUFJcnRJLE1BQU0sRUFBRyxJQUM1RixTQUFLLEVBQUkrckksRUFBUXZ3RixTQUFTdXZFLEVBQU0sa0JBSzNCK2YsRUFBV0ksVUFBVW1DLEVBQUlydEksTUFBTSxFQUFHLE1BSWhDOHFJLEVBQVdPLGNBQWMsR0FBR2x1SSxPQUFPa3dJLEVBQUlydEksTUFBTSxFQUFHLEtBQUs3QyxPQUFPa3dJLEVBQUksTUFDekUsRUE2ckJFLFFBdHJCRixTQUFtQkEsR0FDakIsT0FBT3ZDLEVBQVdFLGFBQWFxQyxFQUNqQyxFQXFyQkUsUUE5cUJGLFNBQW1CQSxHQU1qQixJQUpBLElBQUl4QyxFQUFTd0MsRUFBSWprSSxNQUFNLElBQUkzTyxLQUFJLFNBQVVDLEdBQ3ZDLE9BQU93RSxTQUFTeEUsRUFBRyxHQUN2QixJQUNNK3VJLEVBQVcsRUFDTnJ2SSxFQUFJLEVBQUdBLEVBQUksRUFBR0EsSUFDckJxdkksR0FBWW9CLEVBQU96d0ksSUFBTUEsRUFBSSxHQUUvQixPQUFPcXZJLEVBQVcsS0FBT29CLEVBQU8sRUFDbEMsRUFxcUJFLFFBaG5CRixTQUFtQndDLEdBRWpCLElBQUljLEVBQVFkLEVBQUl0dEksY0FBY3FKLE1BQU0sSUFHcEMsSUFBSzhqSSxFQUFjaUIsRUFBTW51SSxNQUFNLEVBQUcsSUFDaEMsT0FBTyxFQUVULElBQUtrdEksRUFBY2lCLEVBQU1udUksTUFBTSxFQUFHLElBQ2hDLE9BQU8sRUFpQlQsSUFiQSxJQUNJc3VJLEVBQWlCLENBQ25CMS9GLEVBQUcsSUFDSHZWLEVBQUcsSUFDSHV2RyxFQUFHLElBQ0hFLEVBQUcsSUFDSEMsRUFBRyxJQUNIQyxFQUFHLElBQ0hDLEVBQUcsSUFDSEMsRUFBRyxJQUNIQyxFQUFHLElBQ0hDLEVBQUcsS0FFSTVhLEVBQU0sRUFBRytmLEVBYkssQ0FBQyxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQUksR0FBSSxJQWFXL2YsRUFBTStmLEVBQWtCL3pJLE9BQVFnMEgsSUFBTyxDQUM3RixJQUFJcDBILEVBQUltMEksRUFBa0IvZixHQUN0QjJmLEVBQU0vekksS0FBTWswSSxHQUNkSCxFQUFNampJLE9BQU85USxFQUFHLEVBQUdrMEksRUFBZUgsRUFBTS96SSxJQUUzQyxDQUdELElBY0l1OEgsRUFkZ0IsQ0FDbEJyOUYsRUFBRyxLQUNIK3VHLEVBQUcsS0FDSDd1RyxFQUFHLEtBQ0g4dUcsRUFBRyxLQUNIbnZHLEVBQUcsS0FDSHF2RyxFQUFHLEtBQ0g1NUYsRUFBRyxLQUNIdlYsRUFBRyxLQUNIeXZHLEVBQUcsS0FDSEUsRUFBRyxLQUNIQyxFQUFHLEtBQ0hDLEVBQUcsTUFFcUJpRixFQUFNLElBQzVCdlgsRUFBTTEzSCxTQUFTaXZJLEVBQU0sR0FBS0EsRUFBTSxJQUFLLElBQ3JDdlgsRUFBTSxLQUNSQSxHQUFPLElBRUxBLEVBQU0sS0FDUkEsRUFBTSxJQUFJejVILE9BQU95NUgsSUFFbkIsSUFBSTdMLEVBQU8sR0FBRzV0SCxPQUFPZ3hJLEVBQU0sSUFBSWh4SSxPQUFPZ3hJLEVBQU0sR0FBSSxLQUFLaHhJLE9BQU93NUgsRUFBTyxLQUFLeDVILE9BQU95NUgsR0FDL0UsS0FBSyxFQUFJbVYsRUFBUXZ3RixTQUFTdXZFLEVBQU0sWUFDOUIsT0FBTyxFQUtULElBREEsSUFBSTBlLEVBQVcsRUFDTmhiLEVBQU0sRUFBR0EsRUFBTTBmLEVBQU0zekksT0FBUyxFQUFHaTBILEdBQU8sRUFBRyxDQUNsRCxJQUFJK2YsRUFBY3R2SSxTQUFTaXZJLEVBQU0xZixHQUFNLElBQ25DNTVHLE1BQU0yNUgsS0FDUkEsRUFBY0wsRUFBTTFmLEdBQUsvd0YsV0FBVyxHQUFLLElBRTNDK3JHLEdBQVkrRSxDQUNiLENBZ0NELElBL0JBLElBQUlDLEVBQWMsQ0FFaEJuMUcsRUFBRyxFQUNIK3VHLEVBQUcsRUFDSDd1RyxFQUFHLEVBQ0g4dUcsRUFBRyxFQUNIbnZHLEVBQUcsRUFDSDQ4RixFQUFHLEdBQ0h3UyxFQUFHLEdBQ0hDLEVBQUcsR0FDSEMsRUFBRyxHQUNIQyxFQUFHLEdBQ0hDLEVBQUcsRUFDSC81RixFQUFHLEVBQ0h2VixFQUFHLEdBQ0h1dkcsRUFBRyxHQUNIQyxFQUFHLEdBQ0hDLEVBQUcsRUFDSEMsRUFBRyxFQUNIQyxFQUFHLEVBQ0hDLEVBQUcsR0FDSEMsRUFBRyxHQUNIQyxFQUFHLEdBQ0hDLEVBQUcsR0FDSEMsRUFBRyxHQUNIOUMsRUFBRyxHQUNIQyxFQUFHLEdBQ0hDLEVBQUcsR0FDSCxFQUFHLEVBQ0gsRUFBRyxHQUVJaUksRUFBTSxFQUFHQSxFQUFNUCxFQUFNM3pJLE9BQVMsRUFBR2swSSxHQUFPLEVBQUcsQ0FDbEQsSUFBSUMsRUFBZSxFQUNuQixHQUFJUixFQUFNTyxLQUFRRCxFQUNoQkUsRUFBZUYsRUFBWU4sRUFBTU8sUUFDNUIsQ0FDTCxJQUFJbnpILEVBQWFyYyxTQUFTaXZJLEVBQU1PLEdBQU0sSUFDdENDLEVBQWUsRUFBSXB6SCxFQUFhLEVBQzVCQSxFQUFhLElBQ2ZvekgsR0FBZ0IsRUFFbkIsQ0FDRGxGLEdBQVlrRixDQUNiLENBQ0QsT0FBSXR3RyxPQUFPdUwsYUFBYSxHQUFLNi9GLEVBQVcsTUFBUTBFLEVBQU0sR0FJeEQsRUEyZkUsUUFqZkYsU0FBbUJkLEdBR2pCLElBQUl6VyxHQUZKeVcsRUFBTUEsRUFBSWhwSSxRQUFRLEtBQU0sS0FFVnJFLE1BQU0sRUFBRyxHQUN2QixHQUFZLE9BQVI0MkgsRUFBYyxDQUdoQixHQUFjLE9BREZ5VyxFQUFJcnRJLE1BQU0sRUFBRyxHQUNMLENBRWxCLElBQUl3dEksRUFBWUgsRUFBSXJ0SSxNQUFNLEVBQUcsR0FDN0IsT0FBUXF0SSxFQUFJLElBQ1YsSUFBSyxJQUNIRyxFQUFZLEtB
15QUtyd0ksT0FBT3F3SSxHQUN4QixNQUNGLElBQUssSUFDSEEsRUFBWSxLQUFLcndJLE9BQU9xd0ksR0FDeEIsTUFDRixRQUNFQSxFQUFZLEtBQUtyd0ksT0FBT3F3SSxHQUk1QixJQUFJemlCLEVBQU8sR0FBRzV0SCxPQUFPcXdJLEVBQVcsS0FBS3J3SSxPQUFPa3dJLEVBQUlydEksTUFBTSxFQUFHLEdBQUksS0FBSzdDLE9BQU95NUgsR0FDekUsS0FBSyxFQUFJbVYsRUFBUXZ3RixTQUFTdXZFLEVBQU0sY0FDOUIsT0FBTyxDQUVWLENBS0QsSUFGQSxJQUFJMGUsRUFBVyxLQUNYOEQsRUFBZ0IsQ0FBQyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsRUFBRyxHQUN4Q256SSxFQUFJLEVBQUdBLEVBQUlpekksRUFBSTd5SSxPQUFTLEVBQUdKLElBQ2xDcXZJLEdBQVl2cUksU0FBU211SSxFQUFJanpJLEdBQUksSUFBTW16SSxFQUFjbnpJLEdBRW5ELE9BQU84RSxTQUFTbXVJLEVBQUksSUFBSyxNQUFRNUQsRUFBVyxFQUM3QyxDQUNELE9BQU8sQ0FDVCxFQTZjRSxRQXRjRixTQUFtQjRELEdBQ2pCLEdBQW1CLElBQWZBLEVBQUk3eUksT0FBYyxDQUlwQixJQUZBLElBQUkyekksRUFBUWQsRUFBSXR0SSxjQUFjcUosTUFBTSxJQUU3QitrSSxFQUFNM3pJLE9BQVMsR0FDcEIyekksRUFBTTVqSSxRQUFRLEdBR2hCLE9BQVE4aUksRUFBSSxJQUNWLElBQUssSUFDTCxJQUFLLElBQ0gsR0FBK0IsSUFBM0JudUksU0FBU2l2SSxFQUFNLEdBQUksSUFDckIsT0FBTyxFQUVULE1BQ0YsUUFFSSxJQUFJUyxFQUFhMXZJLFNBQVNpdkksRUFBTXY1SSxLQUFLLElBQUlvTCxNQUFNLEVBQUcsR0FBSSxJQUN0RCxHQUFJNHVJLEVBQWEsS0FDZixPQUFPLEVBR1QsR0FBSUEsSUFEYzF2SSxTQUFTaXZJLEVBQU12NUksS0FBSyxJQUFJb0wsTUFBTSxFQUFHLEdBQUksSUFFckQsT0FBTyxFQUloQixDQUNELE9BQU8sQ0FDVCxFQXlhRSxRQWphRixTQUFtQnF0SSxHQUNqQixPQUFPdkMsRUFBV00sc0JBQXNCaUMsRUFBSWprSSxNQUFNLElBQUlwSixNQUFNLEVBQUcsR0FBR3ZGLEtBQUksU0FBVUMsR0FDOUUsT0FBT3dFLFNBQVN4RSxFQUFHLEdBQ3ZCLElBQU0sR0FBSyxLQUFPd0UsU0FBU211SSxFQUFJLEdBQUksR0FDbkMsRUE4WkUsUUF0WkYsU0FBbUJBLEdBRWpCLEdBQW1CLEtBQWZBLEVBQUk3eUksT0FBZSxDQUlyQixJQUZBLElBQUltcEMsRUFBUyxDQUFDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUNsQ2tyRyxFQUFZLEVBQ1B6MEksRUFBSSxFQUFHQSxFQUFJdXBDLEVBQU9ucEMsT0FBUUosSUFDakN5MEksR0FBYTN2SSxTQUFTbXVJLEVBQUlqekksR0FBSSxJQUFNdXBDLEVBQU92cEMsR0FHN0MsT0FBa0IsTUFEbEJ5MEksR0FBYSxLQUlOQSxJQUFjM3ZJLFNBQVNtdUksRUFBSSxHQUFJLEdBQ3ZDLENBSUQsSUFBSUcsRUFBWUgsRUFBSXJ0SSxNQUFNLEVBQUcsR0FDekIyMkgsRUFBUXozSCxTQUFTbXVJLEVBQUlydEksTUFBTSxFQUFHLEdBQUksSUFDbEMyMkgsRUFBUSxJQUNWNlcsRUFBWSxLQUFLcndJLE9BQU9xd0ksR0FDeEI3VyxHQUFTLElBQ0FBLEVBQVEsSUFDakI2VyxFQUFZLEtBQUtyd0ksT0FBT3F3SSxHQUN4QjdXLEdBQVMsSUFDQUEsRUFBUSxJQUNqQjZXLEVBQVksS0FBS3J3SSxPQUFPcXdJLEdBQ3hCN1csR0FBUyxJQUNBQSxFQUFRLElBQ2pCNlcsRUFBWSxLQUFLcndJLE9BQU9xd0ksR0FDeEI3VyxHQUFTLElBRVQ2VyxFQUFZLEtBQUtyd0ksT0FBT3F3SSxHQUd0QjdXLEVBQVEsS0FDVkEsRUFBUSxJQUFJeDVILE9BQU93NUgsSUFHckIsSUFBSTVMLEVBQU8sR0FBRzV0SCxPQUFPcXdJLEVBQVcsS0FBS3J3SSxPQUFPdzVILEVBQU8sS0FBS3g1SCxPQUFPa3dJLEVBQUlydEksTUFBTSxFQUFHLElBQzVFLEtBQUssRUFBSStySSxFQUFRdndGLFNBQVN1dkUsRUFBTSxjQUM5QixPQUFPLEVBTVQsSUFGQSxJQUFJMGUsRUFBVyxFQUNYbHVILEVBQWEsRUFDUnV6SCxFQUFNLEVBQUdBLEVBQU16QixFQUFJN3lJLE9BQVMsRUFBR3MwSSxJQUN0Q3JGLEdBQVl2cUksU0FBU211SSxFQUFJeUIsR0FBTSxJQUFNdnpILEVBQWEsSUFDbERBLEdBQWMsR0FDRyxHQUNmQSxFQUFhLEVBQ1csSUFBZkEsSUFDVEEsR0FBYyxHQUlsQixPQURBa3VILEVBQVcsR0FBS0EsRUFBVyxNQUNQdnFJLFNBQVNtdUksRUFBSSxJQUFLLEdBQ3hDLEVBNFZFLFFBblZGLFNBQW1CQSxHQUNqQixHQUFtQixLQUFmQSxFQUFJN3lJLE9BQWUsQ0FDckIsSUFBSXUwSSxFQUNBakYsRUFFSixHQURBaUYsRUFBTyxFQUdDLGdCQUFSMUIsR0FBaUMsZ0JBQVJBLEdBQWlDLGdCQUFSQSxHQUFpQyxnQkFBUkEsR0FBaUMsZ0JBQVJBLEdBQWlDLGdCQUFSQSxHQUFpQyxnQkFBUkEsR0FBaUMsZ0JBQVJBLEdBQWlDLGdCQUFSQSxHQUFpQyxnQkFBUkEsRUFBdUIsT0FBTyxFQUMvUCxJQUFLLElBQUlqekksRUFBSSxFQUFHQSxHQUFLLEVBQUdBLElBQUsyMEksR0FBUTd2SSxTQUFTbXVJLEVBQUl2ZCxVQUFVMTFILEVBQUksRUFBR0EsR0FBSSxLQUFPLEdBQUtBLEdBR25GLEdBRGtCLE1BRGxCMHZJLEVBQW1CLEdBQVBpRixFQUFZLE1BQ0ZqRixFQUFZLEdBQzlCQSxJQUFjNXFJLFNBQVNtdUksRUFBSXZkLFVBQVUsRUFBRyxJQUFLLElBQUssT0FBTyxFQUM3RGlmLEVBQU8sRUFDUCxJQUFLLElBQUlDLEVBQU0sRUFBR0EsR0FBTyxHQUFJQSxJQUFPRCxHQUFRN3ZJLFNBQVNtdUksRUFBSXZkLFVBQVVrZixFQUFNLEVBQUdBLEdBQU0sS0FBTyxHQUFLQSxHQUc5RixPQURrQixNQURsQmxGLEVBQW1CLEdBQVBpRixFQUFZLE1BQ0ZqRixFQUFZLEdBQzlCQSxJQUFjNXFJLFNBQVNtdUksRUFBSXZkLFVBQVUsR0FBSSxJQUFLLEdBRW5ELENBQ0QsR0FFUSxtQkFBUnVkLEdBQW9DLG1CQUFSQSxHQU
15FvQyxtQkFBUkEsR0FBb0MsbUJBQVJBLEdBQW9DLG1CQUFSQSxHQUFvQyxtQkFBUkEsR0FBb0MsbUJBQVJBLEdBQW9DLG1CQUFSQSxHQUFvQyxtQkFBUkEsR0FBb0MsbUJBQVJBLEVBQzFQLE9BQU8sRUFPVCxJQUxBLElBQUk3eUksRUFBUzZ5SSxFQUFJN3lJLE9BQVMsRUFDdEJpOEcsRUFBYzQyQixFQUFJdmQsVUFBVSxFQUFHdDFILEdBQy9CeTBJLEVBQWU1QixFQUFJdmQsVUFBVXQxSCxHQUM3QjJpSSxFQUFNLEVBQ052N0gsRUFBTXBILEVBQVMsRUFDVjAwSSxFQUFNMTBJLEVBQVEwMEksR0FBTyxFQUFHQSxJQUMvQi9SLEdBQU8xbUIsRUFBWTMyRyxPQUFPdEYsRUFBUzAwSSxHQUFPdHRJLEdBQzFDQSxHQUFPLEdBQ0csSUFDUkEsRUFBTSxHQUdWLElBQUkwN0IsRUFBUzYvRixFQUFNLEdBQUssRUFBSSxFQUFJLEdBQUtBLEVBQU0sR0FDM0MsR0FBSTcvRixJQUFXcCtCLFNBQVMrdkksRUFBYW52SSxPQUFPLEdBQUksSUFDOUMsT0FBTyxFQUVUdEYsR0FBVSxFQUNWaThHLEVBQWM0MkIsRUFBSXZkLFVBQVUsRUFBR3QxSCxHQUMvQjJpSSxFQUFNLEVBQ052N0gsRUFBTXBILEVBQVMsRUFDZixJQUFLLElBQUkyMEksRUFBTzMwSSxFQUFRMjBJLEdBQVEsRUFBR0EsSUFDakNoUyxHQUFPMW1CLEVBQVkzMkcsT0FBT3RGLEVBQVMyMEksR0FBUXZ0SSxHQUMzQ0EsR0FBTyxHQUNHLElBQ1JBLEVBQU0sR0FJVixPQURBMDdCLEVBQVM2L0YsRUFBTSxHQUFLLEVBQUksRUFBSSxHQUFLQSxFQUFNLE1BQ3hCaitILFNBQVMrdkksRUFBYW52SSxPQUFPLEdBQUksR0FJbEQsRUE0UkUsUUFyUkYsU0FBbUJ1dEksR0FDakIsSUFBSTVELEVBQVcsR0FBS3FCLEVBQVdNLHNCQUFzQmlDLEVBQUlqa0ksTUFBTSxJQUFJcEosTUFBTSxFQUFHLEdBQUd2RixLQUFJLFNBQVVDLEdBQzNGLE9BQU93RSxTQUFTeEUsRUFBRyxHQUN2QixJQUFNLEdBQUssR0FDVCxPQUFJK3VJLEVBQVcsRUFDbUIsSUFBekJ2cUksU0FBU211SSxFQUFJLEdBQUksSUFFbkI1RCxJQUFhdnFJLFNBQVNtdUksRUFBSSxHQUFJLEdBQ3ZDLEVBOFFFLFFBcFFGLFNBQW1CQSxHQUNqQixHQUF3QixTQUFwQkEsRUFBSXJ0SSxNQUFNLEVBQUcsR0FBZSxDQUc5QixJQUFJd3RJLEVBQVlILEVBQUlydEksTUFBTSxFQUFHLEdBQzdCLE9BQVFxdEksRUFBSSxJQUNWLElBQUssSUFDTCxJQUFLLElBQ0hHLEVBQVksS0FBS3J3SSxPQUFPcXdJLEdBQ3hCLE1BQ0YsSUFBSyxJQUNMLElBQUssSUFDSEEsRUFBWSxLQUFLcndJLE9BQU9xd0ksR0FDeEIsTUFDRixJQUFLLElBQ0wsSUFBSyxJQUNIQSxFQUFZLEtBQUtyd0ksT0FBT3F3SSxHQU01QixJQUFJemlCLEVBQU8sR0FBRzV0SCxPQUFPcXdJLEVBQVcsS0FBS3J3SSxPQUFPa3dJLEVBQUlydEksTUFBTSxFQUFHLEdBQUksS0FBSzdDLE9BQU9rd0ksRUFBSXJ0SSxNQUFNLEVBQUcsSUFDdEYsR0FBb0IsSUFBaEIrcUgsRUFBS3Z3SCxRQUNQLEtBQUssRUFBSXV4SSxFQUFRdndGLFNBQVN1dkUsRUFBTSxZQUM5QixPQUFPLE9BRUosS0FBSyxFQUFJZ2hCLEVBQVF2d0YsU0FBU3V2RSxFQUFNLGNBQ3JDLE9BQU8sRUFTVCxJQUxBLElBQUk4ZixFQUFTd0MsRUFBSWprSSxNQUFNLElBQUkzTyxLQUFJLFNBQVVDLEdBQ3ZDLE9BQU93RSxTQUFTeEUsRUFBRyxHQUN6QixJQUNRMDBJLEVBQWMsQ0FBQyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FDaEQzRixFQUFXLEVBQ05ydkksRUFBSSxFQUFHQSxFQUFJZzFJLEVBQVk1MEksT0FBUUosSUFDdENxdkksR0FBWW9CLEVBQU96d0ksR0FBS2cxSSxFQUFZaDFJLEdBRXRDLE9BQUlxdkksRUFBVyxJQUFPLEdBQ0UsSUFBZm9CLEVBQU8sSUFFVEEsRUFBTyxNQUFRcEIsRUFBVyxFQUNsQyxDQUNELE9BQU8sQ0FDVCxFQXVORSxRQTlNRixTQUFtQjRELEdBQ2pCLEdBQW1CLElBQWZBLEVBQUk3eUksT0FBYyxDQUVwQixHQUFxQixTQURyQjZ5SSxFQUFNQSxFQUFJaHBJLFFBQVEsS0FBTSxLQUNoQnJFLE1BQU0sR0FDWixPQUFPLEVBSVQsSUFBSXd0SSxFQUFZdHVJLFNBQVNtdUksRUFBSXJ0SSxNQUFNLEVBQUcsR0FBSSxJQUMxQyxHQUFJd3RJLEVBQVksR0FDZCxPQUFPLEVBR1BBLEVBREVBLEVBQVksR0FDRixNQUFNcndJLE9BQU9xd0ksR0FFYixLQUFLcndJLE9BQU9xd0ksR0FJMUIsSUFBSTdXLEVBQVF6M0gsU0FBU211SSxFQUFJcnRJLE1BQU0sRUFBRyxHQUFJLElBQ2xDMjJILEVBQVEsS0FDVkEsR0FBUyxJQUVQQSxFQUFRLEtBQ1ZBLEVBQVEsSUFBSXg1SCxPQUFPdzVILElBSXJCLElBQUk1TCxFQUFPLEdBQUc1dEgsT0FBT3F3SSxFQUFXLEtBQUtyd0ksT0FBT3c1SCxFQUFPLEtBQUt4NUgsT0FBT2t3SSxFQUFJcnRJLE1BQU0sRUFBRyxJQUM1RSxLQUFLLEVBQUkrckksRUFBUXZ3RixTQUFTdXZFLEVBQU0sY0FDOUIsT0FBTyxDQUVWLENBQ0QsT0FBTyxDQUNULEVBNktFLFFBdEtGLFNBQW1Cc2lCLEdBQ2pCLElBQUk1RCxFQUFXLEdBQUtxQixFQUFXTSxzQkFBc0JpQyxFQUFJamtJLE1BQU0sSUFBSXBKLE1BQU0sRUFBRyxHQUFHdkYsS0FBSSxTQUFVQyxHQUMzRixPQUFPd0UsU0FBU3hFLEVBQUcsR0FDdkIsSUFBTSxHQUFLLEdBQ1QsT0FBaUIsS0FBYit1SSxFQUM4QixJQUF6QnZxSSxTQUFTbXVJLEVBQUksR0FBSSxJQUVuQjVELElBQWF2cUksU0FBU211SSxFQUFJLEdBQUksR0FDdkMsRUErSkUsUUF4SkYsU0FBbUJBLEdBRWpCLElBQUlnQyxFQUFXaEMsRUFBSXJ0SSxNQUFNLEdBQ3JCcXRJLEVBQUk3eUksT0FBUyxLQUNmNjBJLEVBQVdBLEVBQVNydkksTUFBTSxJQUk1QixJQUFJd3RJLEVBQVksR0FDWjdXLEVBQVEwWSxFQUFTcnZJLE1BQU0sRUFBRyxHQUMxQjQySCxFQUFNMTNILFNBQVNtd0ksRUFBU3J2SSxNQUFNLEVBQUcsR0FBSSxJQUN6QyxHQUFJcXRJLEVBQUk3eUksT0FBUyxHQUNmZ3pJLEVBQVlILEVBQUlydEksTUFBTSxFQUFHLFFBR3pCLEdBREF3dEksRUFBWUgsRUFBSXJ0SSxNQUFNLEVBQUcsR0FDTixLQUFmcXRJLEVBQUk3eUksUUFBaUJvOEgsRUFBTSxHQUFJLENBR2pDLElBQUkwWSxHQUFlLElBQUk5NkksTUFBT2tpSSxjQUFjdm5ILFdBQ3hDb2dJLEVBQWtCcndJLFNBQVNvd0ksRUFBYXR2SSxNQUFNLEVBQUcsR0FBSSxJQUV6RCxHQURBc3ZJLEVBQWVwd0ksU0FBU293SSxFQUFjLElBQ3ZCLE1BQVhqQyxFQUFJLEdBRUpHLEVBREV0dUksU0FBUyxHQUFHL0IsT0FBT295SSxHQUFpQnB5SSxPQUFPcXdJLEdBQVksSUFBTThCLEVBQ25ELEdBQUdueUksT0FBT295SSxFQUFrQixHQUFHcHlJLE9BQU9xd0ksR0FFdEMsR0FBR3J3SSxPQUFPb3lJLEdBQWlCcHlJLE9BQU9xd0ksUUFJaEQsR0FEQUEsRUFBWSxHQUFHcndJLE9BQU9veUksRUFBa0IsR0FBR3B5SSxPQUFPcXdJLEdBQzlDOEIsRUFBZXB3SSxTQUFTc3VJLEVBQVcsSUFBTSxJQUMzQyxPQUFPLENBR1osQ0FJQzVXLEVBQU0sS0FDUkEsR0FBTyxJQUVMQSxFQUFNLEtBQ1JBLEVBQU0sSUFBSXo1SCxPQUFPeTVILElBRW5CLElBQUk3TCxFQU
15FPLEdBQUc1dEgsT0FBT3F3SSxFQUFXLEtBQUtyd0ksT0FBT3c1SCxFQUFPLEtBQUt4NUgsT0FBT3k1SCxHQUMvRCxHQUFvQixJQUFoQjdMLEVBQUt2d0gsUUFDUCxLQUFLLEVBQUl1eEksRUFBUXZ3RixTQUFTdXZFLEVBQU0sWUFDOUIsT0FBTyxPQUVKLEtBQUssRUFBSWdoQixFQUFRdndGLFNBQVN1dkUsRUFBTSxjQUNyQyxPQUFPLEVBRVQsT0FBTytmLEVBQVdJLFVBQVVtQyxFQUFJaHBJLFFBQVEsS0FBTSxJQUNoRCxFQXFHRSxRQS9GRixTQUFtQmdwSSxHQU9qQixJQUxBLElBQUl4QyxFQUFTd0MsRUFBSWprSSxNQUFNLElBQUkzTyxLQUFJLFNBQVVDLEdBQ3ZDLE9BQU93RSxTQUFTeEUsRUFBRyxHQUN2QixJQUNNMDBJLEVBQWMsRUFBRSxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLEVBQUcsR0FDekMzRixFQUFXLEVBQ05ydkksRUFBSSxFQUFHQSxFQUFJZzFJLEVBQVk1MEksT0FBUUosSUFDdENxdkksR0FBWW9CLEVBQU96d0ksR0FBS2cxSSxFQUFZaDFJLEdBRXRDLE9BQU9xdkksRUFBVyxJQUFPLEdBQW1CLElBQWRvQixFQUFPLEdBQVdBLEVBQU8sS0FBT3BCLEVBQVcsRUFDM0UsR0F1RkFtQyxFQUFXLFNBQVdBLEVBQVcsU0FDakNBLEVBQVcsU0FBV0EsRUFBVyxTQUNqQ0EsRUFBVyxTQUFXQSxFQUFXLFNBQ2pDQSxFQUFXLFNBQVdBLEVBQVcsU0FHakMsSUFBSTRELEVBQWEsa0NBQ2I3RCxFQUFrQixDQUNwQixRQUFTNkQsRUFDVCxRQUFTLFVBQ1QsUUFBU0EsR0FHWDdELEVBQWdCLFNBQVdBLEVBQWdCLFNBNEIzQ3hySSxFQUFpQkMsUUFBQUEsRUFBUW83QyxRQUN6QnI3QyxFQUF5QkMsUUFBQW83QyxRQUFBcDdDLEVBQVFvN0Msa0NDcDNDakNwaUQsT0FBT3VPLGVBQWU4bkksR0FBUyxhQUFjLENBQzNDLzNJLE9BQU8sSUFFTWc0SSxHQUFBbDBGLFFBK0tmLFNBQXVCbGdCLEVBQUtteUYsRUFBUTd5SCxHQUVsQyxJQURBLEVBQUlxeUgsR0FBY3p4RSxTQUFTbGdCLEdBQ3ZCMWdDLEdBQVdBLEVBQVEyNkgsYUFBZWo2RixFQUFJLzlCLFdBQVcsS0FDbkQsT0FBTyxFQUVULEdBQUlqRCxNQUFNQyxRQUFRa3pILEdBQ2hCLE9BQU9BLEVBQU9wdkUsTUFBSyxTQUFVei9DLEdBRzNCLEdBQUkrd0ksR0FBT3p6RyxlQUFldDlCLElBQ1ord0ksR0FBTy93SSxHQUNUL0osS0FBS3ltQyxHQUNiLE9BQU8sRUFHWCxPQUFPLENBQ2IsSUFDUyxHQUFJbXlGLEtBQVVraUIsR0FDbkIsT0FBT0EsR0FBT2xpQixHQUFRNTRILEtBQUt5bUMsR0FFdEIsSUFBS215RixHQUFxQixRQUFYQSxFQUFrQixDQUN0QyxJQUFLLElBQUk3dUgsS0FBTyt3SSxHQUFRLENBRXRCLEdBQUlBLEdBQU96ekcsZUFBZXQ5QixHQUV4QixHQURZK3dJLEdBQU8vd0ksR0FDVC9KLEtBQUt5bUMsR0FDYixPQUFPLENBR1osQ0FDRCxPQUFPLENBQ1IsQ0FDRCxNQUFNLElBQUl4YyxNQUFNLG1CQUFtQjNoQixPQUFPc3dILEVBQVEsS0FDcEQsRUEvTWVnaUIsR0FBQXpnQixhQUFHLEVBQ2xCLElBQUkvQixHQUNKLFNBQWdDN25ILEdBQU8sT0FBT0EsR0FBT0EsRUFBSTY1RixXQUFhNzVGLEVBQU0sQ0FBRW8yQyxRQUFTcDJDLEVBQVEsQ0FEM0U4cEgsQ0FBdUJoMEYsR0FBQUEsU0FHM0MsSUFBSXkwRyxHQUFTLENBQ1gsUUFBUyxrREFDVCxRQUFTLGdDQUNULFFBQVMsd0JBQ1QsUUFBUywyQkFDVCxRQUFTLGtDQUNULFFBQVMsNkJBQ1QsUUFBUywyQkFDVCxRQUFTLDJCQUNULFFBQVMsaUNBQ1QsUUFBUyw0Q0FDVCxRQUFTLGlDQUNULFFBQVMsK0JBQ1QsUUFBUyw0QkFDVCxRQUFTLDBCQUNULFFBQVMseUNBQ1QsUUFBUywwQkFDVCxRQUFTLHlCQUNULFFBQVMsdUNBQ1QsUUFBUyx3REFDVCxRQUFTLG1DQUNULFFBQVMsMkJBQ1QsUUFBUyxrQ0FDVCxRQUFTLHVCQUNULFFBQVMsaURBQ1QsUUFBUyw2Q0FDVCxRQUFTLGlFQUNULFFBQVMsNEJBQ1QsUUFBUywyQkFDVCxRQUFTLDBCQUNULFFBQVMsa0NBQ1QsUUFBUyw0Q0FDVCxRQUFTLDRCQUNULFFBQVMscUZBQ1QsUUFBUyxvQkFDVCxRQUFTLG9FQUNULFFBQVMsNERBQ1QsUUFBUyxtREFDVCxRQUFTLG9CQUNULFFBQVMsdUJBQ1QsUUFBUyx3REFDVCxRQUFTLG9CQUNULFFBQVMsNENBQ1QsUUFBUyx1Q0FDVCxRQUFTLDZCQUNULFFBQVMsMEJBQ1QsUUFBUyxtQkFDVCxRQUFTLHlCQUNULFFBQVMsd0NBQ1QsUUFBUyw2QkFDVCxRQUFTLDhDQUNULFFBQVMsMkRBQ1QsUUFBUyx3Q0FDVCxRQUFTLDhDQUNULFFBQVMscUJBQ1QsUUFBUyx5RUFDVCxRQUFTLHlCQUNULFFBQVMsMEJBQ1QsUUFBUyx5QkFDVCxRQUFTLGdDQUNULFFBQVMsOEJBQ1QsUUFBUyxvQkFDVCxRQUFTLHdCQUNULFFBQVMsdUJBQ1QsUUFBUyxvQkFDVCxRQUFTLHlCQUNULFFBQVMsd0JBQ1QsUUFBUywwRkFDVCxRQUFTLG1CQUNULFFBQVMseUJBQ1QsUUFBUyxvQkFDVCxRQUFTLDhCQUNULFFBQVMsNkJBQ1QsUUFBUyx3QkFDVCxRQUFTLG1EQUNULFFBQVMsNkJBQ1QsUUFBUyx1QkFDVCxRQUFTLHVCQUNULFFBQVMsd0JBQ1QsUUFBUyw0QkFDVCxRQUFTLGtDQUNULFFBQVMsdUJBQ1QsUUFBUyxtQkFDVCxRQUFTLDZCQUNULFFBQVMsb0JBQ1QsUUFBUyxvQkFDVCxRQUFTLDJCQUNULFFBQVMsdUJBQ1QsUUFBUywyQkFDVCxRQUFTLHVCQUNULFFBQVMsNkNBQ1QsUUFBUyxzREFDVCxRQUFTLDRDQUNULFFBQVMsOEJBQ1QsUUFBUyxzQ0FDVCxRQUFTLHVCQUNULFFBQVMsaUJBQ1QsUUFBUywwQkFDVCxRQUFTLHNCQUNULFFBQVMsdUJBQ1QsUUFBUyw4QkFDVCxRQUFTLDhCQUNULFFBQVMsOEJBQ1QsUUFBUyx5QkFDVCxRQUFTLDhCQUNULFFBQVMsa0JBQ1QsUUFBUyxpREFDVCxRQUFTLG9DQUNULFFBQVMscUdBQ1QsUUFBUyxvQkFDVCxRQUFTLCtCQUNULFFBQVMscURBQ1QsUUFBUyx3REFDVCxRQUFTLDhCQUNULFFBQVMsb0JBQ1QsUUFBUyxzQ0FDVCxRQUFTLGtFQUNULFFBQVMsNENBQ1QsUUFBUyxtQkFDVCxRQUFTLG1CQUNULFFBQVMsOEJBQ1QsUUFBUyxrREFDVCxRQUFTLHFFQUNULFFBQVMsNkRBQ1QsUUFBUyw0QkFDVCxRQUFTLHNCQUNULFFBQVMsd0JBQ1QsUUFBUyxvQkFDVCxRQUFTLGdEQUNULFFBQVMscUNBQ1QsUUFBUyxzQkFDVCxRQUFTLGdEQUNULFFBQVMsK0lBQ1QsUUFBUywwQkFDVCxRQUFTLGlCQUNULFFBQVMscURBQ1QsUUFBUyx3REFDVCxRQUFTLG9CQUNULFFBQVMsa0RBQ1QsUUFBUyxzRUFDVCxRQUFTLGlEQUNULFFBQVMsNENBQ1QsUUFBUyx5QkFDVCxRQUFTLDJCQUNULFFBQVMsa0RBQ1QsUUFBUyx5QkFDVCxRQUFTLHFCQUNULFFBQVMscUJBQ1QsUUFBUyx1QkFDVCxRQUFTLHFCQUNULFFBQVMsNkNBQ1QsUUFBUyxzRkFDVCxRQUFTLG9DQUNULFFBQVMseUJBQ1QsUUFBUyxrQ0FDVCxRQUFTLDREQUNULFFBQVMsNkNBQ1QsUUFBUyxxREFLWEEsR0FBTyxTQUFXQSxHQUFPLFNBQ3pCQSxHQU
15FPLFNBQVdBLEdBQU8sU0FDekJBLEdBQU8sU0FBV0EsR0FBTyxTQUN6QkEsR0FBTyxTQUFXQSxHQUFPLFNBQ3pCQSxHQUFPLFNBQVdBLEdBQU8sU0FDekJBLEdBQU8sU0FBV0EsR0FBTyxTQUN6QkEsR0FBTyxTQUFXQSxHQUFPLFNBQ3pCQSxHQUFPLFNBQVdBLEdBQU8sU0FtQ0lGLEdBQUF6Z0IsUUFBRzUxSCxPQUFPbU0sS0FBS29xSSx1Q0NwTjVDdjJJLE9BQU91TyxlQUF3QnZILEVBQUEsYUFBYyxDQUMzQzFJLE9BQU8sSUFFVDBJLEVBQUFvN0MsUUFJQSxTQUEyQmxnQixHQUV6QixPQURBLEVBQUkyeEYsRUFBY3p4RSxTQUFTbGdCLEdBQ3BCczBHLEVBQUkvNkksS0FBS3ltQyxFQUNsQixFQU5BLElBQUkyeEYsRUFDSixTQUFnQzduSCxHQUFPLE9BQU9BLEdBQU9BLEVBQUk2NUYsV0FBYTc1RixFQUFNLENBQUVvMkMsUUFBU3AyQyxFQUFRLENBRDNFOHBILENBQXVCaDBGLEdBQUFBLFNBRTNDLElBQUkwMEcsRUFBTSxzQkFLVnp2SSxFQUFpQkMsUUFBQUEsRUFBUW83QyxRQUN6QnI3QyxFQUF5QkMsUUFBQW83QyxRQUFBcDdDLEVBQVFvN0MsMkRDWmpDcGlELE9BQU91TyxlQUF3QnZILEVBQUEsYUFBYyxDQUMzQzFJLE9BQU8sSUFFVDBJLEVBQUFvN0MsUUF1RUEsU0FBb0JsZ0IsRUFBSzFnQyxHQUd2QixPQUZBLEVBQUlxeUgsRUFBY3p4RSxTQUFTbGdCLEdBcEU3QixTQUF1QjFnQyxHQUNyQixJQUFJNmpJLEVBQWlCLE9BQU90aEksT0FBT3ZDLEVBQVFpMUkscUJBQXFCLEdBQUksS0FDcEVqMUksRUFBUWkxSSxxQkFBcUJwekksU0FBUSxTQUFVMmdJLEVBQU8zd0gsR0FDdEMsSUFBVkEsSUFBYWd5SCxFQUFpQixHQUFHdGhJLE9BQU9zaEksRUFBZ0IsU0FBU3RoSSxPQUFPaWdJLEVBQU8sS0FDdkYsSUFDRSxJQUFJMFMsRUFBUyxJQUFJM3lJLE9BQU92QyxFQUFRazFJLE9BQU96ckksUUFBUSxNQUFNLFNBQVV2TCxHQUMzRCxNQUFPLEtBQUtxRSxPQUFPckUsRUFDekIsSUFBUSxLQUFLcUUsT0FBT3ZDLEVBQVFtMUksZUFBaUIsR0FBSyxLQUM5Q0MsRUFBVyxLQUVYQyxFQUErQixtQkFBbUI5eUksT0FBT3ZDLEVBQVFzMUksb0JBQXFCLFlBRXRGQyxFQUFzQixJQUFJaHpJLE9BREcsQ0FBQyxJQUZJLFlBRWtDOHlJLEdBQ1JyN0ksS0FBSyxLQUFNLE1BQ3ZFdzdJLEVBQWlCLE1BQU1qekksT0FBT3ZDLEVBQVF5MUksa0JBQW1CLEtBQUtsekksT0FBT3NoSSxFQUFnQixNQUFNdGhJLE9BQU92QyxFQUFRMDFJLGdCQUFrQixHQUFLLEtBQy9IN3pHLEVBQVUwekcsR0FBdUJ2MUksRUFBUTIxSSxlQUFpQjMxSSxFQUFRMDFJLGdCQUFrQkYsRUFBaUIsSUFHckd4MUksRUFBUTQxSSxrQkFBb0I1MUksRUFBUTYxSSx1QkFDbEM3MUksRUFBUTgxSSwyQkFDVmowRyxHQUFXdXpHLEVBQ0ZwMUksRUFBUSsxSSw4QkFDakJsMEcsRUFBVXV6RyxFQUFXdnpHLElBS3JCN2hDLEVBQVFnMkksZ0NBQ1ZuMEcsRUFBVSxjQUFjdC9CLE9BQU9zL0IsR0FDdEI3aEMsRUFBUWkySSx5QkFDakJwMEcsRUFBVSxLQUFLdC9CLE9BQU9zL0IsR0FDYjdoQyxFQUFRazJJLDJCQUNqQnIwRyxHQUFXLGFBRVQ3aEMsRUFBUW0ySSxvQkFDVnQwRyxHQUFXcXpHLEVBRVhyekcsRUFBVXF6RyxFQUFTcnpHLEVBRWpCN2hDLEVBQVE0MUksa0JBQ041MUksRUFBUTYxSSxxQkFDVmgwRyxFQUFVLE9BQU90L0IsT0FBT3MvQixFQUFTLFFBQVF0L0IsT0FBT3MvQixFQUFTLEtBQzlDN2hDLEVBQVErMUksNkJBQStCLzFJLEVBQVE4MUksNkJBQzFEajBHLEVBQVV1ekcsRUFBV3Z6RyxJQU16QixPQUFPLElBQUk5bkMsT0FBTyxvQkFBb0J3SSxPQUFPcy9CLEVBQVMsS0FDeEQsQ0FxQlN1MEcsQ0FEUHAySSxHQUFVLEVBQUkwMEgsRUFBTzl6RSxTQUFTNWdELEVBQVNxMkksSUFDVHA4SSxLQUFLeW1DLEVBQ3JDLEVBMUVBLElBQUlnMEYsRUFBU0osRUFBdUJoMEYsR0FBQUEsU0FDaEMreEYsRUFBZ0JpQyxFQUF1QmwrRSxHQUFBQSxTQUMzQyxTQUFTaytFLEVBQXVCOXBILEdBQU8sT0FBT0EsR0FBT0EsRUFBSTY1RixXQUFhNzVGLEVBQU0sQ0FBRW8yQyxRQUFTcDJDLEVBQVEsQ0FtRC9GLElBQUk2ckksRUFBMkIsQ0FDN0JuQixPQUFRLElBQ1JDLGdCQUFnQixFQUNoQmMsMEJBQTBCLEVBQzFCRSxxQkFBcUIsRUFDckJQLGlCQUFpQixFQUNqQkMsc0JBQXNCLEVBQ3RCRSw2QkFBNkIsRUFDN0JELDRCQUE0QixFQUM1QkUsaUNBQWlDLEVBQ2pDVixvQkFBcUIsSUFDckJHLGtCQUFtQixJQUNuQkUsZUFBZSxFQUNmRCxpQkFBaUIsRUFDakJULHFCQUFzQixDQUFDLEdBQ3ZCaUIsMEJBQTBCLEdBTzVCM3dJLEVBQWlCQyxRQUFBQSxFQUFRbzdDLFFBQ3pCcjdDLEVBQXlCQyxRQUFBbzdDLFFBQUFwN0MsRUFBUW83QywyRENoRmpDcGlELE9BQU91TyxlQUF3QnZILEVBQUEsYUFBYyxDQUMzQzFJLE9BQU8sSUFFVDBJLEVBQUFvN0MsUUFLQSxTQUFzQmxnQixHQUVwQixPQURBLEVBQUkyeEYsRUFBY3p4RSxTQUFTbGdCLEdBQ3BCNDFHLEVBQU9yOEksS0FBS3ltQyxJQUFRNjFHLEVBQU90OEksS0FBS3ltQyxFQUN6QyxFQVBBLElBQUkyeEYsRUFDSixTQUFnQzduSCxHQUFPLE9BQU9BLEdBQU9BLEVBQUk2NUYsV0FBYTc1RixFQUFNLENBQUVvMkMsUUFBU3AyQyxFQUFRLENBRDNFOHBILENBQXVCaDBGLEdBQUFBLFNBRTNDLElBQUlnMkcsRUFBUyx5QkFDVEMsRUFBUyxxQ0FLYmh4SSxFQUFpQkMsUUFBQUEsRUFBUW83QyxRQUN6QnI3QyxFQUF5QkMsUUFBQW83QyxRQUFBcDdDLEVBQVFvN0Msa0NDYmpDcGlELE9BQU91TyxlQUFleXBJLEdBQVMsYUFBYyxDQUMzQzE1SSxPQUFPLElBRW1CMDVJLEdBQUFDLDBCQUFHLEVBQ2RDLEdBQUFDLFVBQUdBLEdBQ3BCLElBQUl0a0IsR0FDSixTQUFnQzduSCxHQUFPLE9BQU9BLEdBQU9BLEVBQUk2NUYsV0FBYTc1RixFQUFNLENBQUVvMkMsUUFBU3AyQyxFQUFRLENBRDNFOHBILENBQXVCaDBGLEdBQUFBLFNBSzNDLElBQUlzMkcsR0FBZSwwQ0FDZkMsR0FBVSxVQUNkLFNBQVNGLEdBQVVqMkcsR0FHakIsSUFGQSxFQUFJMnhGLEdBQWN6eEUsU0FBU2xnQixHQUMzQkEsRUFBTUEsRUFBSXY3QixlQUNMeXhJLEdBQWEzOEksS0FBS3ltQyxHQUFNLE9BQU8sRUFDcEMsR0FBbUIsS0FBZkEsRUFBSTlnQyxPQUFlLENBRXJCLElBREEsSUFBSTJpSSxFQUFNLEVBQ0QvaUksRUFBSSxFQUFHQSxFQUFJa2hDLEVBQUk5Z0MsT0FBUyxFQUFHSixJQUNsQyxHQUFLcTNJLEdBQVE1OEksS0FBS3ltQyxFQUFJbGhDLElBS2YraUksR0FBTzdoRyxFQUFJbGhDLEdBQUtwQyxLQUFLa3RDLElBQUksRUFBRzlxQyxPQUxSLENBQ3pCLElBQ0lzM0ksRUFBYXAyRyxFQUFJb0MsV0FBV3RqQyxHQUFLLEdBRXJDK2lJLElBREl1VSxFQUFhLEd
15BQW9CQSxFQUFvQkEsR0FBYyxJQUFNQSxHQUFjLEdBQW9CLEdBQUtBLEVBQWEsR0FBWUEsR0FBYyxJQUFNQSxHQUFjLEdBQW9CLEdBQUtBLEVBQWEsR0FBd0IsR0FBS0EsRUFBYSxJQUN4TzE1SSxLQUFLa3RDLElBQUksRUFBRzlxQyxFQUMzQyxDQUVJLElBQUl1M0ksRUFBZ0J4VSxFQUFNLEdBQzFCLE9BQU92b0gsT0FBTzBtQixFQUFJQSxFQUFJOWdDLE9BQVMsTUFBUW0zSSxDQUN4QyxDQUNELE9BQU8sQ0FDVCxDQUN1REwsR0FBQUQscUJBQUdFLHNDQy9CMURuNEksT0FBT3VPLGVBQXdCdkgsRUFBQSxhQUFjLENBQzNDMUksT0FBTyxJQUVUMEksRUFBQW83QyxRQUlBLFNBQW1CbGdCLEdBRWpCLE9BREEsRUFBSTJ4RixFQUFjenhFLFNBQVNsZ0IsR0FDcEJzMkcsRUFBYTd5RixJQUFJempCLEVBQzFCLEVBTkEsSUFBSTJ4RixFQUNKLFNBQWdDN25ILEdBQU8sT0FBT0EsR0FBT0EsRUFBSTY1RixXQUFhNzVGLEVBQU0sQ0FBRW8yQyxRQUFTcDJDLEVBQVEsQ0FEM0U4cEgsQ0FBdUJoMEYsR0FBQUEsU0FFM0MsSUFBSTAyRyxFQUFlLElBQUk5eUYsSUFBSSxDQUFDLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLEtBQU0sT0FLNW1DMytDLEVBQWlCQyxRQUFBQSxFQUFRbzdDLFFBQ3pCcjdDLEVBQXlCQyxRQUFBbzdDLFFBQUFwN0MsRUFBUW83QywyRENaakNwaUQsT0FBT3VPLGVBQXdCdkgsRUFBQSxhQUFjLENBQzNDMUksT0FBTyxJQUVUMEksRUFBQW83QyxRQW9DQSxTQUFtQmxnQixHQUNqQixJQUFJMWdDLEVBQVU3RixVQUFVeUYsT0FBUyxRQUFzQjFGLElBQWpCQyxVQUFVLEdBQW1CQSxVQUFVLEdBQUssQ0FBQSxHQUNsRixFQUFJazRILEVBQWN6eEUsU0FBU2xnQixHQUMzQixJQUFJZzVCLEVBQVExNUQsRUFBUWkzSSxnQkFBa0JDLEVBQXVCajlJLEtBQUt5bUMsR0FBT3kyRyxFQUFRbDlJLEtBQUt5bUMsR0FDdEYsT0FBSWc1QixHQUFTMTVELEVBQVF3MEgsT0FBZTRpQixFQUFZMTJHLEdBQ3pDZzVCLENBQ1QsRUF6Q0EsSUFBSTI0RCxFQUNKLFNBQWdDN25ILEdBQU8sT0FBT0EsR0FBT0EsRUFBSTY1RixXQUFhNzVGLEVBQU0sQ0FBRW8yQyxRQUFTcDJDLEVBQVEsQ0FEM0U4cEgsQ0FBdUJoMEYsR0FBQUEsU0FJM0MsSUFBSTYyRyxFQUFVLDZSQUVWRCxFQUF5QiwyUkFFekJFLEVBQWMsU0FBcUIxMkcsR0FLckMsSUFBSTIyRyxFQUFlMzJHLEVBQUl4b0IsTUFBTSxtQ0FDN0IsR0FBSW0vSCxFQUFjLENBQ2hCLElBQUlDLEVBQVF0OUgsT0FBT3E5SCxFQUFhLElBQzVCRSxFQUFPdjlILE9BQU9xOUgsRUFBYSxJQUUvQixPQUFJQyxFQUFRLEdBQU0sR0FBS0EsRUFBUSxLQUFRLEdBQUtBLEVBQVEsS0FBUSxFQUFVQyxHQUFRLElBQ3ZFQSxHQUFRLEdBQ2hCLENBQ0QsSUFBSXIvSCxFQUFRd29CLEVBQUl4b0IsTUFBTSw2QkFBNkJyWSxJQUFJbWEsUUFDbkRxcEMsRUFBT25yQyxFQUFNLEdBQ2I2akgsRUFBUTdqSCxFQUFNLEdBQ2Q4akgsRUFBTTlqSCxFQUFNLEdBQ1pzL0gsRUFBY3piLEVBQVEsSUFBSXg1SCxPQUFPdzVILEdBQU8zMkgsT0FBTyxHQUFLMjJILEVBQ3BEMGIsRUFBWXpiLEVBQU0sSUFBSXo1SCxPQUFPeTVILEdBQUs1MkgsT0FBTyxHQUFLNDJILEVBRzlDeGpJLEVBQUksSUFBSW9CLEtBQUssR0FBRzJJLE9BQU84Z0QsRUFBTSxLQUFLOWdELE9BQU9pMUksR0FBZSxLQUFNLEtBQUtqMUksT0FBT2sxSSxHQUFhLE9BQzNGLE9BQUkxYixJQUFTQyxHQUNKeGpJLEVBQUVrL0ksbUJBQXFCcjBGLEdBQVE3cUQsRUFBRW0vSSxjQUFnQixJQUFNNWIsR0FBU3ZqSSxFQUFFeWpJLGVBQWlCRCxHQVc5RnoySCxFQUFpQkMsUUFBQUEsRUFBUW83QyxRQUN6QnI3QyxFQUF5QkMsUUFBQW83QyxRQUFBcDdDLEVBQVFvN0MsMkRDL0NqQ3BpRCxPQUFPdU8sZUFBd0J2SCxFQUFBLGFBQWMsQ0FDM0MxSSxPQUFPLElBRVQwSSxFQUFBbzdDLFFBa0JBLFNBQW1CbGdCLEdBRWpCLE9BREEsRUFBSTJ4RixFQUFjenhFLFNBQVNsZ0IsR0FDcEJrM0csRUFBUTM5SSxLQUFLeW1DLEVBQ3RCLEVBcEJBLElBQUkyeEYsRUFDSixTQUFnQzduSCxHQUFPLE9BQU9BLEdBQU9BLEVBQUk2NUYsV0FBYTc1RixFQUFNLENBQUVvMkMsUUFBU3AyQyxFQUFRLENBRDNFOHBILENBQXVCaDBGLEdBQUFBLFNBSTNDLElBR0l1M0csRUFBVyxxQkFDWEMsRUFBYSxhQUdiQyxFQUFnQixJQUFJaCtJLE9BQU8sT0FBT3dJLE9BQU9zMUksRUFBU3g3RixPQUFRLEtBQUs5NUMsT0FBT3UxSSxFQUFXejdGLFNBQ2pGMjdGLEVBQWEsSUFBSWorSSxPQUFPLFNBQVN3SSxPQUFPdzFJLEVBQWMxN0YsT0FBUSxNQUM5RDQ3RixFQUFjLElBQUlsK0ksT0FBTyxHQUFHd0ksT0FBT3MxSSxFQUFTeDdGLE9BQVEsS0FBSzk1QyxPQUFPdTFJLEVBQVd6N0YsT0FBUSxLQUFLOTVDLE9BSjNFLGtCQUk2Rjg1QyxRQUFROTVDLE9BSHBHLGNBR3VIODVDLFNBQ3JJNjdGLEVBQVcsSUFBSW4rSSxPQUFPLEdBQUd3SSxPQVZWLFdBVThCODVDLE9BQVEsS0FBSzk1QyxPQVQ5QyxrQkFTK0Q4NUMsT0FBUSxLQUFLOTVDLE9BUjdFLHdCQVE2Rjg1QyxTQUN4Rzg3RixFQUFXLElBQUlwK0ksT0FBTyxHQUFHd0ksT0FBTzAxSSxFQUFZNTdGLFFBQVE5NUMsT0FBT3kxSSxFQUFXMzdGLFNBQ3RFdTdGLEVBQVUsSUFBSTc5SSxPQUFPLElBQUl3SSxPQUFPMjFJLEVBQVM3N0YsT0FBUSxTQUFTOTVDLE9BQU80MUksRUFBUzk3RixPQUFRLE1BS3RGOTJDLEVBQWlCQyxRQUFBQSxFQUFRbzdDLFFBQ3pCcjdDLEVBQXlCQyxRQUFBbzdDLFFBQUFwN0MsRUFBUW83QywyREMxQmpDcGlELE9BQU91TyxlQUF3QnZILEVBQUEsYUFBYyxDQUMzQzFJLE9BQU8sSUFFVDBJLEVBQUFvN0MsUUFLQSxTQUEwQmxnQixHQUV4QixPQURBLEVBQUkyeEYsRUFBY3p4RSxTQUFTbGdCLEdBQ3BCMDNHLEVBQWtDajBGLElBQUl6akIsRU
15FBSXY3QixjQUNuRCxFQVBBLElBQUlrdEgsRUFDSixTQUFnQzduSCxHQUFPLE9BQU9BLEdBQU9BLEVBQUk2NUYsV0FBYTc1RixFQUFNLENBQUVvMkMsUUFBU3AyQyxFQUFRLENBRDNFOHBILENBQXVCaDBGLEdBQUFBLFNBRzNDLElBQUk4M0csRUFBb0MsSUFBSWwwRixJQUFJLENBQUMsTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLFFBS3p2RDMrQyxFQUFpQkMsUUFBQUEsRUFBUW83QyxRQUN6QnI3QyxFQUF5QkMsUUFBQW83QyxRQUFBcDdDLEVBQVFvN0Msa0NDYmpDcGlELE9BQU91TyxlQUFlc3JJLEdBQVMsYUFBYyxDQUMzQ3Y3SSxPQUFPLElBRVl1N0ksR0FBQUMsbUJBQUcsRUFDVEMsR0FBQTMzRixRQUtmLFNBQW1CbGdCLEdBRWpCLE9BREEsRUFBSTJ4RixHQUFjenhFLFNBQVNsZ0IsR0FDcEI4M0csR0FBMEJyMEYsSUFBSXpqQixFQUFJdjdCLGNBQzNDLEVBUEEsSUFBSWt0SCxHQUNKLFNBQWdDN25ILEdBQU8sT0FBT0EsR0FBT0EsRUFBSTY1RixXQUFhNzVGLEVBQU0sQ0FBRW8yQyxRQUFTcDJDLEVBQVEsQ0FEM0U4cEgsQ0FBdUJoMEYsR0FBQUEsU0FHM0MsSUFBSWs0RyxHQUE0QixJQUFJdDBGLElBQUksQ0FBQyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sUUFLcnVDcTBGLEdB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
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.