/*! For license information please see sb-youtube.min.js.LICENSE.txt */ (()=>{var t={473:(t,e,i)=>{var s=i(43),n=i(323);function a(t){return null==t}function o(t){(t=function(t){var e={};for(var i in t)e[i]=t[i];return e}(t||{})).whiteList=t.whiteList||s.whiteList,t.onAttr=t.onAttr||s.onAttr,t.onIgnoreAttr=t.onIgnoreAttr||s.onIgnoreAttr,t.safeAttrValue=t.safeAttrValue||s.safeAttrValue,this.options=t}i(100),o.prototype.process=function(t){if(!(t=(t=t||"").toString()))return"";var e=this.options,i=e.whiteList,s=e.onAttr,o=e.onIgnoreAttr,r=e.safeAttrValue;return n(t,(function(t,e,n,l,d){var h=i[n],c=!1;if(!0===h?c=h:"function"==typeof h?c=h(l):h instanceof RegExp&&(c=h.test(l)),!0!==c&&(c=!1),l=r(n,l)){var u,g={position:e,sourcePosition:t,source:d,isWhite:c};return c?a(u=s(n,l,g))?n+":"+l:u:a(u=o(n,l,g))?void 0:u}}))},t.exports=o},43:(t,e)=>{function i(){return{"align-content":!1,"align-items":!1,"align-self":!1,"alignment-adjust":!1,"alignment-baseline":!1,all:!1,"anchor-point":!1,animation:!1,"animation-delay":!1,"animation-direction":!1,"animation-duration":!1,"animation-fill-mode":!1,"animation-iteration-count":!1,"animation-name":!1,"animation-play-state":!1,"animation-timing-function":!1,azimuth:!1,"backface-visibility":!1,background:!0,"background-attachment":!0,"background-clip":!0,"background-color":!0,"background-image":!0,"background-origin":!0,"background-position":!0,"background-repeat":!0,"background-size":!0,"baseline-shift":!1,binding:!1,bleed:!1,"bookmark-label":!1,"bookmark-level":!1,"bookmark-state":!1,border:!0,"border-bottom":!0,"border-bottom-color":!0,"border-bottom-left-radius":!0,"border-bottom-right-radius":!0,"border-bottom-style":!0,"border-bottom-width":!0,"border-collapse":!0,"border-color":!0,"border-image":!0,"border-image-outset":!0,"border-image-repeat":!0,"border-image-slice":!0,"border-image-source":!0,"border-image-width":!0,"border-left":!0,"border-left-color":!0,"border-left-style":!0,"border-left-width":!0,"border-radius":!0,"border-right":!0,"border-right-color":!0,"border-right-style":!0,"border-right-width":!0,"border-spacing":!0,"border-style":!0,"border-top":!0,"border-top-color":!0,"border-top-left-radius":!0,"border-top-right-radius":!0,"border-top-style":!0,"border-top-width":!0,"border-width":!0,bottom:!1,"box-decoration-break":!0,"box-shadow":!0,"box-sizing":!0,"box-snap":!0,"box-suppress":!0,"break-after":!0,"break-before":!0,"break-inside":!0,"caption-side":!1,chains:!1,clear:!0,clip:!1,"clip-path":!1,"clip-rule":!1,color:!0,"color-interpolation-filters":!0,"column-count":!1,"column-fill":!1,"column-gap":!1,"column-rule":!1,"column-rule-color":!1,"column-rule-style":!1,"column-rule-width":!1,"column-span":!1,"column-width":!1,columns:!1,contain:!1,content:!1,"counter-increment":!1,"counter-reset":!1,"counter-set":!1,crop:!1,cue:!1,"cue-after":!1,"cue-before":!1,cursor:!1,direction:!1,display:!0,"display-inside":!0,"display-list":!0,"display-outside":!0,"dominant-baseline":!1,elevation:!1,"empty-cells":!1,filter:!1,flex:!1,"flex-basis":!1,"flex-direction":!1,"flex-flow":!1,"flex-grow":!1,"flex-shrink":!1,"flex-wrap":!1,float:!1,"float-offset":!1,"flood-color":!1,"flood-opacity":!1,"flow-from":!1,"flow-into":!1,font:!0,"font-family":!0,"font-feature-settings":!0,"font-kerning":!0,"font-language-override":!0,"font-size":!0,"font-size-adjust":!0,"font-stretch":!0,"font-style":!0,"font-synthesis":!0,"font-variant":!0,"font-variant-alternates":!0,"font-variant-caps":!0,"font-variant-east-asian":!0,"font-variant-ligatures":!0,"font-variant-numeric":!0,"font-variant-position":!0,"font-weight":!0,grid:!1,"grid-area":!1,"grid-auto-columns":!1,"grid-auto-flow":!1,"grid-auto-rows":!1,"grid-column":!1,"grid-column-end":!1,"grid-column-start":!1,"grid-row":!1,"grid-row-end":!1,"grid-row-start":!1,"grid-template":!1,"grid-template-areas":!1,"grid-template-columns":!1,"grid-template-rows":!1,"hanging-punctuation":!1,height:!0,hyphens:!1,icon:!1,"image-orientation":!1,"image-resolution":!1,"ime-mode":!1,"initial-letters":!1,"inline-box-align":!1,"justify-content":!1,"justify-items":!1,"justify-self":!1,left:!1,"letter-spacing":!0,"lighting-color":!0,"line-box-contain":!1,"line-break":!1,"line-grid":!1,"line-height":!1,"line-snap":!1,"line-stacking":!1,"line-stacking-ruby":!1,"line-stacking-shift":!1,"line-stacking-strategy":!1,"list-style":!0,"list-style-image":!0,"list-style-position":!0,"list-style-type":!0,margin:!0,"margin-bottom":!0,"margin-left":!0,"margin-right":!0,"margin-top":!0,"marker-offset":!1,"marker-side":!1,marks:!1,mask:!1,"mask-box":!1,"mask-box-outset":!1,"mask-box-repeat":!1,"mask-box-slice":!1,"mask-box-source":!1,"mask-box-width":!1,"mask-clip":!1,"mask-image":!1,"mask-origin":!1,"mask-position":!1,"mask-repeat":!1,"mask-size":!1,"mask-source-type":!1,"mask-type":!1,"max-height":!0,"max-lines":!1,"max-width":!0,"min-height":!0,"min-width":!0,"move-to":!1,"nav-down":!1,"nav-index":!1,"nav-left":!1,"nav-right":!1,"nav-up":!1,"object-fit":!1,"object-position":!1,opacity:!1,order:!1,orphans:!1,outline:!1,"outline-color":!1,"outline-offset":!1,"outline-style":!1,"outline-width":!1,overflow:!1,"overflow-wrap":!1,"overflow-x":!1,"overflow-y":!1,padding:!0,"padding-bottom":!0,"padding-left":!0,"padding-right":!0,"padding-top":!0,page:!1,"page-break-after":!1,"page-break-before":!1,"page-break-inside":!1,"page-policy":!1,pause:!1,"pause-after":!1,"pause-before":!1,perspective:!1,"perspective-origin":!1,pitch:!1,"pitch-range":!1,"play-during":!1,position:!1,"presentation-level":!1,quotes:!1,"region-fragment":!1,resize:!1,rest:!1,"rest-after":!1,"rest-before":!1,richness:!1,right:!1,rotation:!1,"rotation-point":!1,"ruby-align":!1,"ruby-merge":!1,"ruby-position":!1,"shape-image-threshold":!1,"shape-outside":!1,"shape-margin":!1,size:!1,speak:!1,"speak-as":!1,"speak-header":!1,"speak-numeral":!1,"speak-punctuation":!1,"speech-rate":!1,stress:!1,"string-set":!1,"tab-size":!1,"table-layout":!1,"text-align":!0,"text-align-last":!0,"text-combine-upright":!0,"text-decoration":!0,"text-decoration-color":!0,"text-decoration-line":!0,"text-decoration-skip":!0,"text-decoration-style":!0,"text-emphasis":!0,"text-emphasis-color":!0,"text-emphasis-position":!0,"text-emphasis-style":!0,"text-height":!0,"text-indent":!0,"text-justify":!0,"text-orientation":!0,"text-overflow":!0,"text-shadow":!0,"text-space-collapse":!0,"text-transform":!0,"text-underline-position":!0,"text-wrap":!0,top:!1,transform:!1,"transform-origin":!1,"transform-style":!1,transition:!1,"transition-delay":!1,"transition-duration":!1,"transition-property":!1,"transition-timing-function":!1,"unicode-bidi":!1,"vertical-align":!1,visibility:!1,"voice-balance":!1,"voice-duration":!1,"voice-family":!1,"voice-pitch":!1,"voice-range":!1,"voice-rate":!1,"voice-stress":!1,"voice-volume":!1,volume:!1,"white-space":!1,widows:!1,width:!0,"will-change":!1,"word-break":!0,"word-spacing":!0,"word-wrap":!0,"wrap-flow":!1,"wrap-through":!1,"writing-mode":!1,"z-index":!1}}var s=/javascript\s*\:/gim;e.whiteList={"align-content":!1,"align-items":!1,"align-self":!1,"alignment-adjust":!1,"alignment-baseline":!1,all:!1,"anchor-point":!1,animation:!1,"animation-delay":!1,"animation-direction":!1,"animation-duration":!1,"animation-fill-mode":!1,"animation-iteration-count":!1,"animation-name":!1,"animation-play-state":!1,"animation-timing-function":!1,azimuth:!1,"backface-visibility":!1,background:!0,"background-attachment":!0,"background-clip":!0,"background-color":!0,"background-image":!0,"background-origin":!0,"background-position":!0,"background-repeat":!0,"background-size":!0,"baseline-shift":!1,binding:!1,bleed:!1,"bookmark-label":!1,"bookmark-level":!1,"bookmark-state":!1,border:!0,"border-bottom":!0,"border-bottom-color":!0,"border-bottom-left-radius":!0,"border-bottom-right-radius":!0,"border-bottom-style":!0,"border-bottom-width":!0,"border-collapse":!0,"border-color":!0,"border-image":!0,"border-image-outset":!0,"border-image-repeat":!0,"border-image-slice":!0,"border-image-source":!0,"border-image-width":!0,"border-left":!0,"border-left-color":!0,"border-left-style":!0,"border-left-width":!0,"border-radius":!0,"border-right":!0,"border-right-color":!0,"border-right-style":!0,"border-right-width":!0,"border-spacing":!0,"border-style":!0,"border-top":!0,"border-top-color":!0,"border-top-left-radius":!0,"border-top-right-radius":!0,"border-top-style":!0,"border-top-width":!0,"border-width":!0,bottom:!1,"box-decoration-break":!0,"box-shadow":!0,"box-sizing":!0,"box-snap":!0,"box-suppress":!0,"break-after":!0,"break-before":!0,"break-inside":!0,"caption-side":!1,chains:!1,clear:!0,clip:!1,"clip-path":!1,"clip-rule":!1,color:!0,"color-interpolation-filters":!0,"column-count":!1,"column-fill":!1,"column-gap":!1,"column-rule":!1,"column-rule-color":!1,"column-rule-style":!1,"column-rule-width":!1,"column-span":!1,"column-width":!1,columns:!1,contain:!1,content:!1,"counter-increment":!1,"counter-reset":!1,"counter-set":!1,crop:!1,cue:!1,"cue-after":!1,"cue-before":!1,cursor:!1,direction:!1,display:!0,"display-inside":!0,"display-list":!0,"display-outside":!0,"dominant-baseline":!1,elevation:!1,"empty-cells":!1,filter:!1,flex:!1,"flex-basis":!1,"flex-direction":!1,"flex-flow":!1,"flex-grow":!1,"flex-shrink":!1,"flex-wrap":!1,float:!1,"float-offset":!1,"flood-color":!1,"flood-opacity":!1,"flow-from":!1,"flow-into":!1,font:!0,"font-family":!0,"font-feature-settings":!0,"font-kerning":!0,"font-language-override":!0,"font-size":!0,"font-size-adjust":!0,"font-stretch":!0,"font-style":!0,"font-synthesis":!0,"font-variant":!0,"font-variant-alternates":!0,"font-variant-caps":!0,"font-variant-east-asian":!0,"font-variant-ligatures":!0,"font-variant-numeric":!0,"font-variant-position":!0,"font-weight":!0,grid:!1,"grid-area":!1,"grid-auto-columns":!1,"grid-auto-flow":!1,"grid-auto-rows":!1,"grid-column":!1,"grid-column-end":!1,"grid-column-start":!1,"grid-row":!1,"grid-row-end":!1,"grid-row-start":!1,"grid-template":!1,"grid-template-areas":!1,"grid-template-columns":!1,"grid-template-rows":!1,"hanging-punctuation":!1,height:!0,hyphens:!1,icon:!1,"image-orientation":!1,"image-resolution":!1,"ime-mode":!1,"initial-letters":!1,"inline-box-align":!1,"justify-content":!1,"justify-items":!1,"justify-self":!1,left:!1,"letter-spacing":!0,"lighting-color":!0,"line-box-contain":!1,"line-break":!1,"line-grid":!1,"line-height":!1,"line-snap":!1,"line-stacking":!1,"line-stacking-ruby":!1,"line-stacking-shift":!1,"line-stacking-strategy":!1,"list-style":!0,"list-style-image":!0,"list-style-position":!0,"list-style-type":!0,margin:!0,"margin-bottom":!0,"margin-left":!0,"margin-right":!0,"margin-top":!0,"marker-offset":!1,"marker-side":!1,marks:!1,mask:!1,"mask-box":!1,"mask-box-outset":!1,"mask-box-repeat":!1,"mask-box-slice":!1,"mask-box-source":!1,"mask-box-width":!1,"mask-clip":!1,"mask-image":!1,"mask-origin":!1,"mask-position":!1,"mask-repeat":!1,"mask-size":!1,"mask-source-type":!1,"mask-type":!1,"max-height":!0,"max-lines":!1,"max-width":!0,"min-height":!0,"min-width":!0,"move-to":!1,"nav-down":!1,"nav-index":!1,"nav-left":!1,"nav-right":!1,"nav-up":!1,"object-fit":!1,"object-position":!1,opacity:!1,order:!1,orphans:!1,outline:!1,"outline-color":!1,"outline-offset":!1,"outline-style":!1,"outline-width":!1,overflow:!1,"overflow-wrap":!1,"overflow-x":!1,"overflow-y":!1,padding:!0,"padding-bottom":!0,"padding-left":!0,"padding-right":!0,"padding-top":!0,page:!1,"page-break-after":!1,"page-break-before":!1,"page-break-inside":!1,"page-policy":!1,pause:!1,"pause-after":!1,"pause-before":!1,perspective:!1,"perspective-origin":!1,pitch:!1,"pitch-range":!1,"play-during":!1,position:!1,"presentation-level":!1,quotes:!1,"region-fragment":!1,resize:!1,rest:!1,"rest-after":!1,"rest-before":!1,richness:!1,right:!1,rotation:!1,"rotation-point":!1,"ruby-align":!1,"ruby-merge":!1,"ruby-position":!1,"shape-image-threshold":!1,"shape-outside":!1,"shape-margin":!1,size:!1,speak:!1,"speak-as":!1,"speak-header":!1,"speak-numeral":!1,"speak-punctuation":!1,"speech-rate":!1,stress:!1,"string-set":!1,"tab-size":!1,"table-layout":!1,"text-align":!0,"text-align-last":!0,"text-combine-upright":!0,"text-decoration":!0,"text-decoration-color":!0,"text-decoration-line":!0,"text-decoration-skip":!0,"text-decoration-style":!0,"text-emphasis":!0,"text-emphasis-color":!0,"text-emphasis-position":!0,"text-emphasis-style":!0,"text-height":!0,"text-indent":!0,"text-justify":!0,"text-orientation":!0,"text-overflow":!0,"text-shadow":!0,"text-space-collapse":!0,"text-transform":!0,"text-underline-position":!0,"text-wrap":!0,top:!1,transform:!1,"transform-origin":!1,"transform-style":!1,transition:!1,"transition-delay":!1,"transition-duration":!1,"transition-property":!1,"transition-timing-function":!1,"unicode-bidi":!1,"vertical-align":!1,visibility:!1,"voice-balance":!1,"voice-duration":!1,"voice-family":!1,"voice-pitch":!1,"voice-range":!1,"voice-rate":!1,"voice-stress":!1,"voice-volume":!1,volume:!1,"white-space":!1,widows:!1,width:!0,"will-change":!1,"word-break":!0,"word-spacing":!0,"word-wrap":!0,"wrap-flow":!1,"wrap-through":!1,"writing-mode":!1,"z-index":!1},e.getDefaultWhiteList=i,e.onAttr=function(t,e,i){},e.onIgnoreAttr=function(t,e,i){},e.safeAttrValue=function(t,e){return s.test(e)?"":e}},18:(t,e,i)=>{var s=i(43),n=i(473);for(var a in(e=t.exports=function(t,e){return new n(e).process(t)}).FilterCSS=n,s)e[a]=s[a];"undefined"!=typeof window&&(window.filterCSS=t.exports)},323:(t,e,i)=>{var s=i(100);t.exports=function(t,e){";"!==(t=s.trimRight(t))[t.length-1]&&(t+=";");var i=t.length,n=!1,a=0,o=0,r="";function l(){if(!n){var i=s.trim(t.slice(a,o)),l=i.indexOf(":");if(-1!==l){var d=s.trim(i.slice(0,l)),h=s.trim(i.slice(l+1));if(d){var c=e(a,r.length,d,h,i);c&&(r+=c+"; ")}}}a=o+1}for(;o{t.exports={indexOf:function(t,e){var i,s;if(Array.prototype.indexOf)return t.indexOf(e);for(i=0,s=t.length;i{var s=i(18).FilterCSS,n=i(18).getDefaultWhiteList,a=i(349);var o=new s;function r(t){return t.replace(l,"<").replace(d,">")}var l=//g,h=/"/g,c=/"/g,u=/&#([a-zA-Z0-9]*);?/gim,g=/:?/gim,p=/&newline;?/gim,y=/((j\s*a\s*v\s*a|v\s*b|l\s*i\s*v\s*e)\s*s\s*c\s*r\s*i\s*p\s*t\s*|m\s*o\s*c\s*h\s*a):/gi,f=/e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi,b=/u\s*r\s*l\s*\(.*/gi;function m(t){return t.replace(h,""")}function _(t){return t.replace(c,'"')}function v(t){return t.replace(u,(function(t,e){return"x"===e[0]||"X"===e[0]?String.fromCharCode(parseInt(e.substr(1),16)):String.fromCharCode(parseInt(e,10))}))}function w(t){return t.replace(g,":").replace(p," ")}function x(t){for(var e="",i=0,s=t.length;i{var s=i(48),n=i(930),a=i(327);function o(t,e){return new a(e).process(t)}(e=t.exports=o).filterXSS=o,e.FilterXSS=a,function(){for(var t in s)e[t]=s[t];for(var i in n)e[i]=n[i]}(),"undefined"!=typeof window&&(window.filterXSS=t.exports),"undefined"!=typeof self&&"undefined"!=typeof DedicatedWorkerGlobalScope&&self instanceof DedicatedWorkerGlobalScope&&(self.filterXSS=t.exports)},930:(t,e,i)=>{var s=i(349);function n(t){var e,i=s.spaceIndex(t);return e=-1===i?t.slice(1,-1):t.slice(1,i+1),"/"===(e=s.trim(e).toLowerCase()).slice(0,1)&&(e=e.slice(1)),"/"===e.slice(-1)&&(e=e.slice(0,-1)),e}function a(t){return"0;e--){var i=t[e];if(" "!==i)return"="===i?e:-1}}function h(t){return function(t){return'"'===t[0]&&'"'===t[t.length-1]||"'"===t[0]&&"'"===t[t.length-1]}(t)?t.substr(1,t.length-2):t}e.parseTag=function(t,e,i){"use strict";var s="",o=0,r=!1,l=!1,d=0,h=t.length,c="",u="";t:for(d=0;d"===g||d===h-1){s+=i(t.slice(o,r)),c=n(u=t.slice(r,d+1)),s+=e(r,s.length,c,u,a(u)),o=d+1,r=!1;continue}if('"'===g||"'"===g)for(var p=1,y=t.charAt(d-p);""===y.trim()||"="===y;){if("="===y){l=g;continue t}y=t.charAt(d-++p)}}else if(g===l){l=!1;continue}}return o{t.exports={indexOf:function(t,e){var i,s;if(Array.prototype.indexOf)return t.indexOf(e);for(i=0,s=t.length;i{var s=i(18).FilterCSS,n=i(48),a=i(930),o=a.parseTag,r=a.parseAttr,l=i(349);function d(t){return null==t}function h(t){(t=function(t){var e={};for(var i in t)e[i]=t[i];return e}(t||{})).stripIgnoreTag&&(t.onIgnoreTag&&console.error('Notes: cannot use these two options "stripIgnoreTag" and "onIgnoreTag" at the same time'),t.onIgnoreTag=n.onIgnoreTagStripAll),t.whiteList||t.allowList?t.whiteList=function(t){var e={};for(var i in t)Array.isArray(t[i])?e[i.toLowerCase()]=t[i].map((function(t){return t.toLowerCase()})):e[i.toLowerCase()]=t[i];return e}(t.whiteList||t.allowList):t.whiteList=n.whiteList,this.attributeWrapSign=!0===t.singleQuotedAttributeValue?"'":n.attributeWrapSign,t.onTag=t.onTag||n.onTag,t.onTagAttr=t.onTagAttr||n.onTagAttr,t.onIgnoreTag=t.onIgnoreTag||n.onIgnoreTag,t.onIgnoreTagAttr=t.onIgnoreTagAttr||n.onIgnoreTagAttr,t.safeAttrValue=t.safeAttrValue||n.safeAttrValue,t.escapeHtml=t.escapeHtml||n.escapeHtml,this.options=t,!1===t.css?this.cssFilter=!1:(t.css=t.css||{},this.cssFilter=new s(t.css))}h.prototype.process=function(t){if(!(t=(t=t||"").toString()))return"";var e=this,i=e.options,s=i.whiteList,a=i.onTag,h=i.onIgnoreTag,c=i.onTagAttr,u=i.onIgnoreTagAttr,g=i.safeAttrValue,p=i.escapeHtml,y=e.attributeWrapSign,f=e.cssFilter;i.stripBlankChar&&(t=n.stripBlankChar(t)),i.allowCommentTag||(t=n.stripCommentTag(t));var b=!1;i.stripIgnoreTagBody&&(b=n.StripTagBody(i.stripIgnoreTagBody,h),h=b.onIgnoreTag);var m=o(t,(function(t,e,i,n,o){var b={sourcePosition:t,position:e,isClosing:o,isWhite:Object.prototype.hasOwnProperty.call(s,i)},m=a(i,n,b);if(!d(m))return m;if(b.isWhite){if(b.isClosing)return"";var _=function(t){var e=l.spaceIndex(t);if(-1===e)return{html:"",closing:"/"===t[t.length-2]};var i="/"===(t=l.trim(t.slice(e+1,-1)))[t.length-1];return i&&(t=l.trim(t.slice(0,-1))),{html:t,closing:i}}(n),v=s[i],w=r(_.html,(function(t,e){var s=-1!==l.indexOf(v,t),n=c(i,t,e,s);return d(n)?s?(e=g(i,t,e,f))?t+"="+y+e+y:t:d(n=u(i,t,e,s))?void 0:n:n}));return n="<"+i,w&&(n+=" "+w),_.closing&&(n+=" /"),n+">"}return d(m=h(i,n,b))?p(n):m}),p);return b&&(m=b.remove(m)),m},t.exports=h}},e={};function i(t){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}var s,n,a,o,r,l,d,h,c,u=function i(s){var n=e[s];if(void 0!==n)return n.exports;var a=e[s]={exports:{}};return t[s](a,a.exports,i),a.exports}(5),g=void 0!==g;if(!g){var p=function(t){return u(t)},y=function(){return!!document.createElement("video").canPlayType};if(window.sbyLinkify=(n="[a-z\\d.-]+://",a="(?:(?:(?:[^\\s!@#$%^&*()_=+[\\]{}\\\\|;:'\",.<>/?]+)\\.)+(?:ac|ad|aero|ae|af|ag|ai|al|am|an|ao|aq|arpa|ar|asia|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|biz|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|cat|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|coop|com|co|cr|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|info|int|in|io|iq|ir|is|it|je|jm|jobs|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|mg|mh|mil|mk|ml|mm|mn|mobi|mo|mp|mq|mr|ms|mt|museum|mu|mv|mw|mx|my|mz|name|na|nc|net|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pro|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|st|su|sv|sy|sz|tc|td|tel|tf|tg|th|tj|tk|tl|tm|tn|to|tp|travel|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|xn--0zwm56d|xn--11b5bs3a9aj6g|xn--80akhbyknj4f|xn--9t4b11yi5a|xn--deba0ad|xn--g6w251d|xn--hgbk6aj7f53bba|xn--hlcj6aya9esc7a|xn--jxalpdlp|xn--kgbechtv|xn--zckzah|ye|yt|yu|za|zm|zw)|(?:(?:[0-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])\\.){3}(?:[0-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5]))",o="(?:\\?[^#<>\\s]*)?(?:#[^<>\\s]*)?",r="mailto:",l=new RegExp("(?:\\b"+n+"[^<>\\s]+|\\b"+a+"(?:[;/][^#?<>\\s]*)?"+o+"(?!\\w)|(?:"+r+")?[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@"+a+o+"(?!\\w))","ig"),d=new RegExp("^"+n,"i"),h={"'":"`",">":"<",")":"(","]":"[","}":"{","B;":"B+","b:":"b9"},c={callback:function(t,e){return e?''+t+"":t},punct_regexp:/(?:[!?.,:;'"]|(?:&|&)(?:lt|gt|quot|apos|raquo|laquo|rsaquo|lsaquo);)$/},function(t,e){e=e||{};var i,s,n,a,o,u,g,p,y,f,b,m,_="",v=[];for(s in c)void 0===e[s]&&(e[s]=c[s]);for(;i=l.exec(t);)if(n=i[0],g=(u=l.lastIndex)-n.length,!/[\/:]/.test(t.charAt(g-1))){do{p=n,m=n.substr(-1),(b=h[m])&&(y=n.match(new RegExp("\\"+b+"(?!$)","g")),f=n.match(new RegExp("\\"+m,"g")),(y?y.length:0)<(f?f.length:0)&&(n=n.substr(0,n.length-1),u--)),e.punct_regexp&&(n=n.replace(e.punct_regexp,(function(t){return u-=t.length,""})))}while(n.length&&n!==p);a=n,d.test(a)||(a=(-1!==a.indexOf("@")?a.indexOf(r)?r:"":a.indexOf("irc.")?a.indexOf("ftp.")?"http://":"ftp://":"irc://")+a),o!=g&&(v.push([t.slice(o,g)]),o=u),v.push([n,a])}for(v.push([t.substr(o)]),s=0;s1||t.items.merge,a[s]=n?e*i:this._items[s].width();this._widths=a}},{filter:["items","settings"],run:function(){var e=[],i=this._items,s=this.settings,n=Math.max(2*s.items,4),a=2*Math.ceil(i.length/2),o=s.loop&&i.length?s.rewind?n:Math.max(n,a):0,r="",l="";for(o/=2;o--;)e.push(this.normalize(e.length/2,!0)),r+=i[e[e.length-1]][0].outerHTML,e.push(this.normalize(i.length-1-(e.length-1)/2,!0)),l=i[e[e.length-1]][0].outerHTML+l;this._clones=e,t(r).addClass("cloned").appendTo(this.$stage),t(l).addClass("cloned").prependTo(this.$stage)}},{filter:["width","items","settings"],run:function(){for(var t=this.settings.rtl?1:-1,e=this._clones.length+this._items.length,i=-1,s=0,n=0,a=[];++i",r)||this.op(e,"<",o)&&this.op(e,">",r))&&l.push(i);this.$stage.children(".active").removeClass("active"),this.$stage.children(":eq("+l.join("), :eq(")+")").addClass("active"),this.settings.center&&(this.$stage.children(".center").removeClass("center"),this.$stage.children().eq(this.current()).addClass("center"))}}],a.prototype.initialize=function(){var e,i,s;this.enter("initializing"),this.trigger("initialize"),this.$element.toggleClass(this.settings.rtlClass,this.settings.rtl),this.settings.autoWidth&&!this.is("pre-loading")&&(e=this.$element.find("img"),i=this.settings.nestedItemSelector?"."+this.settings.nestedItemSelector:n,s=this.$element.children(i).width(),e.length&&s<=0&&this.preloadAutoWidthImages(e)),this.$element.addClass(this.options.loadingClass),this.$stage=t("<"+this.settings.stageElement+' class="'+this.settings.stageClass+'"/>').wrap('
'),this.$element.append(this.$stage.parent()),this.replace(this.$element.children().not(this.$stage.parent())),this.$element.is(":visible")?this.refresh():this.invalidate("width"),this.$element.removeClass(this.options.loadingClass).addClass(this.options.loadedClass),this.registerEventHandlers(),this.leave("initializing"),this.trigger("initialized")},a.prototype.setup=function(){var e=this.viewport(),i=this.options.responsive,s=-1,n=null;i?(t.each(i,(function(t){t<=e&&t>s&&(s=Number(t))})),"function"==typeof(n=t.extend({},this.options,i[s])).stagePadding&&(n.stagePadding=n.stagePadding()),delete n.responsive,n.responsiveClass&&this.$element.attr("class",this.$element.attr("class").replace(new RegExp("("+this.options.responsiveClass+"-)\\S+\\s","g"),"$1"+s))):n=t.extend({},this.options),this.trigger("change",{property:{name:"settings",value:n}}),this._breakpoint=s,this.settings=n,this.invalidate("settings"),this.trigger("changed",{property:{name:"settings",value:this.settings}})},a.prototype.optionsLogic=function(){this.settings.autoWidth&&(this.settings.stagePadding=!1,this.settings.merge=!1)},a.prototype.prepare=function(e){var i=this.trigger("prepare",{content:e});return i.data||(i.data=t("<"+this.settings.itemElement+"/>").addClass(this.options.itemClass).append(e)),this.trigger("prepared",{content:i.data}),i.data},a.prototype.update=function(){for(var e=0,i=this._pipe.length,s=t.proxy((function(t){return this[t]}),this._invalidated),n={};e0)&&this._pipe[e].run(n),e++;this._invalidated={},!this.is("valid")&&this.enter("valid")},a.prototype.width=function(t){switch(t=t||a.Width.Default){case a.Width.Inner:case a.Width.Outer:return this._width;default:return this._width-2*this.settings.stagePadding+this.settings.margin}},a.prototype.refresh=function(){this.enter("refreshing"),this.trigger("refresh"),this.setup(),this.optionsLogic(),this.$element.addClass(this.options.refreshClass),this.update(),this.$element.removeClass(this.options.refreshClass),this.leave("refreshing"),this.trigger("refreshed")},a.prototype.onThrottledResize=function(){e.clearTimeout(this.resizeTimer),this.resizeTimer=e.setTimeout(this._handlers.onResize,this.settings.responsiveRefreshRate)},a.prototype.onResize=function(){return!!this._items.length&&this._width!==this.$element.width()&&!!this.$element.is(":visible")&&(this.enter("resizing"),this.trigger("resize").isDefaultPrevented()?(this.leave("resizing"),!1):(this.invalidate("width"),this.refresh(),this.leave("resizing"),void this.trigger("resized")))},a.prototype.registerEventHandlers=function(){t.support.transition&&this.$stage.on(t.support.transition.end+".owl.core",t.proxy(this.onTransitionEnd,this)),!1!==this.settings.responsive&&this.on(e,"resize",this._handlers.onThrottledResize),this.settings.mouseDrag&&(this.$element.addClass(this.options.dragClass),this.$stage.on("mousedown.owl.core",t.proxy(this.onDragStart,this)),this.$stage.on("dragstart.owl.core selectstart.owl.core",(function(){return!1}))),this.settings.touchDrag&&(this.$stage.on("touchstart.owl.core",t.proxy(this.onDragStart,this)),this.$stage.on("touchcancel.owl.core",t.proxy(this.onDragEnd,this)))},a.prototype.onDragStart=function(e){var i=null;3!==e.which&&(t.support.transform?i={x:(i=this.$stage.css("transform").replace(/.*\(|\)| /g,"").split(","))[16===i.length?12:4],y:i[16===i.length?13:5]}:(i=this.$stage.position(),i={x:this.settings.rtl?i.left+this.$stage.width()-this.width()+this.settings.margin:i.left,y:i.top}),this.is("animating")&&(t.support.transform?this.animate(i.x):this.$stage.stop(),this.invalidate("position")),this.$element.toggleClass(this.options.grabClass,"mousedown"===e.type),this.speed(0),this._drag.time=(new Date).getTime(),this._drag.target=t(e.target),this._drag.stage.start=i,this._drag.stage.current=i,this._drag.pointer=this.pointer(e),t(s).on("mouseup.owl.core touchend.owl.core",t.proxy(this.onDragEnd,this)),t(s).one("mousemove.owl.core touchmove.owl.core",t.proxy((function(e){var i=this.difference(this._drag.pointer,this.pointer(e));t(s).on("mousemove.owl.core touchmove.owl.core",t.proxy(this.onDragMove,this)),Math.abs(i.x)0^this.settings.rtl?"left":"right";t(s).off(".owl.core"),this.$element.removeClass(this.options.grabClass),(0!==i.x&&this.is("dragging")||!this.is("valid"))&&(this.speed(this.settings.dragEndSpeed||this.settings.smartSpeed),this.current(this.closest(n.x,0!==i.x?a:this._drag.direction)),this.invalidate("position"),this.update(),this._drag.direction=a,(Math.abs(i.x)>3||(new Date).getTime()-this._drag.time>300)&&this._drag.target.one("click.owl.core",(function(){return!1}))),this.is("dragging")&&(this.leave("dragging"),this.trigger("dragged"))},a.prototype.closest=function(e,i){var s=-1,n=this.width(),a=this.coordinates();return this.settings.freeDrag||t.each(a,t.proxy((function(t,o){return"left"===i&&e>o-30&&eo-n-30&&e",a[t+1]||o-n)&&(s="left"===i?t+1:t),-1===s}),this)),this.settings.loop||(this.op(e,">",a[this.minimum()])?s=e=this.minimum():this.op(e,"<",a[this.maximum()])&&(s=e=this.maximum())),s},a.prototype.animate=function(e){var i=this.speed()>0;this.is("animating")&&this.onTransitionEnd(),i&&(this.enter("animating"),this.trigger("translate")),t.support.transform3d&&t.support.transition?this.$stage.css({transform:"translate3d("+e+"px,0px,0px)",transition:this.speed()/1e3+"s"}):i?this.$stage.animate({left:e+"px"},this.speed(),this.settings.fallbackEasing,t.proxy(this.onTransitionEnd,this)):this.$stage.css({left:e+"px"})},a.prototype.is=function(t){return this._states.current[t]&&this._states.current[t]>0},a.prototype.current=function(t){if(t===n)return this._current;if(0===this._items.length)return n;if(t=this.normalize(t),this._current!==t){var e=this.trigger("change",{property:{name:"position",value:t}});e.data!==n&&(t=this.normalize(e.data)),this._current=t,this.invalidate("position"),this.trigger("changed",{property:{name:"position",value:this._current}})}return this._current},a.prototype.invalidate=function(e){return"string"===t.type(e)&&(this._invalidated[e]=!0,this.is("valid")&&this.leave("valid")),t.map(this._invalidated,(function(t,e){return e}))},a.prototype.reset=function(t){(t=this.normalize(t))!==n&&(this._speed=0,this._current=t,this.suppress(["translate","translated"]),this.animate(this.coordinates(t)),this.release(["translate","translated"]))},a.prototype.normalize=function(t,e){var i=this._items.length,s=e?0:this._clones.length;return!this.isNumeric(t)||i<1?t=n:(t<0||t>=i+s)&&(t=((t-s/2)%i+i)%i+s/2),t},a.prototype.relative=function(t){return t-=this._clones.length/2,this.normalize(t,!0)},a.prototype.maximum=function(t){var e,i,s,n=this.settings,a=this._coordinates.length;if(n.loop)a=this._clones.length/2+this._items.length-1;else if(n.autoWidth||n.merge){for(e=this._items.length,i=this._items[--e].width(),s=this.$element.width();e--&&!((i+=this._items[e].width()+this.settings.margin)>s););a=e+1}else a=n.center?this._items.length-1:this._items.length-n.items;return t&&(a-=this._clones.length/2),Math.max(a,0)},a.prototype.minimum=function(t){return t?0:this._clones.length/2},a.prototype.items=function(t){return t===n?this._items.slice():(t=this.normalize(t,!0),this._items[t])},a.prototype.mergers=function(t){return t===n?this._mergers.slice():(t=this.normalize(t,!0),this._mergers[t])},a.prototype.clones=function(e){var i=this._clones.length/2,s=i+this._items.length,a=function(t){return t%2==0?s+t/2:i-(t+1)/2};return e===n?t.map(this._clones,(function(t,e){return a(e)})):t.map(this._clones,(function(t,i){return t===e?a(i):null}))},a.prototype.speed=function(t){return t!==n&&(this._speed=t),this._speed},a.prototype.coordinates=function(e){var i,s=1,a=e-1;return e===n?t.map(this._coordinates,t.proxy((function(t,e){return this.coordinates(e)}),this)):(this.settings.center?(this.settings.rtl&&(s=-1,a=e+1),i=this._coordinates[e],i+=(this.width()-i+(this._coordinates[a]||0))/2*s):i=this._coordinates[a]||0,i=Math.ceil(i))},a.prototype.duration=function(t,e,i){return 0===i?0:Math.min(Math.max(Math.abs(e-t),1),6)*Math.abs(i||this.settings.smartSpeed)},a.prototype.to=function(t,e){var i=this.current(),s=null,n=t-this.relative(i),a=(n>0)-(n<0),o=this._items.length,r=this.minimum(),l=this.maximum();this.settings.loop?(!this.settings.rewind&&Math.abs(n)>o/2&&(n+=-1*a*o),(s=(((t=i+n)-r)%o+o)%o+r)!==t&&s-n<=l&&s-n>0&&(i=s-n,t=s,this.reset(i))):t=this.settings.rewind?(t%(l+=1)+l)%l:Math.max(r,Math.min(l,t)),this.speed(this.duration(i,t,e)),this.current(t),this.$element.is(":visible")&&this.update()},a.prototype.next=function(t){t=t||!1,this.to(this.relative(this.current())+1,t)},a.prototype.prev=function(t){t=t||!1,this.to(this.relative(this.current())-1,t)},a.prototype.onTransitionEnd=function(t){if(t!==n&&(t.stopPropagation(),(t.target||t.srcElement||t.originalTarget)!==this.$stage.get(0)))return!1;this.leave("animating"),this.trigger("translated")},a.prototype.viewport=function(){var i;return this.options.responsiveBaseElement!==e?i=t(this.options.responsiveBaseElement).width():e.innerWidth?i=e.innerWidth:s.documentElement&&s.documentElement.clientWidth?i=s.documentElement.clientWidth:console.warn("Can not detect viewport width."),i},a.prototype.replace=function(e){this.$stage.empty(),this._items=[],e&&(e=e instanceof jQuery?e:t(e)),this.settings.nestedItemSelector&&(e=e.find("."+this.settings.nestedItemSelector)),e.filter((function(){return 1===this.nodeType})).each(t.proxy((function(t,e){e=this.prepare(e),this.$stage.append(e),this._items.push(e),this._mergers.push(1*e.find("[data-merge]").addBack("[data-merge]").attr("data-merge")||1)}),this)),this.reset(this.isNumeric(this.settings.startPosition)?this.settings.startPosition:0),this.invalidate("items")},a.prototype.add=function(e,i){var s=this.relative(this._current);i=i===n?this._items.length:this.normalize(i,!0),e=e instanceof jQuery?e:t(e),this.trigger("add",{content:e,position:i}),e=this.prepare(e),0===this._items.length||i===this._items.length?(0===this._items.length&&this.$stage.append(e),0!==this._items.length&&this._items[i-1].after(e),this._items.push(e),this._mergers.push(1*e.find("[data-merge]").addBack("[data-merge]").attr("data-merge")||1)):(this._items[i].before(e),this._items.splice(i,0,e),this._mergers.splice(i,0,1*e.find("[data-merge]").addBack("[data-merge]").attr("data-merge")||1)),this._items[s]&&this.reset(this._items[s].index()),this.invalidate("items"),this.trigger("added",{content:e,position:i})},a.prototype.remove=function(t){(t=this.normalize(t,!0))!==n&&(this.trigger("remove",{content:this._items[t],position:t}),this._items[t].remove(),this._items.splice(t,1),this._mergers.splice(t,1),this.invalidate("items"),this.trigger("removed",{content:null,position:t}))},a.prototype.preloadAutoWidthImages=function(e){e.each(t.proxy((function(e,i){this.enter("pre-loading"),i=t(i),t(new Image).one("load",t.proxy((function(t){i.attr("src",t.target.src),i.css("opacity",1),this.leave("pre-loading"),!this.is("pre-loading")&&!this.is("initializing")&&this.refresh()}),this)).attr("src",i.attr("src")||i.attr("data-src")||i.attr("data-src-retina"))}),this))},a.prototype.destroy=function(){for(var i in this.$element.off(".owl.core"),this.$stage.off(".owl.core"),t(s).off(".owl.core"),!1!==this.settings.responsive&&(e.clearTimeout(this.resizeTimer),this.off(e,"resize",this._handlers.onThrottledResize)),this._plugins)this._plugins[i].destroy();this.$stage.children(".cloned").remove(),this.$stage.unwrap(),this.$stage.children().contents().unwrap(),this.$stage.children().unwrap(),this.$element.removeClass(this.options.refreshClass).removeClass(this.options.loadingClass).removeClass(this.options.loadedClass).removeClass(this.options.rtlClass).removeClass(this.options.dragClass).removeClass(this.options.grabClass).attr("class",this.$element.attr("class").replace(new RegExp(this.options.responsiveClass+"-\\S+\\s","g"),"")).removeData("owl.carousel")},a.prototype.op=function(t,e,i){var s=this.settings.rtl;switch(e){case"<":return s?t>i:t":return s?ti;case">=":return s?t<=i:t>=i;case"<=":return s?t>=i:t<=i}},a.prototype.on=function(t,e,i,s){t.addEventListener?t.addEventListener(e,i,s):t.attachEvent&&t.attachEvent("on"+e,i)},a.prototype.off=function(t,e,i,s){t.removeEventListener?t.removeEventListener(e,i,s):t.detachEvent&&t.detachEvent("on"+e,i)},a.prototype.trigger=function(e,i,s,n,o){var r={item:{count:this._items.length,index:this.current()}},l=t.camelCase(t.grep(["on",e,s],(function(t){return t})).join("-").toLowerCase()),d=t.Event([e,"owl",s||"carousel"].join(".").toLowerCase(),t.extend({relatedTarget:this},r,i));return this._supress[e]||(t.each(this._plugins,(function(t,e){e.onTrigger&&e.onTrigger(d)})),this.register({type:a.Type.Event,name:e}),this.$element.trigger(d),this.settings&&"function"==typeof this.settings[l]&&this.settings[l].call(this,d)),d},a.prototype.enter=function(e){t.each([e].concat(this._states.tags[e]||[]),t.proxy((function(t,e){this._states.current[e]===n&&(this._states.current[e]=0),this._states.current[e]++}),this))},a.prototype.leave=function(e){t.each([e].concat(this._states.tags[e]||[]),t.proxy((function(t,e){this._states.current[e]--}),this))},a.prototype.register=function(e){if(e.type===a.Type.Event){if(t.event.special[e.name]||(t.event.special[e.name]={}),!t.event.special[e.name].owl){var i=t.event.special[e.name]._default;t.event.special[e.name]._default=function(t){return!i||!i.apply||t.namespace&&-1!==t.namespace.indexOf("owl")?t.namespace&&t.namespace.indexOf("owl")>-1:i.apply(this,arguments)},t.event.special[e.name].owl=!0}}else e.type===a.Type.State&&(this._states.tags[e.name]?this._states.tags[e.name]=this._states.tags[e.name].concat(e.tags):this._states.tags[e.name]=e.tags,this._states.tags[e.name]=t.grep(this._states.tags[e.name],t.proxy((function(i,s){return t.inArray(i,this._states.tags[e.name])===s}),this)))},a.prototype.suppress=function(e){t.each(e,t.proxy((function(t,e){this._supress[e]=!0}),this))},a.prototype.release=function(e){t.each(e,t.proxy((function(t,e){delete this._supress[e]}),this))},a.prototype.pointer=function(t){var i={x:null,y:null};return(t=(t=t.originalEvent||t||e.event).touches&&t.touches.length?t.touches[0]:t.changedTouches&&t.changedTouches.length?t.changedTouches[0]:t).pageX?(i.x=t.pageX,i.y=t.pageY):(i.x=t.clientX,i.y=t.clientY),i},a.prototype.isNumeric=function(t){return!isNaN(parseFloat(t))},a.prototype.difference=function(t,e){return{x:t.x-e.x,y:t.y-e.y}},t.fn.sbyOwlCarousel=function(e){var s=Array.prototype.slice.call(arguments,1);return this.each((function(){var n=t(this),o=n.data("owl.carousel");o||(o=new a(this,"object"==i(e)&&e),n.data("owl.carousel",o),t.each(["next","prev","to","destroy","refresh","replace","add","remove"],(function(e,i){o.register({type:a.Type.Event,name:i}),o.$element.on(i+".owl.carousel.core",t.proxy((function(t){t.namespace&&t.relatedTarget!==this&&(this.suppress([i]),o[i].apply(this,[].slice.call(arguments,1)),this.release([i]))}),o))}))),"string"==typeof e&&"_"!==e.charAt(0)&&o[e].apply(o,s)}))},t.fn.sbyOwlCarousel.Constructor=a}(window.Zepto||window.jQuery,window,document),function(t,e,i,s){var n=function e(i){this._core=i,this._interval=null,this._visible=null,this._handlers={"initialized.owl.carousel":t.proxy((function(t){t.namespace&&this._core.settings.autoRefresh&&this.watch()}),this)},this._core.options=t.extend({},e.Defaults,this._core.options),this._core.$element.on(this._handlers)};n.Defaults={autoRefresh:!0,autoRefreshInterval:500},n.prototype.watch=function(){this._interval||(this._visible=this._core.$element.is(":visible"),this._interval=e.setInterval(t.proxy(this.refresh,this),this._core.settings.autoRefreshInterval))},n.prototype.refresh=function(){this._core.$element.is(":visible")!==this._visible&&(this._visible=!this._visible,this._core.$element.toggleClass("sby-owl-hidden",!this._visible),this._visible&&this._core.invalidate("width")&&this._core.refresh())},n.prototype.destroy=function(){var t,i;for(t in e.clearInterval(this._interval),this._handlers)this._core.$element.off(t,this._handlers[t]);for(i in Object.getOwnPropertyNames(this))"function"!=typeof this[i]&&(this[i]=null)},t.fn.sbyOwlCarousel.Constructor.Plugins.AutoRefresh=n}(window.Zepto||window.jQuery,window,document),function(t,e,i,s){var n=function e(i){this._core=i,this._loaded=[],this._handlers={"initialized.owl.carousel change.owl.carousel resized.owl.carousel":t.proxy((function(e){if(e.namespace&&this._core.settings&&this._core.settings.lazyLoad&&(e.property&&"position"==e.property.name||"initialized"==e.type))for(var i=this._core.settings,s=i.center&&Math.ceil(i.items/2)||i.items,n=i.center&&-1*s||0,a=(e.property&&void 0!==e.property.value?e.property.value:this._core.current())+n,o=this._core.clones().length,r=t.proxy((function(t,e){this.load(e)}),this);n++-1||(n.each(t.proxy((function(i,s){var n,a=t(s),o=e.devicePixelRatio>1&&a.attr("data-src-retina")||a.attr("data-src");this._core.trigger("load",{element:a,url:o},"lazy"),a.is("img")?a.one("load.owl.lazy",t.proxy((function(){a.css("opacity",1),this._core.trigger("loaded",{element:a,url:o},"lazy")}),this)).attr("src",o):((n=new Image).onload=t.proxy((function(){a.css({"background-image":'url("'+o+'")',opacity:"1"}),this._core.trigger("loaded",{element:a,url:o},"lazy")}),this),n.src=o)}),this)),this._loaded.push(s.get(0)))},n.prototype.destroy=function(){var t,e;for(t in this.handlers)this._core.$element.off(t,this.handlers[t]);for(e in Object.getOwnPropertyNames(this))"function"!=typeof this[e]&&(this[e]=null)},t.fn.sbyOwlCarousel.Constructor.Plugins.Lazy=n}(window.Zepto||window.jQuery,window,document),function(t,e,i,s){var n=function e(i){this._core=i,this._handlers={"initialized.owl.carousel refreshed.owl.carousel":t.proxy((function(t){t.namespace&&this._core.settings.autoHeight&&this.update()}),this),"changed.owl.carousel":t.proxy((function(t){t.namespace&&this._core.settings.autoHeight&&"position"==t.property.name&&this.update()}),this),"loaded.owl.lazy":t.proxy((function(t){t.namespace&&this._core.settings.autoHeight&&t.element.closest("."+this._core.settings.itemClass).index()===this._core.current()&&this.update()}),this)},this._core.options=t.extend({},e.Defaults,this._core.options),this._core.$element.on(this._handlers)};n.Defaults={autoHeight:!1,autoHeightClass:"sby-owl-height"},n.prototype.update=function(){var e,i=this._core._current,s=i+this._core.settings.items,n=this._core.$stage.children().toArray().slice(i,s),a=[];t.each(n,(function(e,i){a.push(t(i).height())})),e=Math.max.apply(null,a),this._core.$stage.parent().height(e).addClass(this._core.settings.autoHeightClass)},n.prototype.destroy=function(){var t,e;for(t in this._handlers)this._core.$element.off(t,this._handlers[t]);for(e in Object.getOwnPropertyNames(this))"function"!=typeof this[e]&&(this[e]=null)},t.fn.sbyOwlCarousel.Constructor.Plugins.AutoHeight=n}(window.Zepto||window.jQuery,window,document),function(t,e,i,s){var n=function e(i){this._core=i,this._videos={},this._playing=null,this._handlers={"initialized.owl.carousel":t.proxy((function(t){t.namespace&&this._core.register({type:"state",name:"playing",tags:["interacting"]})}),this),"resize.owl.carousel":t.proxy((function(t){t.namespace&&this._core.settings.video&&this.isInFullScreen()&&t.preventDefault()}),this),"refreshed.owl.carousel":t.proxy((function(t){t.namespace&&this._core.is("resizing")&&this._core.$stage.find(".cloned .sby-owl-video-frame").remove()}),this),"changed.owl.carousel":t.proxy((function(t){t.namespace&&"position"===t.property.name&&this._playing&&this.stop()}),this),"prepared.owl.carousel":t.proxy((function(e){if(e.namespace){var i=t(e.content).find(".sby-owl-video");i.length&&(i.css("display","none"),this.fetch(i,t(e.content)))}}),this)},this._core.options=t.extend({},e.Defaults,this._core.options),this._core.$element.on(this._handlers),this._core.$element.on("click.owl.video",".sby-owl-video-play-icon",t.proxy((function(t){this.play(t)}),this))};n.Defaults={video:!1,videoHeight:!1,videoWidth:!1},n.prototype.fetch=function(t,e){var i=t.attr("data-vimeo-id")?"vimeo":t.attr("data-vzaar-id")?"vzaar":"youtube",s=t.attr("data-vimeo-id")||t.attr("data-youtube-id")||t.attr("data-vzaar-id"),n=t.attr("data-width")||this._core.settings.videoWidth,a=t.attr("data-height")||this._core.settings.videoHeight,o=t.attr("href");if(!o)throw new Error("Missing video URL.");if((s=o.match(/(http:|https:|)\/\/(player.|www.|app.)?(vimeo\.com|youtu(be\.com|\.be|be\.googleapis\.com)|vzaar\.com)\/(video\/|videos\/|embed\/|channels\/.+\/|groups\/.+\/|watch\?v=|v\/)?([A-Za-z0-9._%-]*)(\&\S+)?/))[3].indexOf("youtu")>-1)i="youtube";else if(s[3].indexOf("vimeo")>-1)i="vimeo";else{if(!(s[3].indexOf("vzaar")>-1))throw new Error("Video URL not supported.");i="vzaar"}s=s[6],this._videos[o]={type:i,id:s,width:n,height:a},e.attr("data-video",o),this.thumbnail(t,this._videos[o])},n.prototype.thumbnail=function(e,i){var s,n,a=i.width&&i.height?'style="width:'+i.width+"px;height:"+i.height+'px;"':"",o=e.find("img"),r="src",l="",d=this._core.settings,h=function(t){s=d.lazyLoad?'
':'
',e.after(s),e.after('
')};if(e.wrap('
"),this._core.settings.lazyLoad&&(r="data-src",l="sby-owl-lazy"),o.length)return h(o.attr(r)),o.remove(),!1;"youtube"===i.type?(n="//img.youtube.com/vi/"+i.id+"/hqdefault.jpg",h(n)):"vimeo"===i.type?t.ajax({type:"GET",url:"//vimeo.com/api/v2/video/"+i.id+".json",jsonp:"callback",dataType:"jsonp",success:function(t){n=t[0].thumbnail_large,h(n)}}):"vzaar"===i.type&&t.ajax({type:"GET",url:"//vzaar.com/api/videos/"+i.id+".json",jsonp:"callback",dataType:"jsonp",success:function(t){n=t.framegrab_url,h(n)}})},n.prototype.stop=function(){this._core.trigger("stop",null,"video"),this._playing.find(".sby-owl-video-frame").remove(),this._playing.removeClass("sby-owl-video-playing"),this._playing=null,this._core.leave("playing"),this._core.trigger("stopped",null,"video")},n.prototype.play=function(e){var i,s=t(e.target).closest("."+this._core.settings.itemClass),n=this._videos[s.attr("data-video")],a=n.width||"100%",o=n.height||this._core.$stage.height();this._playing||(this._core.enter("playing"),this._core.trigger("play",null,"video"),s=this._core.items(this._core.relative(s.index())),this._core.reset(s.index()),"youtube"===n.type?i='':"vimeo"===n.type?i='':"vzaar"===n.type&&(i=''),t('
'+i+"
").insertAfter(s.find(".sby-owl-video")),this._playing=s.addClass("sby-owl-video-playing"))},n.prototype.isInFullScreen=function(){var e=i.fullscreenElement||i.mozFullScreenElement||i.webkitFullscreenElement;return e&&t(e).parent().hasClass("sby-owl-video-frame")},n.prototype.destroy=function(){var t,e;for(t in this._core.$element.off("click.owl.video"),this._handlers)this._core.$element.off(t,this._handlers[t]);for(e in Object.getOwnPropertyNames(this))"function"!=typeof this[e]&&(this[e]=null)},t.fn.sbyOwlCarousel.Constructor.Plugins.Video=n}(window.Zepto||window.jQuery,window,document),function(t,e,i,s){var n=function e(i){this.core=i,this.core.options=t.extend({},e.Defaults,this.core.options),this.swapping=!0,this.previous=s,this.next=s,this.handlers={"change.owl.carousel":t.proxy((function(t){t.namespace&&"position"==t.property.name&&(this.previous=this.core.current(),this.next=t.property.value)}),this),"drag.owl.carousel dragged.owl.carousel translated.owl.carousel":t.proxy((function(t){t.namespace&&(this.swapping="translated"==t.type)}),this),"translate.owl.carousel":t.proxy((function(t){t.namespace&&this.swapping&&(this.core.options.animateOut||this.core.options.animateIn)&&this.swap()}),this)},this.core.$element.on(this.handlers)};n.Defaults={animateOut:!1,animateIn:!1},n.prototype.swap=function(){if(1===this.core.settings.items&&t.support.animation&&t.support.transition){this.core.speed(0);var e,i=t.proxy(this.clear,this),s=this.core.$stage.children().eq(this.previous),n=this.core.$stage.children().eq(this.next),a=this.core.settings.animateIn,o=this.core.settings.animateOut;this.core.current()!==this.previous&&(o&&(e=this.core.coordinates(this.previous)-this.core.coordinates(this.next),s.one(t.support.animation.end,i).css({left:e+"px"}).addClass("animated sby-owl-animated-out").addClass(o)),a&&n.one(t.support.animation.end,i).addClass("animated sby-owl-animated-in").addClass(a))}},n.prototype.clear=function(e){t(e.target).css({left:""}).removeClass("animated sby-owl-animated-out sby-owl-animated-in").removeClass(this.core.settings.animateIn).removeClass(this.core.settings.animateOut),this.core.onTransitionEnd()},n.prototype.destroy=function(){var t,e;for(t in this.handlers)this.core.$element.off(t,this.handlers[t]);for(e in Object.getOwnPropertyNames(this))"function"!=typeof this[e]&&(this[e]=null)},t.fn.sbyOwlCarousel.Constructor.Plugins.Animate=n}(window.Zepto||window.jQuery,window,document),function(t,e,i,s){var n=function e(i){this._core=i,this._timeout=null,this._paused=!1,this._handlers={"changed.owl.carousel":t.proxy((function(t){t.namespace&&"settings"===t.property.name?this._core.settings.autoplay?this.play():this.stop():t.namespace&&"position"===t.property.name&&this._core.settings.autoplay&&this._setAutoPlayInterval()}),this),"initialized.owl.carousel":t.proxy((function(t){t.namespace&&this._core.settings.autoplay&&this.play()}),this),"play.owl.autoplay":t.proxy((function(t,e,i){t.namespace&&this.play(e,i)}),this),"stop.owl.autoplay":t.proxy((function(t){t.namespace&&this.stop()}),this),"mouseover.owl.autoplay":t.proxy((function(){this._core.settings.autoplayHoverPause&&this._core.is("rotating")&&this.pause()}),this),"mouseleave.owl.autoplay":t.proxy((function(){this._core.settings.autoplayHoverPause&&this._core.is("rotating")&&this.play()}),this),"touchstart.owl.core":t.proxy((function(){this._core.settings.autoplayHoverPause&&this._core.is("rotating")&&this.pause()}),this),"touchend.owl.core":t.proxy((function(){this._core.settings.autoplayHoverPause&&this.play()}),this)},this._core.$element.on(this._handlers),this._core.options=t.extend({},e.Defaults,this._core.options)};n.Defaults={autoplay:!1,autoplayTimeout:5e3,autoplayHoverPause:!1,autoplaySpeed:!1},n.prototype.play=function(t,e){this._paused=!1,this._core.is("rotating")||(this._core.enter("rotating"),this._setAutoPlayInterval())},n.prototype._getNextTimeout=function(s,n){return this._timeout&&e.clearTimeout(this._timeout),e.setTimeout(t.proxy((function(){this._paused||this._core.is("busy")||this._core.is("interacting")||i.hidden||this._core.next(n||this._core.settings.autoplaySpeed)}),this),s||this._core.settings.autoplayTimeout)},n.prototype._setAutoPlayInterval=function(){this._timeout=this._getNextTimeout()},n.prototype.stop=function(){this._core.is("rotating")&&(e.clearTimeout(this._timeout),this._core.leave("rotating"))},n.prototype.pause=function(){this._core.is("rotating")&&(this._paused=!0)},n.prototype.destroy=function(){var t,e;for(t in this.stop(),this._handlers)this._core.$element.off(t,this._handlers[t]);for(e in Object.getOwnPropertyNames(this))"function"!=typeof this[e]&&(this[e]=null)},t.fn.sbyOwlCarousel.Constructor.Plugins.autoplay=n}(window.Zepto||window.jQuery,window,document),function(t,e,i,s){"use strict";var n=function e(i){this._core=i,this._initialized=!1,this._pages=[],this._controls={},this._templates=[],this.$element=this._core.$element,this._overrides={next:this._core.next,prev:this._core.prev,to:this._core.to},this._handlers={"prepared.owl.carousel":t.proxy((function(e){e.namespace&&this._core.settings.dotsData&&this._templates.push('
'+t(e.content).find("[data-dot]").addBack("[data-dot]").attr("data-dot")+"
")}),this),"added.owl.carousel":t.proxy((function(t){t.namespace&&this._core.settings.dotsData&&this._templates.splice(t.position,0,this._templates.pop())}),this),"remove.owl.carousel":t.proxy((function(t){t.namespace&&this._core.settings.dotsData&&this._templates.splice(t.position,1)}),this),"changed.owl.carousel":t.proxy((function(t){t.namespace&&"position"==t.property.name&&this.draw()}),this),"initialized.owl.carousel":t.proxy((function(t){t.namespace&&!this._initialized&&(this._core.trigger("initialize",null,"navigation"),this.initialize(),this.update(),this.draw(),this._initialized=!0,this._core.trigger("initialized",null,"navigation"))}),this),"refreshed.owl.carousel":t.proxy((function(t){t.namespace&&this._initialized&&(this._core.trigger("refresh",null,"navigation"),this.update(),this.draw(),this._core.trigger("refreshed",null,"navigation"))}),this)},this._core.options=t.extend({},e.Defaults,this._core.options),this.$element.on(this._handlers)};n.Defaults={nav:!1,navText:["prev","next"],navSpeed:!1,navElement:"div",navContainer:!1,navContainerClass:"sby-owl-nav",navClass:["sby-owl-prev","sby-owl-next"],slideBy:1,dotClass:"sby-owl-dot",dotsClass:"sby-owl-dots",dots:!0,dotsEach:!1,dotsData:!1,dotsSpeed:!1,dotsContainer:!1},n.prototype.initialize=function(){var e,i=this._core.settings;for(e in this._controls.$relative=(i.navContainer?t(i.navContainer):t("
").addClass(i.navContainerClass).appendTo(this.$element)).addClass("disabled"),this._controls.$previous=t("<"+i.navElement+">").addClass(i.navClass[0]).html(i.navText[0]).prependTo(this._controls.$relative).on("click",t.proxy((function(t){this.prev(i.navSpeed)}),this)),this._controls.$next=t("<"+i.navElement+">").addClass(i.navClass[1]).html(i.navText[1]).appendTo(this._controls.$relative).on("click",t.proxy((function(t){this.next(i.navSpeed)}),this)),i.dotsData||(this._templates=[t("
").addClass(i.dotClass).append(t("")).prop("outerHTML")]),this._controls.$absolute=(i.dotsContainer?t(i.dotsContainer):t("
").addClass(i.dotsClass).appendTo(this.$element)).addClass("disabled"),this._controls.$absolute.on("click","div",t.proxy((function(e){var s=t(e.target).parent().is(this._controls.$absolute)?t(e.target).index():t(e.target).parent().index();e.preventDefault(),this.to(s,i.dotsSpeed)}),this)),this._overrides)this._core[e]=t.proxy(this[e],this)},n.prototype.destroy=function(){var t,e,i,s;for(t in this._handlers)this.$element.off(t,this._handlers[t]);for(e in this._controls)this._controls[e].remove();for(s in this.overides)this._core[s]=this._overrides[s];for(i in Object.getOwnPropertyNames(this))"function"!=typeof this[i]&&(this[i]=null)},n.prototype.update=function(){var t,e,i=this._core.clones().length/2,s=i+this._core.items().length,n=this._core.maximum(!0),a=this._core.settings,o=a.center||a.autoWidth||a.dotsData?1:a.dotsEach||a.items;if("page"!==a.slideBy&&(a.slideBy=Math.min(a.slideBy,a.items)),a.dots||"page"==a.slideBy)for(this._pages=[],t=i,e=0;t=o||0===e){if(this._pages.push({start:Math.min(n,t-i),end:t-i+o-1}),Math.min(n,t-i)===n)break;e=0}e+=this._core.mergers(this._core.relative(t))}},n.prototype.draw=function(){var e,i=this._core.settings,s=this._core.items().length<=i.items,n=this._core.relative(this._core.current()),a=i.loop||i.rewind;this._controls.$relative.toggleClass("disabled",!i.nav||s),i.nav&&(this._controls.$previous.toggleClass("disabled",!a&&n<=this._core.minimum(!0)),this._controls.$next.toggleClass("disabled",!a&&n>=this._core.maximum(!0))),this._controls.$absolute.toggleClass("disabled",!i.dots||s),i.dots&&(e=this._pages.length-this._controls.$absolute.children().length,i.dotsData&&0!==e?this._controls.$absolute.html(this._templates.join("")):e>0?this._controls.$absolute.append(new Array(e+1).join(this._templates[0])):e<0&&this._controls.$absolute.children().slice(e).remove(),this._controls.$absolute.find(".active").removeClass("active"),this._controls.$absolute.children().eq(t.inArray(this.current(),this._pages)).addClass("active"))},n.prototype.onTrigger=function(e){var i=this._core.settings;e.page={index:t.inArray(this.current(),this._pages),count:this._pages.length,size:i&&(i.center||i.autoWidth||i.dotsData?1:i.dotsEach||i.items)}},n.prototype.current=function(){var e=this._core.relative(this._core.current());return t.grep(this._pages,t.proxy((function(t,i){return t.start<=e&&t.end>=e}),this)).pop()},n.prototype.getPosition=function(e){var i,s,n=this._core.settings;return"page"==n.slideBy?(i=t.inArray(this.current(),this._pages),s=this._pages.length,e?++i:--i,i=this._pages[(i%s+s)%s].start):(i=this._core.relative(this._core.current()),s=this._core.items().length,e?i+=n.slideBy:i-=n.slideBy),i},n.prototype.next=function(e){t.proxy(this._overrides.to,this._core)(this.getPosition(!0),e)},n.prototype.prev=function(e){t.proxy(this._overrides.to,this._core)(this.getPosition(!1),e)},n.prototype.to=function(e,i,s){var n;!s&&this._pages.length?(n=this._pages.length,t.proxy(this._overrides.to,this._core)(this._pages[(e%n+n)%n].start,i)):t.proxy(this._overrides.to,this._core)(e,i)},t.fn.sbyOwlCarousel.Constructor.Plugins.Navigation=n}(window.Zepto||window.jQuery,window,document),function(t,e,i,s){"use strict";var n=function i(s){this._core=s,this._hashes={},this.$element=this._core.$element,this._handlers={"initialized.owl.carousel":t.proxy((function(i){i.namespace&&"URLHash"===this._core.settings.startPosition&&t(e).trigger("hashchange.owl.navigation")}),this),"prepared.owl.carousel":t.proxy((function(e){if(e.namespace){var i=t(e.content).find("[data-hash]").addBack("[data-hash]").attr("data-hash");if(!i)return;this._hashes[i]=e.content}}),this),"changed.owl.carousel":t.proxy((function(i){if(i.namespace&&"position"===i.property.name){var s=this._core.items(this._core.relative(this._core.current())),n=t.map(this._hashes,(function(t,e){return t===s?e:null})).join();if(!n||e.location.hash.slice(1)===n)return;e.location.hash=n}}),this)},this._core.options=t.extend({},i.Defaults,this._core.options),this.$element.on(this._handlers),t(e).on("hashchange.owl.navigation",t.proxy((function(t){var i=e.location.hash.substring(1),s=this._core.$stage.children(),n=this._hashes[i]&&s.index(this._hashes[i]);void 0!==n&&n!==this._core.current()&&this._core.to(this._core.relative(n),!1,!0)}),this))};n.Defaults={URLhashListener:!1},n.prototype.destroy=function(){var i,s;for(i in t(e).off("hashchange.owl.navigation"),this._handlers)this._core.$element.off(i,this._handlers[i]);for(s in Object.getOwnPropertyNames(this))"function"!=typeof this[s]&&(this[s]=null)},t.fn.sbyOwlCarousel.Constructor.Plugins.Hash=n}(window.Zepto||window.jQuery,window,document),function(t,e,i,s){function n(e,i){var n=!1,a=e.charAt(0).toUpperCase()+e.slice(1);return t.each((e+" "+r.join(a+" ")+a).split(" "),(function(t,e){if(o[e]!==s)return n=!i||e,!1})),n}function a(t){return n(t,!0)}var o=t("").get(0).style,r="Webkit Moz O ms".split(" "),l={transition:{end:{WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd",transition:"transitionend"}},animation:{end:{WebkitAnimation:"webkitAnimationEnd",MozAnimation:"animationend",OAnimation:"oAnimationEnd",animation:"animationend"}}};!!n("transition")&&(t.support.transition=new String(a("transition")),t.support.transition.end=l.transition.end[t.support.transition]),!!n("animation")&&(t.support.animation=new String(a("animation")),t.support.animation.end=l.animation.end[t.support.animation]),n("transform")&&(t.support.transform=new String(a("transform")),t.support.transform3d=!!n("perspective"))}(window.Zepto||window.jQuery,window,document),s=window.Zepto||window.jQuery,window,document,Owl2row=function(t){function e(e){return t.apply(this,arguments)}return e.toString=function(){return t.toString()},e}((function(t){this.owl=t,this.owl.options=s.extend({},Owl2row.Defaults,this.owl.options),this.handlers={"initialize.owl.carousel":s.proxy((function(t){this.owl.settings.owl2row&&this.build2row(this)}),this)},this.owl.$element.on(this.handlers)})),Owl2row.Defaults={owl2row:!1,owl2rowTarget:"sby_item",owl2rowContainer:"sby_owl2row-item",owl2rowDirection:"utd"},Owl2row.prototype.build2row=function(t){var e=s(t.owl.$element),i=e.find("."+t.owl.options.owl2rowTarget),n=[],a=[];s.each(i,(function(t,e){t%2==0?n.push(e):a.push(e)})),"ltr"===t.owl.options.owl2rowDirection?t.leftToright(t,e,i):t.upTodown(t,n,a,e)},Owl2row.prototype.leftToright=function(t,e,i){var n=t.owl.options.owl2rowContainer,a=t.owl.options.margin,o=i.length,r=[],l=[];o%2==1?o=(o-1)/2+1:o/=2,s.each(i,(function(t,e){t'),d=r[t];d.style.marginBottom=a+"px",o.append(d).append(l[t]),e.append(o)}))},Owl2row.prototype.upTodown=function(t,e,i,n){var a=t.owl.options.owl2rowContainer,o=t.owl.options.margin;s.each(e,(function(t,r){var l=s('
'),d=e[t];d.style.marginBottom=o+"px",l.append(d).append(i[t]),n.append(l)}))},Owl2row.prototype.destroy=function(){},s.fn.sbyOwlCarousel.Constructor.Plugins.owl2row=Owl2row,function(t){function e(){this.feeds={},this.ctas={},this.options=sbyOptions,this.isTouch="ontouchstart"in document.documentElement}function i(t,e,i){this.el=t,this.index=e,this.settings=i,this.placeholderURL=window.sby.options.placeholder,i.narrowPlayer&&(this.placeholderURL=window.sby.options.placeholderNarrow),this.playerAPIReady=!1,this.consentGiven=i.consentGiven,this.players={},this.minImageWidth=0,this.imageResolution=150,this.resizedImages={},this.needsResizing=[],this.outOfPages=!1,this.isInitialized=!1,this.mostRecentlyLoadedPosts=[],this.embedURL="//www.youtube-nocookie.com",i.allowCookies&&(this.embedURL="//www.youtube.com")}function s(e,s,n){i.call(this,e,s,n),this.CTA={},this.initLayout=function(){this.initGalleryLayout(),this.initGrid(),this.initCarousels();var t=jQuery.Event("sbyafterlayoutinit");t.feed=this,jQuery(window).trigger(t),P()},this.initGrid=function(){if(window.sbySemiEagerLoading&&jQuery("#sby_lightbox").length){var e=this;playerID="sby_lb-player",jQuery("#sby_lightbox").addClass("sby_video_lightbox"),window.sbyOptions.isPro||jQuery("#sby_lightbox").addClass("sby_lightbox_free");var i=t(this.el).find("sby_item").first().attr("data-video-id"),s=sbyOptions.autoplay;if(void 0===window.sbyLightboxPlayer){var n={host:window.location.protocol+e.embedURL,videoId:i,playerVars:{modestbranding:1,rel:0,autoplay:s},events:{onStateChange:function(i){var s=i.target.getVideoData().video_id;e.afterStateChange(playerID,s,i,t("#"+playerID).closest(".sby_video_thumbnail_wrap"))}}};e.maybeAddCTA(playerID),window.sbyLightboxPlayer=new window.YT.Player(playerID,n)}}},this.initCarousels=function(){var e=this,i=t(this.el);if(void 0!==this.settings.general.carousel){var s=this.settings.cols,n=this.settings.colsmobile;i.find(".sby_items_wrap").addClass("sby_carousel"),i.find(".sby_load_btn").remove(),i.find(".sby_item").css({"padding-top":i.find(".sby_items_wrap").css("padding-top"),"padding-right":i.find(".sby_items_wrap").css("padding-top"),"padding-bottom":i.find(".sby_items_wrap").css("padding-top"),"padding-left":i.find(".sby_items_wrap").css("padding-top")}),i.find(".sby_item").each((function(){t(this).attr("style",t(this).attr("style").replace("padding: "+i.find(".sby_items_wrap").css("padding-top"),"padding: "+i.find(".sby_items_wrap").css("padding-top")+" !important"))}));var a=e.settings.general.carousel[0],o=e.settings.general.carousel[1],r=e.settings.general.carousel[2],l=e.settings.general.carousel[3],d=e.settings.general.carousel[4],h=e.settings.general.carousel[5];r||(l=!1);var c=s,u=s,g=(a=a?"onhover":"hide",r=!1!==l,2==h);d=!d,i.hasClass("sby_mob_col_auto")?(c=2,2!=parseInt(s)&&(u=1),2==parseInt(s)&&(u=2)):u=n,this.carouselArgs={items:s,loop:d,rewind:!d,autoplay:r,autoplayTimeout:Math.max(l,2e3),autoplayHoverPause:!0,nav:!0,navText:['',''],dots:o,owl2row:g,responsive:{0:{items:u},480:{items:c},640:{items:s}},onChange:function(){setTimeout((function(){e.afterResize()}),1)},onInitialize:function(){var t=jQuery(e.el);t.find(".sby_items_wrap.sby_carousel").fadeIn(),setTimeout((function(){t.find(".sby_items_wrap.sby_carousel .sby_info, .sby_owl2row-item,.sby_items_wrap.sby_carousel").fadeIn()}),1),setTimeout((function(){var e=t.find(".sby-owl-nav");if("onhover"===a);else if("below"===a){var i=t.find(".sby-owl-dots"),s=t.find(".sby-owl-prev"),n=t.find(".sby-owl-next"),o=t.find(".sby-owl-nav"),r=t.find(".sby-owl-dot"),l=r.length*r.innerWidth();t.innerWidth(),s.after(i),o.css("position","relative"),n.css("position","absolute").css("top","-6px").css("right",Math.max(.5*o.innerWidth()-.5*l-n.innerWidth()-6,0)),s.css("position","absolute").css("top","-6px").css("left",Math.max(.5*o.innerWidth()-.5*l-s.innerWidth()-6,0))}else"hide"===a&&e.addClass("hide").hide()}),1)}}}},this.stripEmojihtml=function(e){return e.find(".emoji").each((function(){t(this).replaceWith(t(this).attr("alt"))})),e.html()},this.afterItemRevealed=function(t){var e=this;if(t.find(".sby_caption").length&&!t.find(".sby_caption").hasClass("sby_full_caption")){var i=t.find(".sby_item_caption_wrap .sby_caption"),s=t.find(".sby_item_video_thumbnail .sby_caption"),n=void 0!==e.settings.general.descriptionlength?parseInt(e.settings.general.descriptionlength):150;n<1&&(n=99999);var a=this.stripEmojihtml(t.find(".sby_caption").first()),o=((a.match(/
/g)||[]).length,void 0===sbyOptions.brAdjust||"1"===sbyOptions.brAdjust||sbyOptions.brAdjust,a.substring(0,n));if(o=a.length>n?o.substr(0,Math.min(o.length,o.lastIndexOf(" "))):o,i.length&&(i.html(sbyLinkify(o)),o===a&&i.next(".sby_expand").remove()),s.length){var r=o;o!==a&&(r+='...'),s.html(r)}a.length>n&&t.find(".sby_expand").show(),t.find(".sby_expand a").off("click").on("click",(function(s){s.preventDefault(),jQuery(this),i=void 0!==i?i:t.find(".sby_info .sby_caption"),a="undefined"!=typeof captiontext?a:p(t.find(".sby_item_video_thumbnail").attr("data-title")),t.hasClass("sby_caption_full")&&void 0!==o?(i.html(o),t.removeClass("sby_caption_full")):(i.html(sbyLinkify(a)),t.addClass("sby_caption_full")),e.afterResize()}))}this.setUpCTA(t);var l=void 0!==e.settings.general.disablelightbox&&e.settings.general.disablelightbox,d=void 0!==e.settings.general.captionlinks&&e.settings.general.captionlinks;if(l||d){if(d){var h="";void 0!==t.find("img").attr("alt")?h=t.find("img").attr("alt"):void 0!==t.find("video").attr("alt")&&(h=t.find("video").attr("alt"));var c=h.match(/https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/g);c&&t.find("a").attr("href",c)}t.find(".sby_link").addClass("sby_disable_lightbox")}else{var u=t.find(".sby_photo_wrap"),g=u.find(".sby_link");feedOptions={hovereffect:"true"},"none"==feedOptions.hovereffect?(g.css("background","none").show(),g.find("*").hide().end().find(".sby_link_area").show()):u.on("mouseenter mouseleave",(function(e){switch(e.type){case"mouseenter":t.addClass("sby_animate");break;case"mouseleave":t.removeClass("sby_animate")}}))}var y=void 0!==t.attr("data-video-id")?t.attr("data-video-id"):t.find(".sby_video_thumbnail").attr("data-video-id");this.mostRecentlyLoadedPosts.push(y)},this.afterFeedSet=function(){void 0!==this.carouselArgs&&(t(this.el).find(".sby_carousel").sbyOwlCarousel(this.carouselArgs),2===parseInt(this.settings.general.carousel[5])&&t(this.el).addClass("sby_carousel_2_row"))},this.setUpCTA=function(t,e){e=void 0!==e?e:t.find(".sby_item_video_thumbnail").attr("data-video-id");var i=p(void 0!==t.find(".sby_item_video_thumbnail").attr("data-title")?t.find(".sby_item_video_thumbnail").attr("data-title"):""),s=window.sby.ctaDetect(i);window.sby.ctas[e]=s||this.getDefaultCTA()},this.getDefaultCTA=function(){return void 0!==this.settings.general.cta&&"default"!==this.settings.general.cta.type&&("link"===this.settings.general.cta.type?{callback:"link",url:this.settings.general.cta.defaultLink,text:this.settings.general.cta.defaultText}:{callback:"related",related:this.settings.general.cta.defaultPosts})},this.afterResize=function(){this.setImageHeight(),this.setImageResolution(),this.maybeRaiseImageResolution(),this.setImageSizeClass(),this.setAllCTADimensions(),this.sizePlayer(),this.sizeItems()},this.setAllCTADimensions=function(){t.each(this.CTA,(function(t,e){e.isInitialized&&e.setCTAStyles()}))},this.afterSendCheckWPPostsToServer=function(e){var i=t(this.el);i.find(".sby_item").each((function(){if(void 0!==e[t(this).attr("data-video-id")]){var i=e[t(this).attr("data-video-id")];t(this).find(".sby_view_count").text(i.sby_view_count),t(this).find(".sby_comment_count").text(i.sby_comment_count),t(this).find(".sby_like_count").text(i.sby_like_count),t(this).find(".sby_video_thumbnail").attr("data-views",i.sby_view_count),t(this).find(".sby_video_thumbnail").attr("data-comment-count",i.sby_comment_count),"none"!==i.sby_live_broadcast.broadcast_type&&(t(this).find(".sby_ls_message").text(i.sby_live_broadcast.live_streaming_string),t(this).find(".sby_date").html(i.sby_live_broadcast.live_streaming_date)),void 0!==i.sby_live_broadcast.live_streaming_timestamp&&t(this).attr("data-live-date",i.sby_live_broadcast.live_streaming_timestamp),void 0!==i.sby_description&&t(this).find(".sby_item_video_thumbnail").attr("data-title",p(i.sby_description))}})),i.find(".sby_player_item").each((function(){if(void 0!==e[t(this).find(".sby_video_thumbnail").attr("data-video-id")]){var i=e[t(this).find(".sby_video_thumbnail").attr("data-video-id")];t(this).find(".sby_view_count").text(i.sby_view_count),t(this).find(".sby_comment_count").text(i.sby_comment_count),t(this).find(".sby_like_count").text(i.sby_like_count),"none"!==i.sby_live_broadcast.broadcast_type&&(t(this).find(".sby_ls_message").text(i.sby_live_broadcast.live_streaming_string),t(this).find(".sby_date").html(i.sby_live_broadcast.live_streaming_date)),void 0!==i.sby_live_broadcast.live_streaming_timestamp&&t(this).attr("data-live-date",i.sby_live_broadcast.live_streaming_timestamp)}}));var n=jQuery.Event("sbyaftercheckposts");n.feed=window.sby.feeds[s],n.response=e,jQuery(window).trigger(n)},this.afterStateChange=function(t,e,i,s){this.CTA[t].toggleCTA(e,i.data,s)},this.changePlayerInfo=function(e){var i=t(this.el);i.find(".sby_player_item").find(".sby_info").replaceWith(e.find(".sby_info").clone(!0,!0));var s=j(e.attr("data-video-title")),n=j(e.find(".sby_video_thumbnail").attr("data-formatted-published-date"));i.find(".sby-player-info .sby-video-header-info .sby-video-info-header h5").text(s),i.find(".sby-player-info .sby-video-header-meta .sby-video-date").text(n),O(i),P()},this.maybeAddCTA=function(t,e){void 0===this.CTA[t]&&(this.CTA[t]=new o(t,this))}}function n(){}function a(){n.call(this),this.getData=function(t){var e=t.closest(".sb_youtube"),i=parseInt(e.attr("data-sby-index")-1),s=e.attr("data-subscribe-btn-text"),n=e.attr("data-subscribe-btn"),a=e.hasClass("sby_palette_dark")?"dark":"light",o=e.attr("data-shortcode-atts"),r=t.closest(".sby_item").attr("data-live-date"),l=e.attr("data_channel_header_colors")?JSON.parse(e.attr("data_channel_header_colors")):"";return{feedIndex:i,link:t.attr("href"),video:t.attr("data-video-id"),title:p(t.attr("data-title")),videoTitle:void 0!==t.attr("data-video-title")?p(t.attr("data-video-title")):"YouTube Video",avatar:t.attr("data-avatar"),user:p(t.attr("data-user")),channelURL:t.attr("data-url"),channelID:t.attr("data-channel-id"),channelSubscribers:t.closest(".sb_youtube").attr("data-channel-subscribers"),subscribeBtn:n,subscribeBtnText:s,colorScheme:a,publishedDate:t.attr("data-published-date"),commentCount:t.attr("data-comment-count"),views:t.attr("data-views"),liveData:r,channelHeaderColors:l,atts:o}},this.template=function(){return"\n
\n
\n
\n
\n \n
\n
\n \n Lightbox image placeholder\n
\n
\n
\n \n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
"},this.beforePlayerSetup=function(e,i,s,n,a){t("body").css("overflow","hidden"),e.find(".sby_cta_items_wraps").length?e.find(".sby_cta_items_wraps").replaceWith(t(a.el).find(".sby_cta_items_wraps").clone()):e.find(".sby_lb_video_thumbnail_wrap").append(t(a.el).find(".sby_cta_items_wraps").clone())},this.afterPlayerSetup=function(t,e,i,s){var n;this.availableAvatarUrls={};var a=!(null==e||!e.subscribeBtn)&&e.subscribeBtn,o=null!=e&&e.subscribeBtnText?e.subscribeBtnText:"";"function"==typeof sbyLightboxAction&&setTimeout((function(){sbyLightboxAction()}),100),null!=e&&e.colorScheme&&"dark"===e.colorScheme&&z(e.colorScheme,!0);var r="",l=a?''+w("youtube")+"

"+o+"

":"";void 0!==e.avatar&&""!==e.avatar&&void 0!==e.user?r="undefined"!==e.avatar?e.avatar:"":void 0!==e.user&&jQuery.each(window.sby.feeds,(function(){void 0!==this.availableAvatarUrls&&void 0!==this.availableAvatarUrls[e.user]&&"undefined"!==this.availableAvatarUrls[e.user]&&(r=this.availableAvatarUrls[e.user])}));var d,h,c=null!==(n=null==e?void 0:e.channelSubscribers)&&void 0!==n?n:"",u=r?'':w("profile-picture"),g=a&&r?'":"",p=a&&r?"sby_lb-channel-info":"sby_lb-no-channel-info";if(window.sbyOptions.isPro){var y=null!=e&&e.title?(h=e.title)?(h=h.replace(/(>#)/g,"> #"),sbyLinkify(h)):"":"",f=null!=e&&e.publishedDate?I((d=e.publishedDate)?new Date(1e3*parseInt(d)):""):"",b=null!=e&&e.views?e.views:"",m='\n
\n

'.concat(e.videoTitle,'

\n
\n ').concat(b,'\n ·\n ').concat(f,"\n
\n
\n "),_='\n
\n
\n '.concat(y,'\n
\n \n
\n "),v=y?_:"";if(t.find(".sby_lb-caption").html('
')+m+g+v+'\n
\n
\n
').fadeIn("fast"),null!=e&&e.liveData&&"0"===e.liveData){var x=null!=e&&e.video?e.video:"",C=null!=e&&e.atts?e.atts:"",T=null!=e&&e.commentCount?e.commentCount:"";$(x,C,t.find(".sby-comments-wrap"),T)}else k();null!=e&&e.channelHeaderColors&&function(t){var e=t.channelName,i=t.subscribeCount,s=t.buttonBackground,n=t.buttonText,a=jQuery(".sby_lb-dataContainer .sby-lb-channel-header");if(!a)return!1;e&&a.find(".sby-lb-channel-name-with-subs span:first-child").css("color",e),i&&a.find(".sby-lb-channel-name-with-subs span:nth-child(2)").css("color",i),s&&a.find(".sby-lb-subscribe-btn").css("background",s),n&&a.find(".sby-lb-subscribe-btn").css("color",n)}(e.channelHeaderColors)}}}function o(t,e){this.isInitialized=!1,this.videoID=t,this.callback=this.related,this.callbackArgs={},this.feedObjInContext=e,this.state=1,this.numItems=4,this.numItemColumns=2,this.$player=!1}function r(t){for(var e=t+"=",i=window.document.cookie.split(";"),s=0;sl||n.height>r)&&(n.width/l>n.height/r?(o=l,a=parseInt(n.height/(n.width/o),10),s.width(o),s.height(a)):(a=r,o=parseInt(n.width/(n.height/a),10),s.width(o),s.height(a)))),i.sizeContainer(s.width(),s.height())},n.src=this.album[t].link,this.currentImageIndex=t},s.prototype.sizeOverlay=function(){this.$overlay.width(e(window).width()).height(e(document).height())},s.prototype.sizeContainer=function(t,e){function i(){s.$lightbox.find(".sby_lb-dataContainer").width(o),s.$lightbox.find(".sby_lb-prevLink").height(r),s.$lightbox.find(".sby_lb-nextLink").height(r),s.showImage()}var s=this,n=this.$outerContainer.outerWidth(),a=this.$outerContainer.outerHeight(),o=t+this.containerLeftPadding+this.containerRightPadding,r=e+this.containerTopPadding+this.containerBottomPadding;n!==o||a!==r?this.$outerContainer.animate({width:o,height:r},this.options.resizeDuration,"swing",(function(){i()})):i()},s.prototype.showImage=function(){this.$lightbox.find(".sby_lb-loader").hide(),this.$lightbox.find(".sby_lb-image").fadeIn("slow"),this.updateNav(),this.updateDetails(),this.preloadNeighboringImages(),this.enableKeyboardNav()},s.prototype.updateNav=function(){var t=!1;try{document.createEvent("TouchEvent"),t=!!this.options.alwaysShowNavOnTouchDevices}catch(t){}this.$lightbox.find(".sby_lb-nav").show(),this.album.length>1&&(this.options.wrapAround?(t&&this.$lightbox.find(".sby_lb-prev, .sby_lb-next").css("opacity","1"),this.$lightbox.find(".sby_lb-prev, .sby_lb-next").show()):(this.currentImageIndex>0&&(this.$lightbox.find(".sby_lb-prev").show(),t&&this.$lightbox.find(".sby_lb-prev").css("opacity","1")),this.currentImageIndex')}i.afterPlayerSetup(this.$lightbox,this.album[this.currentImageIndex],this.currentImageIndex,this.album),this.album.length>1&&this.options.showImageNumberLabel?this.$lightbox.find(".sby_lb-number").text(this.options.albumLabel(this.currentImageIndex+1,this.album.length)).fadeIn("fast"):this.$lightbox.find(".sby_lb-number").hide()}},s.prototype.preloadNeighboringImages=function(){this.album.length>this.currentImageIndex+1&&((new Image).src=this.album[this.currentImageIndex+1].link),this.currentImageIndex>0&&((new Image).src=this.album[this.currentImageIndex-1].link)},s.prototype.enableKeyboardNav=function(){e(document).on("keyup.keyboard",e.proxy(this.keyboardAction,this))},s.prototype.disableKeyboardNav=function(){e(document).off(".keyboard")},s.prototype.keyboardAction=function(e){var s=event.keyCode,n=String.fromCharCode(s).toLowerCase();27===s||n.match(/x|o|c/)?(y()&&t("#sby_lightbox video.sby_video")[0].pause(),t("#sby_lightbox iframe").attr("src",""),this.end()):"p"===n||37===s?(0!==this.currentImageIndex?this.changeImage(this.currentImageIndex-1):this.options.wrapAround&&this.album.length>1&&this.changeImage(this.album.length-1),y()&&t("#sby_lightbox video.sby_video")[0].pause(),t("#sby_lightbox iframe").attr("src","")):"n"!==n&&39!==s||(this.currentImageIndex!==this.album.length-1?this.changeImage(this.currentImageIndex+1):this.options.wrapAround&&this.album.length>1&&this.changeImage(0),i.pausePlayer())},s.prototype.end=function(){this.disableKeyboardNav(),e(window).off("resize",this.sizeOverlay),this.$lightbox.fadeOut(this.options.fadeDuration),this.$overlay.fadeOut(this.options.fadeDuration),e("select, object, embed").css({visibility:"visible"})},s}();e((function(){var e=new s;new n(e),t(".sby_lightbox_action a").off().on("click",(function(){t(this).parent().find(".sby_lightbox_tooltip").toggle()}))}))}.call(this),window.sbyOptions.lightboxCreated=!0},createFeeds:function(e){sbyOptions.isAdmin||void 0!==sbyOptions.lightboxCreated||window.sby.createLightbox(),e.whenFeedsCreated(t(".sb_youtube").each((function(e){t(this).attr("data-sby-index",e+1),t(this).find(".sby_player").replaceWith('
');var i=t(this),n=void 0!==i.attr("data-sby-flags")?i.attr("data-sby-flags").split(","):[],a=void 0!==i.attr("data-options")?JSON.parse(i.attr("data-options")):{};n.indexOf("testAjax")>-1&&(window.sby.triggeredTest=!0,A({action:"sby_on_ajax_test_trigger"},(function(t){console.log("did test")})));var o={cols:i.attr("data-cols"),colsmobile:"same"!==i.attr("data-colsmobile")?i.attr("data-colsmobile"):i.attr("data-cols"),num:i.attr("data-num"),imgRes:i.attr("data-res"),feedID:i.attr("data-feedid"),postID:void 0!==i.attr("data-postid")?i.attr("data-postid"):"unknown",shortCodeAtts:i.attr("data-shortcode-atts"),resizingEnabled:-1===n.indexOf("resizeDisable"),imageLoadEnabled:-1===n.indexOf("imageLoadDisable"),debugEnabled:n.indexOf("debug")>-1,favorLocal:n.indexOf("favorLocal")>-1,ajaxPostLoad:n.indexOf("ajaxPostLoad")>-1,checkWPPosts:n.indexOf("checkWPPosts")>-1,singleCheckPosts:n.indexOf("singleCheckPosts")>-1,narrowPlayer:n.indexOf("narrowPlayer")>-1,gdpr:n.indexOf("gdpr")>-1,consentGiven:-1===n.indexOf("gdpr"),noCDN:n.indexOf("disablecdn")>-1,allowCookies:n.indexOf("allowcookies")>-1,lightboxEnabled:void 0!==i.attr("data-sby-supports-lightbox"),locator:n.indexOf("locator")>-1,autoMinRes:1,general:a,subscribeBarEnabled:!0};window.sby.feeds[e]=function(t,e,i){return new s(t,e,i)}(this,e,o),void 0!==window.sbyAPIReady&&(window.sby.feeds[e].playerAPIReady=!0),window.sby.feeds[e].setResizedImages(),window.sby.feeds[e].init();var r=jQuery.Event("sbyafterfeedcreate");r.feed=window.sby.feeds[e],jQuery(window).trigger(r)})))},afterFeedsCreated:function(){if(t(".sb_youtube_header").each((function(){var e=t(this);e.find(".sby_header_link").on("mouseenter mouseleave",(function(t){switch(t.type){case"mouseenter":e.find(".sby_header_img_hover").addClass("sby_fade_in");break;case"mouseleave":e.find(".sby_header_img_hover").removeClass("sby_fade_in")}}))})),window.sbyAPIReady){var e=jQuery.Event("sbyfeedandytready");jQuery(window).trigger(e)}},encodeHTML:function(t){return void 0===t?"":t.replace(/(>)/g,">").replace(/(<)/g,"<").replace(/(<br\/>)/g,"
").replace(/(<br>)/g,"
")},urlDetect:function(t){return t.match(/https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/g)},ctaDetect:function(t){var e=t.match(/{Link:(.*)}/g),i=!1;if(null!==e){var s=window.sby.urlDetect(e[0]);if(null!==s){var n=s[0].trim();i={callback:"link",url:n,text:e[0].replace("{Link:","").replace("}","").replace(n,"").replace(" "," ").trim()}}else console.log("CTA found but no URL")}return i},shuffle:function(t){for(var e,i,s=t.length;0!==s;)i=Math.floor(Math.random()*s),e=t[s-=1],t[s]=t[i],t[i]=e;return t}},i.prototype={init:function(){var e=this;e.settings.consentGiven=e.checkConsent(),e.settings.consentGiven&&window.sby.maybeAddYTAPI(),e.settings.noCDN&&!e.settings.consentGiven&&(t(this.el).find(".sb_youtube_header").length?t(this.el).find(".sb_youtube_header").addClass("sby_no_consent"):t(this.el).prev(".sb_youtube_header").length&&t(this.el).prev(".sb_youtube_header").addClass("sby_no_consent")),t(this.el).find("#sby_mod_error").length&&t(this.el).prepend(t(this.el).find("#sby_mod_error")),this.settings.ajaxPostLoad?this.getNewPostSet():this.afterInitialImagesLoaded();var i,s=(i=0,function(t,e){clearTimeout(i),i=setTimeout(t,e)});jQuery(window).on("resize",(function(){s((function(){e.afterResize()}),1)}))},initLayout:function(){this.initGalleryLayout()},initGalleryLayout:function(){var e=t(this.el),i=this;e.hasClass("sby_layout_gallery")&&e.find(".sby_player_outer_wrap").length&&(this.maybeRaiseSingleImageResolution(e.find(".sby_player_outer_wrap"),0,!0),e.find(".sby_player_outer_wrap .sby_video_thumbnail").off().on("click",(function(e){!(!i.settings.lightboxEnabled||i.settings.lightboxEnabled&&i.settings.noCDN)||!i.settings.noCDN&&i.settings.consentGiven?(e.preventDefault(),i.onThumbnailClick(t(this),!0)):t(this).closest(".sby_item").length&&void 0!==t(this).closest(".sby_item").attr("data-video-id")&&t(this).attr("href","https://www.youtube.com/watch?v="+t(this).closest(".sby_item").attr("data-video-id"))})),e.find(".sby_item").first().addClass("sby_current"),e.on("mouseenter",(function(){i.canCreatePlayer()&&(e.find(".sby_player_outer_wrap iframe").length?void 0===i.player&&i.playerEagerLoaded()&&i.createPlayer("sby_player"+i.index):(e.addClass("sby_player_added").find(".sby_player_outer_wrap").addClass("sby_player_loading"),e.find(".sby_player_outer_wrap .sby_video_thumbnail").find(".sby_loader").show().removeClass("sby_hidden"),i.createPlayer("sby_player"+i.index)))})),window.sbySemiEagerLoading&&i.createPlayer("sby_player"+i.index),i.settings.noCDN&&e.find(".sby_player_outer_wrap").append('
\n \n
'))},createPlayer:function(e,i,s,n){var a=t(this.el),o=this;if(i=void 0!==i?i:this.getVideoID(a.find(".sby_item").first()),s=void 0!==s?s:0,void 0===sbyOptions.isCustomizer||!sbyOptions.isCustomizer){if(void 0===n&&(n={host:window.location.protocol+o.embedURL,videoId:i,playerVars:{modestbranding:1,rel:0,autoplay:s}}),void 0===n.events&&(n.events={onReady:function(){a.find(".sby_player_outer_wrap").removeClass("sby_player_loading").find(".sby_video_thumbnail").css("z-index",-1).find(".sby_loader").hide().addClass("sby_hidden"),t("#"+e).length&&t("#"+e).closest(".sby_video_thumbnail_wrap").find(".sby_video_thumbnail").length&&t("#"+e).closest(".sby_video_thumbnail_wrap").find(".sby_video_thumbnail").fadeTo(0,"slow",(function(){t(this).css("z-index",-1),t(this).find(".sby_loader").hide().addClass("sby_hidden"),t(this).closest(".sby_item").removeClass("sby_player_loading")}));var i=jQuery.Event("sbyafterplayerready");i.feed=o,i.player=this,jQuery(window).trigger(i)},onStateChange:function(s){if(a.find(".sby_player_outer_wrap").removeClass("sby_player_loading").find(".sby_video_thumbnail").css("z-index",-1).find(".sby_loader").hide().addClass("sby_hidden"),o.afterStateChange(e,i,s,t("#"+e).closest(".sby_video_thumbnail_wrap")),1===s.data){var n;if(o.el){var r,l=o.el.getAttribute("data-shortcode-atts");l&&(n=null===(r=JSON.parse(l))||void 0===r?void 0:r.feed)}document.dispatchEvent(new CustomEvent("sby-video-interaction",{detail:{videoID:i,feedID:n}})),void 0!==o.players&&a.find(".sby_item").each((function(){var e=o.getVideoID(t(this));t(this).find("iframe").length&&e!==i&&void 0!==o.players[e]&&"function"==typeof o.players[e].pauseVideo&&o.players[e].pauseVideo()}))}}}),window.sbyEagerLoading)var r=YT.get(e);else r=new window.YT.Player(e,n);this.maybeAddCTA(e),a.hasClass("sby_layout_list")&&void 0===this.players[i]?this.players[i]=r:void 0===this.player&&(this.player=r);var l=jQuery.Event("sbyafterplayercreated");return l.feed=this,jQuery(window).trigger(l),a.find(".sby_player_outer_wrap .sby_play_btn").remove(),r}},afterStateChange:function(t,e,i,s){},afterInitialImagesLoaded:function(){this.initLayout(),this.loadMoreButtonInit(),this.hideExtraItemsForWidth(),this.beforeNewImagesRevealed(),this.revealNewImages(),this.afterNewImagesRevealed(),this.afterFeedSet(),this.sizePlayer(),this.sizeItems(),this.settings.consentGiven?this.applyFullFeatures():this.removeFeatures()},afterResize:function(){this.setImageHeight(),this.setImageResolution(),this.maybeRaiseImageResolution(),this.setImageSizeClass()},afterLoadMoreClicked:function(t){t.find(".sby_loader").removeClass("sby_hidden"),t.find(".sby_btn_text").addClass("sby_hidden"),t.closest(".sb_youtube").find(".sby_num_diff_hide").addClass("sby_transition").removeClass("sby_num_diff_hide")},afterNewImagesLoaded:function(){var e=t(this.el),i=this;this.beforeNewImagesRevealed(),this.revealNewImages(),this.afterNewImagesRevealed(),this.sizePlayer(),this.sizeItems(),setTimeout((function(){e.find(".sby_loader").addClass("sby_hidden"),e.find(".sby_btn_text").removeClass("sby_hidden"),i.maybeRaiseImageResolution()}),1),this.settings.consentGiven?this.applyFullFeatures():this.removeFeatures()},beforeNewImagesRevealed:function(){this.setImageHeight(),this.maybeRaiseImageResolution(!0),this.setImageSizeClass()},afterFeedSet:function(){},sizePlayer:function(){var e=t(this.el),i=this;if(e.hasClass("sby_layout_gallery")){$playerThumbnail=e.find(".sby_player_item").find(".sby_player_video_thumbnail");var s=$playerThumbnail.innerWidth(),n=Math.floor(9*s/16);i.settings.narrowPlayer&&(n=Math.floor(3*s/4)),$playerThumbnail.css("height",n+"px").css("overflow","hidden")}else e.hasClass("sby_layout_list")&&e.find(".sby_item").each((function(){$playerThumbnail=t(this).find(".sby_item_video_thumbnail");var e=$playerThumbnail.innerWidth(),s=Math.floor(9*e/16);i.settings.narrowPlayer&&(s=Math.floor(3*e/4)),$playerThumbnail.css("height",s+"px").css("overflow","hidden")}))},sizeItems:function(){var e=t(this.el);e.hasClass("sby_layout_list")||e.find(".sby_item").find(".sby_item_video_thumbnail").each((function(){if(t(this).hasClass("sby_imgLiquid_ready")){var e=t(this).innerWidth(),i=Math.floor(9*e/16);t(this).css("height",i+"px").css("overflow","hidden")}}))},revealNewImages:function(){var e=t(this.el),i=this;this.applyImageLiquid(),"function"==typeof sbyCustomJS&&setTimeout((function(){sbyCustomJS()}),100),e.find(".sby-screenreader").find("img").remove(),e.find(".sby_item.sby_new").each((function(e){var s=jQuery(this);videoID=s.attr("data-video-id"),window.sbyEagerLoading&&i.canCreatePlayer()&&t("#sby_player_"+videoID).length&&(player=new YT.Player("sby_player_"+videoID,{height:"100",width:"100",videoId:videoID,playerVars:{modestbranding:1,rel:0,autoplay:0},events:{onStateChange:function(t){var e=t.target.getVideoData().video_id;1===t.data&&(document.dispatchEvent(videoInteractionEvent,{videoID:e}),s.find(".sby_item").each((function(){var e=jQuery(this).attr("data-video-id");jQuery(this).find("iframe").length&&jQuery(t.target.a).attr("id")!==jQuery(this).find("iframe").attr("id")&&YT.get("sby_player_"+e).pauseVideo()})))}}})),s.find(".sby_video_thumbnail").on("mouseenter",(function(){i.onThumbnailEnter(t(this),!1)})),s.find(".sby_player_wrap").on("mouseleave",(function(){i.onThumbnailLeave(t(this),!1)})),s.find(".sby_video_thumbnail").on("click",(function(e){!(!i.settings.lightboxEnabled||i.settings.lightboxEnabled&&i.settings.noCDN)||!i.settings.noCDN&&i.settings.consentGiven?(e.preventDefault(),i.onThumbnailClick(t(this),!1)):t(this).closest(".sby_item").length&&void 0!==t(this).closest(".sby_item").attr("data-video-id")&&t(this).attr("href","https://www.youtube.com/watch?v="+t(this).closest(".sby_item").attr("data-video-id"))})),i.settings.lightboxEnabled&&(s.find(".sby_video_thumbnail").attr("data-sby-lightbox",i.index),"undefined"!=typeof sbyOptions&&void 0!==sbyOptions.lightboxPlaceholder&&(i.settings.narrowPlayer?s.find(".sby_video_thumbnail").attr("href",sbyOptions.lightboxPlaceholderNarrow):s.find(".sby_video_thumbnail").attr("href",sbyOptions.lightboxPlaceholder))),i.afterItemRevealed(s),""===s.find(".sby_info_item").text().trim()&&s.find(".sby_info_item").addClass("sby_no_space")})),e.find(".sby_player_item").each((function(t){var e=jQuery(this);i.afterItemRevealed(e)})),setTimeout((function(){e.find(".sby_item.sby_new").removeClass("sby_new"),e.find(".sby_transition").length,e.find(".sby_transition").each((function(t){var e=jQuery(this);setTimeout((function(){e.removeClass("sby_transition")}),1)}))}),1)},afterItemRevealed:function(){},afterNewImagesRevealed:function(){this.listenForVisibilityChange(),this.sendNeedsResizingToServer(),this.sendCheckWPPostsToServer(),this.settings.imageLoadEnabled||t(".sby_no_resraise").removeClass("sby_no_resraise");var e=t.Event("sbyafterimagesloaded");e.el=t(this.el),t(window).trigger(e)},setResizedImages:function(){t(this.el).find(".sby_resized_image_data").length&&void 0!==t(this.el).find(".sby_resized_image_data").attr("data-resized")&&0===t(this.el).find(".sby_resized_image_data").attr("data-resized").indexOf('{"')&&(this.resizedImages=JSON.parse(t(this.el).find(".sby_resized_image_data").attr("data-resized")),t(this.el).find(".sby_resized_image_data").remove())},sendNeedsResizingToServer:function(){var e=this;if(e.needsResizing.length>0&&e.settings.resizingEnabled){var i=t(this.el).find(".sby_item").length;A({action:"sby_resized_images_submit",needs_resizing:e.needsResizing,offset:i,feed_id:e.settings.feedID,location:e.locationGuess(),post_id:e.settings.postID,atts:e.settings.shortCodeAtts},(function(t){if(0===t.trim().indexOf("{")){var i=JSON.parse(t);e.settings.debugEnabled&&console.log(i)}}))}},sendCheckWPPostsToServer:function(){var e=this;if(e.settings.checkWPPosts||e.settings.singleCheckPosts){var i=void 0!==e.settings.feedID?e.settings.feedID:"sby_single",s=e.mostRecentlyLoadedPosts;e.mostRecentlyLoadedPosts=[],A({action:"sby_check_wp_submit",feed_id:i,atts:e.settings.shortCodeAtts,location:e.locationGuess(),post_id:e.settings.postID,offset:t(this.el).hasClass("sby_layout_carousel")?Math.floor(t(this.el).find(".sby_item").length/2-1):t(this.el).find(".sby_item").length,posts:s},(function(t){if(0===t.trim().indexOf("{")){var i=JSON.parse(t);e.settings.debugEnabled&&console.log(i),e.afterSendCheckWPPostsToServer(i)}}))}},afterSendCheckWPPostsToServer:function(t){},loadMoreButtonInit:function(){var e=t(this.el),i=this;e.find(".sby_footer .sby_load_btn").off().on("click",(function(){i.afterLoadMoreClicked(jQuery(this)),i.getNewPostSet()}))},getNewPostSet:function(){var e=t(this.el),i=this;A({action:"sby_load_more_clicked",offset:e.find(".sby_item").length,feed_id:i.settings.feedID,atts:i.settings.shortCodeAtts,location:i.locationGuess(),post_id:i.settings.postID,current_resolution:i.imageResolution},(function(s){if(0===s.trim().indexOf("{")){var n=JSON.parse(s),a=void 0!==n.feedStatus.checkWPPosts&&n.feedStatus.checkWPPosts;i.settings.debugEnabled&&console.log(n),i.settings.checkWPPosts=!!a,i.appendNewPosts(n.html),i.addResizedImages(n.resizedImages),i.settings.ajaxPostLoad?(i.settings.ajaxPostLoad=!1,i.afterInitialImagesLoaded()):i.afterNewImagesLoaded(),n.feedStatus.shouldPaginate?i.outOfPages=!1:(i.outOfPages=!0,e.find(".sby_load_btn").hide()),t(".sby_no_js").removeClass("sby_no_js"),P()}}))},appendNewPosts:function(e){var i=t(this.el);i.find(".sby_items_wrap .sby_item").length?i.find(".sby_items_wrap .sby_item").last().after(e):i.find(".sby_items_wrap").append(e)},addResizedImages:function(t){for(var e in t)this.resizedImages[e]=t[e]},setImageHeight:function(){},maybeRaiseSingleImageResolution:function(e,i,s){var n=this,a=n.getImageUrls(e),o=e.find(".sby_video_thumbnail > img").attr("src"),r=150;if(s=void 0!==s&&s,!(e.hasClass("sby_no_resraise")||!n.settings.consentGiven&&n.settings.noCDN)){t.each(a,(function(t,e){e===o&&(r=parseInt(t),s=!1)}));var l=640;switch(n.settings.imgRes){case"thumb":l=120;break;case"medium":l=320;break;case"large":l=480;break;case"full":l=640;break;default:var d=Math.max(n.settings.autoMinRes,e.find(".sby_video_thumbnail").innerWidth());switch(n.getBestResolutionForAuto(d,1,t(this.el).find("sby_item").first())){case 480:l=480;break;case 320:l=320;break;case 120:l=120}}if(l>r||o===n.placeholderURL||s){if(n.settings.debugEnabled){var h=o===n.placeholderURL?"was placeholder":"too small";console.log("rais res for "+o,h)}var c=a[l];e.find(".sby_video_thumbnail > img").attr("src",c),e.find(".sby_video_thumbnail").hasClass("sby_imgLiquid_ready")&&e.find(".sby_video_thumbnail").css("background-image",'url("'+c+'")')}e.find("img").on("error",(function(){if(t(this).hasClass("sby_img_error"))console.log("unfixed error "+t(this).attr("src"));else{if(t(this).addClass("sby_img_error"),t(this).attr("src").indexOf("i.ytimg.com")>-1){n.settings.favorLocal=!0;var e=n.getImageUrls(t(this).closest(".sby_item"));void 0!==e[640]&&(t(this).attr("src",e[640]),t(this).closest(".sby_video_thumbnail").css("background-image","url("+e[640]+")"))}else void 0!==t(this).closest(".sby_video_thumbnail").attr("data-full-res")?(t(this).attr("src",t(this).closest(".sby_video_thumbnail").attr("data-full-res")),t(this).closest(".sby_video_thumbnail").css("background-image","url("+t(this).closest(".sby_video_thumbnail").attr("data-full-res")+")")):"undefined"!==t(this).closest(".sby_video_thumbnail").attr("href")&&(t(this).attr("src",t(this).closest(".sby_video_thumbnail").attr("href")+"media?size=l"),t(this).closest(".sby_video_thumbnail").css("background-image","url("+t(this).closest(".sby_video_thumbnail").attr("href")+"media?size=l)"));setTimeout((function(){n.afterResize()}),1)}}))}},maybeRaiseImageResolution:function(e){var i=this,s=void 0!==e&&!0===e?".sby_item.sby_new":".sby_item",n=!i.isInitialized;t(i.el).find(s).each((function(e){!t(this).hasClass("sby_num_diff_hide")&&t(this).find(".sby_video_thumbnail").length&&void 0!==t(this).find(".sby_video_thumbnail").attr("data-img-src-set")&&i.maybeRaiseSingleImageResolution(t(this),e,n)})),i.isInitialized=!0},getBestResolutionForAuto:function(e,i,s){(isNaN(i)||i<1)&&(i=1);var n=e*i,a=10*Math.ceil(n/10),o=[120,320,480,640];if(s.hasClass("sby_highlighted")&&(a*=2),-1===o.indexOf(parseInt(a))){var r=!1;t.each(o,(function(t,e){e>parseInt(a)&&!r&&(a=e,r=!0)}))}return a},hideExtraItemsForWidth:function(){if("carousel"!==this.layout){var e=t(this.el),i=void 0!==e.attr("data-num")&&""!==e.attr("data-num")?parseInt(e.attr("data-num")):1,s=void 0!==e.attr("data-nummobile")&&""!==e.attr("data-nummobile")?parseInt(e.attr("data-nummobile")):i;e.hasClass(".sby_layout_carousel")||(t(window).width()<480?s140&&a<240?e.addClass("sby_medium"):a<=140&&e.addClass("sby_small")},setMinImageWidth:function(){t(this.el).find(".sby_item .sby_video_thumbnail").first().length?this.minImageWidth=t(this.el).find(".sby_item .sby_video_thumbnail").first().innerWidth():this.minImageWidth=150},setImageResolution:function(){if("auto"===this.settings.imgRes)this.imageResolution="auto";else switch(this.settings.imgRes){case"thumb":this.imageResolution=150;break;case"medium":this.imageResolution=320;break;default:this.imageResolution=640}},getImageUrls:function(t){var e=JSON.parse(t.find(".sby_video_thumbnail").attr("data-img-src-set").replace(/\\\//g,"/")),i=t.attr("id").replace("sby_","").replace("player_","");if(void 0!==this.resizedImages[i]&&"video"!==this.resizedImages[i]&&"pending"!==this.resizedImages[i]&&"error"!==this.resizedImages[i].id&&"video"!==this.resizedImages[i].id&&"pending"!==this.resizedImages[i].id){if(void 0!==this.resizedImages[i].sizes){var s=[];void 0!==this.resizedImages[i].sizes.full&&(s.push(640),e[640]=sbyOptions.resized_url+this.resizedImages[i].id+"full.jpg",t.find(".sby_link_area").attr("href",sbyOptions.resized_url+this.resizedImages[i].id+"full.jpg"),t.find(".sby_video_thumbnail").attr("data-full-res",sbyOptions.resized_url+this.resizedImages[i].id+"full.jpg")),void 0!==this.resizedImages[i].sizes.low&&(s.push(320),e[320]=sbyOptions.resized_url+this.resizedImages[i].id+"low.jpg",this.settings.favorLocal&&void 0===this.resizedImages[i].sizes.full&&(t.find(".sby_link_area").attr("href",sbyOptions.resized_url+this.resizedImages[i].id+"low.jpg"),t.find(".sby_video_thumbnail").attr("data-full-res",sbyOptions.resized_url+this.resizedImages[i].id+"low.jpg"))),void 0!==this.resizedImages[i].sizes.thumb&&(s.push(150),e[150]=sbyOptions.resized_url+this.resizedImages[i].id+"thumb.jpg"),this.settings.favorLocal&&(-1===s.indexOf(640)&&s.indexOf(320)>-1&&(e[640]=sbyOptions.resized_url+this.resizedImages[i].id+"low.jpg"),-1===s.indexOf(320)&&(s.indexOf(640)>-1?e[320]=sbyOptions.resized_url+this.resizedImages[i].id+"full.jpg":s.indexOf(150)>-1&&(e[320]=sbyOptions.resized_url+this.resizedImages[i].id+"thumb.jpg")),-1===s.indexOf(150)&&(s.indexOf(320)>-1?e[150]=sbyOptions.resized_url+this.resizedImages[i].id+"low.jpg":s.indexOf(640)>-1&&(e[150]=sbyOptions.resized_url+this.resizedImages[i].id+"full.jpg")))}}else(void 0===this.resizedImages[i]||void 0!==this.resizedImages[i].id&&"pending"!==this.resizedImages[i].id&&"error"!==this.resizedImages[i].id)&&this.addToNeedsResizing(i);return e},getVideoID:function(e){if(e.hasClass("sby_item")||e.hasClass("sby_player_item")){if(void 0!==e.find(".sby_video_thumbnail").attr("data-video-id"))return e.find(".sby_video_thumbnail").attr("data-video-id")}else if(e.closest("sby_item").length||e.closest("sby_player_item").length){var i=e.closest("sby_item").length?e.closest("sby_item"):e.closest("sby_player_item");if(void 0!==i.find(".sby_video_thumbnail").attr("data-video-id"))return i.find(".sby_video_thumbnail").attr("data-video-id")}else{if(e.hasClass("sb_youtube"))return e.find(".sby_item").first().find(".sby_video_thumbnail").attr("data-video-id");if(t(this.el).find(".sby_video_thumbnail").first().length&&void 0!==t(this.el).find(".sby_video_thumbnail").first().attr("data-video-id"))return t(this.el).find(".sby_video_thumbnail").first().attr("data-video-id")}return""},getAvatarUrl:function(t,e){if(""===t)return"";var i=this.settings.general.avatars;return"local"===(e=void 0!==e?e:"local")?void 0!==i["LCL"+t]&&1===parseInt(i["LCL"+t])?sbyOptions.resized_url+t+".jpg":void 0!==i[t]?i[t]:"":void 0!==i[t]?i[t]:void 0!==i["LCL"+t]&&1===parseInt(i["LCL"+t])?sbyOptions.resized_url+t+".jpg":""},addToNeedsResizing:function(t){-1===this.needsResizing.indexOf(t)&&this.needsResizing.push(t)},applyImageLiquid:function(){var e=t(this.el);(function(){var t,e,i,s,n=n||{VER:"0.9.944"};n.bgs_Available=!1,n.bgs_CheckRunned=!1,(t=jQuery).fn.extend({sby_imgLiquid:function(e){this.defaults={fill:!0,verticalAlign:"center",horizontalAlign:"center",useBackgroundSize:!0,useDataHtmlAttr:!0,responsive:!0,delay:0,fadeInTime:0,removeBoxBackground:!0,hardPixels:!0,responsiveCheckTime:500,timecheckvisibility:500,onStart:null,onFinish:null,onItemStart:null,onItemFinish:null,onItemError:null},function(){if(!n.bgs_CheckRunned){n.bgs_CheckRunned=!0;var e=t('');t("body").append(e),function(){var t=e[0];if(t&&window.getComputedStyle){var i=window.getComputedStyle(t,null);i&&i.backgroundSize&&(n.bgs_Available="cover"===i.backgroundSize)}}(),e.remove()}}();var i=this;return this.options=e,this.settings=t.extend({},this.defaults,this.options),this.settings.onStart&&this.settings.onStart(),this.each((function(e){function s(){(l.responsive||h.data("sby_imgLiquid_oldProcessed"))&&h.data("sby_imgLiquid_settings")&&(l=h.data("sby_imgLiquid_settings"),d.actualSize=d.get(0).offsetWidth+d.get(0).offsetHeight/1e4,d.sizeOld&&d.actualSize!==d.sizeOld&&o(),d.sizeOld=d.actualSize,setTimeout(s,l.responsiveCheckTime))}function a(){h.data("sby_imgLiquid_error",!0),d.addClass("sby_imgLiquid_error"),l.onItemError&&l.onItemError(e,d,h),r()}function o(){var t,i,s,n,a,o,c,u,g=0,p=0,y=d.width(),f=d.height();void 0===h.data("owidth")&&h.data("owidth",h[0].width),void 0===h.data("oheight")&&h.data("oheight",h[0].height),l.fill===y/f>=h.data("owidth")/h.data("oheight")?(t="100%",i="auto",s=Math.floor(y),n=Math.floor(y*(h.data("oheight")/h.data("owidth")))):(t="auto",i="100%",s=Math.floor(f*(h.data("owidth")/h.data("oheight"))),n=Math.floor(f)),c=y-s,"left"===(a=l.horizontalAlign.toLowerCase())&&(p=0),"center"===a&&(p=.5*c),"right"===a&&(p=c),-1!==a.indexOf("%")&&(a=parseInt(a.replace("%",""),10))>0&&(p=c*a*.01),u=f-n,"left"===(o=l.verticalAlign.toLowerCase())&&(g=0),"center"===o&&(g=.5*u),"bottom"===o&&(g=u),-1!==o.indexOf("%")&&(o=parseInt(o.replace("%",""),10))>0&&(g=u*o*.01),l.hardPixels&&(t=s,i=n),h.css({width:t,height:i,"margin-left":Math.floor(p),"margin-top":Math.floor(g)}),h.data("sby_imgLiquid_oldProcessed")||(h.fadeTo(l.fadeInTime,1),h.data("sby_imgLiquid_oldProcessed",!0),l.removeBoxBackground&&d.css("background-image","none"),d.addClass("sby_imgLiquid_nobgSize"),d.addClass("sby_imgLiquid_ready")),l.onItemFinish&&l.onItemFinish(e,d,h),r()}function r(){e===i.length-1&&i.settings.onFinish&&i.settings.onFinish()}var l=i.settings,d=t(this),h=t("img:first",d);return h.length?(h.data("sby_imgLiquid_settings")?(d.removeClass("sby_imgLiquid_error").removeClass("sby_imgLiquid_ready"),l=t.extend({},h.data("sby_imgLiquid_settings"),i.options)):l=t.extend({},i.settings,function(){var t={};if(i.settings.useDataHtmlAttr){var e=d.attr("data-sby_imgLiquid-fill"),s=d.attr("data-sby_imgLiquid-horizontalAlign"),a=d.attr("data-sby_imgLiquid-verticalAlign");("true"===e||"false"===e)&&(t.fill=Boolean("true"===e)),void 0===s||"left"!==s&&"center"!==s&&"right"!==s&&-1===s.indexOf("%")||(t.horizontalAlign=s),void 0===a||"top"!==a&&"bottom"!==a&&"center"!==a&&-1===a.indexOf("%")||(t.verticalAlign=a)}return n.isIE&&i.settings.ieFadeInDisabled&&(t.fadeInTime=0),t}()),h.data("sby_imgLiquid_settings",l),l.onItemStart&&l.onItemStart(e,d,h),void(n.bgs_Available&&l.useBackgroundSize?(-1===d.css("background-image").indexOf(encodeURI(h.attr("src")))&&d.css({"background-image":'url("'+encodeURI(h.attr("src"))+'")'}),d.css({"background-size":l.fill?"cover":"contain","background-position":(l.horizontalAlign+" "+l.verticalAlign).toLowerCase(),"background-repeat":"no-repeat"}),t("a:first",d).css({display:"block",width:"100%",height:"100%"}),t("img",d).css({display:"none"}),l.onItemFinish&&l.onItemFinish(e,d,h),d.addClass("sby_imgLiquid_bgSize"),d.addClass("sby_imgLiquid_ready"),r()):function i(){if(h.data("oldSrc")&&h.data("oldSrc")!==h.attr("src")){var n=h.clone().removeAttr("style");return n.data("sby_imgLiquid_settings",h.data("sby_imgLiquid_settings")),h.parent().prepend(n),h.remove(),(h=n)[0].width=0,void setTimeout(i,10)}return h.data("sby_imgLiquid_oldProcessed")?void o():(h.data("sby_imgLiquid_oldProcessed",!1),h.data("oldSrc",h.attr("src")),t("img:not(:first)",d).css("display","none"),d.css({overflow:"hidden"}),h.fadeTo(0,0).removeAttr("width").removeAttr("height").css({visibility:"visible","max-width":"none","max-height":"none",width:"auto",height:"auto",display:"block"}),h.on("error",a),h[0].onerror=a,function t(){h.data("sby_imgLiquid_error")||h.data("sby_imgLiquid_loaded")||h.data("sby_imgLiquid_oldProcessed")||(d.is(":visible")&&h[0].complete&&h[0].width>0&&h[0].height>0?(h.data("sby_imgLiquid_loaded",!0),setTimeout(o,e*l.delay)):setTimeout(t,l.timecheckvisibility))}(),void s())}())):void a()}))}}),e=n.injectCss,i=document.getElementsByTagName("head")[0],(s=document.createElement("style")).type="text/css",s.styleSheet?s.styleSheet.cssText=e:s.appendChild(document.createTextNode(e)),i.appendChild(s)})(),"function"==typeof e.find(".sby_player_item").sby_imgLiquid&&(e.find(".sby_player_item").length&&e.find(".sby_player_item .sby_player_video_thumbnail").sby_imgLiquid({fill:!0}),e.find(".sby_item .sby_item_video_thumbnail").sby_imgLiquid({fill:!0}))},listenForVisibilityChange:function(){var e=this;!function(t){var e={callback:function(){},runOnLoad:!0,frequency:100,sbyPreviousVisibility:null},i={sbyCheckVisibility:function(t,e){if(jQuery.contains(document,t[0])){var s=e.sbyPreviousVisibility,n=t.is(":visible");e.sbyPreviousVisibility=n,null==s?e.runOnLoad&&e.callback(t,n):s!==n&&e.callback(t,n),setTimeout((function(){i.sbyCheckVisibility(t,e)}),e.frequency)}}};t.fn.sbyVisibilityChanged=function(s){var n=t.extend({},e,s);return this.each((function(){i.sbyCheckVisibility(t(this),n)}))}}(jQuery),"function"==typeof t(this.el).filter(":hidden").sbyVisibilityChanged&&t(this.el).filter(":hidden").sbyVisibilityChanged({callback:function(t,i){e.afterResize()},runOnLoad:!1})},getColumnCount:function(){var e=t(this.el),i=this.settings.cols,s=this.settings.colsmobile,n=i;return sbyWindowWidth=window.innerWidth,e.hasClass("sby_mob_col_auto")?(sbyWindowWidth<640&&parseInt(i)>2&&parseInt(i)<7&&(n=2),sbyWindowWidth<640&&parseInt(i)>6&&parseInt(i)<11&&(n=4),sbyWindowWidth<=480&&parseInt(i)>2&&(n=1)):sbyWindowWidth<=480&&(n=s),parseInt(n)},onThumbnailClick:function(e,i,s){if(this.canCreatePlayer()){var n=t(this.el);if(n.hasClass("sby_layout_gallery")){if(n.find(".sby_current").removeClass("sby_current"),e.closest(".sby_item").addClass("sby_current"),e.closest(".sby_item").addClass("sby_current"),n.addClass("sby_player_added").find(".sby_player_outer_wrap").addClass("sby_player_loading"),n.find(".sby_player_outer_wrap .sby_video_thumbnail").find(".sby_loader").show().removeClass("sby_hidden"),n.find(".sby_player_outer_wrap iframe").length)i?(s=void 0===s?this.getVideoID(n.find(".sby_item").first()):s,this.playVideoInPlayer(s)):(s=void 0===s?this.getVideoID(e.closest(".sby_item")):s,this.changePlayerInfo(e.closest(".sby_item")),this.playVideoInPlayer(s),this.afterVideoChanged());else if(i)this.createPlayer("sby_player"+this.index);else{s=void 0===s?this.getVideoID(e.closest(".sby_item")):s;this.createPlayer("sby_player"+this.index,s)}this.updateGalleryPlayerSubscribeBtn(e)}else if(t(this.el).hasClass("sby_layout_grid")||t(this.el).hasClass("sby_layout_carousel")){var a=e.closest(".sby_item");s=void 0===s?this.getVideoID(a):s,this.playVideoInPlayer(s),this.afterVideoChanged()}else t(this.el).hasClass("sby_layout_list")&&(a=e.closest(".sby_item"),s=void 0===s?this.getVideoID(a):s,a.length&&!a.find("iframe").length?(a.find(".sby_loader").show().removeClass("sby_hidden"),a.addClass("sby_player_loading sby_player_loaded"),this.createPlayer("sby_player_"+s,s)):(this.playVideoInPlayer(s,a.attr("data-video-id")),this.afterVideoChanged()))}},onThumbnailEnter:function(e){if(this.canCreatePlayer()&&t(this.el).hasClass("sby_layout_list")){var i=e.closest(".sby_item"),s=this.getVideoID(i);i.find("iframe").length||(i.find(".sby_loader").show().removeClass("sby_hidden"),i.addClass("sby_player_loading sby_player_loaded"),this.createPlayer("sby_player_"+s,s,0))}},onThumbnailLeave:function(t){},changePlayerInfo:function(t){},playerEagerLoaded:function(){if(void 0!==this.player||t(this.el).hasClass("sby_player_loaded"))return!0},canCreatePlayer:function(){if(t(this.el).find("#sby_blank").length)return!1;var e=this.settings.consentGiven,i=window.sby.feeds[this.index].playerAPIReady&&e;return this.playerEagerLoaded()||this.playerAPIReady&&e||window.sbyAPIReady&&e||i},playVideoInPlayer:function(t,e){void 0!==this.player&&void 0!==this.player.loadVideoById?this.player.loadVideoById(t):void 0!==window.sbyLightboxPlayer&&void 0!==window.sbyLightboxPlayer.loadVideoById?window.sbyLightboxPlayer.loadVideoById(t):void 0!==e&&void 0!==this.players&&void 0!==this.players[e]&&void 0!==this.players[e].loadVideoById&&this.players[e].loadVideoById(t)},afterVideoChanged:function(){t(this.el).hasClass("sby_layout_gallery")&&(t(this.el).find(".sby_player_outer_wrap").removeClass("sby_player_loading"),t(this.el).find(".sby_player_outer_wrap .sby_video_thumbnail").find(".sby_loader").hide().addClass("sby_hidden"),t("html, body").animate({scrollTop:t(this.el).find(".sby_player_outer_wrap").offset().top},300))},updateGalleryPlayerSubscribeBtn:function(e){var i=e.attr("href").match(/channel\/(.*)$/);if(i){var s="http://www.youtube.com/channel/"+i[1]+"?sub_confirmation=1&feature=subscribe-embed-click";t(".sby-channel-subscribe-btn a").attr("href",s)}},checkConsent:function(){if(this.settings.consentGiven||!this.settings.gdpr)return this.settings.noCDN=!1,!0;if(void 0!==window.WPConsent)this.settings.consentGiven=window.WPConsent.hasConsent("marketing");else if("undefined"!=typeof CLI_Cookie)null!==CLI_Cookie.read(CLI_ACCEPT_COOKIE_NAME)&&("null"!==CLI_Cookie.read("cookielawinfo-checkbox-non-necessary")&&(this.settings.consentGiven="yes"===CLI_Cookie.read("cookielawinfo-checkbox-non-necessary")),"null"!==CLI_Cookie.read("cookielawinfo-checkbox-necessary")&&(this.settings.consentGiven="yes"===CLI_Cookie.read("cookielawinfo-checkbox-necessary")));else if(void 0!==window.cnArgs){var t=("; "+document.cookie).split("; cookie_notice_accepted=");if(2===t.length){var e=t.pop().split(";").shift();this.settings.consentGiven="true"===e}}else if(void 0!==window.complianz)this.settings.consentGiven="allow"===r("cmplz_marketing")||jQuery("body").hasClass("cmplz-status-marketing");else if(void 0!==window.Cookiebot)this.settings.consentGiven=Cookiebot.consented;else if(void 0!==window.BorlabsCookie)this.settings.consentGiven=void 0!==window.BorlabsCookie.Consents?window.BorlabsCookie.Consents.hasConsent("youtube"):window.BorlabsCookie.checkCookieConsent("youtube");else if(r("moove_gdpr_popup")){var i=JSON.parse(decodeURIComponent(r("moove_gdpr_popup")));this.settings.consentGiven=void 0!==i.thirdparty&&"1"===i.thirdparty}var s=jQuery.Event("sbycheckconsent");return s.feed=this,jQuery(window).trigger(s),this.settings.consentGiven&&(this.settings.noCDN=!1),this.settings.consentGiven},afterConsentToggled:function(){if(this.checkConsent()){var t=this;window.sby.maybeAddYTAPI(),t.maybeRaiseImageResolution(),t.applyFullFeatures(),setTimeout((function(){t.afterResize()}),500)}},removeFeatures:function(){this.settings.noCDN&&t(this.el).find(".sby_video_thumbnail").each((function(){t(this).removeAttr("data-sby-lightbox")}))},applyFullFeatures:function(){var e=this;t(e.el).find(".sby_header_img img").attr("src",t(e.el).find(".sby_header_img").attr("data-avatar-url")),void 0===t(e.el).find(".sby_video_thumbnail").first().attr("data-sby-lightbox")&&e.settings.lightboxEnabled&&t(e.el).find(".sby_video_thumbnail").each((function(){t(this).attr("data-sby-lightbox",e.index)}));var i=t(e.el);if(i.find(".sby_no_consent").removeClass("sby_no_consent"),i.hasClass("sby_layout_gallery")&&i.find(".sby_player_outer_wrap").length){if(this.maybeRaiseSingleImageResolution(i.find(".sby_player_outer_wrap"),0,!0),i.find(".sby_item").first().addClass("sby_current"),!e.canCreatePlayer())return;i.find(".sby_player_outer_wrap iframe").length||e.createPlayer("sby_player"+e.index)}},locationGuess:function(){var e=t(this.el),i="content";return e.closest("footer").length?i="footer":e.closest(".header").length||e.closest("header").length?i="header":(e.closest(".sidebar").length||e.closest("aside").length)&&(i="sidebar"),i}},s.prototype=Object.create(i.prototype),n.prototype={getData:function(t){return{feedIndex:parseInt(t.closest(".sb_youtube").attr("data-sby-index")-1),link:t.attr("href"),videoTitle:void 0!==t.attr("data-video-title")?p(t.attr("data-video-title")):"YouTube Video",video:t.attr("data-video-id"),channelID:t.attr("data-channel-id")}},template:function(){return"
"},beforePlayerSetup:function(t,e,i,s,n){},afterPlayerSetup:function(t,e,i,s){},afterResize:function(){var e=t("#sby_lightbox .sby_lb-player").height();if(e>100){var i=t("#sby_lightbox .sby_lb-outerContainer").height()-e;i>10&&t("#sby_lightbox .sby_lb-player").css("top",i/2)}},pausePlayer:function(){void 0===window.sbyLightboxPlayer&&"undefined"==typeof YT||(void 0!==YT.get("sby_lb-player")&&"function"==typeof YT.get("sby_lb-player").pauseVideo?YT.get("sby_lb-player").pauseVideo():void 0!==window.sbyLightboxPlayer&&"function"==typeof window.sbyLightboxPlayer.pauseVideo&&window.sbyLightboxPlayer.pauseVideo())}},a.prototype=Object.create(n.prototype),o.prototype={toggleCTA:function(e,i,s){this.$player=s.length?s:t(".sby_lb-container"),this.state=i,this.videoID=e,this.isInitialized=!0,this.resetCTA(),void 0!==window.sby.ctas[e]&&(this.callbackArgs=window.sby.ctas[e]);var n=this.callbackArgs.callback;if("link"===n)this.callback=this.link;else{if("related"!==n)return;this.callback=this.related}2===i||0===i?(this.$player.find(".sby_cta_items_wraps").addClass("sby_cta_is_open"),2===i?this.$player.find(".sby_cta_items_wraps").addClass("sby_cta_state_paused"):this.$player.find(".sby_cta_items_wraps").addClass("sby_cta_state_ended"),this.$player.find(".sby_cta_items_wraps").show(),this.callback(),this.setCTAStyles()):(this.$player.find(".sby_cta_items_wraps").removeClass("sby_cta_is_open"),this.$player.find(".sby_cta_items_wraps").hide().removeClass("sby_cta_state_paused").removeClass("sby_cta_state_ended").removeClass("sby_cta_is_open"))},related:function(e){var i=this,s=this.feedObjInContext,n=window.sby.shuffle(this.getRelated(s)),a=0,o=this.videoID,r=this.$player;this.$player.find(".sby_cta_items_wraps").removeClass("sby_cta_cols_"+this.numItemColumns),this.numItems=4,this.numItemColumns=2,r.width()<480&&(this.numItems=1,this.numItemColumns=1);var l=this.numItems;t.each(n,(function(t,e){e.videoID!==o&&a
'),a++)})),r.find(".sby_cta_items_wraps .sby_video_thumbnail").each((function(){t(this).off().on("click",(function(e){e.preventDefault();var n=t(this).attr("data-video-id");s.onThumbnailClick(t(this),!0,n),i.videoID=n}))}))},getRelated:function(e){if(void 0===e.settings.general.cta.defaultPosts[0]){var i=t(e.el),s=[];return i.find(".sby_item").each((function(){if(void 0!==t(this).find(".sby_item_video_thumbnail").attr("data-full-res")){var e={videoID:t(this).attr("data-video-id"),title:p(t(this).attr("data-video-title")),thumbnail:t(this).find(".sby_item_video_thumbnail").attr("data-full-res")};s.push(e)}})),s}return e.settings.general.cta.defaultPosts},link:function(t){var e=this.$player,i=this.feedObjInContext;this.$player.find(".sby_cta_items_wraps").removeClass("sby_cta_cols_"+this.numItemColumns),this.numItems=1,this.numItemColumns=1;var s="",n="";""===i.settings.general.cta.color&&""===i.settings.general.cta.textColor||(s=' style="',n=" sby_custom",""!==i.settings.general.cta.color&&(s+="background: rgb("+i.settings.general.cta.color+");"),""!==i.settings.general.cta.textColor&&(s+="color: rgb("+i.settings.general.cta.textColor+");"),s+='"');var a="";"newwindow"===i.settings.general.cta.openType&&(a=' target="_blank" rel="noopener"'),e.find(".sby_cta_items_wraps .sby_cta_inner_wrap").append('")},setCTAStyles:function(){var t=Math.max(90,this.$player.height()-60-49);this.$player.find(".sby_cta_items_wraps").css("height",t+"px").css("width",this.$player.find("iframe").width()-20+"px").addClass("sby_cta_cols_"+this.numItemColumns);var e=Math.max(1,this.numItems/this.numItemColumns),i=2*parseInt(this.$player.find(".sby_cta_items_wraps").css("padding-top").replace("px","")),s=Math.max(90,(t-i)/e);this.$player.find(".sby_cta_item").css("max-height",s+"px").find("img").css({"max-height":s+"px",width:"auto",margin:"auto"}),this.$player.find(".sby_btn_wrap").css("height",s+"px")},resetCTA:function(){this.$player.find(".sby_cta_items_wraps .sby_cta_inner_wrap").empty()}},window.sby_init=function(){window.sby=new e,window.sby.createPage(window.sby.createFeeds,{whenFeedsCreated:window.sby.afterFeedsCreated})},window.sby_carousel_init=function(){console.log("log")}}(jQuery),void 0===window.sbyEagerLoading){if(window.sbyEagerLoading=void 0!==window.sbyOptions&&window.sbyOptions.eagerload,jQuery(".elementor-widget-video").length){var f=void 0!==jQuery(".elementor-widget-video").attr("data-settings")&&JSON.parse(jQuery(".elementor-widget-video").attr("data-settings"));f&&void 0!==f.youtube_url&&(window.sbyEagerLoading=!0)}jQuery("div[data-vc-video-bg]").length&&(window.sbyEagerLoading=!0)}void 0===window.sbySemiEagerLoading&&(window.sbySemiEagerLoading=void 0!==window.sbyOptions&&window.sbyOptions.semiEagerload,(jQuery("div[data-vc-video-bg]").length||window.sbyEagerLoading)&&(window.sbySemiEagerLoading=!1)),jQuery(document).ready((function(t){var e;window.sbySemiEagerLoading||sby_init(),t("#cookie-notice a").on("click",(function(){setTimeout((function(){t.each(window.sby.feeds,(function(t){window.sby.feeds[t].afterConsentToggled()}))}),1e3)})),t("#cookie-law-info-bar a").on("click",(function(){setTimeout((function(){t.each(window.sby.feeds,(function(t){window.sby.feeds[t].afterConsentToggled()}))}),1e3)})),t(".cli-user-preference-checkbox").on("click",(function(){setTimeout((function(){t.each(window.sby.feeds,(function(t){window.sby.feeds[t].settings.consentGiven=!1,window.sby.feeds[t].afterConsentToggled()}))}),1e3)})),t(window).on("CookiebotOnAccept",(function(e){t.each(window.sby.feeds,(function(t){window.sby.feeds[t].settings.consentGiven=!0,window.sby.feeds[t].afterConsentToggled()}))})),document.addEventListener("cmplz_status_change",(function(e){"marketing"===e.detail.category&&"allow"===e.detail.value&&t.each(window.sby.feeds,(function(t){window.sby.feeds[t].settings.consentGiven=!0,window.sby.feeds[t].afterConsentToggled()}))})),t(document).on("cmplzFireCategories",(function(e){"marketing"===e.detail.category&&t.each(window.sby.feeds,(function(t){window.sby.feeds[t].settings.consentGiven=!0,window.sby.feeds[t].afterConsentToggled()}))})),t(document).on("borlabs-cookie-consent-saved",(function(e){t.each(window.sby.feeds,(function(t){window.sby.feeds[t].settings.consentGiven=!1,window.sby.feeds[t].afterConsentToggled()}))})),void 0!==window.consentApi&&(null===(e=window.consentApi)||void 0===e||e.consent("feeds-for-youtube").then((function(){try{t.each(window.sby.feeds,(function(t){window.sby.feeds[t].settings.consentGiven=!0,window.sby.feeds[t].afterConsentToggled()}))}catch(t){}}))),t(".moove-gdpr-infobar-allow-all").on("click",(function(){setTimeout((function(){t.each(window.sby.feeds,(function(t){window.sby.feeds[t].afterConsentToggled()}))}),1e3)})),window.addEventListener("wpconsent_consent_saved",(function(e){setTimeout((function(){t.each(window.sby.feeds,(function(t){window.sby.feeds[t].afterConsentToggled()}))}),1e3)})),window.addEventListener("wpconsent_consent_updated",(function(e){setTimeout((function(){t.each(window.sby.feeds,(function(t){window.sby.feeds[t].afterConsentToggled()}))}),1e3)})),t("#sby-frce-hide-license-error").on("click",(function(){t("#sby-fr-ce-license-error").slideUp(),jQuery.ajax({url:sbyOptions.adminAjaxUrl,type:"post",data:{action:"sby_hide_frontend_license_error",nonce:sbyOptions.nonce},success:function(t){console.log(t)}})}))}))}if(window.sbySemiEagerLoading){var b="sby-youtube-api";if(null===document.getElementById(b)){var m=document.createElement("script"),_=document.getElementsByTagName("script")[0];m.src="https://www.youtube.com/iframe_api",m.id=b,_.parentNode.insertBefore(m,_)}}function v(t,e){var i,s,n,a,o,r;switch(e){case"authorProfileImageUrl":return null!=t&&null!==(i=t.snippet)&&void 0!==i&&i.authorProfileImageUrl?t.snippet.authorProfileImageUrl:"";case"authorDisplayName":return null!=t&&null!==(s=t.snippet)&&void 0!==s&&s.authorDisplayName?t.snippet.authorDisplayName:"";case"authorChannelUrl":return null!=t&&null!==(n=t.snippet)&&void 0!==n&&n.authorChannelUrl?t.snippet.authorChannelUrl:"";case"textDisplay":return null!=t&&null!==(a=t.snippet)&&void 0!==a&&a.textDisplay?t.snippet.textDisplay:"";case"likeCount":return null!=t&&null!==(o=t.snippet)&&void 0!==o&&o.likeCount?t.snippet.likeCount:"";case"publishedAt":return null!=t&&null!==(r=t.snippet)&&void 0!==r&&r.publishedAt?t.snippet.publishedAt:"";case"totalReplyCount":return null!=t&&t.totalReplyCount?t.totalReplyCount:"";default:return!1}}function w(t){switch(t){case"profile-picture":return'';case"thumbs-up":return'';case"angle-down":return'';case"youtube":return'';case"cross":return'';case"message":return'';default:return!1}}function x(t,e,i,s,n,a,o){var r,l=t?"'):w("profile-picture"),d=o?'"):"";return'\n
\n '.concat(l,'\n
\n
\n ').concat(e,"\n ").concat(I(a),'\n
\n
\n

').concat(s,'

\n
\n \n \n
\n
\n
\n \n ').concat(w("thumbs-up")," ").concat(n?(r=n,r>=1e9?(r/1e9).toFixed(1)+"B":r>=1e6?(r/1e6).toFixed(1)+"M":r>=1e3?(r/1e3).toFixed(1)+"K":r):0,"\n \n ").concat(d,"\n
\n ")}function C(t){return'\n

Comments

\n
\n

'.concat(t,"

\n
")}function I(t){var e=new Date-new Date(t),i=Math.floor(e/1e3),s=Math.floor(i/60),n=Math.floor(s/60),a=Math.floor(n/24),o=Math.floor(a/30),r=Math.floor(o/12);return r>0?"".concat(r," year").concat(r>1?"s":""," ago"):o>0?"".concat(o," month").concat(o>1?"s":""," ago"):a>0?"".concat(a," day").concat(a>1?"s":""," ago"):n>0?"".concat(n," hour").concat(n>1?"s":""," ago"):s>0?"".concat(s," minute").concat(s>1?"s":""," ago"):i>0?"".concat(i," second").concat(i>1?"s":""," ago"):"just now"}function k(){var t=jQuery(".sby-read-more-target"),e=".sby-read-more-trigger";t.each((function(t){var i=jQuery(this)[0],s=i.scrollHeight,n=i.offsetHeight;if(s>n&&s>n+1){var a=jQuery(this).parent().find(e);a.unbind("click"),a.click((function(){jQuery(this).toggleClass("sby-read-more-trigger-active"),jQuery(this).parent().find(".sby-read-more-target").toggleClass("sby-read-more-target-active")}))}else jQuery(this).parent().find(e).hide()}))}function z(t,e){var i=jQuery(".sby_lb-caption"),s="sby-lb-dark-scheme";return!1===e?(i.removeClass(s),!1):"dark"===t&&!0===e?(i.addClass(s),!1):void 0}function T(){jQuery("body").css("overflow","auto"),z("",!1),jQuery(".sby_gdpr_notice").remove()}function L(t){var e=t.closest(".sb_youtube");return e.hasClass("sby_layout_list")?"list":e.hasClass("sby_layout_grid")?"grid":e.hasClass("sby_layout_carousel")?"carousel":!!e.hasClass("sby_layout_gallery")&&"gallery"}function P(){if(!window.sbyOptions.isPro)return!1;var t=jQuery(".sby-comments-trigger");t.unbind("click"),t.click((function(){var t=".sby-comments-wrap",e=jQuery(this).closest(".sby-comment-container"),i=e.find(t),s=L(jQuery(this));if(i.text().length<=0){var n,a,o;if("gallery"===s){var r=jQuery(this).closest(".sb_youtube"),l=r.find(".sby_item.sby_current");r&&l&&(a=j(l.attr("data-video-id")),n=j(l.find("a").attr("data-comment-count")),o=r.find(t))}if("list"===s){var d=jQuery(this).closest(".sby_item");d&&(a=j(d.attr("data-video-id")),n=j(d.find("a").attr("data-comment-count")),o=d.find(t)),O(jQuery(this).closest(".sb_youtube"))}$(a,j(jQuery(this).closest(".sb_youtube").attr("data-shortcode-atts")),o,n),i.addClass("sby-comments-active")}else i.toggle(),i.toggleClass("sby-comments-active");var h=e.find(".sby-comments-trigger p");h&&function(t,e,i){if(t&&e&&i){var s=e===t.text()?i:e;t.text(s)}}(h,"Show Comments","Hide Comments")}))}function j(t){return t||""}function A(t,e){jQuery.ajax({url:sbyOptions.adminAjaxUrl,type:"post",data:t,success:e})}function $(t,e,i,s){submitData={action:"sby_get_comments",video_id:t,atts:e},k(),A(submitData,(function(e){var n;if(!e)return!1;if(!1===e.success)return i.html(C(e.data)),!1;var a=JSON.parse(e);if(!a)return!1;if(null!=a&&a.success&&!1===a.success)return i.html(C(a.data)),!1;if(null!=a&&a.error&&null!=a&&null!==(n=a.error)&&void 0!==n&&n.message){var o=a.error.message;return o.includes("disabled comments")&&(o="Comments are turned off"),i.html(C(o)),!1}var r=null!=a&&a.items&&null!=a&&a.items.length?a.items.length:"",l=t?"https://www.youtube.com/watch?v=".concat(t):"";if(!r)return i.html('\n

Comments

\n
\n '.concat(w("message"),"\n

There are no comments to display

\n
")),k(),!1;currentCommentCount=s?"( ".concat(s," )"):"";var d='

Comments '.concat(currentCommentCount,'

    ');jQuery.each(a.items,(function(t,e){var i,s,n=null==e||null===(i=e.snippet)||void 0===i?void 0:i.topLevelComment,a=null==e?void 0:e.snippet;d+='
  • '.concat(x(v(n,"authorProfileImageUrl"),v(n,"authorDisplayName"),v(n,"authorChannelUrl"),v(n,"textDisplay"),v(n,"likeCount"),v(n,"publishedAt"),v(a,"totalReplyCount")),'\n
      '),null!=e&&null!==(s=e.replies)&&void 0!==s&&s.comments&&jQuery.each(e.replies.comments,(function(t,e){d+='
    • '.concat(x(v(e,"authorProfileImageUrl"),v(e,"authorDisplayName"),v(e,"authorChannelUrl"),v(e,"textDisplay"),v(e,"likeCount"),v(e,"publishedAt")),"
    • ")})),d+="
  • "})),d+="
",d+='View all comments on YouTube'),i.html(d).fadeIn("fast"),k(),function(t,e,i,s){jQuery(s).css("display","none"),jQuery(e).unbind("click"),jQuery(e).click((function(){jQuery(this).toggleClass("sby-active-trigger"),jQuery(this).closest(".sby-comment").find(s).toggle()}))}(0,".sby-replies",0,".sby-reply-comments")}))}function O(t){"gallery"!==L(t)&&"list"!==L(t)||(t.find(".sby-comments-trigger").find("p").text("Show Comments"),t.find(".sby-comments-wrap").html(""))}window.onYouTubeIframeAPIReady=function(){var t=document.getElementsByClassName("sb_youtube").length;if(t>0){if(window.sbySemiEagerLoading){if(void 0!==window.sby)for(var e=0;e
'),player=new YT.Player("sby_lb-player",{height:"100",width:"100",videoId:jQuery(this).find(".sby_item").first().attr("data-video-id"),playerVars:{modestbranding:1,rel:0,autoplay:s}}),window.sbyLightboxPlayer=player)}if(void 0!==window.sby){var n=jQuery.Event("sbyfeedandytready");jQuery(window).trigger(n)}}})(); //# sourceMappingURL=data:application/json;charset=utf-8;base64,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QW9Cbk4sU0FDM0IyZixFQUFNOUksU0FBUyx1QkFDZnlILEVBQUs4UixhQUFhLGFBQWE5UixFQUFLM2IsT0FFeENnZCxFQUFNeFMsS0FBSyxvQkFBb0I5VyxJQUFJLFVBQVUsR0FDN0NzcEIsRUFBTXhTLEtBQUssYUFBYTlXLElBQUksVUFBVSxHQUN0Q3NwQixFQUFNeFMsS0FBSyx1QkFBdUJMLFlBQVksc0JBQzFDNlMsRUFBTTlJLFNBQVMsb0JBQ2Y4SSxFQUFNeFMsS0FBSyw2QkFBNkI2QixHQUFHLGNBQWEsV0FDcERxQyxPQUFPbmIsTUFBTUcsSUFBSSxXQUFXLEVBQ2hDLEdBR1IsQ0FFSixHQU9KLEtBSWhCLElBRUk2ckMsSUFDSzd3QixPQUFPLGtCQUFrQjNaLFFBQzFCMlosT0FBTyxlQUFldU4sUUFBUXRSLE9BQU8sb0dBRXpDNGlCLE9BQVMsSUFBSXpRLEdBQUdDLE9BQU8sZ0JBQWlCLENBQ3BDbkssT0FBUSxNQUNSakssTUFBTyxNQUNQMlQsUUFBUzVOLE9BQU9uYixNQUFNaVgsS0FBSyxhQUFheVIsUUFBUTdRLEtBQUssaUJBQ3JEbVIsV0FBWSxDQUNSQyxlQUFnQixFQUNoQkMsSUFBSyxFQUNMMUgsU0FBVUEsS0FHbEJwZ0IsT0FBT3VuQixrQkFBb0JxUixPQUduQyxDQUVBLFFBQTBCLElBQWY1NEIsT0FBT3lsQixJQUFxQixDQUNuQyxJQUFJc0IsRUFBTWhOLE9BQU9qRyxNQUFNLHFCQUN2QmlHLE9BQU8vWixRQUFRMFYsUUFBUXFSLEVBQzNCLENBRUoiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly95b3V0dWJlLWZlZWQtcHJvLy4vbm9kZV9tb2R1bGVzL2Nzc2ZpbHRlci9saWIvY3NzLmpzIiwid2VicGFjazovL3lvdXR1YmUtZmVlZC1wcm8vLi9ub2RlX21vZHVsZXMvY3NzZmlsdGVyL2xpYi9kZWZhdWx0LmpzIiwid2VicGFjazovL3lvdXR1YmUtZmVlZC1wcm8vLi9ub2RlX21vZHVsZXMvY3NzZmlsdGVyL2xpYi9pbmRleC5qcyIsIndlYnBhY2s6Ly95b3V0dWJlLWZlZWQtcHJvLy4vbm9kZV9tb2R1bGVzL2Nzc2ZpbHRlci9saWIvcGFyc2VyLmpzIiwid2VicGFjazovL3lvdXR1YmUtZmVlZC1wcm8vLi9ub2RlX21vZHVsZXMvY3NzZmlsdGVyL2xpYi91dGlsLmpzIiwid2VicGFjazovL3lvdXR1YmUtZmVlZC1wcm8vLi9ub2RlX21vZHVsZXMveHNzL2xpYi9kZWZhdWx0LmpzIiwid2VicGFjazovL3lvdXR1YmUtZmVlZC1wcm8vLi9ub2RlX21vZHVsZXMveHNzL2xpYi9pbmRleC5qcyIsIndlYnBhY2s6Ly95b3V0dWJlLWZlZWQtcHJvLy4vbm9kZV9tb2R1bGVzL3hzcy9saWIvcGFyc2VyLmpzIiwid2VicGFjazovL3lvdXR1YmUtZmVlZC1wcm8vLi9ub2RlX21vZHVsZXMveHNzL2xpYi91dGlsLmpzIiwid2VicGFjazovL3lvdXR1YmUtZmVlZC1wcm8vLi9ub2RlX21vZHVsZXMveHNzL2xpYi94c3MuanMiLCJ3ZWJwYWNrOi8veW91dHViZS1mZWVkLXByby93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly95b3V0dWJlLWZlZWQtcHJvLy4vanMvc2IteW91dHViZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGNzc2ZpbHRlclxuICpcbiAqIEBhdXRob3Ig6ICB6Zu3PGxlaXpvbmdtaW5AZ21haWwuY29tPlxuICovXG5cbnZhciBERUZBVUxUID0gcmVxdWlyZSgnLi9kZWZhdWx0Jyk7XG52YXIgcGFyc2VTdHlsZSA9IHJlcXVpcmUoJy4vcGFyc2VyJyk7XG52YXIgXyA9IHJlcXVpcmUoJy4vdXRpbCcpO1xuXG5cbi8qKlxuICog6L+U5Zue5YC85piv5ZCm5Li656m6XG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9ialxuICogQHJldHVybiB7Qm9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNOdWxsIChvYmopIHtcbiAgcmV0dXJuIChvYmogPT09IHVuZGVmaW5lZCB8fCBvYmogPT09IG51bGwpO1xufVxuXG4vKipcbiAqIOa1heaLt+i0neWvueixoVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmpcbiAqIEByZXR1cm4ge09iamVjdH1cbiAqL1xuZnVuY3Rpb24gc2hhbGxvd0NvcHlPYmplY3QgKG9iaikge1xuICB2YXIgcmV0ID0ge307XG4gIGZvciAodmFyIGkgaW4gb2JqKSB7XG4gICAgcmV0W2ldID0gb2JqW2ldO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbi8qKlxuICog5Yib5bu6Q1NT6L+H5ruk5ZmoXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcbiAqICAgLSB7T2JqZWN0fSB3aGl0ZUxpc3RcbiAqICAgLSB7RnVuY3Rpb259IG9uQXR0clxuICogICAtIHtGdW5jdGlvbn0gb25JZ25vcmVBdHRyXG4gKiAgIC0ge0Z1bmN0aW9ufSBzYWZlQXR0clZhbHVlXG4gKi9cbmZ1bmN0aW9uIEZpbHRlckNTUyAob3B0aW9ucykge1xuICBvcHRpb25zID0gc2hhbGxvd0NvcHlPYmplY3Qob3B0aW9ucyB8fCB7fSk7XG4gIG9wdGlvbnMud2hpdGVMaXN0ID0gb3B0aW9ucy53aGl0ZUxpc3QgfHwgREVGQVVMVC53aGl0ZUxpc3Q7XG4gIG9wdGlvbnMub25BdHRyID0gb3B0aW9ucy5vbkF0dHIgfHwgREVGQVVMVC5vbkF0dHI7XG4gIG9wdGlvbnMub25JZ25vcmVBdHRyID0gb3B0aW9ucy5vbklnbm9yZUF0dHIgfHwgREVGQVVMVC5vbklnbm9yZUF0dHI7XG4gIG9wdGlvbnMuc2FmZUF0dHJWYWx1ZSA9IG9wdGlvbnMuc2FmZUF0dHJWYWx1ZSB8fCBERUZBVUxULnNhZmVBdHRyVmFsdWU7XG4gIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG59XG5cbkZpbHRlckNTUy5wcm90b3R5cGUucHJvY2VzcyA9IGZ1bmN0aW9uIChjc3MpIHtcbiAgLy8g5YW85a655ZCE56eN5aWH6JGp6L6T5YWlXG4gIGNzcyA9IGNzcyB8fCAnJztcbiAgY3NzID0gY3NzLnRvU3RyaW5nKCk7XG4gIGlmICghY3NzKSByZXR1cm4gJyc7XG5cbiAgdmFyIG1lID0gdGhpcztcbiAgdmFyIG9wdGlvbnMgPSBtZS5vcHRpb25zO1xuICB2YXIgd2hpdGVMaXN0ID0gb3B0aW9ucy53aGl0ZUxpc3Q7XG4gIHZhciBvbkF0dHIgPSBvcHRpb25zLm9uQXR0cjtcbiAgdmFyIG9uSWdub3JlQXR0ciA9IG9wdGlvbnMub25JZ25vcmVBdHRyO1xuICB2YXIgc2FmZUF0dHJWYWx1ZSA9IG9wdGlvbnMuc2FmZUF0dHJWYWx1ZTtcblxuICB2YXIgcmV0Q1NTID0gcGFyc2VTdHlsZShjc3MsIGZ1bmN0aW9uIChzb3VyY2VQb3NpdGlvbiwgcG9zaXRpb24sIG5hbWUsIHZhbHVlLCBzb3VyY2UpIHtcblxuICAgIHZhciBjaGVjayA9IHdoaXRlTGlzdFtuYW1lXTtcbiAgICB2YXIgaXNXaGl0ZSA9IGZhbHNlO1xuICAgIGlmIChjaGVjayA9PT0gdHJ1ZSkgaXNXaGl0ZSA9IGNoZWNrO1xuICAgIGVsc2UgaWYgKHR5cGVvZiBjaGVjayA9PT0gJ2Z1bmN0aW9uJykgaXNXaGl0ZSA9IGNoZWNrKHZhbHVlKTtcbiAgICBlbHNlIGlmIChjaGVjayBpbnN0YW5jZW9mIFJlZ0V4cCkgaXNXaGl0ZSA9IGNoZWNrLnRlc3QodmFsdWUpO1xuICAgIGlmIChpc1doaXRlICE9PSB0cnVlKSBpc1doaXRlID0gZmFsc2U7XG5cbiAgICAvLyDlpoLmnpzov4fmu6TlkI4gdmFsdWUg5Li656m65YiZ55u05o6l5b+955WlXG4gICAgdmFsdWUgPSBzYWZlQXR0clZhbHVlKG5hbWUsIHZhbHVlKTtcbiAgICBpZiAoIXZhbHVlKSByZXR1cm47XG5cbiAgICB2YXIgb3B0cyA9IHtcbiAgICAgIHBvc2l0aW9uOiBwb3NpdGlvbixcbiAgICAgIHNvdXJjZVBvc2l0aW9uOiBzb3VyY2VQb3NpdGlvbixcbiAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgaXNXaGl0ZTogaXNXaGl0ZVxuICAgIH07XG5cbiAgICBpZiAoaXNXaGl0ZSkge1xuXG4gICAgICB2YXIgcmV0ID0gb25BdHRyKG5hbWUsIHZhbHVlLCBvcHRzKTtcbiAgICAgIGlmIChpc051bGwocmV0KSkge1xuICAgICAgICByZXR1cm4gbmFtZSArICc6JyArIHZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgIH1cblxuICAgIH0gZWxzZSB7XG5cbiAgICAgIHZhciByZXQgPSBvbklnbm9yZUF0dHIobmFtZSwgdmFsdWUsIG9wdHMpO1xuICAgICAgaWYgKCFpc051bGwocmV0KSkge1xuICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgfVxuXG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gcmV0Q1NTO1xufTtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IEZpbHRlckNTUztcbiIsIi8qKlxuICogY3NzZmlsdGVyXG4gKlxuICogQGF1dGhvciDogIHpm7c8bGVpem9uZ21pbkBnbWFpbC5jb20+XG4gKi9cblxuZnVuY3Rpb24gZ2V0RGVmYXVsdFdoaXRlTGlzdCAoKSB7XG4gIC8vIOeZveWQjeWNleWAvOivtOaYju+8mlxuICAvLyB0cnVlOiDlhYHorrjor6XlsZ7mgKdcbiAgLy8gRnVuY3Rpb246IGZ1bmN0aW9uICh2YWwpIHsgfSDov5Tlm550cnVl6KGo56S65YWB6K646K+l5bGe5oCn77yM5YW25LuW5YC85Z2H6KGo56S65LiN5YWB6K64XG4gIC8vIFJlZ0V4cDogcmVnZXhwLnRlc3QodmFsKSDov5Tlm550cnVl6KGo56S65YWB6K646K+l5bGe5oCn77yM5YW25LuW5YC85Z2H6KGo56S65LiN5YWB6K64XG4gIC8vIOmZpOS4iumdouWIl+WHuueahOWAvOWkluWdh+ihqOekuuS4jeWFgeiuuFxuICB2YXIgd2hpdGVMaXN0ID0ge307XG5cbiAgd2hpdGVMaXN0WydhbGlnbi1jb250ZW50J10gPSBmYWxzZTsgLy8gZGVmYXVsdDogYXV0b1xuICB3aGl0ZUxpc3RbJ2FsaWduLWl0ZW1zJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogYXV0b1xuICB3aGl0ZUxpc3RbJ2FsaWduLXNlbGYnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBhdXRvXG4gIHdoaXRlTGlzdFsnYWxpZ25tZW50LWFkanVzdCddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGF1dG9cbiAgd2hpdGVMaXN0WydhbGlnbm1lbnQtYmFzZWxpbmUnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBiYXNlbGluZVxuICB3aGl0ZUxpc3RbJ2FsbCddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGRlcGVuZGluZyBvbiBpbmRpdmlkdWFsIHByb3BlcnRpZXNcbiAgd2hpdGVMaXN0WydhbmNob3ItcG9pbnQnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBub25lXG4gIHdoaXRlTGlzdFsnYW5pbWF0aW9uJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogZGVwZW5kaW5nIG9uIGluZGl2aWR1YWwgcHJvcGVydGllc1xuICB3aGl0ZUxpc3RbJ2FuaW1hdGlvbi1kZWxheSddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IDBcbiAgd2hpdGVMaXN0WydhbmltYXRpb24tZGlyZWN0aW9uJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogbm9ybWFsXG4gIHdoaXRlTGlzdFsnYW5pbWF0aW9uLWR1cmF0aW9uJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogMFxuICB3aGl0ZUxpc3RbJ2FuaW1hdGlvbi1maWxsLW1vZGUnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBub25lXG4gIHdoaXRlTGlzdFsnYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IDFcbiAgd2hpdGVMaXN0WydhbmltYXRpb24tbmFtZSddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG5vbmVcbiAgd2hpdGVMaXN0WydhbmltYXRpb24tcGxheS1zdGF0ZSddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IHJ1bm5pbmdcbiAgd2hpdGVMaXN0WydhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogZWFzZVxuICB3aGl0ZUxpc3RbJ2F6aW11dGgnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBjZW50ZXJcbiAgd2hpdGVMaXN0WydiYWNrZmFjZS12aXNpYmlsaXR5J10gPSBmYWxzZTsgLy8gZGVmYXVsdDogdmlzaWJsZVxuICB3aGl0ZUxpc3RbJ2JhY2tncm91bmQnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IGRlcGVuZGluZyBvbiBpbmRpdmlkdWFsIHByb3BlcnRpZXNcbiAgd2hpdGVMaXN0WydiYWNrZ3JvdW5kLWF0dGFjaG1lbnQnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IHNjcm9sbFxuICB3aGl0ZUxpc3RbJ2JhY2tncm91bmQtY2xpcCddID0gdHJ1ZTsgLy8gZGVmYXVsdDogYm9yZGVyLWJveFxuICB3aGl0ZUxpc3RbJ2JhY2tncm91bmQtY29sb3InXSA9IHRydWU7IC8vIGRlZmF1bHQ6IHRyYW5zcGFyZW50XG4gIHdoaXRlTGlzdFsnYmFja2dyb3VuZC1pbWFnZSddID0gdHJ1ZTsgLy8gZGVmYXVsdDogbm9uZVxuICB3aGl0ZUxpc3RbJ2JhY2tncm91bmQtb3JpZ2luJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBwYWRkaW5nLWJveFxuICB3aGl0ZUxpc3RbJ2JhY2tncm91bmQtcG9zaXRpb24nXSA9IHRydWU7IC8vIGRlZmF1bHQ6IDAlIDAlXG4gIHdoaXRlTGlzdFsnYmFja2dyb3VuZC1yZXBlYXQnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IHJlcGVhdFxuICB3aGl0ZUxpc3RbJ2JhY2tncm91bmQtc2l6ZSddID0gdHJ1ZTsgLy8gZGVmYXVsdDogYXV0b1xuICB3aGl0ZUxpc3RbJ2Jhc2VsaW5lLXNoaWZ0J10gPSBmYWxzZTsgLy8gZGVmYXVsdDogYmFzZWxpbmVcbiAgd2hpdGVMaXN0WydiaW5kaW5nJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogbm9uZVxuICB3aGl0ZUxpc3RbJ2JsZWVkJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogNnB0XG4gIHdoaXRlTGlzdFsnYm9va21hcmstbGFiZWwnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBjb250ZW50KClcbiAgd2hpdGVMaXN0Wydib29rbWFyay1sZXZlbCddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG5vbmVcbiAgd2hpdGVMaXN0Wydib29rbWFyay1zdGF0ZSddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG9wZW5cbiAgd2hpdGVMaXN0Wydib3JkZXInXSA9IHRydWU7IC8vIGRlZmF1bHQ6IGRlcGVuZGluZyBvbiBpbmRpdmlkdWFsIHByb3BlcnRpZXNcbiAgd2hpdGVMaXN0Wydib3JkZXItYm90dG9tJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBkZXBlbmRpbmcgb24gaW5kaXZpZHVhbCBwcm9wZXJ0aWVzXG4gIHdoaXRlTGlzdFsnYm9yZGVyLWJvdHRvbS1jb2xvciddID0gdHJ1ZTsgLy8gZGVmYXVsdDogY3VycmVudCBjb2xvclxuICB3aGl0ZUxpc3RbJ2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXMnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IDBcbiAgd2hpdGVMaXN0Wydib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1cyddID0gdHJ1ZTsgLy8gZGVmYXVsdDogMFxuICB3aGl0ZUxpc3RbJ2JvcmRlci1ib3R0b20tc3R5bGUnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IG5vbmVcbiAgd2hpdGVMaXN0Wydib3JkZXItYm90dG9tLXdpZHRoJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBtZWRpdW1cbiAgd2hpdGVMaXN0Wydib3JkZXItY29sbGFwc2UnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IHNlcGFyYXRlXG4gIHdoaXRlTGlzdFsnYm9yZGVyLWNvbG9yJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBkZXBlbmRpbmcgb24gaW5kaXZpZHVhbCBwcm9wZXJ0aWVzXG4gIHdoaXRlTGlzdFsnYm9yZGVyLWltYWdlJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBub25lXG4gIHdoaXRlTGlzdFsnYm9yZGVyLWltYWdlLW91dHNldCddID0gdHJ1ZTsgLy8gZGVmYXVsdDogMFxuICB3aGl0ZUxpc3RbJ2JvcmRlci1pbWFnZS1yZXBlYXQnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IHN0cmV0Y2hcbiAgd2hpdGVMaXN0Wydib3JkZXItaW1hZ2Utc2xpY2UnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IDEwMCVcbiAgd2hpdGVMaXN0Wydib3JkZXItaW1hZ2Utc291cmNlJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBub25lXG4gIHdoaXRlTGlzdFsnYm9yZGVyLWltYWdlLXdpZHRoJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiAxXG4gIHdoaXRlTGlzdFsnYm9yZGVyLWxlZnQnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IGRlcGVuZGluZyBvbiBpbmRpdmlkdWFsIHByb3BlcnRpZXNcbiAgd2hpdGVMaXN0Wydib3JkZXItbGVmdC1jb2xvciddID0gdHJ1ZTsgLy8gZGVmYXVsdDogY3VycmVudCBjb2xvclxuICB3aGl0ZUxpc3RbJ2JvcmRlci1sZWZ0LXN0eWxlJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBub25lXG4gIHdoaXRlTGlzdFsnYm9yZGVyLWxlZnQtd2lkdGgnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IG1lZGl1bVxuICB3aGl0ZUxpc3RbJ2JvcmRlci1yYWRpdXMnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IDBcbiAgd2hpdGVMaXN0Wydib3JkZXItcmlnaHQnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IGRlcGVuZGluZyBvbiBpbmRpdmlkdWFsIHByb3BlcnRpZXNcbiAgd2hpdGVMaXN0Wydib3JkZXItcmlnaHQtY29sb3InXSA9IHRydWU7IC8vIGRlZmF1bHQ6IGN1cnJlbnQgY29sb3JcbiAgd2hpdGVMaXN0Wydib3JkZXItcmlnaHQtc3R5bGUnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IG5vbmVcbiAgd2hpdGVMaXN0Wydib3JkZXItcmlnaHQtd2lkdGgnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IG1lZGl1bVxuICB3aGl0ZUxpc3RbJ2JvcmRlci1zcGFjaW5nJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiAwXG4gIHdoaXRlTGlzdFsnYm9yZGVyLXN0eWxlJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBkZXBlbmRpbmcgb24gaW5kaXZpZHVhbCBwcm9wZXJ0aWVzXG4gIHdoaXRlTGlzdFsnYm9yZGVyLXRvcCddID0gdHJ1ZTsgLy8gZGVmYXVsdDogZGVwZW5kaW5nIG9uIGluZGl2aWR1YWwgcHJvcGVydGllc1xuICB3aGl0ZUxpc3RbJ2JvcmRlci10b3AtY29sb3InXSA9IHRydWU7IC8vIGRlZmF1bHQ6IGN1cnJlbnQgY29sb3JcbiAgd2hpdGVMaXN0Wydib3JkZXItdG9wLWxlZnQtcmFkaXVzJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiAwXG4gIHdoaXRlTGlzdFsnYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IDBcbiAgd2hpdGVMaXN0Wydib3JkZXItdG9wLXN0eWxlJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBub25lXG4gIHdoaXRlTGlzdFsnYm9yZGVyLXRvcC13aWR0aCddID0gdHJ1ZTsgLy8gZGVmYXVsdDogbWVkaXVtXG4gIHdoaXRlTGlzdFsnYm9yZGVyLXdpZHRoJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBkZXBlbmRpbmcgb24gaW5kaXZpZHVhbCBwcm9wZXJ0aWVzXG4gIHdoaXRlTGlzdFsnYm90dG9tJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogYXV0b1xuICB3aGl0ZUxpc3RbJ2JveC1kZWNvcmF0aW9uLWJyZWFrJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBzbGljZVxuICB3aGl0ZUxpc3RbJ2JveC1zaGFkb3cnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IG5vbmVcbiAgd2hpdGVMaXN0Wydib3gtc2l6aW5nJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBjb250ZW50LWJveFxuICB3aGl0ZUxpc3RbJ2JveC1zbmFwJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBub25lXG4gIHdoaXRlTGlzdFsnYm94LXN1cHByZXNzJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBzaG93XG4gIHdoaXRlTGlzdFsnYnJlYWstYWZ0ZXInXSA9IHRydWU7IC8vIGRlZmF1bHQ6IGF1dG9cbiAgd2hpdGVMaXN0WydicmVhay1iZWZvcmUnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IGF1dG9cbiAgd2hpdGVMaXN0WydicmVhay1pbnNpZGUnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IGF1dG9cbiAgd2hpdGVMaXN0WydjYXB0aW9uLXNpZGUnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiB0b3BcbiAgd2hpdGVMaXN0WydjaGFpbnMnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBub25lXG4gIHdoaXRlTGlzdFsnY2xlYXInXSA9IHRydWU7IC8vIGRlZmF1bHQ6IG5vbmVcbiAgd2hpdGVMaXN0WydjbGlwJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogYXV0b1xuICB3aGl0ZUxpc3RbJ2NsaXAtcGF0aCddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG5vbmVcbiAgd2hpdGVMaXN0WydjbGlwLXJ1bGUnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBub256ZXJvXG4gIHdoaXRlTGlzdFsnY29sb3InXSA9IHRydWU7IC8vIGRlZmF1bHQ6IGltcGxlbWVudGF0aW9uIGRlcGVuZGVudFxuICB3aGl0ZUxpc3RbJ2NvbG9yLWludGVycG9sYXRpb24tZmlsdGVycyddID0gdHJ1ZTsgLy8gZGVmYXVsdDogYXV0b1xuICB3aGl0ZUxpc3RbJ2NvbHVtbi1jb3VudCddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGF1dG9cbiAgd2hpdGVMaXN0Wydjb2x1bW4tZmlsbCddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGJhbGFuY2VcbiAgd2hpdGVMaXN0Wydjb2x1bW4tZ2FwJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogbm9ybWFsXG4gIHdoaXRlTGlzdFsnY29sdW1uLXJ1bGUnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBkZXBlbmRpbmcgb24gaW5kaXZpZHVhbCBwcm9wZXJ0aWVzXG4gIHdoaXRlTGlzdFsnY29sdW1uLXJ1bGUtY29sb3InXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBjdXJyZW50IGNvbG9yXG4gIHdoaXRlTGlzdFsnY29sdW1uLXJ1bGUtc3R5bGUnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBtZWRpdW1cbiAgd2hpdGVMaXN0Wydjb2x1bW4tcnVsZS13aWR0aCddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG1lZGl1bVxuICB3aGl0ZUxpc3RbJ2NvbHVtbi1zcGFuJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogbm9uZVxuICB3aGl0ZUxpc3RbJ2NvbHVtbi13aWR0aCddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGF1dG9cbiAgd2hpdGVMaXN0Wydjb2x1bW5zJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogZGVwZW5kaW5nIG9uIGluZGl2aWR1YWwgcHJvcGVydGllc1xuICB3aGl0ZUxpc3RbJ2NvbnRhaW4nXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBub25lXG4gIHdoaXRlTGlzdFsnY29udGVudCddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG5vcm1hbFxuICB3aGl0ZUxpc3RbJ2NvdW50ZXItaW5jcmVtZW50J10gPSBmYWxzZTsgLy8gZGVmYXVsdDogbm9uZVxuICB3aGl0ZUxpc3RbJ2NvdW50ZXItcmVzZXQnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBub25lXG4gIHdoaXRlTGlzdFsnY291bnRlci1zZXQnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBub25lXG4gIHdoaXRlTGlzdFsnY3JvcCddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGF1dG9cbiAgd2hpdGVMaXN0WydjdWUnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBkZXBlbmRpbmcgb24gaW5kaXZpZHVhbCBwcm9wZXJ0aWVzXG4gIHdoaXRlTGlzdFsnY3VlLWFmdGVyJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogbm9uZVxuICB3aGl0ZUxpc3RbJ2N1ZS1iZWZvcmUnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBub25lXG4gIHdoaXRlTGlzdFsnY3Vyc29yJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogYXV0b1xuICB3aGl0ZUxpc3RbJ2RpcmVjdGlvbiddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGx0clxuICB3aGl0ZUxpc3RbJ2Rpc3BsYXknXSA9IHRydWU7IC8vIGRlZmF1bHQ6IGRlcGVuZGluZyBvbiBpbmRpdmlkdWFsIHByb3BlcnRpZXNcbiAgd2hpdGVMaXN0WydkaXNwbGF5LWluc2lkZSddID0gdHJ1ZTsgLy8gZGVmYXVsdDogYXV0b1xuICB3aGl0ZUxpc3RbJ2Rpc3BsYXktbGlzdCddID0gdHJ1ZTsgLy8gZGVmYXVsdDogbm9uZVxuICB3aGl0ZUxpc3RbJ2Rpc3BsYXktb3V0c2lkZSddID0gdHJ1ZTsgLy8gZGVmYXVsdDogaW5saW5lLWxldmVsXG4gIHdoaXRlTGlzdFsnZG9taW5hbnQtYmFzZWxpbmUnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBhdXRvXG4gIHdoaXRlTGlzdFsnZWxldmF0aW9uJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogbGV2ZWxcbiAgd2hpdGVMaXN0WydlbXB0eS1jZWxscyddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IHNob3dcbiAgd2hpdGVMaXN0WydmaWx0ZXInXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBub25lXG4gIHdoaXRlTGlzdFsnZmxleCddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGRlcGVuZGluZyBvbiBpbmRpdmlkdWFsIHByb3BlcnRpZXNcbiAgd2hpdGVMaXN0WydmbGV4LWJhc2lzJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogYXV0b1xuICB3aGl0ZUxpc3RbJ2ZsZXgtZGlyZWN0aW9uJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogcm93XG4gIHdoaXRlTGlzdFsnZmxleC1mbG93J10gPSBmYWxzZTsgLy8gZGVmYXVsdDogZGVwZW5kaW5nIG9uIGluZGl2aWR1YWwgcHJvcGVydGllc1xuICB3aGl0ZUxpc3RbJ2ZsZXgtZ3JvdyddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IDBcbiAgd2hpdGVMaXN0WydmbGV4LXNocmluayddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IDFcbiAgd2hpdGVMaXN0WydmbGV4LXdyYXAnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBub3dyYXBcbiAgd2hpdGVMaXN0WydmbG9hdCddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG5vbmVcbiAgd2hpdGVMaXN0WydmbG9hdC1vZmZzZXQnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiAwIDBcbiAgd2hpdGVMaXN0WydmbG9vZC1jb2xvciddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGJsYWNrXG4gIHdoaXRlTGlzdFsnZmxvb2Qtb3BhY2l0eSddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IDFcbiAgd2hpdGVMaXN0WydmbG93LWZyb20nXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBub25lXG4gIHdoaXRlTGlzdFsnZmxvdy1pbnRvJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogbm9uZVxuICB3aGl0ZUxpc3RbJ2ZvbnQnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IGRlcGVuZGluZyBvbiBpbmRpdmlkdWFsIHByb3BlcnRpZXNcbiAgd2hpdGVMaXN0Wydmb250LWZhbWlseSddID0gdHJ1ZTsgLy8gZGVmYXVsdDogaW1wbGVtZW50YXRpb24gZGVwZW5kZW50XG4gIHdoaXRlTGlzdFsnZm9udC1mZWF0dXJlLXNldHRpbmdzJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBub3JtYWxcbiAgd2hpdGVMaXN0Wydmb250LWtlcm5pbmcnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IGF1dG9cbiAgd2hpdGVMaXN0Wydmb250LWxhbmd1YWdlLW92ZXJyaWRlJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBub3JtYWxcbiAgd2hpdGVMaXN0Wydmb250LXNpemUnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IG1lZGl1bVxuICB3aGl0ZUxpc3RbJ2ZvbnQtc2l6ZS1hZGp1c3QnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IG5vbmVcbiAgd2hpdGVMaXN0Wydmb250LXN0cmV0Y2gnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IG5vcm1hbFxuICB3aGl0ZUxpc3RbJ2ZvbnQtc3R5bGUnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IG5vcm1hbFxuICB3aGl0ZUxpc3RbJ2ZvbnQtc3ludGhlc2lzJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiB3ZWlnaHQgc3R5bGVcbiAgd2hpdGVMaXN0Wydmb250LXZhcmlhbnQnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IG5vcm1hbFxuICB3aGl0ZUxpc3RbJ2ZvbnQtdmFyaWFudC1hbHRlcm5hdGVzJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBub3JtYWxcbiAgd2hpdGVMaXN0Wydmb250LXZhcmlhbnQtY2FwcyddID0gdHJ1ZTsgLy8gZGVmYXVsdDogbm9ybWFsXG4gIHdoaXRlTGlzdFsnZm9udC12YXJpYW50LWVhc3QtYXNpYW4nXSA9IHRydWU7IC8vIGRlZmF1bHQ6IG5vcm1hbFxuICB3aGl0ZUxpc3RbJ2ZvbnQtdmFyaWFudC1saWdhdHVyZXMnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IG5vcm1hbFxuICB3aGl0ZUxpc3RbJ2ZvbnQtdmFyaWFudC1udW1lcmljJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBub3JtYWxcbiAgd2hpdGVMaXN0Wydmb250LXZhcmlhbnQtcG9zaXRpb24nXSA9IHRydWU7IC8vIGRlZmF1bHQ6IG5vcm1hbFxuICB3aGl0ZUxpc3RbJ2ZvbnQtd2VpZ2h0J10gPSB0cnVlOyAvLyBkZWZhdWx0OiBub3JtYWxcbiAgd2hpdGVMaXN0WydncmlkJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogZGVwZW5kaW5nIG9uIGluZGl2aWR1YWwgcHJvcGVydGllc1xuICB3aGl0ZUxpc3RbJ2dyaWQtYXJlYSddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGRlcGVuZGluZyBvbiBpbmRpdmlkdWFsIHByb3BlcnRpZXNcbiAgd2hpdGVMaXN0WydncmlkLWF1dG8tY29sdW1ucyddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGF1dG9cbiAgd2hpdGVMaXN0WydncmlkLWF1dG8tZmxvdyddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG5vbmVcbiAgd2hpdGVMaXN0WydncmlkLWF1dG8tcm93cyddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGF1dG9cbiAgd2hpdGVMaXN0WydncmlkLWNvbHVtbiddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGRlcGVuZGluZyBvbiBpbmRpdmlkdWFsIHByb3BlcnRpZXNcbiAgd2hpdGVMaXN0WydncmlkLWNvbHVtbi1lbmQnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBhdXRvXG4gIHdoaXRlTGlzdFsnZ3JpZC1jb2x1bW4tc3RhcnQnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBhdXRvXG4gIHdoaXRlTGlzdFsnZ3JpZC1yb3cnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBkZXBlbmRpbmcgb24gaW5kaXZpZHVhbCBwcm9wZXJ0aWVzXG4gIHdoaXRlTGlzdFsnZ3JpZC1yb3ctZW5kJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogYXV0b1xuICB3aGl0ZUxpc3RbJ2dyaWQtcm93LXN0YXJ0J10gPSBmYWxzZTsgLy8gZGVmYXVsdDogYXV0b1xuICB3aGl0ZUxpc3RbJ2dyaWQtdGVtcGxhdGUnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBkZXBlbmRpbmcgb24gaW5kaXZpZHVhbCBwcm9wZXJ0aWVzXG4gIHdoaXRlTGlzdFsnZ3JpZC10ZW1wbGF0ZS1hcmVhcyddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG5vbmVcbiAgd2hpdGVMaXN0WydncmlkLXRlbXBsYXRlLWNvbHVtbnMnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBub25lXG4gIHdoaXRlTGlzdFsnZ3JpZC10ZW1wbGF0ZS1yb3dzJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogbm9uZVxuICB3aGl0ZUxpc3RbJ2hhbmdpbmctcHVuY3R1YXRpb24nXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBub25lXG4gIHdoaXRlTGlzdFsnaGVpZ2h0J10gPSB0cnVlOyAvLyBkZWZhdWx0OiBhdXRvXG4gIHdoaXRlTGlzdFsnaHlwaGVucyddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG1hbnVhbFxuICB3aGl0ZUxpc3RbJ2ljb24nXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBhdXRvXG4gIHdoaXRlTGlzdFsnaW1hZ2Utb3JpZW50YXRpb24nXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBhdXRvXG4gIHdoaXRlTGlzdFsnaW1hZ2UtcmVzb2x1dGlvbiddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG5vcm1hbFxuICB3aGl0ZUxpc3RbJ2ltZS1tb2RlJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogYXV0b1xuICB3aGl0ZUxpc3RbJ2luaXRpYWwtbGV0dGVycyddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG5vcm1hbFxuICB3aGl0ZUxpc3RbJ2lubGluZS1ib3gtYWxpZ24nXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBsYXN0XG4gIHdoaXRlTGlzdFsnanVzdGlmeS1jb250ZW50J10gPSBmYWxzZTsgLy8gZGVmYXVsdDogYXV0b1xuICB3aGl0ZUxpc3RbJ2p1c3RpZnktaXRlbXMnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBhdXRvXG4gIHdoaXRlTGlzdFsnanVzdGlmeS1zZWxmJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogYXV0b1xuICB3aGl0ZUxpc3RbJ2xlZnQnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBhdXRvXG4gIHdoaXRlTGlzdFsnbGV0dGVyLXNwYWNpbmcnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IG5vcm1hbFxuICB3aGl0ZUxpc3RbJ2xpZ2h0aW5nLWNvbG9yJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiB3aGl0ZVxuICB3aGl0ZUxpc3RbJ2xpbmUtYm94LWNvbnRhaW4nXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBibG9jayBpbmxpbmUgcmVwbGFjZWRcbiAgd2hpdGVMaXN0WydsaW5lLWJyZWFrJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogYXV0b1xuICB3aGl0ZUxpc3RbJ2xpbmUtZ3JpZCddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG1hdGNoLXBhcmVudFxuICB3aGl0ZUxpc3RbJ2xpbmUtaGVpZ2h0J10gPSBmYWxzZTsgLy8gZGVmYXVsdDogbm9ybWFsXG4gIHdoaXRlTGlzdFsnbGluZS1zbmFwJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogbm9uZVxuICB3aGl0ZUxpc3RbJ2xpbmUtc3RhY2tpbmcnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBkZXBlbmRpbmcgb24gaW5kaXZpZHVhbCBwcm9wZXJ0aWVzXG4gIHdoaXRlTGlzdFsnbGluZS1zdGFja2luZy1ydWJ5J10gPSBmYWxzZTsgLy8gZGVmYXVsdDogZXhjbHVkZS1ydWJ5XG4gIHdoaXRlTGlzdFsnbGluZS1zdGFja2luZy1zaGlmdCddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGNvbnNpZGVyLXNoaWZ0c1xuICB3aGl0ZUxpc3RbJ2xpbmUtc3RhY2tpbmctc3RyYXRlZ3knXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBpbmxpbmUtbGluZS1oZWlnaHRcbiAgd2hpdGVMaXN0WydsaXN0LXN0eWxlJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBkZXBlbmRpbmcgb24gaW5kaXZpZHVhbCBwcm9wZXJ0aWVzXG4gIHdoaXRlTGlzdFsnbGlzdC1zdHlsZS1pbWFnZSddID0gdHJ1ZTsgLy8gZGVmYXVsdDogbm9uZVxuICB3aGl0ZUxpc3RbJ2xpc3Qtc3R5bGUtcG9zaXRpb24nXSA9IHRydWU7IC8vIGRlZmF1bHQ6IG91dHNpZGVcbiAgd2hpdGVMaXN0WydsaXN0LXN0eWxlLXR5cGUnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IGRpc2NcbiAgd2hpdGVMaXN0WydtYXJnaW4nXSA9IHRydWU7IC8vIGRlZmF1bHQ6IGRlcGVuZGluZyBvbiBpbmRpdmlkdWFsIHByb3BlcnRpZXNcbiAgd2hpdGVMaXN0WydtYXJnaW4tYm90dG9tJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiAwXG4gIHdoaXRlTGlzdFsnbWFyZ2luLWxlZnQnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IDBcbiAgd2hpdGVMaXN0WydtYXJnaW4tcmlnaHQnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IDBcbiAgd2hpdGVMaXN0WydtYXJnaW4tdG9wJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiAwXG4gIHdoaXRlTGlzdFsnbWFya2VyLW9mZnNldCddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGF1dG9cbiAgd2hpdGVMaXN0WydtYXJrZXItc2lkZSddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGxpc3QtaXRlbVxuICB3aGl0ZUxpc3RbJ21hcmtzJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogbm9uZVxuICB3aGl0ZUxpc3RbJ21hc2snXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBib3JkZXItYm94XG4gIHdoaXRlTGlzdFsnbWFzay1ib3gnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBzZWUgaW5kaXZpZHVhbCBwcm9wZXJ0aWVzXG4gIHdoaXRlTGlzdFsnbWFzay1ib3gtb3V0c2V0J10gPSBmYWxzZTsgLy8gZGVmYXVsdDogMFxuICB3aGl0ZUxpc3RbJ21hc2stYm94LXJlcGVhdCddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IHN0cmV0Y2hcbiAgd2hpdGVMaXN0WydtYXNrLWJveC1zbGljZSddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IDAgZmlsbFxuICB3aGl0ZUxpc3RbJ21hc2stYm94LXNvdXJjZSddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG5vbmVcbiAgd2hpdGVMaXN0WydtYXNrLWJveC13aWR0aCddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGF1dG9cbiAgd2hpdGVMaXN0WydtYXNrLWNsaXAnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBib3JkZXItYm94XG4gIHdoaXRlTGlzdFsnbWFzay1pbWFnZSddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG5vbmVcbiAgd2hpdGVMaXN0WydtYXNrLW9yaWdpbiddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGJvcmRlci1ib3hcbiAgd2hpdGVMaXN0WydtYXNrLXBvc2l0aW9uJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogY2VudGVyXG4gIHdoaXRlTGlzdFsnbWFzay1yZXBlYXQnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBuby1yZXBlYXRcbiAgd2hpdGVMaXN0WydtYXNrLXNpemUnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBib3JkZXItYm94XG4gIHdoaXRlTGlzdFsnbWFzay1zb3VyY2UtdHlwZSddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGF1dG9cbiAgd2hpdGVMaXN0WydtYXNrLXR5cGUnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBsdW1pbmFuY2VcbiAgd2hpdGVMaXN0WydtYXgtaGVpZ2h0J10gPSB0cnVlOyAvLyBkZWZhdWx0OiBub25lXG4gIHdoaXRlTGlzdFsnbWF4LWxpbmVzJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogbm9uZVxuICB3aGl0ZUxpc3RbJ21heC13aWR0aCddID0gdHJ1ZTsgLy8gZGVmYXVsdDogbm9uZVxuICB3aGl0ZUxpc3RbJ21pbi1oZWlnaHQnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IDBcbiAgd2hpdGVMaXN0WydtaW4td2lkdGgnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IDBcbiAgd2hpdGVMaXN0Wydtb3ZlLXRvJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogbm9ybWFsXG4gIHdoaXRlTGlzdFsnbmF2LWRvd24nXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBhdXRvXG4gIHdoaXRlTGlzdFsnbmF2LWluZGV4J10gPSBmYWxzZTsgLy8gZGVmYXVsdDogYXV0b1xuICB3aGl0ZUxpc3RbJ25hdi1sZWZ0J10gPSBmYWxzZTsgLy8gZGVmYXVsdDogYXV0b1xuICB3aGl0ZUxpc3RbJ25hdi1yaWdodCddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGF1dG9cbiAgd2hpdGVMaXN0WyduYXYtdXAnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBhdXRvXG4gIHdoaXRlTGlzdFsnb2JqZWN0LWZpdCddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGZpbGxcbiAgd2hpdGVMaXN0WydvYmplY3QtcG9zaXRpb24nXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiA1MCUgNTAlXG4gIHdoaXRlTGlzdFsnb3BhY2l0eSddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IDFcbiAgd2hpdGVMaXN0WydvcmRlciddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IDBcbiAgd2hpdGVMaXN0WydvcnBoYW5zJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogMlxuICB3aGl0ZUxpc3RbJ291dGxpbmUnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBkZXBlbmRpbmcgb24gaW5kaXZpZHVhbCBwcm9wZXJ0aWVzXG4gIHdoaXRlTGlzdFsnb3V0bGluZS1jb2xvciddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGludmVydFxuICB3aGl0ZUxpc3RbJ291dGxpbmUtb2Zmc2V0J10gPSBmYWxzZTsgLy8gZGVmYXVsdDogMFxuICB3aGl0ZUxpc3RbJ291dGxpbmUtc3R5bGUnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBub25lXG4gIHdoaXRlTGlzdFsnb3V0bGluZS13aWR0aCddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG1lZGl1bVxuICB3aGl0ZUxpc3RbJ292ZXJmbG93J10gPSBmYWxzZTsgLy8gZGVmYXVsdDogZGVwZW5kaW5nIG9uIGluZGl2aWR1YWwgcHJvcGVydGllc1xuICB3aGl0ZUxpc3RbJ292ZXJmbG93LXdyYXAnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBub3JtYWxcbiAgd2hpdGVMaXN0WydvdmVyZmxvdy14J10gPSBmYWxzZTsgLy8gZGVmYXVsdDogdmlzaWJsZVxuICB3aGl0ZUxpc3RbJ292ZXJmbG93LXknXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiB2aXNpYmxlXG4gIHdoaXRlTGlzdFsncGFkZGluZyddID0gdHJ1ZTsgLy8gZGVmYXVsdDogZGVwZW5kaW5nIG9uIGluZGl2aWR1YWwgcHJvcGVydGllc1xuICB3aGl0ZUxpc3RbJ3BhZGRpbmctYm90dG9tJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiAwXG4gIHdoaXRlTGlzdFsncGFkZGluZy1sZWZ0J10gPSB0cnVlOyAvLyBkZWZhdWx0OiAwXG4gIHdoaXRlTGlzdFsncGFkZGluZy1yaWdodCddID0gdHJ1ZTsgLy8gZGVmYXVsdDogMFxuICB3aGl0ZUxpc3RbJ3BhZGRpbmctdG9wJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiAwXG4gIHdoaXRlTGlzdFsncGFnZSddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGF1dG9cbiAgd2hpdGVMaXN0WydwYWdlLWJyZWFrLWFmdGVyJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogYXV0b1xuICB3aGl0ZUxpc3RbJ3BhZ2UtYnJlYWstYmVmb3JlJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogYXV0b1xuICB3aGl0ZUxpc3RbJ3BhZ2UtYnJlYWstaW5zaWRlJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogYXV0b1xuICB3aGl0ZUxpc3RbJ3BhZ2UtcG9saWN5J10gPSBmYWxzZTsgLy8gZGVmYXVsdDogc3RhcnRcbiAgd2hpdGVMaXN0WydwYXVzZSddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGltcGxlbWVudGF0aW9uIGRlcGVuZGVudFxuICB3aGl0ZUxpc3RbJ3BhdXNlLWFmdGVyJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogaW1wbGVtZW50YXRpb24gZGVwZW5kZW50XG4gIHdoaXRlTGlzdFsncGF1c2UtYmVmb3JlJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogaW1wbGVtZW50YXRpb24gZGVwZW5kZW50XG4gIHdoaXRlTGlzdFsncGVyc3BlY3RpdmUnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBub25lXG4gIHdoaXRlTGlzdFsncGVyc3BlY3RpdmUtb3JpZ2luJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogNTAlIDUwJVxuICB3aGl0ZUxpc3RbJ3BpdGNoJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogbWVkaXVtXG4gIHdoaXRlTGlzdFsncGl0Y2gtcmFuZ2UnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiA1MFxuICB3aGl0ZUxpc3RbJ3BsYXktZHVyaW5nJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogYXV0b1xuICB3aGl0ZUxpc3RbJ3Bvc2l0aW9uJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogc3RhdGljXG4gIHdoaXRlTGlzdFsncHJlc2VudGF0aW9uLWxldmVsJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogMFxuICB3aGl0ZUxpc3RbJ3F1b3RlcyddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IHRleHRcbiAgd2hpdGVMaXN0WydyZWdpb24tZnJhZ21lbnQnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBhdXRvXG4gIHdoaXRlTGlzdFsncmVzaXplJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogbm9uZVxuICB3aGl0ZUxpc3RbJ3Jlc3QnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBkZXBlbmRpbmcgb24gaW5kaXZpZHVhbCBwcm9wZXJ0aWVzXG4gIHdoaXRlTGlzdFsncmVzdC1hZnRlciddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG5vbmVcbiAgd2hpdGVMaXN0WydyZXN0LWJlZm9yZSddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG5vbmVcbiAgd2hpdGVMaXN0WydyaWNobmVzcyddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IDUwXG4gIHdoaXRlTGlzdFsncmlnaHQnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBhdXRvXG4gIHdoaXRlTGlzdFsncm90YXRpb24nXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiAwXG4gIHdoaXRlTGlzdFsncm90YXRpb24tcG9pbnQnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiA1MCUgNTAlXG4gIHdoaXRlTGlzdFsncnVieS1hbGlnbiddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGF1dG9cbiAgd2hpdGVMaXN0WydydWJ5LW1lcmdlJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogc2VwYXJhdGVcbiAgd2hpdGVMaXN0WydydWJ5LXBvc2l0aW9uJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogYmVmb3JlXG4gIHdoaXRlTGlzdFsnc2hhcGUtaW1hZ2UtdGhyZXNob2xkJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogMC4wXG4gIHdoaXRlTGlzdFsnc2hhcGUtb3V0c2lkZSddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG5vbmVcbiAgd2hpdGVMaXN0WydzaGFwZS1tYXJnaW4nXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiAwXG4gIHdoaXRlTGlzdFsnc2l6ZSddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGF1dG9cbiAgd2hpdGVMaXN0WydzcGVhayddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGF1dG9cbiAgd2hpdGVMaXN0WydzcGVhay1hcyddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG5vcm1hbFxuICB3aGl0ZUxpc3RbJ3NwZWFrLWhlYWRlciddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG9uY2VcbiAgd2hpdGVMaXN0WydzcGVhay1udW1lcmFsJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogY29udGludW91c1xuICB3aGl0ZUxpc3RbJ3NwZWFrLXB1bmN0dWF0aW9uJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogbm9uZVxuICB3aGl0ZUxpc3RbJ3NwZWVjaC1yYXRlJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogbWVkaXVtXG4gIHdoaXRlTGlzdFsnc3RyZXNzJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogNTBcbiAgd2hpdGVMaXN0WydzdHJpbmctc2V0J10gPSBmYWxzZTsgLy8gZGVmYXVsdDogbm9uZVxuICB3aGl0ZUxpc3RbJ3RhYi1zaXplJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogOFxuICB3aGl0ZUxpc3RbJ3RhYmxlLWxheW91dCddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGF1dG9cbiAgd2hpdGVMaXN0Wyd0ZXh0LWFsaWduJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBzdGFydFxuICB3aGl0ZUxpc3RbJ3RleHQtYWxpZ24tbGFzdCddID0gdHJ1ZTsgLy8gZGVmYXVsdDogYXV0b1xuICB3aGl0ZUxpc3RbJ3RleHQtY29tYmluZS11cHJpZ2h0J10gPSB0cnVlOyAvLyBkZWZhdWx0OiBub25lXG4gIHdoaXRlTGlzdFsndGV4dC1kZWNvcmF0aW9uJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBub25lXG4gIHdoaXRlTGlzdFsndGV4dC1kZWNvcmF0aW9uLWNvbG9yJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBjdXJyZW50Q29sb3JcbiAgd2hpdGVMaXN0Wyd0ZXh0LWRlY29yYXRpb24tbGluZSddID0gdHJ1ZTsgLy8gZGVmYXVsdDogbm9uZVxuICB3aGl0ZUxpc3RbJ3RleHQtZGVjb3JhdGlvbi1za2lwJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBvYmplY3RzXG4gIHdoaXRlTGlzdFsndGV4dC1kZWNvcmF0aW9uLXN0eWxlJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBzb2xpZFxuICB3aGl0ZUxpc3RbJ3RleHQtZW1waGFzaXMnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IGRlcGVuZGluZyBvbiBpbmRpdmlkdWFsIHByb3BlcnRpZXNcbiAgd2hpdGVMaXN0Wyd0ZXh0LWVtcGhhc2lzLWNvbG9yJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBjdXJyZW50Q29sb3JcbiAgd2hpdGVMaXN0Wyd0ZXh0LWVtcGhhc2lzLXBvc2l0aW9uJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBvdmVyIHJpZ2h0XG4gIHdoaXRlTGlzdFsndGV4dC1lbXBoYXNpcy1zdHlsZSddID0gdHJ1ZTsgLy8gZGVmYXVsdDogbm9uZVxuICB3aGl0ZUxpc3RbJ3RleHQtaGVpZ2h0J10gPSB0cnVlOyAvLyBkZWZhdWx0OiBhdXRvXG4gIHdoaXRlTGlzdFsndGV4dC1pbmRlbnQnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IDBcbiAgd2hpdGVMaXN0Wyd0ZXh0LWp1c3RpZnknXSA9IHRydWU7IC8vIGRlZmF1bHQ6IGF1dG9cbiAgd2hpdGVMaXN0Wyd0ZXh0LW9yaWVudGF0aW9uJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBtaXhlZFxuICB3aGl0ZUxpc3RbJ3RleHQtb3ZlcmZsb3cnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IGNsaXBcbiAgd2hpdGVMaXN0Wyd0ZXh0LXNoYWRvdyddID0gdHJ1ZTsgLy8gZGVmYXVsdDogbm9uZVxuICB3aGl0ZUxpc3RbJ3RleHQtc3BhY2UtY29sbGFwc2UnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IGNvbGxhcHNlXG4gIHdoaXRlTGlzdFsndGV4dC10cmFuc2Zvcm0nXSA9IHRydWU7IC8vIGRlZmF1bHQ6IG5vbmVcbiAgd2hpdGVMaXN0Wyd0ZXh0LXVuZGVybGluZS1wb3NpdGlvbiddID0gdHJ1ZTsgLy8gZGVmYXVsdDogYXV0b1xuICB3aGl0ZUxpc3RbJ3RleHQtd3JhcCddID0gdHJ1ZTsgLy8gZGVmYXVsdDogbm9ybWFsXG4gIHdoaXRlTGlzdFsndG9wJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogYXV0b1xuICB3aGl0ZUxpc3RbJ3RyYW5zZm9ybSddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG5vbmVcbiAgd2hpdGVMaXN0Wyd0cmFuc2Zvcm0tb3JpZ2luJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogNTAlIDUwJSAwXG4gIHdoaXRlTGlzdFsndHJhbnNmb3JtLXN0eWxlJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogZmxhdFxuICB3aGl0ZUxpc3RbJ3RyYW5zaXRpb24nXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBkZXBlbmRpbmcgb24gaW5kaXZpZHVhbCBwcm9wZXJ0aWVzXG4gIHdoaXRlTGlzdFsndHJhbnNpdGlvbi1kZWxheSddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IDBzXG4gIHdoaXRlTGlzdFsndHJhbnNpdGlvbi1kdXJhdGlvbiddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IDBzXG4gIHdoaXRlTGlzdFsndHJhbnNpdGlvbi1wcm9wZXJ0eSddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGFsbFxuICB3aGl0ZUxpc3RbJ3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogZWFzZVxuICB3aGl0ZUxpc3RbJ3VuaWNvZGUtYmlkaSddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG5vcm1hbFxuICB3aGl0ZUxpc3RbJ3ZlcnRpY2FsLWFsaWduJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogYmFzZWxpbmVcbiAgd2hpdGVMaXN0Wyd2aXNpYmlsaXR5J10gPSBmYWxzZTsgLy8gZGVmYXVsdDogdmlzaWJsZVxuICB3aGl0ZUxpc3RbJ3ZvaWNlLWJhbGFuY2UnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBjZW50ZXJcbiAgd2hpdGVMaXN0Wyd2b2ljZS1kdXJhdGlvbiddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGF1dG9cbiAgd2hpdGVMaXN0Wyd2b2ljZS1mYW1pbHknXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBpbXBsZW1lbnRhdGlvbiBkZXBlbmRlbnRcbiAgd2hpdGVMaXN0Wyd2b2ljZS1waXRjaCddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG1lZGl1bVxuICB3aGl0ZUxpc3RbJ3ZvaWNlLXJhbmdlJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogbWVkaXVtXG4gIHdoaXRlTGlzdFsndm9pY2UtcmF0ZSddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG5vcm1hbFxuICB3aGl0ZUxpc3RbJ3ZvaWNlLXN0cmVzcyddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG5vcm1hbFxuICB3aGl0ZUxpc3RbJ3ZvaWNlLXZvbHVtZSddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG1lZGl1bVxuICB3aGl0ZUxpc3RbJ3ZvbHVtZSddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IG1lZGl1bVxuICB3aGl0ZUxpc3RbJ3doaXRlLXNwYWNlJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogbm9ybWFsXG4gIHdoaXRlTGlzdFsnd2lkb3dzJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogMlxuICB3aGl0ZUxpc3RbJ3dpZHRoJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBhdXRvXG4gIHdoaXRlTGlzdFsnd2lsbC1jaGFuZ2UnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBhdXRvXG4gIHdoaXRlTGlzdFsnd29yZC1icmVhayddID0gdHJ1ZTsgLy8gZGVmYXVsdDogbm9ybWFsXG4gIHdoaXRlTGlzdFsnd29yZC1zcGFjaW5nJ10gPSB0cnVlOyAvLyBkZWZhdWx0OiBub3JtYWxcbiAgd2hpdGVMaXN0Wyd3b3JkLXdyYXAnXSA9IHRydWU7IC8vIGRlZmF1bHQ6IG5vcm1hbFxuICB3aGl0ZUxpc3RbJ3dyYXAtZmxvdyddID0gZmFsc2U7IC8vIGRlZmF1bHQ6IGF1dG9cbiAgd2hpdGVMaXN0Wyd3cmFwLXRocm91Z2gnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiB3cmFwXG4gIHdoaXRlTGlzdFsnd3JpdGluZy1tb2RlJ10gPSBmYWxzZTsgLy8gZGVmYXVsdDogaG9yaXpvbnRhbC10YlxuICB3aGl0ZUxpc3RbJ3otaW5kZXgnXSA9IGZhbHNlOyAvLyBkZWZhdWx0OiBhdXRvXG5cbiAgcmV0dXJuIHdoaXRlTGlzdDtcbn1cblxuXG4vKipcbiAqIOWMuemFjeWIsOeZveWQjeWNleS4iueahOS4gOS4quWxnuaAp+aXtlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lXG4gKiBAcGFyYW0ge1N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIG9uQXR0ciAobmFtZSwgdmFsdWUsIG9wdGlvbnMpIHtcbiAgLy8gZG8gbm90aGluZ1xufVxuXG4vKipcbiAqIOWMuemFjeWIsOS4jeWcqOeZveWQjeWNleS4iueahOS4gOS4quWxnuaAp+aXtlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lXG4gKiBAcGFyYW0ge1N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIG9uSWdub3JlQXR0ciAobmFtZSwgdmFsdWUsIG9wdGlvbnMpIHtcbiAgLy8gZG8gbm90aGluZ1xufVxuXG52YXIgUkVHRVhQX1VSTF9KQVZBU0NSSVBUID0gL2phdmFzY3JpcHRcXHMqXFw6L2ltZztcblxuLyoqXG4gKiDov4fmu6TlsZ7mgKflgLxcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZVxuICogQHBhcmFtIHtTdHJpbmd9IHZhbHVlXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIHNhZmVBdHRyVmFsdWUobmFtZSwgdmFsdWUpIHtcbiAgaWYgKFJFR0VYUF9VUkxfSkFWQVNDUklQVC50ZXN0KHZhbHVlKSkgcmV0dXJuICcnO1xuICByZXR1cm4gdmFsdWU7XG59XG5cblxuZXhwb3J0cy53aGl0ZUxpc3QgPSBnZXREZWZhdWx0V2hpdGVMaXN0KCk7XG5leHBvcnRzLmdldERlZmF1bHRXaGl0ZUxpc3QgPSBnZXREZWZhdWx0V2hpdGVMaXN0O1xuZXhwb3J0cy5vbkF0dHIgPSBvbkF0dHI7XG5leHBvcnRzLm9uSWdub3JlQXR0ciA9IG9uSWdub3JlQXR0cjtcbmV4cG9ydHMuc2FmZUF0dHJWYWx1ZSA9IHNhZmVBdHRyVmFsdWU7XG4iLCIvKipcbiAqIGNzc2ZpbHRlclxuICpcbiAqIEBhdXRob3Ig6ICB6Zu3PGxlaXpvbmdtaW5AZ21haWwuY29tPlxuICovXG5cbnZhciBERUZBVUxUID0gcmVxdWlyZSgnLi9kZWZhdWx0Jyk7XG52YXIgRmlsdGVyQ1NTID0gcmVxdWlyZSgnLi9jc3MnKTtcblxuXG4vKipcbiAqIFhTU+i/h+a7pFxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBjc3Mg6KaB6L+H5ruk55qEQ1NT5Luj56CBXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyDpgInpobnvvJp3aGl0ZUxpc3QsIG9uQXR0ciwgb25JZ25vcmVBdHRyXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGZpbHRlckNTUyAoaHRtbCwgb3B0aW9ucykge1xuICB2YXIgeHNzID0gbmV3IEZpbHRlckNTUyhvcHRpb25zKTtcbiAgcmV0dXJuIHhzcy5wcm9jZXNzKGh0bWwpO1xufVxuXG5cbi8vIOi+k+WHulxuZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gZmlsdGVyQ1NTO1xuZXhwb3J0cy5GaWx0ZXJDU1MgPSBGaWx0ZXJDU1M7XG5mb3IgKHZhciBpIGluIERFRkFVTFQpIGV4cG9ydHNbaV0gPSBERUZBVUxUW2ldO1xuXG4vLyDlnKjmtY/op4jlmajnq6/kvb/nlKhcbmlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICB3aW5kb3cuZmlsdGVyQ1NTID0gbW9kdWxlLmV4cG9ydHM7XG59XG4iLCIvKipcbiAqIGNzc2ZpbHRlclxuICpcbiAqIEBhdXRob3Ig6ICB6Zu3PGxlaXpvbmdtaW5AZ21haWwuY29tPlxuICovXG5cbnZhciBfID0gcmVxdWlyZSgnLi91dGlsJyk7XG5cblxuLyoqXG4gKiDop6PmnpBzdHlsZVxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBjc3NcbiAqIEBwYXJhbSB7RnVuY3Rpb259IG9uQXR0ciDlpITnkIblsZ7mgKfnmoTlh73mlbBcbiAqICAg5Y+C5pWw5qC85byP77yaIGZ1bmN0aW9uIChzb3VyY2VQb3NpdGlvbiwgcG9zaXRpb24sIG5hbWUsIHZhbHVlLCBzb3VyY2UpXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIHBhcnNlU3R5bGUgKGNzcywgb25BdHRyKSB7XG4gIGNzcyA9IF8udHJpbVJpZ2h0KGNzcyk7XG4gIGlmIChjc3NbY3NzLmxlbmd0aCAtIDFdICE9PSAnOycpIGNzcyArPSAnOyc7XG4gIHZhciBjc3NMZW5ndGggPSBjc3MubGVuZ3RoO1xuICB2YXIgaXNQYXJlbnRoZXNpc09wZW4gPSBmYWxzZTtcbiAgdmFyIGxhc3RQb3MgPSAwO1xuICB2YXIgaSA9IDA7XG4gIHZhciByZXRDU1MgPSAnJztcblxuICBmdW5jdGlvbiBhZGROZXdBdHRyICgpIHtcbiAgICAvLyDlpoLmnpzmsqHmnInmraPluLjnmoTpl63lkIjlnIbmi6zlj7fvvIzliJnnm7TmjqXlv73nlaXlvZPliY3lsZ7mgKdcbiAgICBpZiAoIWlzUGFyZW50aGVzaXNPcGVuKSB7XG4gICAgICB2YXIgc291cmNlID0gXy50cmltKGNzcy5zbGljZShsYXN0UG9zLCBpKSk7XG4gICAgICB2YXIgaiA9IHNvdXJjZS5pbmRleE9mKCc6Jyk7XG4gICAgICBpZiAoaiAhPT0gLTEpIHtcbiAgICAgICAgdmFyIG5hbWUgPSBfLnRyaW0oc291cmNlLnNsaWNlKDAsIGopKTtcbiAgICAgICAgdmFyIHZhbHVlID0gXy50cmltKHNvdXJjZS5zbGljZShqICsgMSkpO1xuICAgICAgICAvLyDlv4XpobvmnInlsZ7mgKflkI3np7BcbiAgICAgICAgaWYgKG5hbWUpIHtcbiAgICAgICAgICB2YXIgcmV0ID0gb25BdHRyKGxhc3RQb3MsIHJldENTUy5sZW5ndGgsIG5hbWUsIHZhbHVlLCBzb3VyY2UpO1xuICAgICAgICAgIGlmIChyZXQpIHJldENTUyArPSByZXQgKyAnOyAnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGxhc3RQb3MgPSBpICsgMTtcbiAgfVxuXG4gIGZvciAoOyBpIDwgY3NzTGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgYyA9IGNzc1tpXTtcbiAgICBpZiAoYyA9PT0gJy8nICYmIGNzc1tpICsgMV0gPT09ICcqJykge1xuICAgICAgLy8g5aSH5rOo5byA5aeLXG4gICAgICB2YXIgaiA9IGNzcy5pbmRleE9mKCcqLycsIGkgKyAyKTtcbiAgICAgIC8vIOWmguaenOayoeacieato+W4uOeahOWkh+azqOe7k+adn++8jOWImeWQjumdoueahOmDqOWIhuWFqOmDqOi3s+i/h1xuICAgICAgaWYgKGogPT09IC0xKSBicmVhaztcbiAgICAgIC8vIOebtOaOpeWwhuW9k+WJjeS9jee9ruiwg+WIsOWkh+azqOe7k+Wwvu+8jOW5tuS4lOWIneWni+WMlueKtuaAgVxuICAgICAgaSA9IGogKyAxO1xuICAgICAgbGFzdFBvcyA9IGkgKyAxO1xuICAgICAgaXNQYXJlbnRoZXNpc09wZW4gPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKGMgPT09ICcoJykge1xuICAgICAgaXNQYXJlbnRoZXNpc09wZW4gPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoYyA9PT0gJyknKSB7XG4gICAgICBpc1BhcmVudGhlc2lzT3BlbiA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoYyA9PT0gJzsnKSB7XG4gICAgICBpZiAoaXNQYXJlbnRoZXNpc09wZW4pIHtcbiAgICAgICAgLy8g5Zyo5ZyG5ous5Y+36YeM6Z2i77yM5b+955WlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhZGROZXdBdHRyKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjID09PSAnXFxuJykge1xuICAgICAgYWRkTmV3QXR0cigpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBfLnRyaW0ocmV0Q1NTKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBwYXJzZVN0eWxlO1xuIiwibW9kdWxlLmV4cG9ydHMgPSB7XG4gIGluZGV4T2Y6IGZ1bmN0aW9uIChhcnIsIGl0ZW0pIHtcbiAgICB2YXIgaSwgajtcbiAgICBpZiAoQXJyYXkucHJvdG90eXBlLmluZGV4T2YpIHtcbiAgICAgIHJldHVybiBhcnIuaW5kZXhPZihpdGVtKTtcbiAgICB9XG4gICAgZm9yIChpID0gMCwgaiA9IGFyci5sZW5ndGg7IGkgPCBqOyBpKyspIHtcbiAgICAgIGlmIChhcnJbaV0gPT09IGl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIGk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAtMTtcbiAgfSxcbiAgZm9yRWFjaDogZnVuY3Rpb24gKGFyciwgZm4sIHNjb3BlKSB7XG4gICAgdmFyIGksIGo7XG4gICAgaWYgKEFycmF5LnByb3RvdHlwZS5mb3JFYWNoKSB7XG4gICAgICByZXR1cm4gYXJyLmZvckVhY2goZm4sIHNjb3BlKTtcbiAgICB9XG4gICAgZm9yIChpID0gMCwgaiA9IGFyci5sZW5ndGg7IGkgPCBqOyBpKyspIHtcbiAgICAgIGZuLmNhbGwoc2NvcGUsIGFycltpXSwgaSwgYXJyKTtcbiAgICB9XG4gIH0sXG4gIHRyaW06IGZ1bmN0aW9uIChzdHIpIHtcbiAgICBpZiAoU3RyaW5nLnByb3RvdHlwZS50cmltKSB7XG4gICAgICByZXR1cm4gc3RyLnRyaW0oKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKC8oXlxccyopfChcXHMqJCkvZywgJycpO1xuICB9LFxuICB0cmltUmlnaHQ6IGZ1bmN0aW9uIChzdHIpIHtcbiAgICBpZiAoU3RyaW5nLnByb3RvdHlwZS50cmltUmlnaHQpIHtcbiAgICAgIHJldHVybiBzdHIudHJpbVJpZ2h0KCk7XG4gICAgfVxuICAgIHJldHVybiBzdHIucmVwbGFjZSgvKFxccyokKS9nLCAnJyk7XG4gIH1cbn07XG4iLCIvKipcbiAqIGRlZmF1bHQgc2V0dGluZ3NcbiAqXG4gKiBAYXV0aG9yIFpvbmdtaW4gTGVpPGxlaXpvbmdtaW5AZ21haWwuY29tPlxuICovXG5cbnZhciBGaWx0ZXJDU1MgPSByZXF1aXJlKFwiY3NzZmlsdGVyXCIpLkZpbHRlckNTUztcbnZhciBnZXREZWZhdWx0Q1NTV2hpdGVMaXN0ID0gcmVxdWlyZShcImNzc2ZpbHRlclwiKS5nZXREZWZhdWx0V2hpdGVMaXN0O1xudmFyIF8gPSByZXF1aXJlKFwiLi91dGlsXCIpO1xuXG5mdW5jdGlvbiBnZXREZWZhdWx0V2hpdGVMaXN0KCkge1xuICByZXR1cm4ge1xuICAgIGE6IFtcInRhcmdldFwiLCBcImhyZWZcIiwgXCJ0aXRsZVwiXSxcbiAgICBhYmJyOiBbXCJ0aXRsZVwiXSxcbiAgICBhZGRyZXNzOiBbXSxcbiAgICBhcmVhOiBbXCJzaGFwZVwiLCBcImNvb3Jkc1wiLCBcImhyZWZcIiwgXCJhbHRcIl0sXG4gICAgYXJ0aWNsZTogW10sXG4gICAgYXNpZGU6IFtdLFxuICAgIGF1ZGlvOiBbXG4gICAgICBcImF1dG9wbGF5XCIsXG4gICAgICBcImNvbnRyb2xzXCIsXG4gICAgICBcImNyb3Nzb3JpZ2luXCIsXG4gICAgICBcImxvb3BcIixcbiAgICAgIFwibXV0ZWRcIixcbiAgICAgIFwicHJlbG9hZFwiLFxuICAgICAgXCJzcmNcIixcbiAgICBdLFxuICAgIGI6IFtdLFxuICAgIGJkaTogW1wiZGlyXCJdLFxuICAgIGJkbzogW1wiZGlyXCJdLFxuICAgIGJpZzogW10sXG4gICAgYmxvY2txdW90ZTogW1wiY2l0ZVwiXSxcbiAgICBicjogW10sXG4gICAgY2FwdGlvbjogW10sXG4gICAgY2VudGVyOiBbXSxcbiAgICBjaXRlOiBbXSxcbiAgICBjb2RlOiBbXSxcbiAgICBjb2w6IFtcImFsaWduXCIsIFwidmFsaWduXCIsIFwic3BhblwiLCBcIndpZHRoXCJdLFxuICAgIGNvbGdyb3VwOiBbXCJhbGlnblwiLCBcInZhbGlnblwiLCBcInNwYW5cIiwgXCJ3aWR0aFwiXSxcbiAgICBkZDogW10sXG4gICAgZGVsOiBbXCJkYXRldGltZVwiXSxcbiAgICBkZXRhaWxzOiBbXCJvcGVuXCJdLFxuICAgIGRpdjogW10sXG4gICAgZGw6IFtdLFxuICAgIGR0OiBbXSxcbiAgICBlbTogW10sXG4gICAgZmlnY2FwdGlvbjogW10sXG4gICAgZmlndXJlOiBbXSxcbiAgICBmb250OiBbXCJjb2xvclwiLCBcInNpemVcIiwgXCJmYWNlXCJdLFxuICAgIGZvb3RlcjogW10sXG4gICAgaDE6IFtdLFxuICAgIGgyOiBbXSxcbiAgICBoMzogW10sXG4gICAgaDQ6IFtdLFxuICAgIGg1OiBbXSxcbiAgICBoNjogW10sXG4gICAgaGVhZGVyOiBbXSxcbiAgICBocjogW10sXG4gICAgaTogW10sXG4gICAgaW1nOiBbXCJzcmNcIiwgXCJhbHRcIiwgXCJ0aXRsZVwiLCBcIndpZHRoXCIsIFwiaGVpZ2h0XCIsIFwibG9hZGluZ1wiXSxcbiAgICBpbnM6IFtcImRhdGV0aW1lXCJdLFxuICAgIGtiZDogW10sXG4gICAgbGk6IFtdLFxuICAgIG1hcms6IFtdLFxuICAgIG5hdjogW10sXG4gICAgb2w6IFtdLFxuICAgIHA6IFtdLFxuICAgIHByZTogW10sXG4gICAgczogW10sXG4gICAgc2VjdGlvbjogW10sXG4gICAgc21hbGw6IFtdLFxuICAgIHNwYW46IFtdLFxuICAgIHN1YjogW10sXG4gICAgc3VtbWFyeTogW10sXG4gICAgc3VwOiBbXSxcbiAgICBzdHJvbmc6IFtdLFxuICAgIHN0cmlrZTogW10sXG4gICAgdGFibGU6IFtcIndpZHRoXCIsIFwiYm9yZGVyXCIsIFwiYWxpZ25cIiwgXCJ2YWxpZ25cIl0sXG4gICAgdGJvZHk6IFtcImFsaWduXCIsIFwidmFsaWduXCJdLFxuICAgIHRkOiBbXCJ3aWR0aFwiLCBcInJvd3NwYW5cIiwgXCJjb2xzcGFuXCIsIFwiYWxpZ25cIiwgXCJ2YWxpZ25cIl0sXG4gICAgdGZvb3Q6IFtcImFsaWduXCIsIFwidmFsaWduXCJdLFxuICAgIHRoOiBbXCJ3aWR0aFwiLCBcInJvd3NwYW5cIiwgXCJjb2xzcGFuXCIsIFwiYWxpZ25cIiwgXCJ2YWxpZ25cIl0sXG4gICAgdGhlYWQ6IFtcImFsaWduXCIsIFwidmFsaWduXCJdLFxuICAgIHRyOiBbXCJyb3dzcGFuXCIsIFwiYWxpZ25cIiwgXCJ2YWxpZ25cIl0sXG4gICAgdHQ6IFtdLFxuICAgIHU6IFtdLFxuICAgIHVsOiBbXSxcbiAgICB2aWRlbzogW1xuICAgICAgXCJhdXRvcGxheVwiLFxuICAgICAgXCJjb250cm9sc1wiLFxuICAgICAgXCJjcm9zc29yaWdpblwiLFxuICAgICAgXCJsb29wXCIsXG4gICAgICBcIm11dGVkXCIsXG4gICAgICBcInBsYXlzaW5saW5lXCIsXG4gICAgICBcInBvc3RlclwiLFxuICAgICAgXCJwcmVsb2FkXCIsXG4gICAgICBcInNyY1wiLFxuICAgICAgXCJoZWlnaHRcIixcbiAgICAgIFwid2lkdGhcIixcbiAgICBdLFxuICB9O1xufVxuXG52YXIgZGVmYXVsdENTU0ZpbHRlciA9IG5ldyBGaWx0ZXJDU1MoKTtcblxuLyoqXG4gKiBkZWZhdWx0IG9uVGFnIGZ1bmN0aW9uXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHRhZ1xuICogQHBhcmFtIHtTdHJpbmd9IGh0bWxcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIG9uVGFnKHRhZywgaHRtbCwgb3B0aW9ucykge1xuICAvLyBkbyBub3RoaW5nXG59XG5cbi8qKlxuICogZGVmYXVsdCBvbklnbm9yZVRhZyBmdW5jdGlvblxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB0YWdcbiAqIEBwYXJhbSB7U3RyaW5nfSBodG1sXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuICogQHJldHVybiB7U3RyaW5nfVxuICovXG5mdW5jdGlvbiBvbklnbm9yZVRhZyh0YWcsIGh0bWwsIG9wdGlvbnMpIHtcbiAgLy8gZG8gbm90aGluZ1xufVxuXG4vKipcbiAqIGRlZmF1bHQgb25UYWdBdHRyIGZ1bmN0aW9uXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHRhZ1xuICogQHBhcmFtIHtTdHJpbmd9IG5hbWVcbiAqIEBwYXJhbSB7U3RyaW5nfSB2YWx1ZVxuICogQHJldHVybiB7U3RyaW5nfVxuICovXG5mdW5jdGlvbiBvblRhZ0F0dHIodGFnLCBuYW1lLCB2YWx1ZSkge1xuICAvLyBkbyBub3RoaW5nXG59XG5cbi8qKlxuICogZGVmYXVsdCBvbklnbm9yZVRhZ0F0dHIgZnVuY3Rpb25cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdGFnXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZVxuICogQHBhcmFtIHtTdHJpbmd9IHZhbHVlXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIG9uSWdub3JlVGFnQXR0cih0YWcsIG5hbWUsIHZhbHVlKSB7XG4gIC8vIGRvIG5vdGhpbmdcbn1cblxuLyoqXG4gKiBkZWZhdWx0IGVzY2FwZUh0bWwgZnVuY3Rpb25cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gaHRtbFxuICovXG5mdW5jdGlvbiBlc2NhcGVIdG1sKGh0bWwpIHtcbiAgcmV0dXJuIGh0bWwucmVwbGFjZShSRUdFWFBfTFQsIFwiJmx0O1wiKS5yZXBsYWNlKFJFR0VYUF9HVCwgXCImZ3Q7XCIpO1xufVxuXG4vKipcbiAqIGRlZmF1bHQgc2FmZUF0dHJWYWx1ZSBmdW5jdGlvblxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB0YWdcbiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lXG4gKiBAcGFyYW0ge1N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7T2JqZWN0fSBjc3NGaWx0ZXJcbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqL1xuZnVuY3Rpb24gc2FmZUF0dHJWYWx1ZSh0YWcsIG5hbWUsIHZhbHVlLCBjc3NGaWx0ZXIpIHtcbiAgLy8gdW5lc2NhcGUgYXR0cmlidXRlIHZhbHVlIGZpcnN0bHlcbiAgdmFsdWUgPSBmcmllbmRseUF0dHJWYWx1ZSh2YWx1ZSk7XG5cbiAgaWYgKG5hbWUgPT09IFwiaHJlZlwiIHx8IG5hbWUgPT09IFwic3JjXCIpIHtcbiAgICAvLyBmaWx0ZXIgYGhyZWZgIGFuZCBgc3JjYCBhdHRyaWJ1dGVcbiAgICAvLyBvbmx5IGFsbG93IHRoZSB2YWx1ZSB0aGF0IHN0YXJ0cyB3aXRoIGBodHRwOi8vYCB8IGBodHRwczovL2AgfCBgbWFpbHRvOmAgfCBgL2AgfCBgI2BcbiAgICB2YWx1ZSA9IF8udHJpbSh2YWx1ZSk7XG4gICAgaWYgKHZhbHVlID09PSBcIiNcIikgcmV0dXJuIFwiI1wiO1xuICAgIGlmIChcbiAgICAgICEoXG4gICAgICAgIHZhbHVlLnN1YnN0cigwLCA3KSA9PT0gXCJodHRwOi8vXCIgfHxcbiAgICAgICAgdmFsdWUuc3Vic3RyKDAsIDgpID09PSBcImh0dHBzOi8vXCIgfHxcbiAgICAgICAgdmFsdWUuc3Vic3RyKDAsIDcpID09PSBcIm1haWx0bzpcIiB8fFxuICAgICAgICB2YWx1ZS5zdWJzdHIoMCwgNCkgPT09IFwidGVsOlwiIHx8XG4gICAgICAgIHZhbHVlLnN1YnN0cigwLCAxMSkgPT09IFwiZGF0YTppbWFnZS9cIiB8fFxuICAgICAgICB2YWx1ZS5zdWJzdHIoMCwgNikgPT09IFwiZnRwOi8vXCIgfHxcbiAgICAgICAgdmFsdWUuc3Vic3RyKDAsIDIpID09PSBcIi4vXCIgfHxcbiAgICAgICAgdmFsdWUuc3Vic3RyKDAsIDMpID09PSBcIi4uL1wiIHx8XG4gICAgICAgIHZhbHVlWzBdID09PSBcIiNcIiB8fFxuICAgICAgICB2YWx1ZVswXSA9PT0gXCIvXCJcbiAgICAgIClcbiAgICApIHtcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cbiAgfSBlbHNlIGlmIChuYW1lID09PSBcImJhY2tncm91bmRcIikge1xuICAgIC8vIGZpbHRlciBgYmFja2dyb3VuZGAgYXR0cmlidXRlIChtYXliZSBubyB1c2UpXG4gICAgLy8gYGphdmFzY3JpcHQ6YFxuICAgIFJFR0VYUF9ERUZBVUxUX09OX1RBR19BVFRSXzQubGFzdEluZGV4ID0gMDtcbiAgICBpZiAoUkVHRVhQX0RFRkFVTFRfT05fVEFHX0FUVFJfNC50ZXN0KHZhbHVlKSkge1xuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuICB9IGVsc2UgaWYgKG5hbWUgPT09IFwic3R5bGVcIikge1xuICAgIC8vIGBleHByZXNzaW9uKClgXG4gICAgUkVHRVhQX0RFRkFVTFRfT05fVEFHX0FUVFJfNy5sYXN0SW5kZXggPSAwO1xuICAgIGlmIChSRUdFWFBfREVGQVVMVF9PTl9UQUdfQVRUUl83LnRlc3QodmFsdWUpKSB7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG4gICAgLy8gYHVybCgpYFxuICAgIFJFR0VYUF9ERUZBVUxUX09OX1RBR19BVFRSXzgubGFzdEluZGV4ID0gMDtcbiAgICBpZiAoUkVHRVhQX0RFRkFVTFRfT05fVEFHX0FUVFJfOC50ZXN0KHZhbHVlKSkge1xuICAgICAgUkVHRVhQX0RFRkFVTFRfT05fVEFHX0FUVFJfNC5sYXN0SW5kZXggPSAwO1xuICAgICAgaWYgKFJFR0VYUF9ERUZBVUxUX09OX1RBR19BVFRSXzQudGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChjc3NGaWx0ZXIgIT09IGZhbHNlKSB7XG4gICAgICBjc3NGaWx0ZXIgPSBjc3NGaWx0ZXIgfHwgZGVmYXVsdENTU0ZpbHRlcjtcbiAgICAgIHZhbHVlID0gY3NzRmlsdGVyLnByb2Nlc3ModmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGVzY2FwZSBgPD5cImAgYmVmb3JlIHJldHVybnNcbiAgdmFsdWUgPSBlc2NhcGVBdHRyVmFsdWUodmFsdWUpO1xuICByZXR1cm4gdmFsdWU7XG59XG5cbi8vIFJlZ0V4cCBsaXN0XG52YXIgUkVHRVhQX0xUID0gLzwvZztcbnZhciBSRUdFWFBfR1QgPSAvPi9nO1xudmFyIFJFR0VYUF9RVU9URSA9IC9cIi9nO1xudmFyIFJFR0VYUF9RVU9URV8yID0gLyZxdW90Oy9nO1xudmFyIFJFR0VYUF9BVFRSX1ZBTFVFXzEgPSAvJiMoW2EtekEtWjAtOV0qKTs/L2dpbTtcbnZhciBSRUdFWFBfQVRUUl9WQUxVRV9DT0xPTiA9IC8mY29sb247Py9naW07XG52YXIgUkVHRVhQX0FUVFJfVkFMVUVfTkVXTElORSA9IC8mbmV3bGluZTs/L2dpbTtcbi8vIHZhciBSRUdFWFBfREVGQVVMVF9PTl9UQUdfQVRUUl8zID0gL1xcL1xcKnxcXCpcXC8vZ207XG52YXIgUkVHRVhQX0RFRkFVTFRfT05fVEFHX0FUVFJfNCA9XG4gIC8oKGpcXHMqYVxccyp2XFxzKmF8dlxccypifGxcXHMqaVxccyp2XFxzKmUpXFxzKnNcXHMqY1xccypyXFxzKmlcXHMqcFxccyp0XFxzKnxtXFxzKm9cXHMqY1xccypoXFxzKmEpOi9naTtcbi8vIHZhciBSRUdFWFBfREVGQVVMVF9PTl9UQUdfQVRUUl81ID0gL15bXFxzXCInYF0qKGRcXHMqYVxccyp0XFxzKmFcXHMqKVxcOi9naTtcbi8vIHZhciBSRUdFWFBfREVGQVVMVF9PTl9UQUdfQVRUUl82ID0gL15bXFxzXCInYF0qKGRcXHMqYVxccyp0XFxzKmFcXHMqKVxcOlxccyppbWFnZVxcLy9naTtcbnZhciBSRUdFWFBfREVGQVVMVF9PTl9UQUdfQVRUUl83ID1cbiAgL2VcXHMqeFxccypwXFxzKnJcXHMqZVxccypzXFxzKnNcXHMqaVxccypvXFxzKm5cXHMqXFwoLiovZ2k7XG52YXIgUkVHRVhQX0RFRkFVTFRfT05fVEFHX0FUVFJfOCA9IC91XFxzKnJcXHMqbFxccypcXCguKi9naTtcblxuLyoqXG4gKiBlc2NhcGUgZG91YmxlIHF1b3RlXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0clxuICogQHJldHVybiB7U3RyaW5nfSBzdHJcbiAqL1xuZnVuY3Rpb24gZXNjYXBlUXVvdGUoc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZShSRUdFWFBfUVVPVEUsIFwiJnF1b3Q7XCIpO1xufVxuXG4vKipcbiAqIHVuZXNjYXBlIGRvdWJsZSBxdW90ZVxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiAqIEByZXR1cm4ge1N0cmluZ30gc3RyXG4gKi9cbmZ1bmN0aW9uIHVuZXNjYXBlUXVvdGUoc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZShSRUdFWFBfUVVPVEVfMiwgJ1wiJyk7XG59XG5cbi8qKlxuICogZXNjYXBlIGh0bWwgZW50aXRpZXNcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGVzY2FwZUh0bWxFbnRpdGllcyhzdHIpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKFJFR0VYUF9BVFRSX1ZBTFVFXzEsIGZ1bmN0aW9uIHJlcGxhY2VVbmljb2RlKHN0ciwgY29kZSkge1xuICAgIHJldHVybiBjb2RlWzBdID09PSBcInhcIiB8fCBjb2RlWzBdID09PSBcIlhcIlxuICAgICAgPyBTdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KGNvZGUuc3Vic3RyKDEpLCAxNikpXG4gICAgICA6IFN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQoY29kZSwgMTApKTtcbiAgfSk7XG59XG5cbi8qKlxuICogZXNjYXBlIGh0bWw1IG5ldyBkYW5nZXIgZW50aXRpZXNcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGVzY2FwZURhbmdlckh0bWw1RW50aXRpZXMoc3RyKSB7XG4gIHJldHVybiBzdHJcbiAgICAucmVwbGFjZShSRUdFWFBfQVRUUl9WQUxVRV9DT0xPTiwgXCI6XCIpXG4gICAgLnJlcGxhY2UoUkVHRVhQX0FUVFJfVkFMVUVfTkVXTElORSwgXCIgXCIpO1xufVxuXG4vKipcbiAqIGNsZWFyIG5vbnByaW50YWJsZSBjaGFyYWN0ZXJzXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0clxuICogQHJldHVybiB7U3RyaW5nfVxuICovXG5mdW5jdGlvbiBjbGVhck5vblByaW50YWJsZUNoYXJhY3RlcihzdHIpIHtcbiAgdmFyIHN0cjIgPSBcIlwiO1xuICBmb3IgKHZhciBpID0gMCwgbGVuID0gc3RyLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgc3RyMiArPSBzdHIuY2hhckNvZGVBdChpKSA8IDMyID8gXCIgXCIgOiBzdHIuY2hhckF0KGkpO1xuICB9XG4gIHJldHVybiBfLnRyaW0oc3RyMik7XG59XG5cbi8qKlxuICogZ2V0IGZyaWVuZGx5IGF0dHJpYnV0ZSB2YWx1ZVxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqL1xuZnVuY3Rpb24gZnJpZW5kbHlBdHRyVmFsdWUoc3RyKSB7XG4gIHN0ciA9IHVuZXNjYXBlUXVvdGUoc3RyKTtcbiAgc3RyID0gZXNjYXBlSHRtbEVudGl0aWVzKHN0cik7XG4gIHN0ciA9IGVzY2FwZURhbmdlckh0bWw1RW50aXRpZXMoc3RyKTtcbiAgc3RyID0gY2xlYXJOb25QcmludGFibGVDaGFyYWN0ZXIoc3RyKTtcbiAgcmV0dXJuIHN0cjtcbn1cblxuLyoqXG4gKiB1bmVzY2FwZSBhdHRyaWJ1dGUgdmFsdWVcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGVzY2FwZUF0dHJWYWx1ZShzdHIpIHtcbiAgc3RyID0gZXNjYXBlUXVvdGUoc3RyKTtcbiAgc3RyID0gZXNjYXBlSHRtbChzdHIpO1xuICByZXR1cm4gc3RyO1xufVxuXG4vKipcbiAqIGBvbklnbm9yZVRhZ2AgZnVuY3Rpb24gZm9yIHJlbW92aW5nIGFsbCB0aGUgdGFncyB0aGF0IGFyZSBub3QgaW4gd2hpdGVsaXN0XG4gKi9cbmZ1bmN0aW9uIG9uSWdub3JlVGFnU3RyaXBBbGwoKSB7XG4gIHJldHVybiBcIlwiO1xufVxuXG4vKipcbiAqIHJlbW92ZSB0YWcgYm9keVxuICogc3BlY2lmeSBhIGB0YWdzYCBsaXN0LCBpZiB0aGUgdGFnIGlzIG5vdCBpbiB0aGUgYHRhZ3NgIGxpc3QgdGhlbiBwcm9jZXNzIGJ5IHRoZSBzcGVjaWZ5IGZ1bmN0aW9uIChvcHRpb25hbClcbiAqXG4gKiBAcGFyYW0ge2FycmF5fSB0YWdzXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBuZXh0XG4gKi9cbmZ1bmN0aW9uIFN0cmlwVGFnQm9keSh0YWdzLCBuZXh0KSB7XG4gIGlmICh0eXBlb2YgbmV4dCAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgbmV4dCA9IGZ1bmN0aW9uICgpIHt9O1xuICB9XG5cbiAgdmFyIGlzUmVtb3ZlQWxsVGFnID0gIUFycmF5LmlzQXJyYXkodGFncyk7XG4gIGZ1bmN0aW9uIGlzUmVtb3ZlVGFnKHRhZykge1xuICAgIGlmIChpc1JlbW92ZUFsbFRhZykgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIF8uaW5kZXhPZih0YWdzLCB0YWcpICE9PSAtMTtcbiAgfVxuXG4gIHZhciByZW1vdmVMaXN0ID0gW107XG4gIHZhciBwb3NTdGFydCA9IGZhbHNlO1xuXG4gIHJldHVybiB7XG4gICAgb25JZ25vcmVUYWc6IGZ1bmN0aW9uICh0YWcsIGh0bWwsIG9wdGlvbnMpIHtcbiAgICAgIGlmIChpc1JlbW92ZVRhZyh0YWcpKSB7XG4gICAgICAgIGlmIChvcHRpb25zLmlzQ2xvc2luZykge1xuICAgICAgICAgIHZhciByZXQgPSBcIlsvcmVtb3ZlZF1cIjtcbiAgICAgICAgICB2YXIgZW5kID0gb3B0aW9ucy5wb3NpdGlvbiArIHJldC5sZW5ndGg7XG4gICAgICAgICAgcmVtb3ZlTGlzdC5wdXNoKFtcbiAgICAgICAgICAgIHBvc1N0YXJ0ICE9PSBmYWxzZSA/IHBvc1N0YXJ0IDogb3B0aW9ucy5wb3NpdGlvbixcbiAgICAgICAgICAgIGVuZCxcbiAgICAgICAgICBdKTtcbiAgICAgICAgICBwb3NTdGFydCA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybiByZXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKCFwb3NTdGFydCkge1xuICAgICAgICAgICAgcG9zU3RhcnQgPSBvcHRpb25zLnBvc2l0aW9uO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gXCJbcmVtb3ZlZF1cIjtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG5leHQodGFnLCBodG1sLCBvcHRpb25zKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHJlbW92ZTogZnVuY3Rpb24gKGh0bWwpIHtcbiAgICAgIHZhciByZXRodG1sID0gXCJcIjtcbiAgICAgIHZhciBsYXN0UG9zID0gMDtcbiAgICAgIF8uZm9yRWFjaChyZW1vdmVMaXN0LCBmdW5jdGlvbiAocG9zKSB7XG4gICAgICAgIHJldGh0bWwgKz0gaHRtbC5zbGljZShsYXN0UG9zLCBwb3NbMF0pO1xuICAgICAgICBsYXN0UG9zID0gcG9zWzFdO1xuICAgICAgfSk7XG4gICAgICByZXRodG1sICs9IGh0bWwuc2xpY2UobGFzdFBvcyk7XG4gICAgICByZXR1cm4gcmV0aHRtbDtcbiAgICB9LFxuICB9O1xufVxuXG4vKipcbiAqIHJlbW92ZSBodG1sIGNvbW1lbnRzXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGh0bWxcbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqL1xuZnVuY3Rpb24gc3RyaXBDb21tZW50VGFnKGh0bWwpIHtcbiAgdmFyIHJldEh0bWwgPSBcIlwiO1xuICB2YXIgbGFzdFBvcyA9IDA7XG4gIHdoaWxlIChsYXN0UG9zIDwgaHRtbC5sZW5ndGgpIHtcbiAgICB2YXIgaSA9IGh0bWwuaW5kZXhPZihcIjwhLS1cIiwgbGFzdFBvcyk7XG4gICAgaWYgKGkgPT09IC0xKSB7XG4gICAgICByZXRIdG1sICs9IGh0bWwuc2xpY2UobGFzdFBvcyk7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0SHRtbCArPSBodG1sLnNsaWNlKGxhc3RQb3MsIGkpO1xuICAgIHZhciBqID0gaHRtbC5pbmRleE9mKFwiLS0+XCIsIGkpO1xuICAgIGlmIChqID09PSAtMSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGxhc3RQb3MgPSBqICsgMztcbiAgfVxuICByZXR1cm4gcmV0SHRtbDtcbn1cblxuLyoqXG4gKiByZW1vdmUgaW52aXNpYmxlIGNoYXJhY3RlcnNcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gaHRtbFxuICogQHJldHVybiB7U3RyaW5nfVxuICovXG5mdW5jdGlvbiBzdHJpcEJsYW5rQ2hhcihodG1sKSB7XG4gIHZhciBjaGFycyA9IGh0bWwuc3BsaXQoXCJcIik7XG4gIGNoYXJzID0gY2hhcnMuZmlsdGVyKGZ1bmN0aW9uIChjaGFyKSB7XG4gICAgdmFyIGMgPSBjaGFyLmNoYXJDb2RlQXQoMCk7XG4gICAgaWYgKGMgPT09IDEyNykgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChjIDw9IDMxKSB7XG4gICAgICBpZiAoYyA9PT0gMTAgfHwgYyA9PT0gMTMpIHJldHVybiB0cnVlO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSk7XG4gIHJldHVybiBjaGFycy5qb2luKFwiXCIpO1xufVxuXG5leHBvcnRzLndoaXRlTGlzdCA9IGdldERlZmF1bHRXaGl0ZUxpc3QoKTtcbmV4cG9ydHMuZ2V0RGVmYXVsdFdoaXRlTGlzdCA9IGdldERlZmF1bHRXaGl0ZUxpc3Q7XG5leHBvcnRzLm9uVGFnID0gb25UYWc7XG5leHBvcnRzLm9uSWdub3JlVGFnID0gb25JZ25vcmVUYWc7XG5leHBvcnRzLm9uVGFnQXR0ciA9IG9uVGFnQXR0cjtcbmV4cG9ydHMub25JZ25vcmVUYWdBdHRyID0gb25JZ25vcmVUYWdBdHRyO1xuZXhwb3J0cy5zYWZlQXR0clZhbHVlID0gc2FmZUF0dHJWYWx1ZTtcbmV4cG9ydHMuZXNjYXBlSHRtbCA9IGVzY2FwZUh0bWw7XG5leHBvcnRzLmVzY2FwZVF1b3RlID0gZXNjYXBlUXVvdGU7XG5leHBvcnRzLnVuZXNjYXBlUXVvdGUgPSB1bmVzY2FwZVF1b3RlO1xuZXhwb3J0cy5lc2NhcGVIdG1sRW50aXRpZXMgPSBlc2NhcGVIdG1sRW50aXRpZXM7XG5leHBvcnRzLmVzY2FwZURhbmdlckh0bWw1RW50aXRpZXMgPSBlc2NhcGVEYW5nZXJIdG1sNUVudGl0aWVzO1xuZXhwb3J0cy5jbGVhck5vblByaW50YWJsZUNoYXJhY3RlciA9IGNsZWFyTm9uUHJpbnRhYmxlQ2hhcmFjdGVyO1xuZXhwb3J0cy5mcmllbmRseUF0dHJWYWx1ZSA9IGZyaWVuZGx5QXR0clZhbHVlO1xuZXhwb3J0cy5lc2NhcGVBdHRyVmFsdWUgPSBlc2NhcGVBdHRyVmFsdWU7XG5leHBvcnRzLm9uSWdub3JlVGFnU3RyaXBBbGwgPSBvbklnbm9yZVRhZ1N0cmlwQWxsO1xuZXhwb3J0cy5TdHJpcFRhZ0JvZHkgPSBTdHJpcFRhZ0JvZHk7XG5leHBvcnRzLnN0cmlwQ29tbWVudFRhZyA9IHN0cmlwQ29tbWVudFRhZztcbmV4cG9ydHMuc3RyaXBCbGFua0NoYXIgPSBzdHJpcEJsYW5rQ2hhcjtcbmV4cG9ydHMuYXR0cmlidXRlV3JhcFNpZ24gPSAnXCInO1xuZXhwb3J0cy5jc3NGaWx0ZXIgPSBkZWZhdWx0Q1NTRmlsdGVyO1xuZXhwb3J0cy5nZXREZWZhdWx0Q1NTV2hpdGVMaXN0ID0gZ2V0RGVmYXVsdENTU1doaXRlTGlzdDtcbiIsIi8qKlxuICogeHNzXG4gKlxuICogQGF1dGhvciBab25nbWluIExlaTxsZWl6b25nbWluQGdtYWlsLmNvbT5cbiAqL1xuXG52YXIgREVGQVVMVCA9IHJlcXVpcmUoXCIuL2RlZmF1bHRcIik7XG52YXIgcGFyc2VyID0gcmVxdWlyZShcIi4vcGFyc2VyXCIpO1xudmFyIEZpbHRlclhTUyA9IHJlcXVpcmUoXCIuL3hzc1wiKTtcblxuLyoqXG4gKiBmaWx0ZXIgeHNzIGZ1bmN0aW9uXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGh0bWxcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIHsgd2hpdGVMaXN0LCBvblRhZywgb25UYWdBdHRyLCBvbklnbm9yZVRhZywgb25JZ25vcmVUYWdBdHRyLCBzYWZlQXR0clZhbHVlLCBlc2NhcGVIdG1sIH1cbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqL1xuZnVuY3Rpb24gZmlsdGVyWFNTKGh0bWwsIG9wdGlvbnMpIHtcbiAgdmFyIHhzcyA9IG5ldyBGaWx0ZXJYU1Mob3B0aW9ucyk7XG4gIHJldHVybiB4c3MucHJvY2VzcyhodG1sKTtcbn1cblxuZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gZmlsdGVyWFNTO1xuZXhwb3J0cy5maWx0ZXJYU1MgPSBmaWx0ZXJYU1M7XG5leHBvcnRzLkZpbHRlclhTUyA9IEZpbHRlclhTUztcblxuKGZ1bmN0aW9uICgpIHtcbiAgZm9yICh2YXIgaSBpbiBERUZBVUxUKSB7XG4gICAgZXhwb3J0c1tpXSA9IERFRkFVTFRbaV07XG4gIH1cbiAgZm9yICh2YXIgaiBpbiBwYXJzZXIpIHtcbiAgICBleHBvcnRzW2pdID0gcGFyc2VyW2pdO1xuICB9XG59KSgpO1xuXG4vLyB1c2luZyBgeHNzYCBvbiB0aGUgYnJvd3Nlciwgb3V0cHV0IGBmaWx0ZXJYU1NgIHRvIHRoZSBnbG9iYWxzXG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICB3aW5kb3cuZmlsdGVyWFNTID0gbW9kdWxlLmV4cG9ydHM7XG59XG5cbi8vIHVzaW5nIGB4c3NgIG9uIHRoZSBXZWJXb3JrZXIsIG91dHB1dCBgZmlsdGVyWFNTYCB0byB0aGUgZ2xvYmFsc1xuZnVuY3Rpb24gaXNXb3JrZXJFbnYoKSB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIHNlbGYgIT09IFwidW5kZWZpbmVkXCIgJiZcbiAgICB0eXBlb2YgRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUgIT09IFwidW5kZWZpbmVkXCIgJiZcbiAgICBzZWxmIGluc3RhbmNlb2YgRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVcbiAgKTtcbn1cbmlmIChpc1dvcmtlckVudigpKSB7XG4gIHNlbGYuZmlsdGVyWFNTID0gbW9kdWxlLmV4cG9ydHM7XG59XG4iLCIvKipcbiAqIFNpbXBsZSBIVE1MIFBhcnNlclxuICpcbiAqIEBhdXRob3IgWm9uZ21pbiBMZWk8bGVpem9uZ21pbkBnbWFpbC5jb20+XG4gKi9cblxudmFyIF8gPSByZXF1aXJlKFwiLi91dGlsXCIpO1xuXG4vKipcbiAqIGdldCB0YWcgbmFtZVxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBodG1sIGUuZy4gJzxhIGhlZj1cIiNcIj4nXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGdldFRhZ05hbWUoaHRtbCkge1xuICB2YXIgaSA9IF8uc3BhY2VJbmRleChodG1sKTtcbiAgdmFyIHRhZ05hbWU7XG4gIGlmIChpID09PSAtMSkge1xuICAgIHRhZ05hbWUgPSBodG1sLnNsaWNlKDEsIC0xKTtcbiAgfSBlbHNlIHtcbiAgICB0YWdOYW1lID0gaHRtbC5zbGljZSgxLCBpICsgMSk7XG4gIH1cbiAgdGFnTmFtZSA9IF8udHJpbSh0YWdOYW1lKS50b0xvd2VyQ2FzZSgpO1xuICBpZiAodGFnTmFtZS5zbGljZSgwLCAxKSA9PT0gXCIvXCIpIHRhZ05hbWUgPSB0YWdOYW1lLnNsaWNlKDEpO1xuICBpZiAodGFnTmFtZS5zbGljZSgtMSkgPT09IFwiL1wiKSB0YWdOYW1lID0gdGFnTmFtZS5zbGljZSgwLCAtMSk7XG4gIHJldHVybiB0YWdOYW1lO1xufVxuXG4vKipcbiAqIGlzIGNsb3NlIHRhZz9cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gaHRtbCDlpoLvvJonPGEgaGVmPVwiI1wiPidcbiAqIEByZXR1cm4ge0Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzQ2xvc2luZyhodG1sKSB7XG4gIHJldHVybiBodG1sLnNsaWNlKDAsIDIpID09PSBcIjwvXCI7XG59XG5cbi8qKlxuICogcGFyc2UgaW5wdXQgaHRtbCBhbmQgcmV0dXJucyBwcm9jZXNzZWQgaHRtbFxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBodG1sXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBvblRhZyBlLmcuIGZ1bmN0aW9uIChzb3VyY2VQb3NpdGlvbiwgcG9zaXRpb24sIHRhZywgaHRtbCwgaXNDbG9zaW5nKVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZXNjYXBlSHRtbFxuICogQHJldHVybiB7U3RyaW5nfVxuICovXG5mdW5jdGlvbiBwYXJzZVRhZyhodG1sLCBvblRhZywgZXNjYXBlSHRtbCkge1xuICBcInVzZSBzdHJpY3RcIjtcblxuICB2YXIgcmV0aHRtbCA9IFwiXCI7XG4gIHZhciBsYXN0UG9zID0gMDtcbiAgdmFyIHRhZ1N0YXJ0ID0gZmFsc2U7XG4gIHZhciBxdW90ZVN0YXJ0ID0gZmFsc2U7XG4gIHZhciBjdXJyZW50UG9zID0gMDtcbiAgdmFyIGxlbiA9IGh0bWwubGVuZ3RoO1xuICB2YXIgY3VycmVudFRhZ05hbWUgPSBcIlwiO1xuICB2YXIgY3VycmVudEh0bWwgPSBcIlwiO1xuXG4gIGNoYXJpdGVyYXRvcjogZm9yIChjdXJyZW50UG9zID0gMDsgY3VycmVudFBvcyA8IGxlbjsgY3VycmVudFBvcysrKSB7XG4gICAgdmFyIGMgPSBodG1sLmNoYXJBdChjdXJyZW50UG9zKTtcbiAgICBpZiAodGFnU3RhcnQgPT09IGZhbHNlKSB7XG4gICAgICBpZiAoYyA9PT0gXCI8XCIpIHtcbiAgICAgICAgdGFnU3RhcnQgPSBjdXJyZW50UG9zO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHF1b3RlU3RhcnQgPT09IGZhbHNlKSB7XG4gICAgICAgIGlmIChjID09PSBcIjxcIikge1xuICAgICAgICAgIHJldGh0bWwgKz0gZXNjYXBlSHRtbChodG1sLnNsaWNlKGxhc3RQb3MsIGN1cnJlbnRQb3MpKTtcbiAgICAgICAgICB0YWdTdGFydCA9IGN1cnJlbnRQb3M7XG4gICAgICAgICAgbGFzdFBvcyA9IGN1cnJlbnRQb3M7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGMgPT09IFwiPlwiIHx8IGN1cnJlbnRQb3MgPT09IGxlbiAtIDEpIHtcbiAgICAgICAgICByZXRodG1sICs9IGVzY2FwZUh0bWwoaHRtbC5zbGljZShsYXN0UG9zLCB0YWdTdGFydCkpO1xuICAgICAgICAgIGN1cnJlbnRIdG1sID0gaHRtbC5zbGljZSh0YWdTdGFydCwgY3VycmVudFBvcyArIDEpO1xuICAgICAgICAgIGN1cnJlbnRUYWdOYW1lID0gZ2V0VGFnTmFtZShjdXJyZW50SHRtbCk7XG4gICAgICAgICAgcmV0aHRtbCArPSBvblRhZyhcbiAgICAgICAgICAgIHRhZ1N0YXJ0LFxuICAgICAgICAgICAgcmV0aHRtbC5sZW5ndGgsXG4gICAgICAgICAgICBjdXJyZW50VGFnTmFtZSxcbiAgICAgICAgICAgIGN1cnJlbnRIdG1sLFxuICAgICAgICAgICAgaXNDbG9zaW5nKGN1cnJlbnRIdG1sKVxuICAgICAgICAgICk7XG4gICAgICAgICAgbGFzdFBvcyA9IGN1cnJlbnRQb3MgKyAxO1xuICAgICAgICAgIHRhZ1N0YXJ0ID0gZmFsc2U7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGMgPT09ICdcIicgfHwgYyA9PT0gXCInXCIpIHtcbiAgICAgICAgICB2YXIgaSA9IDE7XG4gICAgICAgICAgdmFyIGljID0gaHRtbC5jaGFyQXQoY3VycmVudFBvcyAtIGkpO1xuXG4gICAgICAgICAgd2hpbGUgKGljLnRyaW0oKSA9PT0gXCJcIiB8fCBpYyA9PT0gXCI9XCIpIHtcbiAgICAgICAgICAgIGlmIChpYyA9PT0gXCI9XCIpIHtcbiAgICAgICAgICAgICAgcXVvdGVTdGFydCA9IGM7XG4gICAgICAgICAgICAgIGNvbnRpbnVlIGNoYXJpdGVyYXRvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGljID0gaHRtbC5jaGFyQXQoY3VycmVudFBvcyAtICsraSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoYyA9PT0gcXVvdGVTdGFydCkge1xuICAgICAgICAgIHF1b3RlU3RhcnQgPSBmYWxzZTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAobGFzdFBvcyA8IGxlbikge1xuICAgIHJldGh0bWwgKz0gZXNjYXBlSHRtbChodG1sLnN1YnN0cihsYXN0UG9zKSk7XG4gIH1cblxuICByZXR1cm4gcmV0aHRtbDtcbn1cblxudmFyIFJFR0VYUF9JTExFR0FMX0FUVFJfTkFNRSA9IC9bXmEtekEtWjAtOVxcXFxfOi4tXS9naW07XG5cbi8qKlxuICogcGFyc2UgaW5wdXQgYXR0cmlidXRlcyBhbmQgcmV0dXJucyBwcm9jZXNzZWQgYXR0cmlidXRlc1xuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBodG1sIGUuZy4gYGhyZWY9XCIjXCIgdGFyZ2V0PVwiX2JsYW5rXCJgXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBvbkF0dHIgZS5nLiBgZnVuY3Rpb24gKG5hbWUsIHZhbHVlKWBcbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqL1xuZnVuY3Rpb24gcGFyc2VBdHRyKGh0bWwsIG9uQXR0cikge1xuICBcInVzZSBzdHJpY3RcIjtcblxuICB2YXIgbGFzdFBvcyA9IDA7XG4gIHZhciBsYXN0TWFya1BvcyA9IDA7XG4gIHZhciByZXRBdHRycyA9IFtdO1xuICB2YXIgdG1wTmFtZSA9IGZhbHNlO1xuICB2YXIgbGVuID0gaHRtbC5sZW5ndGg7XG5cbiAgZnVuY3Rpb24gYWRkQXR0cihuYW1lLCB2YWx1ZSkge1xuICAgIG5hbWUgPSBfLnRyaW0obmFtZSk7XG4gICAgbmFtZSA9IG5hbWUucmVwbGFjZShSRUdFWFBfSUxMRUdBTF9BVFRSX05BTUUsIFwiXCIpLnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKG5hbWUubGVuZ3RoIDwgMSkgcmV0dXJuO1xuICAgIHZhciByZXQgPSBvbkF0dHIobmFtZSwgdmFsdWUgfHwgXCJcIik7XG4gICAgaWYgKHJldCkgcmV0QXR0cnMucHVzaChyZXQpO1xuICB9XG5cbiAgLy8g6YCQ5Liq5YiG5p6Q5a2X56ymXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgYyA9IGh0bWwuY2hhckF0KGkpO1xuICAgIHZhciB2LCBqO1xuICAgIGlmICh0bXBOYW1lID09PSBmYWxzZSAmJiBjID09PSBcIj1cIikge1xuICAgICAgdG1wTmFtZSA9IGh0bWwuc2xpY2UobGFzdFBvcywgaSk7XG4gICAgICBsYXN0UG9zID0gaSArIDE7XG4gICAgICBsYXN0TWFya1BvcyA9IGh0bWwuY2hhckF0KGxhc3RQb3MpID09PSAnXCInIHx8IGh0bWwuY2hhckF0KGxhc3RQb3MpID09PSBcIidcIiA/IGxhc3RQb3MgOiBmaW5kTmV4dFF1b3RhdGlvbk1hcmsoaHRtbCwgaSArIDEpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmICh0bXBOYW1lICE9PSBmYWxzZSkge1xuICAgICAgaWYgKFxuICAgICAgICBpID09PSBsYXN0TWFya1Bvc1xuICAgICAgKSB7XG4gICAgICAgIGogPSBodG1sLmluZGV4T2YoYywgaSArIDEpO1xuICAgICAgICBpZiAoaiA9PT0gLTEpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2ID0gXy50cmltKGh0bWwuc2xpY2UobGFzdE1hcmtQb3MgKyAxLCBqKSk7XG4gICAgICAgICAgYWRkQXR0cih0bXBOYW1lLCB2KTtcbiAgICAgICAgICB0bXBOYW1lID0gZmFsc2U7XG4gICAgICAgICAgaSA9IGo7XG4gICAgICAgICAgbGFzdFBvcyA9IGkgKyAxO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmICgvXFxzfFxcbnxcXHQvLnRlc3QoYykpIHtcbiAgICAgIGh0bWwgPSBodG1sLnJlcGxhY2UoL1xcc3xcXG58XFx0L2csIFwiIFwiKTtcbiAgICAgIGlmICh0bXBOYW1lID09PSBmYWxzZSkge1xuICAgICAgICBqID0gZmluZE5leHRFcXVhbChodG1sLCBpKTtcbiAgICAgICAgaWYgKGogPT09IC0xKSB7XG4gICAgICAgICAgdiA9IF8udHJpbShodG1sLnNsaWNlKGxhc3RQb3MsIGkpKTtcbiAgICAgICAgICBhZGRBdHRyKHYpO1xuICAgICAgICAgIHRtcE5hbWUgPSBmYWxzZTtcbiAgICAgICAgICBsYXN0UG9zID0gaSArIDE7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaSA9IGogLSAxO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBqID0gZmluZEJlZm9yZUVxdWFsKGh0bWwsIGkgLSAxKTtcbiAgICAgICAgaWYgKGogPT09IC0xKSB7XG4gICAgICAgICAgdiA9IF8udHJpbShodG1sLnNsaWNlKGxhc3RQb3MsIGkpKTtcbiAgICAgICAgICB2ID0gc3RyaXBRdW90ZVdyYXAodik7XG4gICAgICAgICAgYWRkQXR0cih0bXBOYW1lLCB2KTtcbiAgICAgICAgICB0bXBOYW1lID0gZmFsc2U7XG4gICAgICAgICAgbGFzdFBvcyA9IGkgKyAxO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGxhc3RQb3MgPCBodG1sLmxlbmd0aCkge1xuICAgIGlmICh0bXBOYW1lID09PSBmYWxzZSkge1xuICAgICAgYWRkQXR0cihodG1sLnNsaWNlKGxhc3RQb3MpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYWRkQXR0cih0bXBOYW1lLCBzdHJpcFF1b3RlV3JhcChfLnRyaW0oaHRtbC5zbGljZShsYXN0UG9zKSkpKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gXy50cmltKHJldEF0dHJzLmpvaW4oXCIgXCIpKTtcbn1cblxuZnVuY3Rpb24gZmluZE5leHRFcXVhbChzdHIsIGkpIHtcbiAgZm9yICg7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgYyA9IHN0cltpXTtcbiAgICBpZiAoYyA9PT0gXCIgXCIpIGNvbnRpbnVlO1xuICAgIGlmIChjID09PSBcIj1cIikgcmV0dXJuIGk7XG4gICAgcmV0dXJuIC0xO1xuICB9XG59XG5cbmZ1bmN0aW9uIGZpbmROZXh0UXVvdGF0aW9uTWFyayhzdHIsIGkpIHtcbiAgZm9yICg7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgYyA9IHN0cltpXTtcbiAgICBpZiAoYyA9PT0gXCIgXCIpIGNvbnRpbnVlO1xuICAgIGlmIChjID09PSBcIidcIiB8fCBjID09PSAnXCInKSByZXR1cm4gaTtcbiAgICByZXR1cm4gLTE7XG4gIH1cbn1cblxuZnVuY3Rpb24gZmluZEJlZm9yZUVxdWFsKHN0ciwgaSkge1xuICBmb3IgKDsgaSA+IDA7IGktLSkge1xuICAgIHZhciBjID0gc3RyW2ldO1xuICAgIGlmIChjID09PSBcIiBcIikgY29udGludWU7XG4gICAgaWYgKGMgPT09IFwiPVwiKSByZXR1cm4gaTtcbiAgICByZXR1cm4gLTE7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNRdW90ZVdyYXBTdHJpbmcodGV4dCkge1xuICBpZiAoXG4gICAgKHRleHRbMF0gPT09ICdcIicgJiYgdGV4dFt0ZXh0Lmxlbmd0aCAtIDFdID09PSAnXCInKSB8fFxuICAgICh0ZXh0WzBdID09PSBcIidcIiAmJiB0ZXh0W3RleHQubGVuZ3RoIC0gMV0gPT09IFwiJ1wiKVxuICApIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuZnVuY3Rpb24gc3RyaXBRdW90ZVdyYXAodGV4dCkge1xuICBpZiAoaXNRdW90ZVdyYXBTdHJpbmcodGV4dCkpIHtcbiAgICByZXR1cm4gdGV4dC5zdWJzdHIoMSwgdGV4dC5sZW5ndGggLSAyKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdGV4dDtcbiAgfVxufVxuXG5leHBvcnRzLnBhcnNlVGFnID0gcGFyc2VUYWc7XG5leHBvcnRzLnBhcnNlQXR0ciA9IHBhcnNlQXR0cjtcbiIsIm1vZHVsZS5leHBvcnRzID0ge1xuICBpbmRleE9mOiBmdW5jdGlvbiAoYXJyLCBpdGVtKSB7XG4gICAgdmFyIGksIGo7XG4gICAgaWYgKEFycmF5LnByb3RvdHlwZS5pbmRleE9mKSB7XG4gICAgICByZXR1cm4gYXJyLmluZGV4T2YoaXRlbSk7XG4gICAgfVxuICAgIGZvciAoaSA9IDAsIGogPSBhcnIubGVuZ3RoOyBpIDwgajsgaSsrKSB7XG4gICAgICBpZiAoYXJyW2ldID09PSBpdGVtKSB7XG4gICAgICAgIHJldHVybiBpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gLTE7XG4gIH0sXG4gIGZvckVhY2g6IGZ1bmN0aW9uIChhcnIsIGZuLCBzY29wZSkge1xuICAgIHZhciBpLCBqO1xuICAgIGlmIChBcnJheS5wcm90b3R5cGUuZm9yRWFjaCkge1xuICAgICAgcmV0dXJuIGFyci5mb3JFYWNoKGZuLCBzY29wZSk7XG4gICAgfVxuICAgIGZvciAoaSA9IDAsIGogPSBhcnIubGVuZ3RoOyBpIDwgajsgaSsrKSB7XG4gICAgICBmbi5jYWxsKHNjb3BlLCBhcnJbaV0sIGksIGFycik7XG4gICAgfVxuICB9LFxuICB0cmltOiBmdW5jdGlvbiAoc3RyKSB7XG4gICAgaWYgKFN0cmluZy5wcm90b3R5cGUudHJpbSkge1xuICAgICAgcmV0dXJuIHN0ci50cmltKCk7XG4gICAgfVxuICAgIHJldHVybiBzdHIucmVwbGFjZSgvKF5cXHMqKXwoXFxzKiQpL2csIFwiXCIpO1xuICB9LFxuICBzcGFjZUluZGV4OiBmdW5jdGlvbiAoc3RyKSB7XG4gICAgdmFyIHJlZyA9IC9cXHN8XFxufFxcdC87XG4gICAgdmFyIG1hdGNoID0gcmVnLmV4ZWMoc3RyKTtcbiAgICByZXR1cm4gbWF0Y2ggPyBtYXRjaC5pbmRleCA6IC0xO1xuICB9LFxufTtcbiIsIi8qKlxuICogZmlsdGVyIHhzc1xuICpcbiAqIEBhdXRob3IgWm9uZ21pbiBMZWk8bGVpem9uZ21pbkBnbWFpbC5jb20+XG4gKi9cblxudmFyIEZpbHRlckNTUyA9IHJlcXVpcmUoXCJjc3NmaWx0ZXJcIikuRmlsdGVyQ1NTO1xudmFyIERFRkFVTFQgPSByZXF1aXJlKFwiLi9kZWZhdWx0XCIpO1xudmFyIHBhcnNlciA9IHJlcXVpcmUoXCIuL3BhcnNlclwiKTtcbnZhciBwYXJzZVRhZyA9IHBhcnNlci5wYXJzZVRhZztcbnZhciBwYXJzZUF0dHIgPSBwYXJzZXIucGFyc2VBdHRyO1xudmFyIF8gPSByZXF1aXJlKFwiLi91dGlsXCIpO1xuXG4vKipcbiAqIHJldHVybnMgYHRydWVgIGlmIHRoZSBpbnB1dCB2YWx1ZSBpcyBgdW5kZWZpbmVkYCBvciBgbnVsbGBcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqXG4gKiBAcmV0dXJuIHtCb29sZWFufVxuICovXG5mdW5jdGlvbiBpc051bGwob2JqKSB7XG4gIHJldHVybiBvYmogPT09IHVuZGVmaW5lZCB8fCBvYmogPT09IG51bGw7XG59XG5cbi8qKlxuICogZ2V0IGF0dHJpYnV0ZXMgZm9yIGEgdGFnXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGh0bWxcbiAqIEByZXR1cm4ge09iamVjdH1cbiAqICAgLSB7U3RyaW5nfSBodG1sXG4gKiAgIC0ge0Jvb2xlYW59IGNsb3NpbmdcbiAqL1xuZnVuY3Rpb24gZ2V0QXR0cnMoaHRtbCkge1xuICB2YXIgaSA9IF8uc3BhY2VJbmRleChodG1sKTtcbiAgaWYgKGkgPT09IC0xKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGh0bWw6IFwiXCIsXG4gICAgICBjbG9zaW5nOiBodG1sW2h0bWwubGVuZ3RoIC0gMl0gPT09IFwiL1wiLFxuICAgIH07XG4gIH1cbiAgaHRtbCA9IF8udHJpbShodG1sLnNsaWNlKGkgKyAxLCAtMSkpO1xuICB2YXIgaXNDbG9zaW5nID0gaHRtbFtodG1sLmxlbmd0aCAtIDFdID09PSBcIi9cIjtcbiAgaWYgKGlzQ2xvc2luZykgaHRtbCA9IF8udHJpbShodG1sLnNsaWNlKDAsIC0xKSk7XG4gIHJldHVybiB7XG4gICAgaHRtbDogaHRtbCxcbiAgICBjbG9zaW5nOiBpc0Nsb3NpbmcsXG4gIH07XG59XG5cbi8qKlxuICogc2hhbGxvdyBjb3B5XG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9ialxuICogQHJldHVybiB7T2JqZWN0fVxuICovXG5mdW5jdGlvbiBzaGFsbG93Q29weU9iamVjdChvYmopIHtcbiAgdmFyIHJldCA9IHt9O1xuICBmb3IgKHZhciBpIGluIG9iaikge1xuICAgIHJldFtpXSA9IG9ialtpXTtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuXG5mdW5jdGlvbiBrZXlzVG9Mb3dlckNhc2Uob2JqKSB7XG4gIHZhciByZXQgPSB7fTtcbiAgZm9yICh2YXIgaSBpbiBvYmopIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShvYmpbaV0pKSB7XG4gICAgICByZXRbaS50b0xvd2VyQ2FzZSgpXSA9IG9ialtpXS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0udG9Mb3dlckNhc2UoKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXRbaS50b0xvd2VyQ2FzZSgpXSA9IG9ialtpXTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cblxuLyoqXG4gKiBGaWx0ZXJYU1MgY2xhc3NcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuICogICAgICAgIHdoaXRlTGlzdCAob3IgYWxsb3dMaXN0KSwgb25UYWcsIG9uVGFnQXR0ciwgb25JZ25vcmVUYWcsXG4gKiAgICAgICAgb25JZ25vcmVUYWdBdHRyLCBzYWZlQXR0clZhbHVlLCBlc2NhcGVIdG1sXG4gKiAgICAgICAgc3RyaXBJZ25vcmVUYWdCb2R5LCBhbGxvd0NvbW1lbnRUYWcsIHN0cmlwQmxhbmtDaGFyXG4gKiAgICAgICAgY3Nze3doaXRlTGlzdCwgb25BdHRyLCBvbklnbm9yZUF0dHJ9IGBjc3M9ZmFsc2VgIG1lYW5zIGRvbid0IHVzZSBgY3NzZmlsdGVyYFxuICovXG5mdW5jdGlvbiBGaWx0ZXJYU1Mob3B0aW9ucykge1xuICBvcHRpb25zID0gc2hhbGxvd0NvcHlPYmplY3Qob3B0aW9ucyB8fCB7fSk7XG5cbiAgaWYgKG9wdGlvbnMuc3RyaXBJZ25vcmVUYWcpIHtcbiAgICBpZiAob3B0aW9ucy5vbklnbm9yZVRhZykge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgJ05vdGVzOiBjYW5ub3QgdXNlIHRoZXNlIHR3byBvcHRpb25zIFwic3RyaXBJZ25vcmVUYWdcIiBhbmQgXCJvbklnbm9yZVRhZ1wiIGF0IHRoZSBzYW1lIHRpbWUnXG4gICAgICApO1xuICAgIH1cbiAgICBvcHRpb25zLm9uSWdub3JlVGFnID0gREVGQVVMVC5vbklnbm9yZVRhZ1N0cmlwQWxsO1xuICB9XG4gIGlmIChvcHRpb25zLndoaXRlTGlzdCB8fCBvcHRpb25zLmFsbG93TGlzdCkge1xuICAgIG9wdGlvbnMud2hpdGVMaXN0ID0ga2V5c1RvTG93ZXJDYXNlKG9wdGlvbnMud2hpdGVMaXN0IHx8IG9wdGlvbnMuYWxsb3dMaXN0KTtcbiAgfSBlbHNlIHtcbiAgICBvcHRpb25zLndoaXRlTGlzdCA9IERFRkFVTFQud2hpdGVMaXN0O1xuICB9XG5cbiAgdGhpcy5hdHRyaWJ1dGVXcmFwU2lnbiA9IG9wdGlvbnMuc2luZ2xlUXVvdGVkQXR0cmlidXRlVmFsdWUgPT09IHRydWUgPyBcIidcIiA6IERFRkFVTFQuYXR0cmlidXRlV3JhcFNpZ247XG5cbiAgb3B0aW9ucy5vblRhZyA9IG9wdGlvbnMub25UYWcgfHwgREVGQVVMVC5vblRhZztcbiAgb3B0aW9ucy5vblRhZ0F0dHIgPSBvcHRpb25zLm9uVGFnQXR0ciB8fCBERUZBVUxULm9uVGFnQXR0cjtcbiAgb3B0aW9ucy5vbklnbm9yZVRhZyA9IG9wdGlvbnMub25JZ25vcmVUYWcgfHwgREVGQVVMVC5vbklnbm9yZVRhZztcbiAgb3B0aW9ucy5vbklnbm9yZVRhZ0F0dHIgPSBvcHRpb25zLm9uSWdub3JlVGFnQXR0ciB8fCBERUZBVUxULm9uSWdub3JlVGFnQXR0cjtcbiAgb3B0aW9ucy5zYWZlQXR0clZhbHVlID0gb3B0aW9ucy5zYWZlQXR0clZhbHVlIHx8IERFRkFVTFQuc2FmZUF0dHJWYWx1ZTtcbiAgb3B0aW9ucy5lc2NhcGVIdG1sID0gb3B0aW9ucy5lc2NhcGVIdG1sIHx8IERFRkFVTFQuZXNjYXBlSHRtbDtcbiAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcblxuICBpZiAob3B0aW9ucy5jc3MgPT09IGZhbHNlKSB7XG4gICAgdGhpcy5jc3NGaWx0ZXIgPSBmYWxzZTtcbiAgfSBlbHNlIHtcbiAgICBvcHRpb25zLmNzcyA9IG9wdGlvbnMuY3NzIHx8IHt9O1xuICAgIHRoaXMuY3NzRmlsdGVyID0gbmV3IEZpbHRlckNTUyhvcHRpb25zLmNzcyk7XG4gIH1cbn1cblxuLyoqXG4gKiBzdGFydCBwcm9jZXNzIGFuZCByZXR1cm5zIHJlc3VsdFxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBodG1sXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKi9cbkZpbHRlclhTUy5wcm90b3R5cGUucHJvY2VzcyA9IGZ1bmN0aW9uIChodG1sKSB7XG4gIC8vIGNvbXBhdGlibGUgd2l0aCB0aGUgaW5wdXRcbiAgaHRtbCA9IGh0bWwgfHwgXCJcIjtcbiAgaHRtbCA9IGh0bWwudG9TdHJpbmcoKTtcbiAgaWYgKCFodG1sKSByZXR1cm4gXCJcIjtcblxuICB2YXIgbWUgPSB0aGlzO1xuICB2YXIgb3B0aW9ucyA9IG1lLm9wdGlvbnM7XG4gIHZhciB3aGl0ZUxpc3QgPSBvcHRpb25zLndoaXRlTGlzdDtcbiAgdmFyIG9uVGFnID0gb3B0aW9ucy5vblRhZztcbiAgdmFyIG9uSWdub3JlVGFnID0gb3B0aW9ucy5vbklnbm9yZVRhZztcbiAgdmFyIG9uVGFnQXR0ciA9IG9wdGlvbnMub25UYWdBdHRyO1xuICB2YXIgb25JZ25vcmVUYWdBdHRyID0gb3B0aW9ucy5vbklnbm9yZVRhZ0F0dHI7XG4gIHZhciBzYWZlQXR0clZhbHVlID0gb3B0aW9ucy5zYWZlQXR0clZhbHVlO1xuICB2YXIgZXNjYXBlSHRtbCA9IG9wdGlvbnMuZXNjYXBlSHRtbDtcbiAgdmFyIGF0dHJpYnV0ZVdyYXBTaWduID0gbWUuYXR0cmlidXRlV3JhcFNpZ247XG4gIHZhciBjc3NGaWx0ZXIgPSBtZS5jc3NGaWx0ZXI7XG5cbiAgLy8gcmVtb3ZlIGludmlzaWJsZSBjaGFyYWN0ZXJzXG4gIGlmIChvcHRpb25zLnN0cmlwQmxhbmtDaGFyKSB7XG4gICAgaHRtbCA9IERFRkFVTFQuc3RyaXBCbGFua0NoYXIoaHRtbCk7XG4gIH1cblxuICAvLyByZW1vdmUgaHRtbCBjb21tZW50c1xuICBpZiAoIW9wdGlvbnMuYWxsb3dDb21tZW50VGFnKSB7XG4gICAgaHRtbCA9IERFRkFVTFQuc3RyaXBDb21tZW50VGFnKGh0bWwpO1xuICB9XG5cbiAgLy8gaWYgZW5hYmxlIHN0cmlwSWdub3JlVGFnQm9keVxuICB2YXIgc3RyaXBJZ25vcmVUYWdCb2R5ID0gZmFsc2U7XG4gIGlmIChvcHRpb25zLnN0cmlwSWdub3JlVGFnQm9keSkge1xuICAgIHN0cmlwSWdub3JlVGFnQm9keSA9IERFRkFVTFQuU3RyaXBUYWdCb2R5KFxuICAgICAgb3B0aW9ucy5zdHJpcElnbm9yZVRhZ0JvZHksXG4gICAgICBvbklnbm9yZVRhZ1xuICAgICk7XG4gICAgb25JZ25vcmVUYWcgPSBzdHJpcElnbm9yZVRhZ0JvZHkub25JZ25vcmVUYWc7XG4gIH1cblxuICB2YXIgcmV0SHRtbCA9IHBhcnNlVGFnKFxuICAgIGh0bWwsXG4gICAgZnVuY3Rpb24gKHNvdXJjZVBvc2l0aW9uLCBwb3NpdGlvbiwgdGFnLCBodG1sLCBpc0Nsb3NpbmcpIHtcbiAgICAgIHZhciBpbmZvID0ge1xuICAgICAgICBzb3VyY2VQb3NpdGlvbjogc291cmNlUG9zaXRpb24sXG4gICAgICAgIHBvc2l0aW9uOiBwb3NpdGlvbixcbiAgICAgICAgaXNDbG9zaW5nOiBpc0Nsb3NpbmcsXG4gICAgICAgIGlzV2hpdGU6IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh3aGl0ZUxpc3QsIHRhZyksXG4gICAgICB9O1xuXG4gICAgICAvLyBjYWxsIGBvblRhZygpYFxuICAgICAgdmFyIHJldCA9IG9uVGFnKHRhZywgaHRtbCwgaW5mbyk7XG4gICAgICBpZiAoIWlzTnVsbChyZXQpKSByZXR1cm4gcmV0O1xuXG4gICAgICBpZiAoaW5mby5pc1doaXRlKSB7XG4gICAgICAgIGlmIChpbmZvLmlzQ2xvc2luZykge1xuICAgICAgICAgIHJldHVybiBcIjwvXCIgKyB0YWcgKyBcIj5cIjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBhdHRycyA9IGdldEF0dHJzKGh0bWwpO1xuICAgICAgICB2YXIgd2hpdGVBdHRyTGlzdCA9IHdoaXRlTGlzdFt0YWddO1xuICAgICAgICB2YXIgYXR0cnNIdG1sID0gcGFyc2VBdHRyKGF0dHJzLmh0bWwsIGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSkge1xuICAgICAgICAgIC8vIGNhbGwgYG9uVGFnQXR0cigpYFxuICAgICAgICAgIHZhciBpc1doaXRlQXR0ciA9IF8uaW5kZXhPZih3aGl0ZUF0dHJMaXN0LCBuYW1lKSAhPT0gLTE7XG4gICAgICAgICAgdmFyIHJldCA9IG9uVGFnQXR0cih0YWcsIG5hbWUsIHZhbHVlLCBpc1doaXRlQXR0cik7XG4gICAgICAgICAgaWYgKCFpc051bGwocmV0KSkgcmV0dXJuIHJldDtcblxuICAgICAgICAgIGlmIChpc1doaXRlQXR0cikge1xuICAgICAgICAgICAgLy8gY2FsbCBgc2FmZUF0dHJWYWx1ZSgpYFxuICAgICAgICAgICAgdmFsdWUgPSBzYWZlQXR0clZhbHVlKHRhZywgbmFtZSwgdmFsdWUsIGNzc0ZpbHRlcik7XG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG5hbWUgKyAnPScgKyBhdHRyaWJ1dGVXcmFwU2lnbiArIHZhbHVlICsgYXR0cmlidXRlV3JhcFNpZ247XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gbmFtZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gY2FsbCBgb25JZ25vcmVUYWdBdHRyKClgXG4gICAgICAgICAgICByZXQgPSBvbklnbm9yZVRhZ0F0dHIodGFnLCBuYW1lLCB2YWx1ZSwgaXNXaGl0ZUF0dHIpO1xuICAgICAgICAgICAgaWYgKCFpc051bGwocmV0KSkgcmV0dXJuIHJldDtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIGJ1aWxkIG5ldyB0YWcgaHRtbFxuICAgICAgICBodG1sID0gXCI8XCIgKyB0YWc7XG4gICAgICAgIGlmIChhdHRyc0h0bWwpIGh0bWwgKz0gXCIgXCIgKyBhdHRyc0h0bWw7XG4gICAgICAgIGlmIChhdHRycy5jbG9zaW5nKSBodG1sICs9IFwiIC9cIjtcbiAgICAgICAgaHRtbCArPSBcIj5cIjtcbiAgICAgICAgcmV0dXJuIGh0bWw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBjYWxsIGBvbklnbm9yZVRhZygpYFxuICAgICAgICByZXQgPSBvbklnbm9yZVRhZyh0YWcsIGh0bWwsIGluZm8pO1xuICAgICAgICBpZiAoIWlzTnVsbChyZXQpKSByZXR1cm4gcmV0O1xuICAgICAgICByZXR1cm4gZXNjYXBlSHRtbChodG1sKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGVzY2FwZUh0bWxcbiAgKTtcblxuICAvLyBpZiBlbmFibGUgc3RyaXBJZ25vcmVUYWdCb2R5XG4gIGlmIChzdHJpcElnbm9yZVRhZ0JvZHkpIHtcbiAgICByZXRIdG1sID0gc3RyaXBJZ25vcmVUYWdCb2R5LnJlbW92ZShyZXRIdG1sKTtcbiAgfVxuXG4gIHJldHVybiByZXRIdG1sO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBGaWx0ZXJYU1M7XG4iLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwibGV0IHhzcyA9IHJlcXVpcmUoXCJ4c3NcIik7XG52YXIgc2J5X2pzX2V4aXN0cyA9ICh0eXBlb2Ygc2J5X2pzX2V4aXN0cyAhPT0gJ3VuZGVmaW5lZCcpID8gdHJ1ZSA6IGZhbHNlO1xuXG5pZighc2J5X2pzX2V4aXN0cykge1xuXG4gICAgLyoqXG4gICAgICogU2FuaXRpemUgc3RyaW5nIGJ5IGVzY2FwaW5nIEhUTUwgZW50aXRpZXNcbiAgICAgKiBAcGFyYW0gaW5wdXRcbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNieUVuY29kZUlucHV0KGlucHV0KSAge1xuICAgICAgICByZXR1cm4geHNzKGlucHV0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzYnlBZGRJbWdMaXF1aWQoKSB7XG4gICAgICAgIC8qISBpbWdMaXF1aWQgdjAuOS45NDQgLyAwMy0wNS0yMDEzIGh0dHBzOi8vZ2l0aHViLmNvbS9rYXJhY2FzL2ltZ0xpcXVpZCAqL1xuICAgICAgICB2YXIgc2J5X2ltZ0xpcXVpZCA9IHNieV9pbWdMaXF1aWQgfHwge1ZFUjogXCIwLjkuOTQ0XCJ9O1xuICAgICAgICBzYnlfaW1nTGlxdWlkLmJnc19BdmFpbGFibGUgPSAhMSwgc2J5X2ltZ0xpcXVpZC5iZ3NfQ2hlY2tSdW5uZWQgPSAhMSwgZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uIHQoKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFzYnlfaW1nTGlxdWlkLmJnc19DaGVja1J1bm5lZCkge1xuICAgICAgICAgICAgICAgICAgICBzYnlfaW1nTGlxdWlkLmJnc19DaGVja1J1bm5lZCA9ICEwO1xuICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGkoJzxzcGFuIHN0eWxlPVwiYmFja2dyb3VuZC1zaXplOmNvdmVyXCIgLz4nKTtcbiAgICAgICAgICAgICAgICAgICAgaShcImJvZHlcIikuYXBwZW5kKHQpLCAhZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB0WzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgJiYgd2luZG93LmdldENvbXB1dGVkU3R5bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGksIG51bGwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgJiYgZS5iYWNrZ3JvdW5kU2l6ZSAmJiAoc2J5X2ltZ0xpcXVpZC5iZ3NfQXZhaWxhYmxlID0gXCJjb3ZlclwiID09PSBlLmJhY2tncm91bmRTaXplKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KCksIHQucmVtb3ZlKClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGkuZm4uZXh0ZW5kKHtcbiAgICAgICAgICAgICAgICBzYnlfaW1nTGlxdWlkOiBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlZmF1bHRzID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbDogITAsXG4gICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0aWNhbEFsaWduOiBcImNlbnRlclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG9yaXpvbnRhbEFsaWduOiBcImNlbnRlclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXNlQmFja2dyb3VuZFNpemU6ICEwLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXNlRGF0YUh0bWxBdHRyOiAhMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNpdmU6ICEwLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVsYXk6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBmYWRlSW5UaW1lOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQm94QmFja2dyb3VuZDogITAsXG4gICAgICAgICAgICAgICAgICAgICAgICBoYXJkUGl4ZWxzOiAhMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNpdmVDaGVja1RpbWU6IDUwMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVjaGVja3Zpc2liaWxpdHk6IDUwMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uU3RhcnQ6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkZpbmlzaDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uSXRlbVN0YXJ0OiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgb25JdGVtRmluaXNoOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgb25JdGVtRXJyb3I6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgfSwgdCgpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMgPSBlLCB0aGlzLnNldHRpbmdzID0gaS5leHRlbmQoe30sIHRoaXMuZGVmYXVsdHMsIHRoaXMub3B0aW9ucyksIHRoaXMuc2V0dGluZ3Mub25TdGFydCAmJiB0aGlzLnNldHRpbmdzLm9uU3RhcnQoKSwgdGhpcy5lYWNoKGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBlKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xID09PSB1LmNzcyhcImJhY2tncm91bmQtaW1hZ2VcIikuaW5kZXhPZihlbmNvZGVVUkkoYy5hdHRyKFwic3JjXCIpKSkgJiYgdS5jc3Moe1wiYmFja2dyb3VuZC1pbWFnZVwiOiAndXJsKFwiJyArIGVuY29kZVVSSShjLmF0dHIoXCJzcmNcIikpICsgJ1wiKSd9KSwgdS5jc3Moe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImJhY2tncm91bmQtc2l6ZVwiOiBnLmZpbGwgPyBcImNvdmVyXCIgOiBcImNvbnRhaW5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJiYWNrZ3JvdW5kLXBvc2l0aW9uXCI6IChnLmhvcml6b250YWxBbGlnbiArIFwiIFwiICsgZy52ZXJ0aWNhbEFsaWduKS50b0xvd2VyQ2FzZSgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImJhY2tncm91bmQtcmVwZWF0XCI6IFwibm8tcmVwZWF0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgaShcImE6Zmlyc3RcIiwgdSkuY3NzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogXCJibG9ja1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogXCIxMDAlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogXCIxMDAlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgaShcImltZ1wiLCB1KS5jc3Moe2Rpc3BsYXk6IFwibm9uZVwifSksIGcub25JdGVtRmluaXNoICYmIGcub25JdGVtRmluaXNoKHQsIHUsIGMpLCB1LmFkZENsYXNzKFwic2J5X2ltZ0xpcXVpZF9iZ1NpemVcIiksIHUuYWRkQ2xhc3MoXCJzYnlfaW1nTGlxdWlkX3JlYWR5XCIpLCBsKClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gbygpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBlKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmRhdGEoXCJzYnlfaW1nTGlxdWlkX2Vycm9yXCIpIHx8IGMuZGF0YShcInNieV9pbWdMaXF1aWRfbG9hZGVkXCIpIHx8IGMuZGF0YShcInNieV9pbWdMaXF1aWRfb2xkUHJvY2Vzc2VkXCIpIHx8ICh1LmlzKFwiOnZpc2libGVcIikgJiYgY1swXS5jb21wbGV0ZSAmJiBjWzBdLndpZHRoID4gMCAmJiBjWzBdLmhlaWdodCA+IDAgPyAoYy5kYXRhKFwic2J5X2ltZ0xpcXVpZF9sb2FkZWRcIiwgITApLCBzZXRUaW1lb3V0KHIsIHQgKiBnLmRlbGF5KSkgOiBzZXRUaW1lb3V0KGUsIGcudGltZWNoZWNrdmlzaWJpbGl0eSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMuZGF0YShcIm9sZFNyY1wiKSAmJiBjLmRhdGEoXCJvbGRTcmNcIikgIT09IGMuYXR0cihcInNyY1wiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGMuY2xvbmUoKS5yZW1vdmVBdHRyKFwic3R5bGVcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhLmRhdGEoXCJzYnlfaW1nTGlxdWlkX3NldHRpbmdzXCIsIGMuZGF0YShcInNieV9pbWdMaXF1aWRfc2V0dGluZ3NcIikpLCBjLnBhcmVudCgpLnByZXBlbmQoYSksIGMucmVtb3ZlKCksIGMgPSBhLCBjWzBdLndpZHRoID0gMCwgdm9pZCBzZXRUaW1lb3V0KG8sIDEwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYy5kYXRhKFwic2J5X2ltZ0xpcXVpZF9vbGRQcm9jZXNzZWRcIikgPyB2b2lkIHIoKSA6IChjLmRhdGEoXCJzYnlfaW1nTGlxdWlkX29sZFByb2Nlc3NlZFwiLCAhMSksIGMuZGF0YShcIm9sZFNyY1wiLCBjLmF0dHIoXCJzcmNcIikpLCBpKFwiaW1nOm5vdCg6Zmlyc3QpXCIsIHUpLmNzcyhcImRpc3BsYXlcIiwgXCJub25lXCIpLCB1LmNzcyh7b3ZlcmZsb3c6IFwiaGlkZGVuXCJ9KSwgYy5mYWRlVG8oMCwgMCkucmVtb3ZlQXR0cihcIndpZHRoXCIpLnJlbW92ZUF0dHIoXCJoZWlnaHRcIikuY3NzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJpbGl0eTogXCJ2aXNpYmxlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibWF4LXdpZHRoXCI6IFwibm9uZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1heC1oZWlnaHRcIjogXCJub25lXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBcImF1dG9cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBcImF1dG9cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogXCJibG9ja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIGMub24oXCJlcnJvclwiLCBuKSwgY1swXS5vbmVycm9yID0gbiwgZSgpLCB2b2lkIGQoKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZCgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZy5yZXNwb25zaXZlIHx8IGMuZGF0YShcInNieV9pbWdMaXF1aWRfb2xkUHJvY2Vzc2VkXCIpKSAmJiBjLmRhdGEoXCJzYnlfaW1nTGlxdWlkX3NldHRpbmdzXCIpICYmIChnID0gYy5kYXRhKFwic2J5X2ltZ0xpcXVpZF9zZXR0aW5nc1wiKSwgdS5hY3R1YWxTaXplID0gdS5nZXQoMCkub2Zmc2V0V2lkdGggKyB1LmdldCgwKS5vZmZzZXRIZWlnaHQgLyAxZTQsIHUuc2l6ZU9sZCAmJiB1LmFjdHVhbFNpemUgIT09IHUuc2l6ZU9sZCAmJiByKCksIHUuc2l6ZU9sZCA9IHUuYWN0dWFsU2l6ZSwgc2V0VGltZW91dChkLCBnLnJlc3BvbnNpdmVDaGVja1RpbWUpKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBuKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZGF0YShcInNieV9pbWdMaXF1aWRfZXJyb3JcIiwgITApLCB1LmFkZENsYXNzKFwic2J5X2ltZ0xpcXVpZF9lcnJvclwiKSwgZy5vbkl0ZW1FcnJvciAmJiBnLm9uSXRlbUVycm9yKHQsIHUsIGMpLCBsKClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gcygpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhLnNldHRpbmdzLnVzZURhdGFIdG1sQXR0cikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHUuYXR0cihcImRhdGEtc2J5X2ltZ0xpcXVpZC1maWxsXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB1LmF0dHIoXCJkYXRhLXNieV9pbWdMaXF1aWQtaG9yaXpvbnRhbEFsaWduXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB1LmF0dHIoXCJkYXRhLXNieV9pbWdMaXF1aWQtdmVydGljYWxBbGlnblwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFwidHJ1ZVwiID09PSB0IHx8IFwiZmFsc2VcIiA9PT0gdCkgJiYgKGkuZmlsbCA9IEJvb2xlYW4oXCJ0cnVlXCIgPT09IHQpKSwgdm9pZCAwID09PSBlIHx8IFwibGVmdFwiICE9PSBlICYmIFwiY2VudGVyXCIgIT09IGUgJiYgXCJyaWdodFwiICE9PSBlICYmIC0xID09PSBlLmluZGV4T2YoXCIlXCIpIHx8IChpLmhvcml6b250YWxBbGlnbiA9IGUpLCB2b2lkIDAgPT09IG8gfHwgXCJ0b3BcIiAhPT0gbyAmJiBcImJvdHRvbVwiICE9PSBvICYmIFwiY2VudGVyXCIgIT09IG8gJiYgLTEgPT09IG8uaW5kZXhPZihcIiVcIikgfHwgKGkudmVydGljYWxBbGlnbiA9IG8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzYnlfaW1nTGlxdWlkLmlzSUUgJiYgYS5zZXR0aW5ncy5pZUZhZGVJbkRpc2FibGVkICYmIChpLmZhZGVJblRpbWUgPSAwKSwgaVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiByKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpLCBlLCBhLCBvLCBkLCBuLCBzLCByLCBtID0gMCwgaCA9IDAsIGYgPSB1LndpZHRoKCksIHYgPSB1LmhlaWdodCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgMCA9PT0gYy5kYXRhKFwib3dpZHRoXCIpICYmIGMuZGF0YShcIm93aWR0aFwiLCBjWzBdLndpZHRoKSwgdm9pZCAwID09PSBjLmRhdGEoXCJvaGVpZ2h0XCIpICYmIGMuZGF0YShcIm9oZWlnaHRcIiwgY1swXS5oZWlnaHQpLCBnLmZpbGwgPT09IGYgLyB2ID49IGMuZGF0YShcIm93aWR0aFwiKSAvIGMuZGF0YShcIm9oZWlnaHRcIikgPyAoaSA9IFwiMTAwJVwiLCBlID0gXCJhdXRvXCIsIGEgPSBNYXRoLmZsb29yKGYpLCBvID0gTWF0aC5mbG9vcihmICogKGMuZGF0YShcIm9oZWlnaHRcIikgLyBjLmRhdGEoXCJvd2lkdGhcIikpKSkgOiAoaSA9IFwiYXV0b1wiLCBlID0gXCIxMDAlXCIsIGEgPSBNYXRoLmZsb29yKHYgKiAoYy5kYXRhKFwib3dpZHRoXCIpIC8gYy5kYXRhKFwib2hlaWdodFwiKSkpLCBvID0gTWF0aC5mbG9vcih2KSksIGQgPSBnLmhvcml6b250YWxBbGlnbi50b0xvd2VyQ2FzZSgpLCBzID0gZiAtIGEsIFwibGVmdFwiID09PSBkICYmIChoID0gMCksIFwiY2VudGVyXCIgPT09IGQgJiYgKGggPSAuNSAqIHMpLCBcInJpZ2h0XCIgPT09IGQgJiYgKGggPSBzKSwgLTEgIT09IGQuaW5kZXhPZihcIiVcIikgJiYgKGQgPSBwYXJzZUludChkLnJlcGxhY2UoXCIlXCIsIFwiXCIpLCAxMCksIGQgPiAwICYmIChoID0gcyAqIGQgKiAuMDEpKSwgbiA9IGcudmVydGljYWxBbGlnbi50b0xvd2VyQ2FzZSgpLCByID0gdiAtIG8sIFwibGVmdFwiID09PSBuICYmIChtID0gMCksIFwiY2VudGVyXCIgPT09IG4gJiYgKG0gPSAuNSAqIHIpLCBcImJvdHRvbVwiID09PSBuICYmIChtID0gciksIC0xICE9PSBuLmluZGV4T2YoXCIlXCIpICYmIChuID0gcGFyc2VJbnQobi5yZXBsYWNlKFwiJVwiLCBcIlwiKSwgMTApLCBuID4gMCAmJiAobSA9IHIgKiBuICogLjAxKSksIGcuaGFyZFBpeGVscyAmJiAoaSA9IGEsIGUgPSBvKSwgYy5jc3Moe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1hcmdpbi1sZWZ0XCI6IE1hdGguZmxvb3IoaCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibWFyZ2luLXRvcFwiOiBNYXRoLmZsb29yKG0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIGMuZGF0YShcInNieV9pbWdMaXF1aWRfb2xkUHJvY2Vzc2VkXCIpIHx8IChjLmZhZGVUbyhnLmZhZGVJblRpbWUsIDEpLCBjLmRhdGEoXCJzYnlfaW1nTGlxdWlkX29sZFByb2Nlc3NlZFwiLCAhMCksIGcucmVtb3ZlQm94QmFja2dyb3VuZCAmJiB1LmNzcyhcImJhY2tncm91bmQtaW1hZ2VcIiwgXCJub25lXCIpLCB1LmFkZENsYXNzKFwic2J5X2ltZ0xpcXVpZF9ub2JnU2l6ZVwiKSwgdS5hZGRDbGFzcyhcInNieV9pbWdMaXF1aWRfcmVhZHlcIikpLCBnLm9uSXRlbUZpbmlzaCAmJiBnLm9uSXRlbUZpbmlzaCh0LCB1LCBjKSwgbCgpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGwoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9PT0gYS5sZW5ndGggLSAxICYmIGEuc2V0dGluZ3Mub25GaW5pc2ggJiYgYS5zZXR0aW5ncy5vbkZpbmlzaCgpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBnID0gYS5zZXR0aW5ncywgdSA9IGkodGhpcyksIGMgPSBpKFwiaW1nOmZpcnN0XCIsIHUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGMubGVuZ3RoID8gKGMuZGF0YShcInNieV9pbWdMaXF1aWRfc2V0dGluZ3NcIikgPyAodS5yZW1vdmVDbGFzcyhcInNieV9pbWdMaXF1aWRfZXJyb3JcIikucmVtb3ZlQ2xhc3MoXCJzYnlfaW1nTGlxdWlkX3JlYWR5XCIpLCBnID0gaS5leHRlbmQoe30sIGMuZGF0YShcInNieV9pbWdMaXF1aWRfc2V0dGluZ3NcIiksIGEub3B0aW9ucykpIDogZyA9IGkuZXh0ZW5kKHt9LCBhLnNldHRpbmdzLCBzKCkpLCBjLmRhdGEoXCJzYnlfaW1nTGlxdWlkX3NldHRpbmdzXCIsIGcpLCBnLm9uSXRlbVN0YXJ0ICYmIGcub25JdGVtU3RhcnQodCwgdSwgYyksIHZvaWQgKHNieV9pbWdMaXF1aWQuYmdzX0F2YWlsYWJsZSAmJiBnLnVzZUJhY2tncm91bmRTaXplID8gZSgpIDogbygpKSkgOiB2b2lkIG4oKVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0oalF1ZXJ5KTtcblxuICAgICAgICAvLyBVc2UgaW1hZ2VmaWxsIHRvIHNldCB0aGUgaW1hZ2VzIGFzIGJhY2tncm91bmRzIHNvIHRoZXkgY2FuIGJlIHNxdWFyZVxuICAgICAgICAhZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGNzcyA9IHNieV9pbWdMaXF1aWQuaW5qZWN0Q3NzLFxuICAgICAgICAgICAgICBoZWFkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXSxcbiAgICAgICAgICAgICAgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICAgICAgICAgICAgc3R5bGUudHlwZSA9ICd0ZXh0L2Nzcyc7XG4gICAgICAgICAgICBpZiAoc3R5bGUuc3R5bGVTaGVldCkge1xuICAgICAgICAgICAgICAgIHN0eWxlLnN0eWxlU2hlZXQuY3NzVGV4dCA9IGNzcztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBoZWFkLmFwcGVuZENoaWxkKHN0eWxlKTtcbiAgICAgICAgfSgpO1xuICAgIH1cblxuICAgIC8qIEphdmFTY3JpcHQgTGlua2lmeSAtIHYwLjMgLSA2LzI3LzIwMDkgLSBodHRwOi8vYmVuYWxtYW4uY29tL3Byb2plY3RzL2phdmFzY3JpcHQtbGlua2lmeS8gKi9cbiAgICB3aW5kb3cuc2J5TGlua2lmeSA9IChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBrID0gXCJbYS16XFxcXGQuLV0rOi8vXCIsXG4gICAgICAgICAgaCA9IFwiKD86KD86WzAtOV18WzEtOV1cXFxcZHwxXFxcXGR7Mn18MlswLTRdXFxcXGR8MjVbMC01XSlcXFxcLil7M30oPzpbMC05XXxbMS05XVxcXFxkfDFcXFxcZHsyfXwyWzAtNF1cXFxcZHwyNVswLTVdKVwiLFxuICAgICAgICAgIGMgPSBcIig/Oig/OlteXFxcXHMhQCMkJV4mKigpXz0rW1xcXFxde31cXFxcXFxcXHw7OidcXFwiLC48Pi8/XSspXFxcXC4pK1wiLFxuICAgICAgICAgIG4gPSBcIig/OmFjfGFkfGFlcm98YWV8YWZ8YWd8YWl8YWx8YW18YW58YW98YXF8YXJwYXxhcnxhc2lhfGFzfGF0fGF1fGF3fGF4fGF6fGJhfGJifGJkfGJlfGJmfGJnfGJofGJpenxiaXxianxibXxibnxib3xicnxic3xidHxidnxid3xieXxienxjYXR8Y2F8Y2N8Y2R8Y2Z8Y2d8Y2h8Y2l8Y2t8Y2x8Y218Y258Y29vcHxjb218Y298Y3J8Y3V8Y3Z8Y3h8Y3l8Y3p8ZGV8ZGp8ZGt8ZG18ZG98ZHp8ZWN8ZWR1fGVlfGVnfGVyfGVzfGV0fGV1fGZpfGZqfGZrfGZtfGZvfGZyfGdhfGdifGdkfGdlfGdmfGdnfGdofGdpfGdsfGdtfGdufGdvdnxncHxncXxncnxnc3xndHxndXxnd3xneXxoa3xobXxobnxocnxodHxodXxpZHxpZXxpbHxpbXxpbmZvfGludHxpbnxpb3xpcXxpcnxpc3xpdHxqZXxqbXxqb2JzfGpvfGpwfGtlfGtnfGtofGtpfGttfGtufGtwfGtyfGt3fGt5fGt6fGxhfGxifGxjfGxpfGxrfGxyfGxzfGx0fGx1fGx2fGx5fG1hfG1jfG1kfG1lfG1nfG1ofG1pbHxta3xtbHxtbXxtbnxtb2JpfG1vfG1wfG1xfG1yfG1zfG10fG11c2V1bXxtdXxtdnxtd3xteHxteXxtenxuYW1lfG5hfG5jfG5ldHxuZXxuZnxuZ3xuaXxubHxub3xucHxucnxudXxuenxvbXxvcmd8cGF8cGV8cGZ8cGd8cGh8cGt8cGx8cG18cG58cHJvfHByfHBzfHB0fHB3fHB5fHFhfHJlfHJvfHJzfHJ1fHJ3fHNhfHNifHNjfHNkfHNlfHNnfHNofHNpfHNqfHNrfHNsfHNtfHNufHNvfHNyfHN0fHN1fHN2fHN5fHN6fHRjfHRkfHRlbHx0Znx0Z3x0aHx0anx0a3x0bHx0bXx0bnx0b3x0cHx0cmF2ZWx8dHJ8dHR8dHZ8dHd8dHp8dWF8dWd8dWt8dW18dXN8dXl8dXp8dmF8dmN8dmV8dmd8dml8dm58dnV8d2Z8d3N8eG4tLTB6d201NmR8eG4tLTExYjViczNhOWFqNmd8eG4tLTgwYWtoYnlrbmo0Znx4bi0tOXQ0YjExeWk1YXx4bi0tZGViYTBhZHx4bi0tZzZ3MjUxZHx4bi0taGdiazZhajdmNTNiYmF8eG4tLWhsY2o2YXlhOWVzYzdhfHhuLS1qeGFscGRscHx4bi0ta2diZWNodHZ8eG4tLXpja3phaHx5ZXx5dHx5dXx6YXx6bXx6dylcIixcbiAgICAgICAgICBmID0gXCIoPzpcIiArIGMgKyBuICsgXCJ8XCIgKyBoICsgXCIpXCIsIG8gPSBcIig/Ols7L11bXiM/PD5cXFxcc10qKT9cIiwgZSA9IFwiKD86XFxcXD9bXiM8PlxcXFxzXSopPyg/OiNbXjw+XFxcXHNdKik/XCIsXG4gICAgICAgICAgZCA9IFwiXFxcXGJcIiArIGsgKyBcIltePD5cXFxcc10rXCIsIGEgPSBcIlxcXFxiXCIgKyBmICsgbyArIGUgKyBcIig/IVxcXFx3KVwiLCBtID0gXCJtYWlsdG86XCIsXG4gICAgICAgICAgaiA9IFwiKD86XCIgKyBtICsgXCIpP1thLXowLTkhIyQlJicqKy89P15fYHt8fX4tXSsoPzpcXFxcLlthLXowLTkhIyQlJicqKy89P15fYHt8fX4tXSspKkBcIiArIGYgKyBlICsgXCIoPyFcXFxcdylcIixcbiAgICAgICAgICBsID0gbmV3IFJlZ0V4cChcIig/OlwiICsgZCArIFwifFwiICsgYSArIFwifFwiICsgaiArIFwiKVwiLCBcImlnXCIpLCBnID0gbmV3IFJlZ0V4cChcIl5cIiArIGssIFwiaVwiKSxcbiAgICAgICAgICBiID0ge1wiJ1wiOiBcImBcIiwgXCI+XCI6IFwiPFwiLCBcIilcIjogXCIoXCIsIFwiXVwiOiBcIltcIiwgXCJ9XCI6IFwie1wiLCBcIkI7XCI6IFwiQitcIiwgXCJiOlwiOiBcImI5XCJ9LCBpID0ge1xuICAgICAgICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24gKHEsIHApIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBwID8gJzxhIGhyZWY9XCInICsgcCArICdcIiB0aXRsZT1cIicgKyBwICsgJ1wiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyXCI+JyArIHEgKyBcIjwvYT5cIiA6IHFcbiAgICAgICAgICAgICAgfSwgcHVuY3RfcmVnZXhwOiAvKD86WyE/Liw6OydcIl18KD86JnwmYW1wOykoPzpsdHxndHxxdW90fGFwb3N8cmFxdW98bGFxdW98cnNhcXVvfGxzYXF1byk7KSQvXG4gICAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICh1LCB6KSB7XG4gICAgICAgICAgICB6ID0geiB8fCB7fTtcbiAgICAgICAgICAgIHZhciB3LCB2LCBBLCBwLCB4ID0gXCJcIiwgdCA9IFtdLCBzLCBFLCBDLCB5LCBxLCBELCBCLCByO1xuICAgICAgICAgICAgZm9yICh2IGluIGkpIHtcbiAgICAgICAgICAgICAgICBpZiAoelt2XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHpbdl0gPSBpW3ZdXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd2hpbGUgKHcgPSBsLmV4ZWModSkpIHtcbiAgICAgICAgICAgICAgICBBID0gd1swXTtcbiAgICAgICAgICAgICAgICBFID0gbC5sYXN0SW5kZXg7XG4gICAgICAgICAgICAgICAgQyA9IEUgLSBBLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBpZiAoL1tcXC86XS8udGVzdCh1LmNoYXJBdChDIC0gMSkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICAgICAgeSA9IEE7XG4gICAgICAgICAgICAgICAgICAgIHIgPSBBLnN1YnN0cigtMSk7XG4gICAgICAgICAgICAgICAgICAgIEIgPSBiW3JdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoQikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcSA9IEEubWF0Y2gobmV3IFJlZ0V4cChcIlxcXFxcIiArIEIgKyBcIig/ISQpXCIsIFwiZ1wiKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBEID0gQS5tYXRjaChuZXcgUmVnRXhwKFwiXFxcXFwiICsgciwgXCJnXCIpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgocSA/IHEubGVuZ3RoIDogMCkgPCAoRCA/IEQubGVuZ3RoIDogMCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBID0gQS5zdWJzdHIoMCwgQS5sZW5ndGggLSAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFLS1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoei5wdW5jdF9yZWdleHApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEEgPSBBLnJlcGxhY2Uoei5wdW5jdF9yZWdleHAsIGZ1bmN0aW9uIChGKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRSAtPSBGLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gd2hpbGUgKEEubGVuZ3RoICYmIEEgIT09IHkpO1xuICAgICAgICAgICAgICAgIHAgPSBBO1xuICAgICAgICAgICAgICAgIGlmICghZy50ZXN0KHApKSB7XG4gICAgICAgICAgICAgICAgICAgIHAgPSAocC5pbmRleE9mKFwiQFwiKSAhPT0gLTEgPyAoIXAuaW5kZXhPZihtKSA/IFwiXCIgOiBtKSA6ICFwLmluZGV4T2YoXCJpcmMuXCIpID8gXCJpcmM6Ly9cIiA6ICFwLmluZGV4T2YoXCJmdHAuXCIpID8gXCJmdHA6Ly9cIiA6IFwiaHR0cDovL1wiKSArIHBcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHMgIT0gQykge1xuICAgICAgICAgICAgICAgICAgICB0LnB1c2goW3Uuc2xpY2UocywgQyldKTtcbiAgICAgICAgICAgICAgICAgICAgcyA9IEVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdC5wdXNoKFtBLCBwXSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHQucHVzaChbdS5zdWJzdHIocyldKTtcbiAgICAgICAgICAgIGZvciAodiA9IDA7IHYgPCB0Lmxlbmd0aDsgdisrKSB7XG4gICAgICAgICAgICAgICAgeCArPSB6LmNhbGxiYWNrLmFwcGx5KHdpbmRvdywgdFt2XSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB4IHx8IHVcbiAgICAgICAgfVxuICAgIH0pKCk7XG5cbiAgICAvL0NoZWNrcyB3aGV0aGVyIGJyb3dzZXIgc3VwcG9ydCBIVE1MNSB2aWRlbyBlbGVtZW50XG4gICAgZnVuY3Rpb24gc2J5X3N1cHBvcnRzX3ZpZGVvKCkge1xuICAgICAgICByZXR1cm4gISFkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd2aWRlbycpLmNhblBsYXlUeXBlO1xuICAgIH1cblxuICAgIC8vIENhcm91c2VsXG4gICAgIWZ1bmN0aW9uIChhLCBiLCBjLCBkKSB7XG4gICAgICAgIGZ1bmN0aW9uIGUoYiwgYykge1xuICAgICAgICAgICAgdGhpcy5zZXR0aW5ncyA9IG51bGwsIHRoaXMub3B0aW9ucyA9IGEuZXh0ZW5kKHt9LCBlLkRlZmF1bHRzLCBjKSwgdGhpcy4kZWxlbWVudCA9IGEoYiksIHRoaXMuX2hhbmRsZXJzID0ge30sIHRoaXMuX3BsdWdpbnMgPSB7fSwgdGhpcy5fc3VwcmVzcyA9IHt9LCB0aGlzLl9jdXJyZW50ID0gbnVsbCwgdGhpcy5fc3BlZWQgPSBudWxsLCB0aGlzLl9jb29yZGluYXRlcyA9IFtdLCB0aGlzLl9icmVha3BvaW50ID0gbnVsbCwgdGhpcy5fd2lkdGggPSBudWxsLCB0aGlzLl9pdGVtcyA9IFtdLCB0aGlzLl9jbG9uZXMgPSBbXSwgdGhpcy5fbWVyZ2VycyA9IFtdLCB0aGlzLl93aWR0aHMgPSBbXSwgdGhpcy5faW52YWxpZGF0ZWQgPSB7fSwgdGhpcy5fcGlwZSA9IFtdLCB0aGlzLl9kcmFnID0ge1xuICAgICAgICAgICAgICAgIHRpbWU6IG51bGwsXG4gICAgICAgICAgICAgICAgdGFyZ2V0OiBudWxsLFxuICAgICAgICAgICAgICAgIHBvaW50ZXI6IG51bGwsXG4gICAgICAgICAgICAgICAgc3RhZ2U6IHtzdGFydDogbnVsbCwgY3VycmVudDogbnVsbH0sXG4gICAgICAgICAgICAgICAgZGlyZWN0aW9uOiBudWxsXG4gICAgICAgICAgICB9LCB0aGlzLl9zdGF0ZXMgPSB7XG4gICAgICAgICAgICAgICAgY3VycmVudDoge30sXG4gICAgICAgICAgICAgICAgdGFnczoge2luaXRpYWxpemluZzogW1wiYnVzeVwiXSwgYW5pbWF0aW5nOiBbXCJidXN5XCJdLCBkcmFnZ2luZzogW1wiaW50ZXJhY3RpbmdcIl19XG4gICAgICAgICAgICB9LCBhLmVhY2goW1wib25SZXNpemVcIiwgXCJvblRocm90dGxlZFJlc2l6ZVwiXSwgYS5wcm94eShmdW5jdGlvbiAoYiwgYykge1xuICAgICAgICAgICAgICAgIHRoaXMuX2hhbmRsZXJzW2NdID0gYS5wcm94eSh0aGlzW2NdLCB0aGlzKVxuICAgICAgICAgICAgfSwgdGhpcykpLCBhLmVhY2goZS5QbHVnaW5zLCBhLnByb3h5KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcGx1Z2luc1thLmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpICsgYS5zbGljZSgxKV0gPSBuZXcgYih0aGlzKVxuICAgICAgICAgICAgfSwgdGhpcykpLCBhLmVhY2goZS5Xb3JrZXJzLCBhLnByb3h5KGZ1bmN0aW9uIChiLCBjKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcGlwZS5wdXNoKHtmaWx0ZXI6IGMuZmlsdGVyLCBydW46IGEucHJveHkoYy5ydW4sIHRoaXMpfSlcbiAgICAgICAgICAgIH0sIHRoaXMpKSwgdGhpcy5zZXR1cCgpLCB0aGlzLmluaXRpYWxpemUoKVxuICAgICAgICB9XG5cbiAgICAgICAgZS5EZWZhdWx0cyA9IHtcbiAgICAgICAgICAgIGl0ZW1zOiAzLFxuICAgICAgICAgICAgbG9vcDogITEsXG4gICAgICAgICAgICBjZW50ZXI6ICExLFxuICAgICAgICAgICAgcmV3aW5kOiAhMSxcbiAgICAgICAgICAgIG1vdXNlRHJhZzogITAsXG4gICAgICAgICAgICB0b3VjaERyYWc6ICEwLFxuICAgICAgICAgICAgcHVsbERyYWc6ICEwLFxuICAgICAgICAgICAgZnJlZURyYWc6ICExLFxuICAgICAgICAgICAgbWFyZ2luOiAwLFxuICAgICAgICAgICAgc3RhZ2VQYWRkaW5nOiAwLFxuICAgICAgICAgICAgbWVyZ2U6ICExLFxuICAgICAgICAgICAgbWVyZ2VGaXQ6ICEwLFxuICAgICAgICAgICAgYXV0b1dpZHRoOiAhMSxcbiAgICAgICAgICAgIHN0YXJ0UG9zaXRpb246IDAsXG4gICAgICAgICAgICBydGw6ICExLFxuICAgICAgICAgICAgc21hcnRTcGVlZDogMjUwLFxuICAgICAgICAgICAgZmx1aWRTcGVlZDogITEsXG4gICAgICAgICAgICBkcmFnRW5kU3BlZWQ6ICExLFxuICAgICAgICAgICAgcmVzcG9uc2l2ZToge30sXG4gICAgICAgICAgICByZXNwb25zaXZlUmVmcmVzaFJhdGU6IDIwMCxcbiAgICAgICAgICAgIHJlc3BvbnNpdmVCYXNlRWxlbWVudDogYixcbiAgICAgICAgICAgIGZhbGxiYWNrRWFzaW5nOiBcInN3aW5nXCIsXG4gICAgICAgICAgICBpbmZvOiAhMSxcbiAgICAgICAgICAgIG5lc3RlZEl0ZW1TZWxlY3RvcjogITEsXG4gICAgICAgICAgICBpdGVtRWxlbWVudDogXCJkaXZcIixcbiAgICAgICAgICAgIHN0YWdlRWxlbWVudDogXCJkaXZcIixcbiAgICAgICAgICAgIHJlZnJlc2hDbGFzczogXCJzYnktb3dsLXJlZnJlc2hcIixcbiAgICAgICAgICAgIGxvYWRlZENsYXNzOiBcInNieS1vd2wtbG9hZGVkXCIsXG4gICAgICAgICAgICBsb2FkaW5nQ2xhc3M6IFwic2J5LW93bC1sb2FkaW5nXCIsXG4gICAgICAgICAgICBydGxDbGFzczogXCJzYnktb3dsLXJ0bFwiLFxuICAgICAgICAgICAgcmVzcG9uc2l2ZUNsYXNzOiBcInNieS1vd2wtcmVzcG9uc2l2ZVwiLFxuICAgICAgICAgICAgZHJhZ0NsYXNzOiBcInNieS1vd2wtZHJhZ1wiLFxuICAgICAgICAgICAgaXRlbUNsYXNzOiBcInNieS1vd2wtaXRlbVwiLFxuICAgICAgICAgICAgc3RhZ2VDbGFzczogXCJzYnktb3dsLXN0YWdlXCIsXG4gICAgICAgICAgICBzdGFnZU91dGVyQ2xhc3M6IFwic2J5LW93bC1zdGFnZS1vdXRlclwiLFxuICAgICAgICAgICAgZ3JhYkNsYXNzOiBcInNieS1vd2wtZ3JhYlwiXG4gICAgICAgIH0sIGUuV2lkdGggPSB7RGVmYXVsdDogXCJkZWZhdWx0XCIsIElubmVyOiBcImlubmVyXCIsIE91dGVyOiBcIm91dGVyXCJ9LCBlLlR5cGUgPSB7XG4gICAgICAgICAgICBFdmVudDogXCJldmVudFwiLFxuICAgICAgICAgICAgU3RhdGU6IFwic3RhdGVcIlxuICAgICAgICB9LCBlLlBsdWdpbnMgPSB7fSwgZS5Xb3JrZXJzID0gW3tcbiAgICAgICAgICAgIGZpbHRlcjogW1wid2lkdGhcIiwgXCJzZXR0aW5nc1wiXSwgcnVuOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fd2lkdGggPSB0aGlzLiRlbGVtZW50LndpZHRoKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgZmlsdGVyOiBbXCJ3aWR0aFwiLCBcIml0ZW1zXCIsIFwic2V0dGluZ3NcIl0sIHJ1bjogZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgICAgICAgICBhLmN1cnJlbnQgPSB0aGlzLl9pdGVtcyAmJiB0aGlzLl9pdGVtc1t0aGlzLnJlbGF0aXZlKHRoaXMuX2N1cnJlbnQpXVxuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBmaWx0ZXI6IFtcIml0ZW1zXCIsIFwic2V0dGluZ3NcIl0sIHJ1bjogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRoaXMuJHN0YWdlLmNoaWxkcmVuKFwiLmNsb25lZFwiKS5yZW1vdmUoKVxuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBmaWx0ZXI6IFtcIndpZHRoXCIsIFwiaXRlbXNcIiwgXCJzZXR0aW5nc1wiXSwgcnVuOiBmdW5jdGlvbiAoYSkge1xuICAgICAgICAgICAgICAgIHZhciBiID0gdGhpcy5zZXR0aW5ncy5tYXJnaW4gfHwgXCJcIiwgYyA9ICF0aGlzLnNldHRpbmdzLmF1dG9XaWR0aCwgZCA9IHRoaXMuc2V0dGluZ3MucnRsLFxuICAgICAgICAgICAgICAgICAgZSA9IHt3aWR0aDogXCJhdXRvXCIsIFwibWFyZ2luLWxlZnRcIjogZCA/IGIgOiBcIlwiLCBcIm1hcmdpbi1yaWdodFwiOiBkID8gXCJcIiA6IGJ9O1xuICAgICAgICAgICAgICAgICFjICYmIHRoaXMuJHN0YWdlLmNoaWxkcmVuKCkuY3NzKGUpLCBhLmNzcyA9IGVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgZmlsdGVyOiBbXCJ3aWR0aFwiLCBcIml0ZW1zXCIsIFwic2V0dGluZ3NcIl0sIHJ1bjogZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgICAgICAgICB2YXIgYiA9ICh0aGlzLndpZHRoKCkgLyB0aGlzLnNldHRpbmdzLml0ZW1zKS50b0ZpeGVkKDMpIC0gdGhpcy5zZXR0aW5ncy5tYXJnaW4sIGMgPSBudWxsLFxuICAgICAgICAgICAgICAgICAgZCA9IHRoaXMuX2l0ZW1zLmxlbmd0aCwgZSA9ICF0aGlzLnNldHRpbmdzLmF1dG9XaWR0aCwgZiA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAoYS5pdGVtcyA9IHtcbiAgICAgICAgICAgICAgICAgICAgbWVyZ2U6ICExLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogYlxuICAgICAgICAgICAgICAgIH07IGQtLTspIGMgPSB0aGlzLl9tZXJnZXJzW2RdLCBjID0gdGhpcy5zZXR0aW5ncy5tZXJnZUZpdCAmJiBNYXRoLm1pbihjLCB0aGlzLnNldHRpbmdzLml0ZW1zKSB8fCBjLCBhLml0ZW1zLm1lcmdlID0gYyA+IDEgfHwgYS5pdGVtcy5tZXJnZSwgZltkXSA9IGUgPyBiICogYyA6IHRoaXMuX2l0ZW1zW2RdLndpZHRoKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fd2lkdGhzID0gZlxuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBmaWx0ZXI6IFtcIml0ZW1zXCIsIFwic2V0dGluZ3NcIl0sIHJ1bjogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciBiID0gW10sIGMgPSB0aGlzLl9pdGVtcywgZCA9IHRoaXMuc2V0dGluZ3MsIGUgPSBNYXRoLm1heCgyICogZC5pdGVtcywgNCksXG4gICAgICAgICAgICAgICAgICBmID0gMiAqIE1hdGguY2VpbChjLmxlbmd0aCAvIDIpLCBnID0gZC5sb29wICYmIGMubGVuZ3RoID8gZC5yZXdpbmQgPyBlIDogTWF0aC5tYXgoZSwgZikgOiAwLCBoID0gXCJcIixcbiAgICAgICAgICAgICAgICAgIGkgPSBcIlwiO1xuICAgICAgICAgICAgICAgIGZvciAoZyAvPSAyOyBnLS07KSBiLnB1c2godGhpcy5ub3JtYWxpemUoYi5sZW5ndGggLyAyLCAhMCkpLCBoICs9IGNbYltiLmxlbmd0aCAtIDFdXVswXS5vdXRlckhUTUwsIGIucHVzaCh0aGlzLm5vcm1hbGl6ZShjLmxlbmd0aCAtIDEgLSAoYi5sZW5ndGggLSAxKSAvIDIsICEwKSksIGkgPSBjW2JbYi5sZW5ndGggLSAxXV1bMF0ub3V0ZXJIVE1MICsgaTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jbG9uZXMgPSBiLCBhKGgpLmFkZENsYXNzKFwiY2xvbmVkXCIpLmFwcGVuZFRvKHRoaXMuJHN0YWdlKSwgYShpKS5hZGRDbGFzcyhcImNsb25lZFwiKS5wcmVwZW5kVG8odGhpcy4kc3RhZ2UpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIGZpbHRlcjogW1wid2lkdGhcIiwgXCJpdGVtc1wiLCBcInNldHRpbmdzXCJdLCBydW46IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBhID0gdGhpcy5zZXR0aW5ncy5ydGwgPyAxIDogLTEsIGIgPSB0aGlzLl9jbG9uZXMubGVuZ3RoICsgdGhpcy5faXRlbXMubGVuZ3RoLCBjID0gLTEsIGQgPSAwLCBlID0gMCwgZiA9IFtdOyArK2MgPCBiOykgZCA9IGZbYyAtIDFdIHx8IDAsIGUgPSB0aGlzLl93aWR0aHNbdGhpcy5yZWxhdGl2ZShjKV0gKyB0aGlzLnNldHRpbmdzLm1hcmdpbiwgZi5wdXNoKGQgKyBlICogYSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fY29vcmRpbmF0ZXMgPSBmXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIGZpbHRlcjogW1wid2lkdGhcIiwgXCJpdGVtc1wiLCBcInNldHRpbmdzXCJdLCBydW46IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgYSA9IHRoaXMuc2V0dGluZ3Muc3RhZ2VQYWRkaW5nLCBiID0gdGhpcy5fY29vcmRpbmF0ZXMsIGMgPSB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiBNYXRoLmNlaWwoTWF0aC5hYnMoYltiLmxlbmd0aCAtIDFdKSkgKyAyICogYSxcbiAgICAgICAgICAgICAgICAgICAgXCJwYWRkaW5nLWxlZnRcIjogYSB8fCBcIlwiLFxuICAgICAgICAgICAgICAgICAgICBcInBhZGRpbmctcmlnaHRcIjogYSB8fCBcIlwiXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB0aGlzLiRzdGFnZS5jc3MoYylcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgZmlsdGVyOiBbXCJ3aWR0aFwiLCBcIml0ZW1zXCIsIFwic2V0dGluZ3NcIl0sIHJ1bjogZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgICAgICAgICB2YXIgYiA9IHRoaXMuX2Nvb3JkaW5hdGVzLmxlbmd0aCwgYyA9ICF0aGlzLnNldHRpbmdzLmF1dG9XaWR0aCwgZCA9IHRoaXMuJHN0YWdlLmNoaWxkcmVuKCk7XG4gICAgICAgICAgICAgICAgaWYgKGMgJiYgYS5pdGVtcy5tZXJnZSkgZm9yICg7IGItLTspIGEuY3NzLndpZHRoID0gdGhpcy5fd2lkdGhzW3RoaXMucmVsYXRpdmUoYildLCBkLmVxKGIpLmNzcyhhLmNzcyk7IGVsc2UgYyAmJiAoYS5jc3Mud2lkdGggPSBhLml0ZW1zLndpZHRoLCBkLmNzcyhhLmNzcykpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIGZpbHRlcjogW1wiaXRlbXNcIl0sIHJ1bjogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2Nvb3JkaW5hdGVzLmxlbmd0aCA8IDEgJiYgdGhpcy4kc3RhZ2UucmVtb3ZlQXR0cihcInN0eWxlXCIpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIGZpbHRlcjogW1wid2lkdGhcIiwgXCJpdGVtc1wiLCBcInNldHRpbmdzXCJdLCBydW46IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgICAgICAgICAgYS5jdXJyZW50ID0gYS5jdXJyZW50ID8gdGhpcy4kc3RhZ2UuY2hpbGRyZW4oKS5pbmRleChhLmN1cnJlbnQpIDogMCwgYS5jdXJyZW50ID0gTWF0aC5tYXgodGhpcy5taW5pbXVtKCksIE1hdGgubWluKHRoaXMubWF4aW11bSgpLCBhLmN1cnJlbnQpKSwgdGhpcy5yZXNldChhLmN1cnJlbnQpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIGZpbHRlcjogW1wicG9zaXRpb25cIl0sIHJ1bjogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYW5pbWF0ZSh0aGlzLmNvb3JkaW5hdGVzKHRoaXMuX2N1cnJlbnQpKVxuICAgICAgICAgICAgfVxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBmaWx0ZXI6IFtcIndpZHRoXCIsIFwicG9zaXRpb25cIiwgXCJpdGVtc1wiLCBcInNldHRpbmdzXCJdLCBydW46IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgYSwgYiwgYywgZCwgZSA9IHRoaXMuc2V0dGluZ3MucnRsID8gMSA6IC0xLCBmID0gMiAqIHRoaXMuc2V0dGluZ3Muc3RhZ2VQYWRkaW5nLFxuICAgICAgICAgICAgICAgICAgZyA9IHRoaXMuY29vcmRpbmF0ZXModGhpcy5jdXJyZW50KCkpICsgZiwgaCA9IGcgKyB0aGlzLndpZHRoKCkgKiBlLCBpID0gW107XG4gICAgICAgICAgICAgICAgZm9yIChjID0gMCwgZCA9IHRoaXMuX2Nvb3JkaW5hdGVzLmxlbmd0aDsgYyA8IGQ7IGMrKykgYSA9IHRoaXMuX2Nvb3JkaW5hdGVzW2MgLSAxXSB8fCAwLCBiID0gTWF0aC5hYnModGhpcy5fY29vcmRpbmF0ZXNbY10pICsgZiAqIGUsICh0aGlzLm9wKGEsIFwiPD1cIiwgZykgJiYgdGhpcy5vcChhLCBcIj5cIiwgaCkgfHwgdGhpcy5vcChiLCBcIjxcIiwgZykgJiYgdGhpcy5vcChiLCBcIj5cIiwgaCkpICYmIGkucHVzaChjKTtcbiAgICAgICAgICAgICAgICB0aGlzLiRzdGFnZS5jaGlsZHJlbihcIi5hY3RpdmVcIikucmVtb3ZlQ2xhc3MoXCJhY3RpdmVcIiksIHRoaXMuJHN0YWdlLmNoaWxkcmVuKFwiOmVxKFwiICsgaS5qb2luKFwiKSwgOmVxKFwiKSArIFwiKVwiKS5hZGRDbGFzcyhcImFjdGl2ZVwiKSwgdGhpcy5zZXR0aW5ncy5jZW50ZXIgJiYgKHRoaXMuJHN0YWdlLmNoaWxkcmVuKFwiLmNlbnRlclwiKS5yZW1vdmVDbGFzcyhcImNlbnRlclwiKSwgdGhpcy4kc3RhZ2UuY2hpbGRyZW4oKS5lcSh0aGlzLmN1cnJlbnQoKSkuYWRkQ2xhc3MoXCJjZW50ZXJcIikpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1dLCBlLnByb3RvdHlwZS5pbml0aWFsaXplID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZW50ZXIoXCJpbml0aWFsaXppbmdcIiksIHRoaXMudHJpZ2dlcihcImluaXRpYWxpemVcIiksIHRoaXMuJGVsZW1lbnQudG9nZ2xlQ2xhc3ModGhpcy5zZXR0aW5ncy5ydGxDbGFzcywgdGhpcy5zZXR0aW5ncy5ydGwpLCB0aGlzLnNldHRpbmdzLmF1dG9XaWR0aCAmJiAhdGhpcy5pcyhcInByZS1sb2FkaW5nXCIpKSB7XG4gICAgICAgICAgICAgICAgdmFyIGIsIGMsIGU7XG4gICAgICAgICAgICAgICAgYiA9IHRoaXMuJGVsZW1lbnQuZmluZChcImltZ1wiKSwgYyA9IHRoaXMuc2V0dGluZ3MubmVzdGVkSXRlbVNlbGVjdG9yID8gXCIuXCIgKyB0aGlzLnNldHRpbmdzLm5lc3RlZEl0ZW1TZWxlY3RvciA6IGQsIGUgPSB0aGlzLiRlbGVtZW50LmNoaWxkcmVuKGMpLndpZHRoKCksIGIubGVuZ3RoICYmIGUgPD0gMCAmJiB0aGlzLnByZWxvYWRBdXRvV2lkdGhJbWFnZXMoYilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuJGVsZW1lbnQuYWRkQ2xhc3ModGhpcy5vcHRpb25zLmxvYWRpbmdDbGFzcyksIHRoaXMuJHN0YWdlID0gYShcIjxcIiArIHRoaXMuc2V0dGluZ3Muc3RhZ2VFbGVtZW50ICsgJyBjbGFzcz1cIicgKyB0aGlzLnNldHRpbmdzLnN0YWdlQ2xhc3MgKyAnXCIvPicpLndyYXAoJzxkaXYgY2xhc3M9XCInICsgdGhpcy5zZXR0aW5ncy5zdGFnZU91dGVyQ2xhc3MgKyAnXCIvPicpLCB0aGlzLiRlbGVtZW50LmFwcGVuZCh0aGlzLiRzdGFnZS5wYXJlbnQoKSksIHRoaXMucmVwbGFjZSh0aGlzLiRlbGVtZW50LmNoaWxkcmVuKCkubm90KHRoaXMuJHN0YWdlLnBhcmVudCgpKSksIHRoaXMuJGVsZW1lbnQuaXMoXCI6dmlzaWJsZVwiKSA/IHRoaXMucmVmcmVzaCgpIDogdGhpcy5pbnZhbGlkYXRlKFwid2lkdGhcIiksIHRoaXMuJGVsZW1lbnQucmVtb3ZlQ2xhc3ModGhpcy5vcHRpb25zLmxvYWRpbmdDbGFzcykuYWRkQ2xhc3ModGhpcy5vcHRpb25zLmxvYWRlZENsYXNzKSwgdGhpcy5yZWdpc3RlckV2ZW50SGFuZGxlcnMoKSwgdGhpcy5sZWF2ZShcImluaXRpYWxpemluZ1wiKSwgdGhpcy50cmlnZ2VyKFwiaW5pdGlhbGl6ZWRcIilcbiAgICAgICAgfSwgZS5wcm90b3R5cGUuc2V0dXAgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgYiA9IHRoaXMudmlld3BvcnQoKSwgYyA9IHRoaXMub3B0aW9ucy5yZXNwb25zaXZlLCBkID0gLTEsIGUgPSBudWxsO1xuICAgICAgICAgICAgYyA/IChhLmVhY2goYywgZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgICAgICAgICBhIDw9IGIgJiYgYSA+IGQgJiYgKGQgPSBOdW1iZXIoYSkpXG4gICAgICAgICAgICB9KSwgZSA9IGEuZXh0ZW5kKHt9LCB0aGlzLm9wdGlvbnMsIGNbZF0pLCBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIGUuc3RhZ2VQYWRkaW5nICYmIChlLnN0YWdlUGFkZGluZyA9IGUuc3RhZ2VQYWRkaW5nKCkpLCBkZWxldGUgZS5yZXNwb25zaXZlLCBlLnJlc3BvbnNpdmVDbGFzcyAmJiB0aGlzLiRlbGVtZW50LmF0dHIoXCJjbGFzc1wiLCB0aGlzLiRlbGVtZW50LmF0dHIoXCJjbGFzc1wiKS5yZXBsYWNlKG5ldyBSZWdFeHAoXCIoXCIgKyB0aGlzLm9wdGlvbnMucmVzcG9uc2l2ZUNsYXNzICsgXCItKVxcXFxTK1xcXFxzXCIsIFwiZ1wiKSwgXCIkMVwiICsgZCkpKSA6IGUgPSBhLmV4dGVuZCh7fSwgdGhpcy5vcHRpb25zKSwgdGhpcy50cmlnZ2VyKFwiY2hhbmdlXCIsIHtcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eToge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcInNldHRpbmdzXCIsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksIHRoaXMuX2JyZWFrcG9pbnQgPSBkLCB0aGlzLnNldHRpbmdzID0gZSwgdGhpcy5pbnZhbGlkYXRlKFwic2V0dGluZ3NcIiksIHRoaXMudHJpZ2dlcihcImNoYW5nZWRcIiwge1xuICAgICAgICAgICAgICAgIHByb3BlcnR5OiB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwic2V0dGluZ3NcIixcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMuc2V0dGluZ3NcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICB9LCBlLnByb3RvdHlwZS5vcHRpb25zTG9naWMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzLmF1dG9XaWR0aCAmJiAodGhpcy5zZXR0aW5ncy5zdGFnZVBhZGRpbmcgPSAhMSwgdGhpcy5zZXR0aW5ncy5tZXJnZSA9ICExKVxuICAgICAgICB9LCBlLnByb3RvdHlwZS5wcmVwYXJlID0gZnVuY3Rpb24gKGIpIHtcbiAgICAgICAgICAgIHZhciBjID0gdGhpcy50cmlnZ2VyKFwicHJlcGFyZVwiLCB7Y29udGVudDogYn0pO1xuICAgICAgICAgICAgcmV0dXJuIGMuZGF0YSB8fCAoYy5kYXRhID0gYShcIjxcIiArIHRoaXMuc2V0dGluZ3MuaXRlbUVsZW1lbnQgKyBcIi8+XCIpLmFkZENsYXNzKHRoaXMub3B0aW9ucy5pdGVtQ2xhc3MpLmFwcGVuZChiKSksIHRoaXMudHJpZ2dlcihcInByZXBhcmVkXCIsIHtjb250ZW50OiBjLmRhdGF9KSwgYy5kYXRhXG4gICAgICAgIH0sIGUucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGIgPSAwLCBjID0gdGhpcy5fcGlwZS5sZW5ndGgsIGQgPSBhLnByb3h5KGZ1bmN0aW9uIChhKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXNbYV1cbiAgICAgICAgICAgIH0sIHRoaXMuX2ludmFsaWRhdGVkKSwgZSA9IHt9OyBiIDwgYzspICh0aGlzLl9pbnZhbGlkYXRlZC5hbGwgfHwgYS5ncmVwKHRoaXMuX3BpcGVbYl0uZmlsdGVyLCBkKS5sZW5ndGggPiAwKSAmJiB0aGlzLl9waXBlW2JdLnJ1bihlKSwgYisrO1xuICAgICAgICAgICAgdGhpcy5faW52YWxpZGF0ZWQgPSB7fSwgIXRoaXMuaXMoXCJ2YWxpZFwiKSAmJiB0aGlzLmVudGVyKFwidmFsaWRcIilcbiAgICAgICAgfSwgZS5wcm90b3R5cGUud2lkdGggPSBmdW5jdGlvbiAoYSkge1xuICAgICAgICAgICAgc3dpdGNoIChhID0gYSB8fCBlLldpZHRoLkRlZmF1bHQpIHtcbiAgICAgICAgICAgICAgICBjYXNlIGUuV2lkdGguSW5uZXI6XG4gICAgICAgICAgICAgICAgY2FzZSBlLldpZHRoLk91dGVyOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd2lkdGg7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dpZHRoIC0gMiAqIHRoaXMuc2V0dGluZ3Muc3RhZ2VQYWRkaW5nICsgdGhpcy5zZXR0aW5ncy5tYXJnaW5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgZS5wcm90b3R5cGUucmVmcmVzaCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHRoaXMuZW50ZXIoXCJyZWZyZXNoaW5nXCIpLCB0aGlzLnRyaWdnZXIoXCJyZWZyZXNoXCIpLCB0aGlzLnNldHVwKCksIHRoaXMub3B0aW9uc0xvZ2ljKCksIHRoaXMuJGVsZW1lbnQuYWRkQ2xhc3ModGhpcy5vcHRpb25zLnJlZnJlc2hDbGFzcyksIHRoaXMudXBkYXRlKCksIHRoaXMuJGVsZW1lbnQucmVtb3ZlQ2xhc3ModGhpcy5vcHRpb25zLnJlZnJlc2hDbGFzcyksIHRoaXMubGVhdmUoXCJyZWZyZXNoaW5nXCIpLCB0aGlzLnRyaWdnZXIoXCJyZWZyZXNoZWRcIilcbiAgICAgICAgfSwgZS5wcm90b3R5cGUub25UaHJvdHRsZWRSZXNpemUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBiLmNsZWFyVGltZW91dCh0aGlzLnJlc2l6ZVRpbWVyKSwgdGhpcy5yZXNpemVUaW1lciA9IGIuc2V0VGltZW91dCh0aGlzLl9oYW5kbGVycy5vblJlc2l6ZSwgdGhpcy5zZXR0aW5ncy5yZXNwb25zaXZlUmVmcmVzaFJhdGUpXG4gICAgICAgIH0sIGUucHJvdG90eXBlLm9uUmVzaXplID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuICEhdGhpcy5faXRlbXMubGVuZ3RoICYmICh0aGlzLl93aWR0aCAhPT0gdGhpcy4kZWxlbWVudC53aWR0aCgpICYmICghIXRoaXMuJGVsZW1lbnQuaXMoXCI6dmlzaWJsZVwiKSAmJiAodGhpcy5lbnRlcihcInJlc2l6aW5nXCIpLCB0aGlzLnRyaWdnZXIoXCJyZXNpemVcIikuaXNEZWZhdWx0UHJldmVudGVkKCkgPyAodGhpcy5sZWF2ZShcInJlc2l6aW5nXCIpLCAhMSkgOiAodGhpcy5pbnZhbGlkYXRlKFwid2lkdGhcIiksIHRoaXMucmVmcmVzaCgpLCB0aGlzLmxlYXZlKFwicmVzaXppbmdcIiksIHZvaWQgdGhpcy50cmlnZ2VyKFwicmVzaXplZFwiKSkpKSlcbiAgICAgICAgfSwgZS5wcm90b3R5cGUucmVnaXN0ZXJFdmVudEhhbmRsZXJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgYS5zdXBwb3J0LnRyYW5zaXRpb24gJiYgdGhpcy4kc3RhZ2Uub24oYS5zdXBwb3J0LnRyYW5zaXRpb24uZW5kICsgXCIub3dsLmNvcmVcIiwgYS5wcm94eSh0aGlzLm9uVHJhbnNpdGlvbkVuZCwgdGhpcykpLCB0aGlzLnNldHRpbmdzLnJlc3BvbnNpdmUgIT09ICExICYmIHRoaXMub24oYiwgXCJyZXNpemVcIiwgdGhpcy5faGFuZGxlcnMub25UaHJvdHRsZWRSZXNpemUpLCB0aGlzLnNldHRpbmdzLm1vdXNlRHJhZyAmJiAodGhpcy4kZWxlbWVudC5hZGRDbGFzcyh0aGlzLm9wdGlvbnMuZHJhZ0NsYXNzKSwgdGhpcy4kc3RhZ2Uub24oXCJtb3VzZWRvd24ub3dsLmNvcmVcIiwgYS5wcm94eSh0aGlzLm9uRHJhZ1N0YXJ0LCB0aGlzKSksIHRoaXMuJHN0YWdlLm9uKFwiZHJhZ3N0YXJ0Lm93bC5jb3JlIHNlbGVjdHN0YXJ0Lm93bC5jb3JlXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gITFcbiAgICAgICAgICAgIH0pKSwgdGhpcy5zZXR0aW5ncy50b3VjaERyYWcgJiYgKHRoaXMuJHN0YWdlLm9uKFwidG91Y2hzdGFydC5vd2wuY29yZVwiLCBhLnByb3h5KHRoaXMub25EcmFnU3RhcnQsIHRoaXMpKSwgdGhpcy4kc3RhZ2Uub24oXCJ0b3VjaGNhbmNlbC5vd2wuY29yZVwiLCBhLnByb3h5KHRoaXMub25EcmFnRW5kLCB0aGlzKSkpXG4gICAgICAgIH0sIGUucHJvdG90eXBlLm9uRHJhZ1N0YXJ0ID0gZnVuY3Rpb24gKGIpIHtcbiAgICAgICAgICAgIHZhciBkID0gbnVsbDtcbiAgICAgICAgICAgIDMgIT09IGIud2hpY2ggJiYgKGEuc3VwcG9ydC50cmFuc2Zvcm0gPyAoZCA9IHRoaXMuJHN0YWdlLmNzcyhcInRyYW5zZm9ybVwiKS5yZXBsYWNlKC8uKlxcKHxcXCl8IC9nLCBcIlwiKS5zcGxpdChcIixcIiksIGQgPSB7XG4gICAgICAgICAgICAgICAgeDogZFsxNiA9PT0gZC5sZW5ndGggPyAxMiA6IDRdLFxuICAgICAgICAgICAgICAgIHk6IGRbMTYgPT09IGQubGVuZ3RoID8gMTMgOiA1XVxuICAgICAgICAgICAgfSkgOiAoZCA9IHRoaXMuJHN0YWdlLnBvc2l0aW9uKCksIGQgPSB7XG4gICAgICAgICAgICAgICAgeDogdGhpcy5zZXR0aW5ncy5ydGwgPyBkLmxlZnQgKyB0aGlzLiRzdGFnZS53aWR0aCgpIC0gdGhpcy53aWR0aCgpICsgdGhpcy5zZXR0aW5ncy5tYXJnaW4gOiBkLmxlZnQsXG4gICAgICAgICAgICAgICAgeTogZC50b3BcbiAgICAgICAgICAgIH0pLCB0aGlzLmlzKFwiYW5pbWF0aW5nXCIpICYmIChhLnN1cHBvcnQudHJhbnNmb3JtID8gdGhpcy5hbmltYXRlKGQueCkgOiB0aGlzLiRzdGFnZS5zdG9wKCksIHRoaXMuaW52YWxpZGF0ZShcInBvc2l0aW9uXCIpKSwgdGhpcy4kZWxlbWVudC50b2dnbGVDbGFzcyh0aGlzLm9wdGlvbnMuZ3JhYkNsYXNzLCBcIm1vdXNlZG93blwiID09PSBiLnR5cGUpLCB0aGlzLnNwZWVkKDApLCB0aGlzLl9kcmFnLnRpbWUgPSAobmV3IERhdGUpLmdldFRpbWUoKSwgdGhpcy5fZHJhZy50YXJnZXQgPSBhKGIudGFyZ2V0KSwgdGhpcy5fZHJhZy5zdGFnZS5zdGFydCA9IGQsIHRoaXMuX2RyYWcuc3RhZ2UuY3VycmVudCA9IGQsIHRoaXMuX2RyYWcucG9pbnRlciA9IHRoaXMucG9pbnRlcihiKSwgYShjKS5vbihcIm1vdXNldXAub3dsLmNvcmUgdG91Y2hlbmQub3dsLmNvcmVcIiwgYS5wcm94eSh0aGlzLm9uRHJhZ0VuZCwgdGhpcykpLCBhKGMpLm9uZShcIm1vdXNlbW92ZS5vd2wuY29yZSB0b3VjaG1vdmUub3dsLmNvcmVcIiwgYS5wcm94eShmdW5jdGlvbiAoYikge1xuICAgICAgICAgICAgICAgIHZhciBkID0gdGhpcy5kaWZmZXJlbmNlKHRoaXMuX2RyYWcucG9pbnRlciwgdGhpcy5wb2ludGVyKGIpKTtcbiAgICAgICAgICAgICAgICBhKGMpLm9uKFwibW91c2Vtb3ZlLm93bC5jb3JlIHRvdWNobW92ZS5vd2wuY29yZVwiLCBhLnByb3h5KHRoaXMub25EcmFnTW92ZSwgdGhpcykpLCBNYXRoLmFicyhkLngpIDwgTWF0aC5hYnMoZC55KSAmJiB0aGlzLmlzKFwidmFsaWRcIikgfHwgKGIucHJldmVudERlZmF1bHQoKSwgdGhpcy5lbnRlcihcImRyYWdnaW5nXCIpLCB0aGlzLnRyaWdnZXIoXCJkcmFnXCIpKVxuICAgICAgICAgICAgfSwgdGhpcykpKVxuICAgICAgICB9LCBlLnByb3RvdHlwZS5vbkRyYWdNb3ZlID0gZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgICAgIHZhciBiID0gbnVsbCwgYyA9IG51bGwsIGQgPSBudWxsLCBlID0gdGhpcy5kaWZmZXJlbmNlKHRoaXMuX2RyYWcucG9pbnRlciwgdGhpcy5wb2ludGVyKGEpKSxcbiAgICAgICAgICAgICAgZiA9IHRoaXMuZGlmZmVyZW5jZSh0aGlzLl9kcmFnLnN0YWdlLnN0YXJ0LCBlKTtcbiAgICAgICAgICAgIHRoaXMuaXMoXCJkcmFnZ2luZ1wiKSAmJiAoYS5wcmV2ZW50RGVmYXVsdCgpLCB0aGlzLnNldHRpbmdzLmxvb3AgPyAoYiA9IHRoaXMuY29vcmRpbmF0ZXModGhpcy5taW5pbXVtKCkpLCBjID0gdGhpcy5jb29yZGluYXRlcyh0aGlzLm1heGltdW0oKSArIDEpIC0gYiwgZi54ID0gKChmLnggLSBiKSAlIGMgKyBjKSAlIGMgKyBiKSA6IChiID0gdGhpcy5zZXR0aW5ncy5ydGwgPyB0aGlzLmNvb3JkaW5hdGVzKHRoaXMubWF4aW11bSgpKSA6IHRoaXMuY29vcmRpbmF0ZXModGhpcy5taW5pbXVtKCkpLCBjID0gdGhpcy5zZXR0aW5ncy5ydGwgPyB0aGlzLmNvb3JkaW5hdGVzKHRoaXMubWluaW11bSgpKSA6IHRoaXMuY29vcmRpbmF0ZXModGhpcy5tYXhpbXVtKCkpLCBkID0gdGhpcy5zZXR0aW5ncy5wdWxsRHJhZyA/IC0xICogZS54IC8gNSA6IDAsIGYueCA9IE1hdGgubWF4KE1hdGgubWluKGYueCwgYiArIGQpLCBjICsgZCkpLCB0aGlzLl9kcmFnLnN0YWdlLmN1cnJlbnQgPSBmLCB0aGlzLmFuaW1hdGUoZi54KSlcbiAgICAgICAgfSwgZS5wcm90b3R5cGUub25EcmFnRW5kID0gZnVuY3Rpb24gKGIpIHtcbiAgICAgICAgICAgIHZhciBkID0gdGhpcy5kaWZmZXJlbmNlKHRoaXMuX2RyYWcucG9pbnRlciwgdGhpcy5wb2ludGVyKGIpKSwgZSA9IHRoaXMuX2RyYWcuc3RhZ2UuY3VycmVudCxcbiAgICAgICAgICAgICAgZiA9IGQueCA+IDAgXiB0aGlzLnNldHRpbmdzLnJ0bCA/IFwibGVmdFwiIDogXCJyaWdodFwiO1xuICAgICAgICAgICAgYShjKS5vZmYoXCIub3dsLmNvcmVcIiksIHRoaXMuJGVsZW1lbnQucmVtb3ZlQ2xhc3ModGhpcy5vcHRpb25zLmdyYWJDbGFzcyksICgwICE9PSBkLnggJiYgdGhpcy5pcyhcImRyYWdnaW5nXCIpIHx8ICF0aGlzLmlzKFwidmFsaWRcIikpICYmICh0aGlzLnNwZWVkKHRoaXMuc2V0dGluZ3MuZHJhZ0VuZFNwZWVkIHx8IHRoaXMuc2V0dGluZ3Muc21hcnRTcGVlZCksIHRoaXMuY3VycmVudCh0aGlzLmNsb3Nlc3QoZS54LCAwICE9PSBkLnggPyBmIDogdGhpcy5fZHJhZy5kaXJlY3Rpb24pKSwgdGhpcy5pbnZhbGlkYXRlKFwicG9zaXRpb25cIiksIHRoaXMudXBkYXRlKCksIHRoaXMuX2RyYWcuZGlyZWN0aW9uID0gZiwgKE1hdGguYWJzKGQueCkgPiAzIHx8IChuZXcgRGF0ZSkuZ2V0VGltZSgpIC0gdGhpcy5fZHJhZy50aW1lID4gMzAwKSAmJiB0aGlzLl9kcmFnLnRhcmdldC5vbmUoXCJjbGljay5vd2wuY29yZVwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICExXG4gICAgICAgICAgICB9KSksIHRoaXMuaXMoXCJkcmFnZ2luZ1wiKSAmJiAodGhpcy5sZWF2ZShcImRyYWdnaW5nXCIpLCB0aGlzLnRyaWdnZXIoXCJkcmFnZ2VkXCIpKVxuICAgICAgICB9LCBlLnByb3RvdHlwZS5jbG9zZXN0ID0gZnVuY3Rpb24gKGIsIGMpIHtcbiAgICAgICAgICAgIHZhciBkID0gLTEsIGUgPSAzMCwgZiA9IHRoaXMud2lkdGgoKSwgZyA9IHRoaXMuY29vcmRpbmF0ZXMoKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNldHRpbmdzLmZyZWVEcmFnIHx8IGEuZWFjaChnLCBhLnByb3h5KGZ1bmN0aW9uIChhLCBoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwibGVmdFwiID09PSBjICYmIGIgPiBoIC0gZSAmJiBiIDwgaCArIGUgPyBkID0gYSA6IFwicmlnaHRcIiA9PT0gYyAmJiBiID4gaCAtIGYgLSBlICYmIGIgPCBoIC0gZiArIGUgPyBkID0gYSArIDEgOiB0aGlzLm9wKGIsIFwiPFwiLCBoKSAmJiB0aGlzLm9wKGIsIFwiPlwiLCBnW2EgKyAxXSB8fCBoIC0gZikgJiYgKGQgPSBcImxlZnRcIiA9PT0gYyA/IGEgKyAxIDogYSksIGQgPT09IC0xXG4gICAgICAgICAgICB9LCB0aGlzKSksIHRoaXMuc2V0dGluZ3MubG9vcCB8fCAodGhpcy5vcChiLCBcIj5cIiwgZ1t0aGlzLm1pbmltdW0oKV0pID8gZCA9IGIgPSB0aGlzLm1pbmltdW0oKSA6IHRoaXMub3AoYiwgXCI8XCIsIGdbdGhpcy5tYXhpbXVtKCldKSAmJiAoZCA9IGIgPSB0aGlzLm1heGltdW0oKSkpLCBkXG4gICAgICAgIH0sIGUucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbiAoYikge1xuICAgICAgICAgICAgdmFyIGMgPSB0aGlzLnNwZWVkKCkgPiAwO1xuICAgICAgICAgICAgdGhpcy5pcyhcImFuaW1hdGluZ1wiKSAmJiB0aGlzLm9uVHJhbnNpdGlvbkVuZCgpLCBjICYmICh0aGlzLmVudGVyKFwiYW5pbWF0aW5nXCIpLCB0aGlzLnRyaWdnZXIoXCJ0cmFuc2xhdGVcIikpLCBhLnN1cHBvcnQudHJhbnNmb3JtM2QgJiYgYS5zdXBwb3J0LnRyYW5zaXRpb24gPyB0aGlzLiRzdGFnZS5jc3Moe1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogXCJ0cmFuc2xhdGUzZChcIiArIGIgKyBcInB4LDBweCwwcHgpXCIsXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogdGhpcy5zcGVlZCgpIC8gMWUzICsgXCJzXCJcbiAgICAgICAgICAgIH0pIDogYyA/IHRoaXMuJHN0YWdlLmFuaW1hdGUoe2xlZnQ6IGIgKyBcInB4XCJ9LCB0aGlzLnNwZWVkKCksIHRoaXMuc2V0dGluZ3MuZmFsbGJhY2tFYXNpbmcsIGEucHJveHkodGhpcy5vblRyYW5zaXRpb25FbmQsIHRoaXMpKSA6IHRoaXMuJHN0YWdlLmNzcyh7bGVmdDogYiArIFwicHhcIn0pXG4gICAgICAgIH0sIGUucHJvdG90eXBlLmlzID0gZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9zdGF0ZXMuY3VycmVudFthXSAmJiB0aGlzLl9zdGF0ZXMuY3VycmVudFthXSA+IDBcbiAgICAgICAgfSwgZS5wcm90b3R5cGUuY3VycmVudCA9IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgICAgICBpZiAoYSA9PT0gZCkgcmV0dXJuIHRoaXMuX2N1cnJlbnQ7XG4gICAgICAgICAgICBpZiAoMCA9PT0gdGhpcy5faXRlbXMubGVuZ3RoKSByZXR1cm4gZDtcbiAgICAgICAgICAgIGlmIChhID0gdGhpcy5ub3JtYWxpemUoYSksIHRoaXMuX2N1cnJlbnQgIT09IGEpIHtcbiAgICAgICAgICAgICAgICB2YXIgYiA9IHRoaXMudHJpZ2dlcihcImNoYW5nZVwiLCB7cHJvcGVydHk6IHtuYW1lOiBcInBvc2l0aW9uXCIsIHZhbHVlOiBhfX0pO1xuICAgICAgICAgICAgICAgIGIuZGF0YSAhPT0gZCAmJiAoYSA9IHRoaXMubm9ybWFsaXplKGIuZGF0YSkpLCB0aGlzLl9jdXJyZW50ID0gYSwgdGhpcy5pbnZhbGlkYXRlKFwicG9zaXRpb25cIiksIHRoaXMudHJpZ2dlcihcImNoYW5nZWRcIiwge1xuICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eToge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJwb3NpdGlvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMuX2N1cnJlbnRcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudFxuICAgICAgICB9LCBlLnByb3RvdHlwZS5pbnZhbGlkYXRlID0gZnVuY3Rpb24gKGIpIHtcbiAgICAgICAgICAgIHJldHVybiBcInN0cmluZ1wiID09PSBhLnR5cGUoYikgJiYgKHRoaXMuX2ludmFsaWRhdGVkW2JdID0gITAsIHRoaXMuaXMoXCJ2YWxpZFwiKSAmJiB0aGlzLmxlYXZlKFwidmFsaWRcIikpLCBhLm1hcCh0aGlzLl9pbnZhbGlkYXRlZCwgZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYlxuICAgICAgICAgICAgfSlcbiAgICAgICAgfSwgZS5wcm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbiAoYSkge1xuICAgICAgICAgICAgYSA9IHRoaXMubm9ybWFsaXplKGEpLCBhICE9PSBkICYmICh0aGlzLl9zcGVlZCA9IDAsIHRoaXMuX2N1cnJlbnQgPSBhLCB0aGlzLnN1cHByZXNzKFtcInRyYW5zbGF0ZVwiLCBcInRyYW5zbGF0ZWRcIl0pLCB0aGlzLmFuaW1hdGUodGhpcy5jb29yZGluYXRlcyhhKSksIHRoaXMucmVsZWFzZShbXCJ0cmFuc2xhdGVcIiwgXCJ0cmFuc2xhdGVkXCJdKSlcbiAgICAgICAgfSwgZS5wcm90b3R5cGUubm9ybWFsaXplID0gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgICAgIHZhciBjID0gdGhpcy5faXRlbXMubGVuZ3RoLCBlID0gYiA/IDAgOiB0aGlzLl9jbG9uZXMubGVuZ3RoO1xuICAgICAgICAgICAgcmV0dXJuICF0aGlzLmlzTnVtZXJpYyhhKSB8fCBjIDwgMSA/IGEgPSBkIDogKGEgPCAwIHx8IGEgPj0gYyArIGUpICYmIChhID0gKChhIC0gZSAvIDIpICUgYyArIGMpICUgYyArIGUgLyAyKSwgYVxuICAgICAgICB9LCBlLnByb3RvdHlwZS5yZWxhdGl2ZSA9IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgICAgICByZXR1cm4gYSAtPSB0aGlzLl9jbG9uZXMubGVuZ3RoIC8gMiwgdGhpcy5ub3JtYWxpemUoYSwgITApXG4gICAgICAgIH0sIGUucHJvdG90eXBlLm1heGltdW0gPSBmdW5jdGlvbiAoYSkge1xuICAgICAgICAgICAgdmFyIGIsIGMsIGQsIGUgPSB0aGlzLnNldHRpbmdzLCBmID0gdGhpcy5fY29vcmRpbmF0ZXMubGVuZ3RoO1xuICAgICAgICAgICAgaWYgKGUubG9vcCkgZiA9IHRoaXMuX2Nsb25lcy5sZW5ndGggLyAyICsgdGhpcy5faXRlbXMubGVuZ3RoIC0gMTsgZWxzZSBpZiAoZS5hdXRvV2lkdGggfHwgZS5tZXJnZSkge1xuICAgICAgICAgICAgICAgIGZvciAoYiA9IHRoaXMuX2l0ZW1zLmxlbmd0aCwgYyA9IHRoaXMuX2l0ZW1zWy0tYl0ud2lkdGgoKSwgZCA9IHRoaXMuJGVsZW1lbnQud2lkdGgoKTsgYi0tICYmIChjICs9IHRoaXMuX2l0ZW1zW2JdLndpZHRoKCkgKyB0aGlzLnNldHRpbmdzLm1hcmdpbiwgIShjID4gZCkpOykgO1xuICAgICAgICAgICAgICAgIGYgPSBiICsgMVxuICAgICAgICAgICAgfSBlbHNlIGYgPSBlLmNlbnRlciA/IHRoaXMuX2l0ZW1zLmxlbmd0aCAtIDEgOiB0aGlzLl9pdGVtcy5sZW5ndGggLSBlLml0ZW1zO1xuICAgICAgICAgICAgcmV0dXJuIGEgJiYgKGYgLT0gdGhpcy5fY2xvbmVzLmxlbmd0aCAvIDIpLCBNYXRoLm1heChmLCAwKVxuICAgICAgICB9LCBlLnByb3RvdHlwZS5taW5pbXVtID0gZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgICAgIHJldHVybiBhID8gMCA6IHRoaXMuX2Nsb25lcy5sZW5ndGggLyAyXG4gICAgICAgIH0sIGUucHJvdG90eXBlLml0ZW1zID0gZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgICAgIHJldHVybiBhID09PSBkID8gdGhpcy5faXRlbXMuc2xpY2UoKSA6IChhID0gdGhpcy5ub3JtYWxpemUoYSwgITApLCB0aGlzLl9pdGVtc1thXSlcbiAgICAgICAgfSwgZS5wcm90b3R5cGUubWVyZ2VycyA9IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgICAgICByZXR1cm4gYSA9PT0gZCA/IHRoaXMuX21lcmdlcnMuc2xpY2UoKSA6IChhID0gdGhpcy5ub3JtYWxpemUoYSwgITApLCB0aGlzLl9tZXJnZXJzW2FdKVxuICAgICAgICB9LCBlLnByb3RvdHlwZS5jbG9uZXMgPSBmdW5jdGlvbiAoYikge1xuICAgICAgICAgICAgdmFyIGMgPSB0aGlzLl9jbG9uZXMubGVuZ3RoIC8gMiwgZSA9IGMgKyB0aGlzLl9pdGVtcy5sZW5ndGgsIGYgPSBmdW5jdGlvbiAoYSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBhICUgMiA9PT0gMCA/IGUgKyBhIC8gMiA6IGMgLSAoYSArIDEpIC8gMlxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJldHVybiBiID09PSBkID8gYS5tYXAodGhpcy5fY2xvbmVzLCBmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICAgICAgICAgIHJldHVybiBmKGIpXG4gICAgICAgICAgICB9KSA6IGEubWFwKHRoaXMuX2Nsb25lcywgZnVuY3Rpb24gKGEsIGMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYSA9PT0gYiA/IGYoYykgOiBudWxsXG4gICAgICAgICAgICB9KVxuICAgICAgICB9LCBlLnByb3RvdHlwZS5zcGVlZCA9IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgICAgICByZXR1cm4gYSAhPT0gZCAmJiAodGhpcy5fc3BlZWQgPSBhKSwgdGhpcy5fc3BlZWRcbiAgICAgICAgfSwgZS5wcm90b3R5cGUuY29vcmRpbmF0ZXMgPSBmdW5jdGlvbiAoYikge1xuICAgICAgICAgICAgdmFyIGMsIGUgPSAxLCBmID0gYiAtIDE7XG4gICAgICAgICAgICByZXR1cm4gYiA9PT0gZCA/IGEubWFwKHRoaXMuX2Nvb3JkaW5hdGVzLCBhLnByb3h5KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29vcmRpbmF0ZXMoYilcbiAgICAgICAgICAgIH0sIHRoaXMpKSA6ICh0aGlzLnNldHRpbmdzLmNlbnRlciA/ICh0aGlzLnNldHRpbmdzLnJ0bCAmJiAoZSA9IC0xLCBmID0gYiArIDEpLCBjID0gdGhpcy5fY29vcmRpbmF0ZXNbYl0sIGMgKz0gKHRoaXMud2lkdGgoKSAtIGMgKyAodGhpcy5fY29vcmRpbmF0ZXNbZl0gfHwgMCkpIC8gMiAqIGUpIDogYyA9IHRoaXMuX2Nvb3JkaW5hdGVzW2ZdIHx8IDAsIGMgPSBNYXRoLmNlaWwoYykpXG4gICAgICAgIH0sIGUucHJvdG90eXBlLmR1cmF0aW9uID0gZnVuY3Rpb24gKGEsIGIsIGMpIHtcbiAgICAgICAgICAgIHJldHVybiAwID09PSBjID8gMCA6IE1hdGgubWluKE1hdGgubWF4KE1hdGguYWJzKGIgLSBhKSwgMSksIDYpICogTWF0aC5hYnMoYyB8fCB0aGlzLnNldHRpbmdzLnNtYXJ0U3BlZWQpXG4gICAgICAgIH0sIGUucHJvdG90eXBlLnRvID0gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgICAgIHZhciBjID0gdGhpcy5jdXJyZW50KCksIGQgPSBudWxsLCBlID0gYSAtIHRoaXMucmVsYXRpdmUoYyksIGYgPSAoZSA+IDApIC0gKGUgPCAwKSwgZyA9IHRoaXMuX2l0ZW1zLmxlbmd0aCxcbiAgICAgICAgICAgICAgaCA9IHRoaXMubWluaW11bSgpLCBpID0gdGhpcy5tYXhpbXVtKCk7XG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzLmxvb3AgPyAoIXRoaXMuc2V0dGluZ3MucmV3aW5kICYmIE1hdGguYWJzKGUpID4gZyAvIDIgJiYgKGUgKz0gZiAqIC0xICogZyksIGEgPSBjICsgZSwgZCA9ICgoYSAtIGgpICUgZyArIGcpICUgZyArIGgsIGQgIT09IGEgJiYgZCAtIGUgPD0gaSAmJiBkIC0gZSA+IDAgJiYgKGMgPSBkIC0gZSwgYSA9IGQsIHRoaXMucmVzZXQoYykpKSA6IHRoaXMuc2V0dGluZ3MucmV3aW5kID8gKGkgKz0gMSwgYSA9IChhICUgaSArIGkpICUgaSkgOiBhID0gTWF0aC5tYXgoaCwgTWF0aC5taW4oaSwgYSkpLCB0aGlzLnNwZWVkKHRoaXMuZHVyYXRpb24oYywgYSwgYikpLCB0aGlzLmN1cnJlbnQoYSksIHRoaXMuJGVsZW1lbnQuaXMoXCI6dmlzaWJsZVwiKSAmJiB0aGlzLnVwZGF0ZSgpXG4gICAgICAgIH0sIGUucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbiAoYSkge1xuICAgICAgICAgICAgYSA9IGEgfHwgITEsIHRoaXMudG8odGhpcy5yZWxhdGl2ZSh0aGlzLmN1cnJlbnQoKSkgKyAxLCBhKVxuICAgICAgICB9LCBlLnByb3RvdHlwZS5wcmV2ID0gZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgICAgIGEgPSBhIHx8ICExLCB0aGlzLnRvKHRoaXMucmVsYXRpdmUodGhpcy5jdXJyZW50KCkpIC0gMSwgYSlcbiAgICAgICAgfSwgZS5wcm90b3R5cGUub25UcmFuc2l0aW9uRW5kID0gZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgICAgIGlmIChhICE9PSBkICYmIChhLnN0b3BQcm9wYWdhdGlvbigpLCAoYS50YXJnZXQgfHwgYS5zcmNFbGVtZW50IHx8IGEub3JpZ2luYWxUYXJnZXQpICE9PSB0aGlzLiRzdGFnZS5nZXQoMCkpKSByZXR1cm4gITE7XG4gICAgICAgICAgICB0aGlzLmxlYXZlKFwiYW5pbWF0aW5nXCIpLCB0aGlzLnRyaWdnZXIoXCJ0cmFuc2xhdGVkXCIpXG4gICAgICAgIH0sIGUucHJvdG90eXBlLnZpZXdwb3J0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGQ7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLnJlc3BvbnNpdmVCYXNlRWxlbWVudCAhPT0gYiA/IGQgPSBhKHRoaXMub3B0aW9ucy5yZXNwb25zaXZlQmFzZUVsZW1lbnQpLndpZHRoKCkgOiBiLmlubmVyV2lkdGggPyBkID0gYi5pbm5lcldpZHRoIDogYy5kb2N1bWVudEVsZW1lbnQgJiYgYy5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGggPyBkID0gYy5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGggOiBjb25zb2xlLndhcm4oXCJDYW4gbm90IGRldGVjdCB2aWV3cG9ydCB3aWR0aC5cIiksIGRcbiAgICAgICAgfSwgZS5wcm90b3R5cGUucmVwbGFjZSA9IGZ1bmN0aW9uIChiKSB7XG4gICAgICAgICAgICB0aGlzLiRzdGFnZS5lbXB0eSgpLCB0aGlzLl9pdGVtcyA9IFtdLCBiICYmIChiID0gYiBpbnN0YW5jZW9mIGpRdWVyeSA/IGIgOiBhKGIpKSwgdGhpcy5zZXR0aW5ncy5uZXN0ZWRJdGVtU2VsZWN0b3IgJiYgKGIgPSBiLmZpbmQoXCIuXCIgKyB0aGlzLnNldHRpbmdzLm5lc3RlZEl0ZW1TZWxlY3RvcikpLCBiLmZpbHRlcihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDEgPT09IHRoaXMubm9kZVR5cGVcbiAgICAgICAgICAgIH0pLmVhY2goYS5wcm94eShmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICAgICAgICAgIGIgPSB0aGlzLnByZXBhcmUoYiksIHRoaXMuJHN0YWdlLmFwcGVuZChiKSwgdGhpcy5faXRlbXMucHVzaChiKSwgdGhpcy5fbWVyZ2Vycy5wdXNoKDEgKiBiLmZpbmQoXCJbZGF0YS1tZXJnZV1cIikuYWRkQmFjayhcIltkYXRhLW1lcmdlXVwiKS5hdHRyKFwiZGF0YS1tZXJnZVwiKSB8fCAxKVxuICAgICAgICAgICAgfSwgdGhpcykpLCB0aGlzLnJlc2V0KHRoaXMuaXNOdW1lcmljKHRoaXMuc2V0dGluZ3Muc3RhcnRQb3NpdGlvbikgPyB0aGlzLnNldHRpbmdzLnN0YXJ0UG9zaXRpb24gOiAwKSwgdGhpcy5pbnZhbGlkYXRlKFwiaXRlbXNcIilcbiAgICAgICAgfSwgZS5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKGIsIGMpIHtcbiAgICAgICAgICAgIHZhciBlID0gdGhpcy5yZWxhdGl2ZSh0aGlzLl9jdXJyZW50KTtcbiAgICAgICAgICAgIGMgPSBjID09PSBkID8gdGhpcy5faXRlbXMubGVuZ3RoIDogdGhpcy5ub3JtYWxpemUoYywgITApLCBiID0gYiBpbnN0YW5jZW9mIGpRdWVyeSA/IGIgOiBhKGIpLCB0aGlzLnRyaWdnZXIoXCJhZGRcIiwge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGIsXG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGNcbiAgICAgICAgICAgIH0pLCBiID0gdGhpcy5wcmVwYXJlKGIpLCAwID09PSB0aGlzLl9pdGVtcy5sZW5ndGggfHwgYyA9PT0gdGhpcy5faXRlbXMubGVuZ3RoID8gKDAgPT09IHRoaXMuX2l0ZW1zLmxlbmd0aCAmJiB0aGlzLiRzdGFnZS5hcHBlbmQoYiksIDAgIT09IHRoaXMuX2l0ZW1zLmxlbmd0aCAmJiB0aGlzLl9pdGVtc1tjIC0gMV0uYWZ0ZXIoYiksIHRoaXMuX2l0ZW1zLnB1c2goYiksIHRoaXMuX21lcmdlcnMucHVzaCgxICogYi5maW5kKFwiW2RhdGEtbWVyZ2VdXCIpLmFkZEJhY2soXCJbZGF0YS1tZXJnZV1cIikuYXR0cihcImRhdGEtbWVyZ2VcIikgfHwgMSkpIDogKHRoaXMuX2l0ZW1zW2NdLmJlZm9yZShiKSwgdGhpcy5faXRlbXMuc3BsaWNlKGMsIDAsIGIpLCB0aGlzLl9tZXJnZXJzLnNwbGljZShjLCAwLCAxICogYi5maW5kKFwiW2RhdGEtbWVyZ2VdXCIpLmFkZEJhY2soXCJbZGF0YS1tZXJnZV1cIikuYXR0cihcImRhdGEtbWVyZ2VcIikgfHwgMSkpLCB0aGlzLl9pdGVtc1tlXSAmJiB0aGlzLnJlc2V0KHRoaXMuX2l0ZW1zW2VdLmluZGV4KCkpLCB0aGlzLmludmFsaWRhdGUoXCJpdGVtc1wiKSwgdGhpcy50cmlnZ2VyKFwiYWRkZWRcIiwge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGIsXG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGNcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0sIGUucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgICAgICBhID0gdGhpcy5ub3JtYWxpemUoYSwgITApLCBhICE9PSBkICYmICh0aGlzLnRyaWdnZXIoXCJyZW1vdmVcIiwge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHRoaXMuX2l0ZW1zW2FdLFxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhXG4gICAgICAgICAgICB9KSwgdGhpcy5faXRlbXNbYV0ucmVtb3ZlKCksIHRoaXMuX2l0ZW1zLnNwbGljZShhLCAxKSwgdGhpcy5fbWVyZ2Vycy5zcGxpY2UoYSwgMSksIHRoaXMuaW52YWxpZGF0ZShcIml0ZW1zXCIpLCB0aGlzLnRyaWdnZXIoXCJyZW1vdmVkXCIsIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiBudWxsLFxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhXG4gICAgICAgICAgICB9KSlcbiAgICAgICAgfSwgZS5wcm90b3R5cGUucHJlbG9hZEF1dG9XaWR0aEltYWdlcyA9IGZ1bmN0aW9uIChiKSB7XG4gICAgICAgICAgICBiLmVhY2goYS5wcm94eShmdW5jdGlvbiAoYiwgYykge1xuICAgICAgICAgICAgICAgIHRoaXMuZW50ZXIoXCJwcmUtbG9hZGluZ1wiKSwgYyA9IGEoYyksIGEobmV3IEltYWdlKS5vbmUoXCJsb2FkXCIsIGEucHJveHkoZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgICAgICAgICAgICAgYy5hdHRyKFwic3JjXCIsIGEudGFyZ2V0LnNyYyksIGMuY3NzKFwib3BhY2l0eVwiLCAxKSwgdGhpcy5sZWF2ZShcInByZS1sb2FkaW5nXCIpLCAhdGhpcy5pcyhcInByZS1sb2FkaW5nXCIpICYmICF0aGlzLmlzKFwiaW5pdGlhbGl6aW5nXCIpICYmIHRoaXMucmVmcmVzaCgpXG4gICAgICAgICAgICAgICAgfSwgdGhpcykpLmF0dHIoXCJzcmNcIiwgYy5hdHRyKFwic3JjXCIpIHx8IGMuYXR0cihcImRhdGEtc3JjXCIpIHx8IGMuYXR0cihcImRhdGEtc3JjLXJldGluYVwiKSlcbiAgICAgICAgICAgIH0sIHRoaXMpKVxuICAgICAgICB9LCBlLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdGhpcy4kZWxlbWVudC5vZmYoXCIub3dsLmNvcmVcIiksIHRoaXMuJHN0YWdlLm9mZihcIi5vd2wuY29yZVwiKSwgYShjKS5vZmYoXCIub3dsLmNvcmVcIiksIHRoaXMuc2V0dGluZ3MucmVzcG9uc2l2ZSAhPT0gITEgJiYgKGIuY2xlYXJUaW1lb3V0KHRoaXMucmVzaXplVGltZXIpLCB0aGlzLm9mZihiLCBcInJlc2l6ZVwiLCB0aGlzLl9oYW5kbGVycy5vblRocm90dGxlZFJlc2l6ZSkpO1xuICAgICAgICAgICAgZm9yICh2YXIgZCBpbiB0aGlzLl9wbHVnaW5zKSB0aGlzLl9wbHVnaW5zW2RdLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIHRoaXMuJHN0YWdlLmNoaWxkcmVuKFwiLmNsb25lZFwiKS5yZW1vdmUoKSwgdGhpcy4kc3RhZ2UudW53cmFwKCksIHRoaXMuJHN0YWdlLmNoaWxkcmVuKCkuY29udGVudHMoKS51bndyYXAoKSwgdGhpcy4kc3RhZ2UuY2hpbGRyZW4oKS51bndyYXAoKSwgdGhpcy4kZWxlbWVudC5yZW1vdmVDbGFzcyh0aGlzLm9wdGlvbnMucmVmcmVzaENsYXNzKS5yZW1vdmVDbGFzcyh0aGlzLm9wdGlvbnMubG9hZGluZ0NsYXNzKS5yZW1vdmVDbGFzcyh0aGlzLm9wdGlvbnMubG9hZGVkQ2xhc3MpLnJlbW92ZUNsYXNzKHRoaXMub3B0aW9ucy5ydGxDbGFzcykucmVtb3ZlQ2xhc3ModGhpcy5vcHRpb25zLmRyYWdDbGFzcykucmVtb3ZlQ2xhc3ModGhpcy5vcHRpb25zLmdyYWJDbGFzcykuYXR0cihcImNsYXNzXCIsIHRoaXMuJGVsZW1lbnQuYXR0cihcImNsYXNzXCIpLnJlcGxhY2UobmV3IFJlZ0V4cCh0aGlzLm9wdGlvbnMucmVzcG9uc2l2ZUNsYXNzICsgXCItXFxcXFMrXFxcXHNcIiwgXCJnXCIpLCBcIlwiKSkucmVtb3ZlRGF0YShcIm93bC5jYXJvdXNlbFwiKVxuICAgICAgICB9LCBlLnByb3RvdHlwZS5vcCA9IGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgICAgICAgICB2YXIgZCA9IHRoaXMuc2V0dGluZ3MucnRsO1xuICAgICAgICAgICAgc3dpdGNoIChiKSB7XG4gICAgICAgICAgICAgICAgY2FzZVwiPFwiOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZCA/IGEgPiBjIDogYSA8IGM7XG4gICAgICAgICAgICAgICAgY2FzZVwiPlwiOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZCA/IGEgPCBjIDogYSA+IGM7XG4gICAgICAgICAgICAgICAgY2FzZVwiPj1cIjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGQgPyBhIDw9IGMgOiBhID49IGM7XG4gICAgICAgICAgICAgICAgY2FzZVwiPD1cIjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGQgPyBhID49IGMgOiBhIDw9IGNcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgZS5wcm90b3R5cGUub24gPSBmdW5jdGlvbiAoYSwgYiwgYywgZCkge1xuICAgICAgICAgICAgYS5hZGRFdmVudExpc3RlbmVyID8gYS5hZGRFdmVudExpc3RlbmVyKGIsIGMsIGQpIDogYS5hdHRhY2hFdmVudCAmJiBhLmF0dGFjaEV2ZW50KFwib25cIiArIGIsIGMpXG4gICAgICAgIH0sIGUucHJvdG90eXBlLm9mZiA9IGZ1bmN0aW9uIChhLCBiLCBjLCBkKSB7XG4gICAgICAgICAgICBhLnJlbW92ZUV2ZW50TGlzdGVuZXIgPyBhLnJlbW92ZUV2ZW50TGlzdGVuZXIoYiwgYywgZCkgOiBhLmRldGFjaEV2ZW50ICYmIGEuZGV0YWNoRXZlbnQoXCJvblwiICsgYiwgYylcbiAgICAgICAgfSwgZS5wcm90b3R5cGUudHJpZ2dlciA9IGZ1bmN0aW9uIChiLCBjLCBkLCBmLCBnKSB7XG4gICAgICAgICAgICB2YXIgaCA9IHtpdGVtOiB7Y291bnQ6IHRoaXMuX2l0ZW1zLmxlbmd0aCwgaW5kZXg6IHRoaXMuY3VycmVudCgpfX0sXG4gICAgICAgICAgICAgIGkgPSBhLmNhbWVsQ2FzZShhLmdyZXAoW1wib25cIiwgYiwgZF0sIGZ1bmN0aW9uIChhKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gYVxuICAgICAgICAgICAgICB9KS5qb2luKFwiLVwiKS50b0xvd2VyQ2FzZSgpKSxcbiAgICAgICAgICAgICAgaiA9IGEuRXZlbnQoW2IsIFwib3dsXCIsIGQgfHwgXCJjYXJvdXNlbFwiXS5qb2luKFwiLlwiKS50b0xvd2VyQ2FzZSgpLCBhLmV4dGVuZCh7cmVsYXRlZFRhcmdldDogdGhpc30sIGgsIGMpKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9zdXByZXNzW2JdIHx8IChhLmVhY2godGhpcy5fcGx1Z2lucywgZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgICAgICAgICBiLm9uVHJpZ2dlciAmJiBiLm9uVHJpZ2dlcihqKVxuICAgICAgICAgICAgfSksIHRoaXMucmVnaXN0ZXIoe1xuICAgICAgICAgICAgICAgIHR5cGU6IGUuVHlwZS5FdmVudCxcbiAgICAgICAgICAgICAgICBuYW1lOiBiXG4gICAgICAgICAgICB9KSwgdGhpcy4kZWxlbWVudC50cmlnZ2VyKGopLCB0aGlzLnNldHRpbmdzICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgdGhpcy5zZXR0aW5nc1tpXSAmJiB0aGlzLnNldHRpbmdzW2ldLmNhbGwodGhpcywgaikpLCBqXG4gICAgICAgIH0sIGUucHJvdG90eXBlLmVudGVyID0gZnVuY3Rpb24gKGIpIHtcbiAgICAgICAgICAgIGEuZWFjaChbYl0uY29uY2F0KHRoaXMuX3N0YXRlcy50YWdzW2JdIHx8IFtdKSwgYS5wcm94eShmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlcy5jdXJyZW50W2JdID09PSBkICYmICh0aGlzLl9zdGF0ZXMuY3VycmVudFtiXSA9IDApLCB0aGlzLl9zdGF0ZXMuY3VycmVudFtiXSsrXG4gICAgICAgICAgICB9LCB0aGlzKSlcbiAgICAgICAgfSwgZS5wcm90b3R5cGUubGVhdmUgPSBmdW5jdGlvbiAoYikge1xuICAgICAgICAgICAgYS5lYWNoKFtiXS5jb25jYXQodGhpcy5fc3RhdGVzLnRhZ3NbYl0gfHwgW10pLCBhLnByb3h5KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVzLmN1cnJlbnRbYl0tLVxuICAgICAgICAgICAgfSwgdGhpcykpXG4gICAgICAgIH0sIGUucHJvdG90eXBlLnJlZ2lzdGVyID0gZnVuY3Rpb24gKGIpIHtcbiAgICAgICAgICAgIGlmIChiLnR5cGUgPT09IGUuVHlwZS5FdmVudCkge1xuICAgICAgICAgICAgICAgIGlmIChhLmV2ZW50LnNwZWNpYWxbYi5uYW1lXSB8fCAoYS5ldmVudC5zcGVjaWFsW2IubmFtZV0gPSB7fSksICFhLmV2ZW50LnNwZWNpYWxbYi5uYW1lXS5vd2wpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGMgPSBhLmV2ZW50LnNwZWNpYWxbYi5uYW1lXS5fZGVmYXVsdDtcbiAgICAgICAgICAgICAgICAgICAgYS5ldmVudC5zcGVjaWFsW2IubmFtZV0uX2RlZmF1bHQgPSBmdW5jdGlvbiAoYSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICFjIHx8ICFjLmFwcGx5IHx8IGEubmFtZXNwYWNlICYmIGEubmFtZXNwYWNlLmluZGV4T2YoXCJvd2xcIikgIT09IC0xID8gYS5uYW1lc3BhY2UgJiYgYS5uYW1lc3BhY2UuaW5kZXhPZihcIm93bFwiKSA+IC0xIDogYy5hcHBseSh0aGlzLCBhcmd1bWVudHMpXG4gICAgICAgICAgICAgICAgICAgIH0sIGEuZXZlbnQuc3BlY2lhbFtiLm5hbWVdLm93bCA9ICEwXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGIudHlwZSA9PT0gZS5UeXBlLlN0YXRlICYmICh0aGlzLl9zdGF0ZXMudGFnc1tiLm5hbWVdID8gdGhpcy5fc3RhdGVzLnRhZ3NbYi5uYW1lXSA9IHRoaXMuX3N0YXRlcy50YWdzW2IubmFtZV0uY29uY2F0KGIudGFncykgOiB0aGlzLl9zdGF0ZXMudGFnc1tiLm5hbWVdID0gYi50YWdzLCB0aGlzLl9zdGF0ZXMudGFnc1tiLm5hbWVdID0gYS5ncmVwKHRoaXMuX3N0YXRlcy50YWdzW2IubmFtZV0sIGEucHJveHkoZnVuY3Rpb24gKGMsIGQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYS5pbkFycmF5KGMsIHRoaXMuX3N0YXRlcy50YWdzW2IubmFtZV0pID09PSBkXG4gICAgICAgICAgICB9LCB0aGlzKSkpXG4gICAgICAgIH0sIGUucHJvdG90eXBlLnN1cHByZXNzID0gZnVuY3Rpb24gKGIpIHtcbiAgICAgICAgICAgIGEuZWFjaChiLCBhLnByb3h5KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3VwcmVzc1tiXSA9ICEwXG4gICAgICAgICAgICB9LCB0aGlzKSlcbiAgICAgICAgfSwgZS5wcm90b3R5cGUucmVsZWFzZSA9IGZ1bmN0aW9uIChiKSB7XG4gICAgICAgICAgICBhLmVhY2goYiwgYS5wcm94eShmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9zdXByZXNzW2JdXG4gICAgICAgICAgICB9LCB0aGlzKSlcbiAgICAgICAgfSwgZS5wcm90b3R5cGUucG9pbnRlciA9IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgICAgICB2YXIgYyA9IHt4OiBudWxsLCB5OiBudWxsfTtcbiAgICAgICAgICAgIHJldHVybiBhID0gYS5vcmlnaW5hbEV2ZW50IHx8IGEgfHwgYi5ldmVudCwgYSA9IGEudG91Y2hlcyAmJiBhLnRvdWNoZXMubGVuZ3RoID8gYS50b3VjaGVzWzBdIDogYS5jaGFuZ2VkVG91Y2hlcyAmJiBhLmNoYW5nZWRUb3VjaGVzLmxlbmd0aCA/IGEuY2hhbmdlZFRvdWNoZXNbMF0gOiBhLCBhLnBhZ2VYID8gKGMueCA9IGEucGFnZVgsIGMueSA9IGEucGFnZVkpIDogKGMueCA9IGEuY2xpZW50WCwgYy55ID0gYS5jbGllbnRZKSwgY1xuICAgICAgICB9LCBlLnByb3RvdHlwZS5pc051bWVyaWMgPSBmdW5jdGlvbiAoYSkge1xuICAgICAgICAgICAgcmV0dXJuICFpc05hTihwYXJzZUZsb2F0KGEpKVxuICAgICAgICB9LCBlLnByb3RvdHlwZS5kaWZmZXJlbmNlID0gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgICAgIHJldHVybiB7eDogYS54IC0gYi54LCB5OiBhLnkgLSBiLnl9XG4gICAgICAgIH0sIGEuZm4uc2J5T3dsQ2Fyb3VzZWwgPSBmdW5jdGlvbiAoYikge1xuICAgICAgICAgICAgdmFyIGMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIGQgPSBhKHRoaXMpLCBmID0gZC5kYXRhKFwib3dsLmNhcm91c2VsXCIpO1xuICAgICAgICAgICAgICAgIGYgfHwgKGYgPSBuZXcgZSh0aGlzLCBcIm9iamVjdFwiID09IHR5cGVvZiBiICYmIGIpLCBkLmRhdGEoXCJvd2wuY2Fyb3VzZWxcIiwgZiksIGEuZWFjaChbXCJuZXh0XCIsIFwicHJldlwiLCBcInRvXCIsIFwiZGVzdHJveVwiLCBcInJlZnJlc2hcIiwgXCJyZXBsYWNlXCIsIFwiYWRkXCIsIFwicmVtb3ZlXCJdLCBmdW5jdGlvbiAoYiwgYykge1xuICAgICAgICAgICAgICAgICAgICBmLnJlZ2lzdGVyKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGUuVHlwZS5FdmVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGNcbiAgICAgICAgICAgICAgICAgICAgfSksIGYuJGVsZW1lbnQub24oYyArIFwiLm93bC5jYXJvdXNlbC5jb3JlXCIsIGEucHJveHkoZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGEubmFtZXNwYWNlICYmIGEucmVsYXRlZFRhcmdldCAhPT0gdGhpcyAmJiAodGhpcy5zdXBwcmVzcyhbY10pLCBmW2NdLmFwcGx5KHRoaXMsIFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKSksIHRoaXMucmVsZWFzZShbY10pKVxuICAgICAgICAgICAgICAgICAgICB9LCBmKSlcbiAgICAgICAgICAgICAgICB9KSksIFwic3RyaW5nXCIgPT0gdHlwZW9mIGIgJiYgXCJfXCIgIT09IGIuY2hhckF0KDApICYmIGZbYl0uYXBwbHkoZiwgYylcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0sIGEuZm4uc2J5T3dsQ2Fyb3VzZWwuQ29uc3RydWN0b3IgPSBlXG4gICAgfSh3aW5kb3cuWmVwdG8gfHwgd2luZG93LmpRdWVyeSwgd2luZG93LCBkb2N1bWVudCksIGZ1bmN0aW9uIChhLCBiLCBjLCBkKSB7XG4gICAgICAgIHZhciBlID0gZnVuY3Rpb24gKGIpIHtcbiAgICAgICAgICAgIHRoaXMuX2NvcmUgPSBiLCB0aGlzLl9pbnRlcnZhbCA9IG51bGwsIHRoaXMuX3Zpc2libGUgPSBudWxsLCB0aGlzLl9oYW5kbGVycyA9IHtcbiAgICAgICAgICAgICAgICBcImluaXRpYWxpemVkLm93bC5jYXJvdXNlbFwiOiBhLnByb3h5KGZ1bmN0aW9uIChhKSB7XG4gICAgICAgICAgICAgICAgICAgIGEubmFtZXNwYWNlICYmIHRoaXMuX2NvcmUuc2V0dGluZ3MuYXV0b1JlZnJlc2ggJiYgdGhpcy53YXRjaCgpXG4gICAgICAgICAgICAgICAgfSwgdGhpcylcbiAgICAgICAgICAgIH0sIHRoaXMuX2NvcmUub3B0aW9ucyA9IGEuZXh0ZW5kKHt9LCBlLkRlZmF1bHRzLCB0aGlzLl9jb3JlLm9wdGlvbnMpLCB0aGlzLl9jb3JlLiRlbGVtZW50Lm9uKHRoaXMuX2hhbmRsZXJzKVxuICAgICAgICB9O1xuICAgICAgICBlLkRlZmF1bHRzID0ge2F1dG9SZWZyZXNoOiAhMCwgYXV0b1JlZnJlc2hJbnRlcnZhbDogNTAwfSwgZS5wcm90b3R5cGUud2F0Y2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB0aGlzLl9pbnRlcnZhbCB8fCAodGhpcy5fdmlzaWJsZSA9IHRoaXMuX2NvcmUuJGVsZW1lbnQuaXMoXCI6dmlzaWJsZVwiKSwgdGhpcy5faW50ZXJ2YWwgPSBiLnNldEludGVydmFsKGEucHJveHkodGhpcy5yZWZyZXNoLCB0aGlzKSwgdGhpcy5fY29yZS5zZXR0aW5ncy5hdXRvUmVmcmVzaEludGVydmFsKSlcbiAgICAgICAgfSwgZS5wcm90b3R5cGUucmVmcmVzaCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHRoaXMuX2NvcmUuJGVsZW1lbnQuaXMoXCI6dmlzaWJsZVwiKSAhPT0gdGhpcy5fdmlzaWJsZSAmJiAodGhpcy5fdmlzaWJsZSA9ICF0aGlzLl92aXNpYmxlLCB0aGlzLl9jb3JlLiRlbGVtZW50LnRvZ2dsZUNsYXNzKFwic2J5LW93bC1oaWRkZW5cIiwgIXRoaXMuX3Zpc2libGUpLCB0aGlzLl92aXNpYmxlICYmIHRoaXMuX2NvcmUuaW52YWxpZGF0ZShcIndpZHRoXCIpICYmIHRoaXMuX2NvcmUucmVmcmVzaCgpKVxuICAgICAgICB9LCBlLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGEsIGM7XG4gICAgICAgICAgICBiLmNsZWFySW50ZXJ2YWwodGhpcy5faW50ZXJ2YWwpO1xuICAgICAgICAgICAgZm9yIChhIGluIHRoaXMuX2hhbmRsZXJzKSB0aGlzLl9jb3JlLiRlbGVtZW50Lm9mZihhLCB0aGlzLl9oYW5kbGVyc1thXSk7XG4gICAgICAgICAgICBmb3IgKGMgaW4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpIFwiZnVuY3Rpb25cIiAhPSB0eXBlb2YgdGhpc1tjXSAmJiAodGhpc1tjXSA9IG51bGwpXG4gICAgICAgIH0sIGEuZm4uc2J5T3dsQ2Fyb3VzZWwuQ29uc3RydWN0b3IuUGx1Z2lucy5BdXRvUmVmcmVzaCA9IGVcbiAgICB9KHdpbmRvdy5aZXB0byB8fCB3aW5kb3cualF1ZXJ5LCB3aW5kb3csIGRvY3VtZW50KSwgZnVuY3Rpb24gKGEsIGIsIGMsIGQpIHtcbiAgICAgICAgdmFyIGUgPSBmdW5jdGlvbiAoYikge1xuICAgICAgICAgICAgdGhpcy5fY29yZSA9IGIsIHRoaXMuX2xvYWRlZCA9IFtdLCB0aGlzLl9oYW5kbGVycyA9IHtcbiAgICAgICAgICAgICAgICBcImluaXRpYWxpemVkLm93bC5jYXJvdXNlbCBjaGFuZ2Uub3dsLmNhcm91c2VsIHJlc2l6ZWQub3dsLmNhcm91c2VsXCI6IGEucHJveHkoZnVuY3Rpb24gKGIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGIubmFtZXNwYWNlICYmIHRoaXMuX2NvcmUuc2V0dGluZ3MgJiYgdGhpcy5fY29yZS5zZXR0aW5ncy5sYXp5TG9hZCAmJiAoYi5wcm9wZXJ0eSAmJiBcInBvc2l0aW9uXCIgPT0gYi5wcm9wZXJ0eS5uYW1lIHx8IFwiaW5pdGlhbGl6ZWRcIiA9PSBiLnR5cGUpKSBmb3IgKHZhciBjID0gdGhpcy5fY29yZS5zZXR0aW5ncywgZSA9IGMuY2VudGVyICYmIE1hdGguY2VpbChjLml0ZW1zIC8gMikgfHwgYy5pdGVtcywgZiA9IGMuY2VudGVyICYmIGUgKiAtMSB8fCAwLCBnID0gKGIucHJvcGVydHkgJiYgYi5wcm9wZXJ0eS52YWx1ZSAhPT0gZCA/IGIucHJvcGVydHkudmFsdWUgOiB0aGlzLl9jb3JlLmN1cnJlbnQoKSkgKyBmLCBoID0gdGhpcy5fY29yZS5jbG9uZXMoKS5sZW5ndGgsIGkgPSBhLnByb3h5KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWQoYilcbiAgICAgICAgICAgICAgICAgICAgfSwgdGhpcyk7IGYrKyA8IGU7KSB0aGlzLmxvYWQoaCAvIDIgKyB0aGlzLl9jb3JlLnJlbGF0aXZlKGcpKSwgaCAmJiBhLmVhY2godGhpcy5fY29yZS5jbG9uZXModGhpcy5fY29yZS5yZWxhdGl2ZShnKSksIGkpLCBnKytcbiAgICAgICAgICAgICAgICB9LCB0aGlzKVxuICAgICAgICAgICAgfSwgdGhpcy5fY29yZS5vcHRpb25zID0gYS5leHRlbmQoe30sIGUuRGVmYXVsdHMsIHRoaXMuX2NvcmUub3B0aW9ucyksIHRoaXMuX2NvcmUuJGVsZW1lbnQub24odGhpcy5faGFuZGxlcnMpXG4gICAgICAgIH07XG4gICAgICAgIGUuRGVmYXVsdHMgPSB7bGF6eUxvYWQ6ICExfSwgZS5wcm90b3R5cGUubG9hZCA9IGZ1bmN0aW9uIChjKSB7XG4gICAgICAgICAgICB2YXIgZCA9IHRoaXMuX2NvcmUuJHN0YWdlLmNoaWxkcmVuKCkuZXEoYyksIGUgPSBkICYmIGQuZmluZChcIi5zYnktb3dsLWxhenlcIik7XG4gICAgICAgICAgICAhZSB8fCBhLmluQXJyYXkoZC5nZXQoMCksIHRoaXMuX2xvYWRlZCkgPiAtMSB8fCAoZS5lYWNoKGEucHJveHkoZnVuY3Rpb24gKGMsIGQpIHtcbiAgICAgICAgICAgICAgICB2YXIgZSwgZiA9IGEoZCksIGcgPSBiLmRldmljZVBpeGVsUmF0aW8gPiAxICYmIGYuYXR0cihcImRhdGEtc3JjLXJldGluYVwiKSB8fCBmLmF0dHIoXCJkYXRhLXNyY1wiKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jb3JlLnRyaWdnZXIoXCJsb2FkXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudDogZixcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBnXG4gICAgICAgICAgICAgICAgfSwgXCJsYXp5XCIpLCBmLmlzKFwiaW1nXCIpID8gZi5vbmUoXCJsb2FkLm93bC5sYXp5XCIsIGEucHJveHkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBmLmNzcyhcIm9wYWNpdHlcIiwgMSksIHRoaXMuX2NvcmUudHJpZ2dlcihcImxvYWRlZFwiLCB7ZWxlbWVudDogZiwgdXJsOiBnfSwgXCJsYXp5XCIpXG4gICAgICAgICAgICAgICAgfSwgdGhpcykpLmF0dHIoXCJzcmNcIiwgZykgOiAoZSA9IG5ldyBJbWFnZSwgZS5vbmxvYWQgPSBhLnByb3h5KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgZi5jc3Moe1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJiYWNrZ3JvdW5kLWltYWdlXCI6ICd1cmwoXCInICsgZyArICdcIiknLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogXCIxXCJcbiAgICAgICAgICAgICAgICAgICAgfSksIHRoaXMuX2NvcmUudHJpZ2dlcihcImxvYWRlZFwiLCB7ZWxlbWVudDogZiwgdXJsOiBnfSwgXCJsYXp5XCIpXG4gICAgICAgICAgICAgICAgfSwgdGhpcyksIGUuc3JjID0gZylcbiAgICAgICAgICAgIH0sIHRoaXMpKSwgdGhpcy5fbG9hZGVkLnB1c2goZC5nZXQoMCkpKVxuICAgICAgICB9LCBlLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGEsIGI7XG4gICAgICAgICAgICBmb3IgKGEgaW4gdGhpcy5oYW5kbGVycykgdGhpcy5fY29yZS4kZWxlbWVudC5vZmYoYSwgdGhpcy5oYW5kbGVyc1thXSk7XG4gICAgICAgICAgICBmb3IgKGIgaW4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpIFwiZnVuY3Rpb25cIiAhPSB0eXBlb2YgdGhpc1tiXSAmJiAodGhpc1tiXSA9IG51bGwpXG4gICAgICAgIH0sIGEuZm4uc2J5T3dsQ2Fyb3VzZWwuQ29uc3RydWN0b3IuUGx1Z2lucy5MYXp5ID0gZVxuICAgIH0od2luZG93LlplcHRvIHx8IHdpbmRvdy5qUXVlcnksIHdpbmRvdywgZG9jdW1lbnQpLCBmdW5jdGlvbiAoYSwgYiwgYywgZCkge1xuICAgICAgICB2YXIgZSA9IGZ1bmN0aW9uIChiKSB7XG4gICAgICAgICAgICB0aGlzLl9jb3JlID0gYiwgdGhpcy5faGFuZGxlcnMgPSB7XG4gICAgICAgICAgICAgICAgXCJpbml0aWFsaXplZC5vd2wuY2Fyb3VzZWwgcmVmcmVzaGVkLm93bC5jYXJvdXNlbFwiOiBhLnByb3h5KGZ1bmN0aW9uIChhKSB7XG4gICAgICAgICAgICAgICAgICAgIGEubmFtZXNwYWNlICYmIHRoaXMuX2NvcmUuc2V0dGluZ3MuYXV0b0hlaWdodCAmJiB0aGlzLnVwZGF0ZSgpXG4gICAgICAgICAgICAgICAgfSwgdGhpcyksIFwiY2hhbmdlZC5vd2wuY2Fyb3VzZWxcIjogYS5wcm94eShmdW5jdGlvbiAoYSkge1xuICAgICAgICAgICAgICAgICAgICBhLm5hbWVzcGFjZSAmJiB0aGlzLl9jb3JlLnNldHRpbmdzLmF1dG9IZWlnaHQgJiYgXCJwb3NpdGlvblwiID09IGEucHJvcGVydHkubmFtZSAmJiB0aGlzLnVwZGF0ZSgpXG4gICAgICAgICAgICAgICAgfSwgdGhpcyksIFwibG9hZGVkLm93bC5sYXp5XCI6IGEucHJveHkoZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgICAgICAgICAgICAgYS5uYW1lc3BhY2UgJiYgdGhpcy5fY29yZS5zZXR0aW5ncy5hdXRvSGVpZ2h0ICYmIGEuZWxlbWVudC5jbG9zZXN0KFwiLlwiICsgdGhpcy5fY29yZS5zZXR0aW5ncy5pdGVtQ2xhc3MpLmluZGV4KCkgPT09IHRoaXMuX2NvcmUuY3VycmVudCgpICYmIHRoaXMudXBkYXRlKClcbiAgICAgICAgICAgICAgICB9LCB0aGlzKVxuICAgICAgICAgICAgfSwgdGhpcy5fY29yZS5vcHRpb25zID0gYS5leHRlbmQoe30sIGUuRGVmYXVsdHMsIHRoaXMuX2NvcmUub3B0aW9ucyksIHRoaXMuX2NvcmUuJGVsZW1lbnQub24odGhpcy5faGFuZGxlcnMpXG4gICAgICAgIH07XG4gICAgICAgIGUuRGVmYXVsdHMgPSB7YXV0b0hlaWdodDogITEsIGF1dG9IZWlnaHRDbGFzczogXCJzYnktb3dsLWhlaWdodFwifSwgZS5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGIgPSB0aGlzLl9jb3JlLl9jdXJyZW50LCBjID0gYiArIHRoaXMuX2NvcmUuc2V0dGluZ3MuaXRlbXMsXG4gICAgICAgICAgICAgIGQgPSB0aGlzLl9jb3JlLiRzdGFnZS5jaGlsZHJlbigpLnRvQXJyYXkoKS5zbGljZShiLCBjKSwgZSA9IFtdLCBmID0gMDtcbiAgICAgICAgICAgIGEuZWFjaChkLCBmdW5jdGlvbiAoYiwgYykge1xuICAgICAgICAgICAgICAgIGUucHVzaChhKGMpLmhlaWdodCgpKVxuICAgICAgICAgICAgfSksIGYgPSBNYXRoLm1heC5hcHBseShudWxsLCBlKSwgdGhpcy5fY29yZS4kc3RhZ2UucGFyZW50KCkuaGVpZ2h0KGYpLmFkZENsYXNzKHRoaXMuX2NvcmUuc2V0dGluZ3MuYXV0b0hlaWdodENsYXNzKVxuICAgICAgICB9LCBlLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGEsIGI7XG4gICAgICAgICAgICBmb3IgKGEgaW4gdGhpcy5faGFuZGxlcnMpIHRoaXMuX2NvcmUuJGVsZW1lbnQub2ZmKGEsIHRoaXMuX2hhbmRsZXJzW2FdKTtcbiAgICAgICAgICAgIGZvciAoYiBpbiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSkgXCJmdW5jdGlvblwiICE9IHR5cGVvZiB0aGlzW2JdICYmICh0aGlzW2JdID0gbnVsbClcbiAgICAgICAgfSwgYS5mbi5zYnlPd2xDYXJvdXNlbC5Db25zdHJ1Y3Rvci5QbHVnaW5zLkF1dG9IZWlnaHQgPSBlXG4gICAgfSh3aW5kb3cuWmVwdG8gfHwgd2luZG93LmpRdWVyeSwgd2luZG93LCBkb2N1bWVudCksIGZ1bmN0aW9uIChhLCBiLCBjLCBkKSB7XG4gICAgICAgIHZhciBlID0gZnVuY3Rpb24gKGIpIHtcbiAgICAgICAgICAgIHRoaXMuX2NvcmUgPSBiLCB0aGlzLl92aWRlb3MgPSB7fSwgdGhpcy5fcGxheWluZyA9IG51bGwsIHRoaXMuX2hhbmRsZXJzID0ge1xuICAgICAgICAgICAgICAgIFwiaW5pdGlhbGl6ZWQub3dsLmNhcm91c2VsXCI6IGEucHJveHkoZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgICAgICAgICAgICAgYS5uYW1lc3BhY2UgJiYgdGhpcy5fY29yZS5yZWdpc3Rlcih7dHlwZTogXCJzdGF0ZVwiLCBuYW1lOiBcInBsYXlpbmdcIiwgdGFnczogW1wiaW50ZXJhY3RpbmdcIl19KVxuICAgICAgICAgICAgICAgIH0sIHRoaXMpLCBcInJlc2l6ZS5vd2wuY2Fyb3VzZWxcIjogYS5wcm94eShmdW5jdGlvbiAoYSkge1xuICAgICAgICAgICAgICAgICAgICBhLm5hbWVzcGFjZSAmJiB0aGlzLl9jb3JlLnNldHRpbmdzLnZpZGVvICYmIHRoaXMuaXNJbkZ1bGxTY3JlZW4oKSAmJiBhLnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICB9LCB0aGlzKSwgXCJyZWZyZXNoZWQub3dsLmNhcm91c2VsXCI6IGEucHJveHkoZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgICAgICAgICAgICAgYS5uYW1lc3BhY2UgJiYgdGhpcy5fY29yZS5pcyhcInJlc2l6aW5nXCIpICYmIHRoaXMuX2NvcmUuJHN0YWdlLmZpbmQoXCIuY2xvbmVkIC5zYnktb3dsLXZpZGVvLWZyYW1lXCIpLnJlbW92ZSgpXG4gICAgICAgICAgICAgICAgfSwgdGhpcyksIFwiY2hhbmdlZC5vd2wuY2Fyb3VzZWxcIjogYS5wcm94eShmdW5jdGlvbiAoYSkge1xuICAgICAgICAgICAgICAgICAgICBhLm5hbWVzcGFjZSAmJiBcInBvc2l0aW9uXCIgPT09IGEucHJvcGVydHkubmFtZSAmJiB0aGlzLl9wbGF5aW5nICYmIHRoaXMuc3RvcCgpXG4gICAgICAgICAgICAgICAgfSwgdGhpcyksIFwicHJlcGFyZWQub3dsLmNhcm91c2VsXCI6IGEucHJveHkoZnVuY3Rpb24gKGIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGIubmFtZXNwYWNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IGEoYi5jb250ZW50KS5maW5kKFwiLnNieS1vd2wtdmlkZW9cIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBjLmxlbmd0aCAmJiAoYy5jc3MoXCJkaXNwbGF5XCIsIFwibm9uZVwiKSwgdGhpcy5mZXRjaChjLCBhKGIuY29udGVudCkpKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwgdGhpcylcbiAgICAgICAgICAgIH0sIHRoaXMuX2NvcmUub3B0aW9ucyA9IGEuZXh0ZW5kKHt9LCBlLkRlZmF1bHRzLCB0aGlzLl9jb3JlLm9wdGlvbnMpLCB0aGlzLl9jb3JlLiRlbGVtZW50Lm9uKHRoaXMuX2hhbmRsZXJzKSwgdGhpcy5fY29yZS4kZWxlbWVudC5vbihcImNsaWNrLm93bC52aWRlb1wiLCBcIi5zYnktb3dsLXZpZGVvLXBsYXktaWNvblwiLCBhLnByb3h5KGZ1bmN0aW9uIChhKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wbGF5KGEpXG4gICAgICAgICAgICB9LCB0aGlzKSlcbiAgICAgICAgfTtcbiAgICAgICAgZS5EZWZhdWx0cyA9IHt2aWRlbzogITEsIHZpZGVvSGVpZ2h0OiAhMSwgdmlkZW9XaWR0aDogITF9LCBlLnByb3RvdHlwZS5mZXRjaCA9IGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgICAgICB2YXIgYyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBhLmF0dHIoXCJkYXRhLXZpbWVvLWlkXCIpID8gXCJ2aW1lb1wiIDogYS5hdHRyKFwiZGF0YS12emFhci1pZFwiKSA/IFwidnphYXJcIiA6IFwieW91dHViZVwiXG4gICAgICAgICAgICAgIH0oKSwgZCA9IGEuYXR0cihcImRhdGEtdmltZW8taWRcIikgfHwgYS5hdHRyKFwiZGF0YS15b3V0dWJlLWlkXCIpIHx8IGEuYXR0cihcImRhdGEtdnphYXItaWRcIiksXG4gICAgICAgICAgICAgIGUgPSBhLmF0dHIoXCJkYXRhLXdpZHRoXCIpIHx8IHRoaXMuX2NvcmUuc2V0dGluZ3MudmlkZW9XaWR0aCxcbiAgICAgICAgICAgICAgZiA9IGEuYXR0cihcImRhdGEtaGVpZ2h0XCIpIHx8IHRoaXMuX2NvcmUuc2V0dGluZ3MudmlkZW9IZWlnaHQsIGcgPSBhLmF0dHIoXCJocmVmXCIpO1xuICAgICAgICAgICAgaWYgKCFnKSB0aHJvdyBuZXcgRXJyb3IoXCJNaXNzaW5nIHZpZGVvIFVSTC5cIik7XG4gICAgICAgICAgICBpZiAoZCA9IGcubWF0Y2goLyhodHRwOnxodHRwczp8KVxcL1xcLyhwbGF5ZXIufHd3dy58YXBwLik/KHZpbWVvXFwuY29tfHlvdXR1KGJlXFwuY29tfFxcLmJlfGJlXFwuZ29vZ2xlYXBpc1xcLmNvbSl8dnphYXJcXC5jb20pXFwvKHZpZGVvXFwvfHZpZGVvc1xcL3xlbWJlZFxcL3xjaGFubmVsc1xcLy4rXFwvfGdyb3Vwc1xcLy4rXFwvfHdhdGNoXFw/dj18dlxcLyk/KFtBLVphLXowLTkuXyUtXSopKFxcJlxcUyspPy8pLCBkWzNdLmluZGV4T2YoXCJ5b3V0dVwiKSA+IC0xKSBjID0gXCJ5b3V0dWJlXCI7IGVsc2UgaWYgKGRbM10uaW5kZXhPZihcInZpbWVvXCIpID4gLTEpIGMgPSBcInZpbWVvXCI7IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICghKGRbM10uaW5kZXhPZihcInZ6YWFyXCIpID4gLTEpKSB0aHJvdyBuZXcgRXJyb3IoXCJWaWRlbyBVUkwgbm90IHN1cHBvcnRlZC5cIik7XG4gICAgICAgICAgICAgICAgYyA9IFwidnphYXJcIlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZCA9IGRbNl0sIHRoaXMuX3ZpZGVvc1tnXSA9IHtcbiAgICAgICAgICAgICAgICB0eXBlOiBjLFxuICAgICAgICAgICAgICAgIGlkOiBkLFxuICAgICAgICAgICAgICAgIHdpZHRoOiBlLFxuICAgICAgICAgICAgICAgIGhlaWdodDogZlxuICAgICAgICAgICAgfSwgYi5hdHRyKFwiZGF0YS12aWRlb1wiLCBnKSwgdGhpcy50aHVtYm5haWwoYSwgdGhpcy5fdmlkZW9zW2ddKVxuICAgICAgICB9LCBlLnByb3RvdHlwZS50aHVtYm5haWwgPSBmdW5jdGlvbiAoYiwgYykge1xuICAgICAgICAgICAgdmFyIGQsIGUsIGYsIGcgPSBjLndpZHRoICYmIGMuaGVpZ2h0ID8gJ3N0eWxlPVwid2lkdGg6JyArIGMud2lkdGggKyBcInB4O2hlaWdodDpcIiArIGMuaGVpZ2h0ICsgJ3B4O1wiJyA6IFwiXCIsXG4gICAgICAgICAgICAgIGggPSBiLmZpbmQoXCJpbWdcIiksIGkgPSBcInNyY1wiLCBqID0gXCJcIiwgayA9IHRoaXMuX2NvcmUuc2V0dGluZ3MsIGwgPSBmdW5jdGlvbiAoYSkge1xuICAgICAgICAgICAgICAgICAgZSA9ICc8ZGl2IGNsYXNzPVwic2J5LW93bC12aWRlby1wbGF5LWljb25cIj48L2Rpdj4nLCBkID0gay5sYXp5TG9hZCA/ICc8ZGl2IGNsYXNzPVwic2J5LW93bC12aWRlby10biAnICsgaiArICdcIiAnICsgaSArICc9XCInICsgYSArICdcIj48L2Rpdj4nIDogJzxkaXYgY2xhc3M9XCJzYnktb3dsLXZpZGVvLXRuXCIgc3R5bGU9XCJvcGFjaXR5OjE7YmFja2dyb3VuZC1pbWFnZTp1cmwoJyArIGEgKyAnKVwiPjwvZGl2PicsIGIuYWZ0ZXIoZCksIGIuYWZ0ZXIoZSlcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmIChiLndyYXAoJzxkaXYgY2xhc3M9XCJzYnktb3dsLXZpZGVvLXdyYXBwZXJcIicgKyBnICsgXCI+PC9kaXY+XCIpLCB0aGlzLl9jb3JlLnNldHRpbmdzLmxhenlMb2FkICYmIChpID0gXCJkYXRhLXNyY1wiLCBqID0gXCJzYnktb3dsLWxhenlcIiksIGgubGVuZ3RoKSByZXR1cm4gbChoLmF0dHIoaSkpLCBoLnJlbW92ZSgpLCAhMTtcbiAgICAgICAgICAgIFwieW91dHViZVwiID09PSBjLnR5cGUgPyAoZiA9IFwiLy9pbWcueW91dHViZS5jb20vdmkvXCIgKyBjLmlkICsgXCIvaHFkZWZhdWx0LmpwZ1wiLCBsKGYpKSA6IFwidmltZW9cIiA9PT0gYy50eXBlID8gYS5hamF4KHtcbiAgICAgICAgICAgICAgICB0eXBlOiBcIkdFVFwiLFxuICAgICAgICAgICAgICAgIHVybDogXCIvL3ZpbWVvLmNvbS9hcGkvdjIvdmlkZW8vXCIgKyBjLmlkICsgXCIuanNvblwiLFxuICAgICAgICAgICAgICAgIGpzb25wOiBcImNhbGxiYWNrXCIsXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6IFwianNvbnBcIixcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoYSkge1xuICAgICAgICAgICAgICAgICAgICBmID0gYVswXS50aHVtYm5haWxfbGFyZ2UsIGwoZilcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSA6IFwidnphYXJcIiA9PT0gYy50eXBlICYmIGEuYWpheCh7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJHRVRcIixcbiAgICAgICAgICAgICAgICB1cmw6IFwiLy92emFhci5jb20vYXBpL3ZpZGVvcy9cIiArIGMuaWQgKyBcIi5qc29uXCIsXG4gICAgICAgICAgICAgICAganNvbnA6IFwiY2FsbGJhY2tcIixcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogXCJqc29ucFwiLFxuICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgICAgICAgICAgICAgIGYgPSBhLmZyYW1lZ3JhYl91cmwsIGwoZilcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICB9LCBlLnByb3RvdHlwZS5zdG9wID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdGhpcy5fY29yZS50cmlnZ2VyKFwic3RvcFwiLCBudWxsLCBcInZpZGVvXCIpLCB0aGlzLl9wbGF5aW5nLmZpbmQoXCIuc2J5LW93bC12aWRlby1mcmFtZVwiKS5yZW1vdmUoKSwgdGhpcy5fcGxheWluZy5yZW1vdmVDbGFzcyhcInNieS1vd2wtdmlkZW8tcGxheWluZ1wiKSwgdGhpcy5fcGxheWluZyA9IG51bGwsIHRoaXMuX2NvcmUubGVhdmUoXCJwbGF5aW5nXCIpLCB0aGlzLl9jb3JlLnRyaWdnZXIoXCJzdG9wcGVkXCIsIG51bGwsIFwidmlkZW9cIilcbiAgICAgICAgfSwgZS5wcm90b3R5cGUucGxheSA9IGZ1bmN0aW9uIChiKSB7XG4gICAgICAgICAgICB2YXIgYywgZCA9IGEoYi50YXJnZXQpLCBlID0gZC5jbG9zZXN0KFwiLlwiICsgdGhpcy5fY29yZS5zZXR0aW5ncy5pdGVtQ2xhc3MpLFxuICAgICAgICAgICAgICBmID0gdGhpcy5fdmlkZW9zW2UuYXR0cihcImRhdGEtdmlkZW9cIildLCBnID0gZi53aWR0aCB8fCBcIjEwMCVcIixcbiAgICAgICAgICAgICAgaCA9IGYuaGVpZ2h0IHx8IHRoaXMuX2NvcmUuJHN0YWdlLmhlaWdodCgpO1xuICAgICAgICAgICAgdGhpcy5fcGxheWluZyB8fCAodGhpcy5fY29yZS5lbnRlcihcInBsYXlpbmdcIiksIHRoaXMuX2NvcmUudHJpZ2dlcihcInBsYXlcIiwgbnVsbCwgXCJ2aWRlb1wiKSwgZSA9IHRoaXMuX2NvcmUuaXRlbXModGhpcy5fY29yZS5yZWxhdGl2ZShlLmluZGV4KCkpKSwgdGhpcy5fY29yZS5yZXNldChlLmluZGV4KCkpLCBcInlvdXR1YmVcIiA9PT0gZi50eXBlID8gYyA9ICc8aWZyYW1lIHdpZHRoPVwiJyArIGcgKyAnXCIgaGVpZ2h0PVwiJyArIGggKyAnXCIgc3JjPVwiLy93d3cueW91dHViZS5jb20vZW1iZWQvJyArIGYuaWQgKyBcIj9hdXRvcGxheT0xJnJlbD0wJnY9XCIgKyBmLmlkICsgJ1wiIGZyYW1lYm9yZGVyPVwiMFwiIGFsbG93ZnVsbHNjcmVlbj48L2lmcmFtZT4nIDogXCJ2aW1lb1wiID09PSBmLnR5cGUgPyBjID0gJzxpZnJhbWUgc3JjPVwiLy9wbGF5ZXIudmltZW8uY29tL3ZpZGVvLycgKyBmLmlkICsgJz9hdXRvcGxheT0xXCIgd2lkdGg9XCInICsgZyArICdcIiBoZWlnaHQ9XCInICsgaCArICdcIiBmcmFtZWJvcmRlcj1cIjBcIiB3ZWJraXRhbGxvd2Z1bGxzY3JlZW4gbW96YWxsb3dmdWxsc2NyZWVuIGFsbG93ZnVsbHNjcmVlbj48L2lmcmFtZT4nIDogXCJ2emFhclwiID09PSBmLnR5cGUgJiYgKGMgPSAnPGlmcmFtZSBmcmFtZWJvcmRlcj1cIjBcImhlaWdodD1cIicgKyBoICsgJ1wid2lkdGg9XCInICsgZyArICdcIiBhbGxvd2Z1bGxzY3JlZW4gbW96YWxsb3dmdWxsc2NyZWVuIHdlYmtpdEFsbG93RnVsbFNjcmVlbiBzcmM9XCIvL3ZpZXcudnphYXIuY29tLycgKyBmLmlkICsgJy9wbGF5ZXI/YXV0b3BsYXk9dHJ1ZVwiPjwvaWZyYW1lPicpLCBhKCc8ZGl2IGNsYXNzPVwic2J5LW93bC12aWRlby1mcmFtZVwiPicgKyBjICsgXCI8L2Rpdj5cIikuaW5zZXJ0QWZ0ZXIoZS5maW5kKFwiLnNieS1vd2wtdmlkZW9cIikpLCB0aGlzLl9wbGF5aW5nID0gZS5hZGRDbGFzcyhcInNieS1vd2wtdmlkZW8tcGxheWluZ1wiKSlcbiAgICAgICAgfSwgZS5wcm90b3R5cGUuaXNJbkZ1bGxTY3JlZW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgYiA9IGMuZnVsbHNjcmVlbkVsZW1lbnQgfHwgYy5tb3pGdWxsU2NyZWVuRWxlbWVudCB8fCBjLndlYmtpdEZ1bGxzY3JlZW5FbGVtZW50O1xuICAgICAgICAgICAgcmV0dXJuIGIgJiYgYShiKS5wYXJlbnQoKS5oYXNDbGFzcyhcInNieS1vd2wtdmlkZW8tZnJhbWVcIilcbiAgICAgICAgfSwgZS5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBhLCBiO1xuICAgICAgICAgICAgdGhpcy5fY29yZS4kZWxlbWVudC5vZmYoXCJjbGljay5vd2wudmlkZW9cIik7XG4gICAgICAgICAgICBmb3IgKGEgaW4gdGhpcy5faGFuZGxlcnMpIHRoaXMuX2NvcmUuJGVsZW1lbnQub2ZmKGEsIHRoaXMuX2hhbmRsZXJzW2FdKTtcbiAgICAgICAgICAgIGZvciAoYiBpbiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSkgXCJmdW5jdGlvblwiICE9IHR5cGVvZiB0aGlzW2JdICYmICh0aGlzW2JdID0gbnVsbClcbiAgICAgICAgfSwgYS5mbi5zYnlPd2xDYXJvdXNlbC5Db25zdHJ1Y3Rvci5QbHVnaW5zLlZpZGVvID0gZVxuICAgIH0od2luZG93LlplcHRvIHx8IHdpbmRvdy5qUXVlcnksIHdpbmRvdywgZG9jdW1lbnQpLCBmdW5jdGlvbiAoYSwgYiwgYywgZCkge1xuICAgICAgICB2YXIgZSA9IGZ1bmN0aW9uIChiKSB7XG4gICAgICAgICAgICB0aGlzLmNvcmUgPSBiLCB0aGlzLmNvcmUub3B0aW9ucyA9IGEuZXh0ZW5kKHt9LCBlLkRlZmF1bHRzLCB0aGlzLmNvcmUub3B0aW9ucyksIHRoaXMuc3dhcHBpbmcgPSAhMCwgdGhpcy5wcmV2aW91cyA9IGQsIHRoaXMubmV4dCA9IGQsIHRoaXMuaGFuZGxlcnMgPSB7XG4gICAgICAgICAgICAgICAgXCJjaGFuZ2Uub3dsLmNhcm91c2VsXCI6IGEucHJveHkoZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgICAgICAgICAgICAgYS5uYW1lc3BhY2UgJiYgXCJwb3NpdGlvblwiID09IGEucHJvcGVydHkubmFtZSAmJiAodGhpcy5wcmV2aW91cyA9IHRoaXMuY29yZS5jdXJyZW50KCksIHRoaXMubmV4dCA9IGEucHJvcGVydHkudmFsdWUpXG4gICAgICAgICAgICAgICAgfSwgdGhpcyksIFwiZHJhZy5vd2wuY2Fyb3VzZWwgZHJhZ2dlZC5vd2wuY2Fyb3VzZWwgdHJhbnNsYXRlZC5vd2wuY2Fyb3VzZWxcIjogYS5wcm94eShmdW5jdGlvbiAoYSkge1xuICAgICAgICAgICAgICAgICAgICBhLm5hbWVzcGFjZSAmJiAodGhpcy5zd2FwcGluZyA9IFwidHJhbnNsYXRlZFwiID09IGEudHlwZSlcbiAgICAgICAgICAgICAgICB9LCB0aGlzKSwgXCJ0cmFuc2xhdGUub3dsLmNhcm91c2VsXCI6IGEucHJveHkoZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgICAgICAgICAgICAgYS5uYW1lc3BhY2UgJiYgdGhpcy5zd2FwcGluZyAmJiAodGhpcy5jb3JlLm9wdGlvbnMuYW5pbWF0ZU91dCB8fCB0aGlzLmNvcmUub3B0aW9ucy5hbmltYXRlSW4pICYmIHRoaXMuc3dhcCgpXG4gICAgICAgICAgICAgICAgfSwgdGhpcylcbiAgICAgICAgICAgIH0sIHRoaXMuY29yZS4kZWxlbWVudC5vbih0aGlzLmhhbmRsZXJzKVxuICAgICAgICB9O1xuICAgICAgICBlLkRlZmF1bHRzID0ge2FuaW1hdGVPdXQ6ICExLCBhbmltYXRlSW46ICExfSwgZS5wcm90b3R5cGUuc3dhcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmICgxID09PSB0aGlzLmNvcmUuc2V0dGluZ3MuaXRlbXMgJiYgYS5zdXBwb3J0LmFuaW1hdGlvbiAmJiBhLnN1cHBvcnQudHJhbnNpdGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMuY29yZS5zcGVlZCgwKTtcbiAgICAgICAgICAgICAgICB2YXIgYiwgYyA9IGEucHJveHkodGhpcy5jbGVhciwgdGhpcyksIGQgPSB0aGlzLmNvcmUuJHN0YWdlLmNoaWxkcmVuKCkuZXEodGhpcy5wcmV2aW91cyksXG4gICAgICAgICAgICAgICAgICBlID0gdGhpcy5jb3JlLiRzdGFnZS5jaGlsZHJlbigpLmVxKHRoaXMubmV4dCksIGYgPSB0aGlzLmNvcmUuc2V0dGluZ3MuYW5pbWF0ZUluLFxuICAgICAgICAgICAgICAgICAgZyA9IHRoaXMuY29yZS5zZXR0aW5ncy5hbmltYXRlT3V0O1xuICAgICAgICAgICAgICAgIHRoaXMuY29yZS5jdXJyZW50KCkgIT09IHRoaXMucHJldmlvdXMgJiYgKGcgJiYgKGIgPSB0aGlzLmNvcmUuY29vcmRpbmF0ZXModGhpcy5wcmV2aW91cykgLSB0aGlzLmNvcmUuY29vcmRpbmF0ZXModGhpcy5uZXh0KSwgZC5vbmUoYS5zdXBwb3J0LmFuaW1hdGlvbi5lbmQsIGMpLmNzcyh7bGVmdDogYiArIFwicHhcIn0pLmFkZENsYXNzKFwiYW5pbWF0ZWQgc2J5LW93bC1hbmltYXRlZC1vdXRcIikuYWRkQ2xhc3MoZykpLCBmICYmIGUub25lKGEuc3VwcG9ydC5hbmltYXRpb24uZW5kLCBjKS5hZGRDbGFzcyhcImFuaW1hdGVkIHNieS1vd2wtYW5pbWF0ZWQtaW5cIikuYWRkQ2xhc3MoZikpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIGUucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gKGIpIHtcbiAgICAgICAgICAgIGEoYi50YXJnZXQpLmNzcyh7bGVmdDogXCJcIn0pLnJlbW92ZUNsYXNzKFwiYW5pbWF0ZWQgc2J5LW93bC1hbmltYXRlZC1vdXQgc2J5LW93bC1hbmltYXRlZC1pblwiKS5yZW1vdmVDbGFzcyh0aGlzLmNvcmUuc2V0dGluZ3MuYW5pbWF0ZUluKS5yZW1vdmVDbGFzcyh0aGlzLmNvcmUuc2V0dGluZ3MuYW5pbWF0ZU91dCksIHRoaXMuY29yZS5vblRyYW5zaXRpb25FbmQoKVxuICAgICAgICB9LCBlLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGEsIGI7XG4gICAgICAgICAgICBmb3IgKGEgaW4gdGhpcy5oYW5kbGVycykgdGhpcy5jb3JlLiRlbGVtZW50Lm9mZihhLCB0aGlzLmhhbmRsZXJzW2FdKTtcbiAgICAgICAgICAgIGZvciAoYiBpbiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSkgXCJmdW5jdGlvblwiICE9IHR5cGVvZiB0aGlzW2JdICYmICh0aGlzW2JdID0gbnVsbClcbiAgICAgICAgfSxcbiAgICAgICAgICBhLmZuLnNieU93bENhcm91c2VsLkNvbnN0cnVjdG9yLlBsdWdpbnMuQW5pbWF0ZSA9IGVcbiAgICB9KHdpbmRvdy5aZXB0byB8fCB3aW5kb3cualF1ZXJ5LCB3aW5kb3csIGRvY3VtZW50KSwgZnVuY3Rpb24gKGEsIGIsIGMsIGQpIHtcbiAgICAgICAgdmFyIGUgPSBmdW5jdGlvbiAoYikge1xuICAgICAgICAgICAgdGhpcy5fY29yZSA9IGIsIHRoaXMuX3RpbWVvdXQgPSBudWxsLCB0aGlzLl9wYXVzZWQgPSAhMSwgdGhpcy5faGFuZGxlcnMgPSB7XG4gICAgICAgICAgICAgICAgXCJjaGFuZ2VkLm93bC5jYXJvdXNlbFwiOiBhLnByb3h5KGZ1bmN0aW9uIChhKSB7XG4gICAgICAgICAgICAgICAgICAgIGEubmFtZXNwYWNlICYmIFwic2V0dGluZ3NcIiA9PT0gYS5wcm9wZXJ0eS5uYW1lID8gdGhpcy5fY29yZS5zZXR0aW5ncy5hdXRvcGxheSA/IHRoaXMucGxheSgpIDogdGhpcy5zdG9wKCkgOiBhLm5hbWVzcGFjZSAmJiBcInBvc2l0aW9uXCIgPT09IGEucHJvcGVydHkubmFtZSAmJiB0aGlzLl9jb3JlLnNldHRpbmdzLmF1dG9wbGF5ICYmIHRoaXMuX3NldEF1dG9QbGF5SW50ZXJ2YWwoKVxuICAgICAgICAgICAgICAgIH0sIHRoaXMpLCBcImluaXRpYWxpemVkLm93bC5jYXJvdXNlbFwiOiBhLnByb3h5KGZ1bmN0aW9uIChhKSB7XG4gICAgICAgICAgICAgICAgICAgIGEubmFtZXNwYWNlICYmIHRoaXMuX2NvcmUuc2V0dGluZ3MuYXV0b3BsYXkgJiYgdGhpcy5wbGF5KClcbiAgICAgICAgICAgICAgICB9LCB0aGlzKSwgXCJwbGF5Lm93bC5hdXRvcGxheVwiOiBhLnByb3h5KGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgICAgICAgICAgICAgICAgIGEubmFtZXNwYWNlICYmIHRoaXMucGxheShiLCBjKVxuICAgICAgICAgICAgICAgIH0sIHRoaXMpLCBcInN0b3Aub3dsLmF1dG9wbGF5XCI6IGEucHJveHkoZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgICAgICAgICAgICAgYS5uYW1lc3BhY2UgJiYgdGhpcy5zdG9wKClcbiAgICAgICAgICAgICAgICB9LCB0aGlzKSwgXCJtb3VzZW92ZXIub3dsLmF1dG9wbGF5XCI6IGEucHJveHkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jb3JlLnNldHRpbmdzLmF1dG9wbGF5SG92ZXJQYXVzZSAmJiB0aGlzLl9jb3JlLmlzKFwicm90YXRpbmdcIikgJiYgdGhpcy5wYXVzZSgpXG4gICAgICAgICAgICAgICAgfSwgdGhpcyksIFwibW91c2VsZWF2ZS5vd2wuYXV0b3BsYXlcIjogYS5wcm94eShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NvcmUuc2V0dGluZ3MuYXV0b3BsYXlIb3ZlclBhdXNlICYmIHRoaXMuX2NvcmUuaXMoXCJyb3RhdGluZ1wiKSAmJiB0aGlzLnBsYXkoKVxuICAgICAgICAgICAgICAgIH0sIHRoaXMpLCBcInRvdWNoc3RhcnQub3dsLmNvcmVcIjogYS5wcm94eShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NvcmUuc2V0dGluZ3MuYXV0b3BsYXlIb3ZlclBhdXNlICYmIHRoaXMuX2NvcmUuaXMoXCJyb3RhdGluZ1wiKSAmJiB0aGlzLnBhdXNlKClcbiAgICAgICAgICAgICAgICB9LCB0aGlzKSwgXCJ0b3VjaGVuZC5vd2wuY29yZVwiOiBhLnByb3h5KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY29yZS5zZXR0aW5ncy5hdXRvcGxheUhvdmVyUGF1c2UgJiYgdGhpcy5wbGF5KClcbiAgICAgICAgICAgICAgICB9LCB0aGlzKVxuICAgICAgICAgICAgfSwgdGhpcy5fY29yZS4kZWxlbWVudC5vbih0aGlzLl9oYW5kbGVycyksIHRoaXMuX2NvcmUub3B0aW9ucyA9IGEuZXh0ZW5kKHt9LCBlLkRlZmF1bHRzLCB0aGlzLl9jb3JlLm9wdGlvbnMpXG4gICAgICAgIH07XG4gICAgICAgIGUuRGVmYXVsdHMgPSB7XG4gICAgICAgICAgICBhdXRvcGxheTogITEsXG4gICAgICAgICAgICBhdXRvcGxheVRpbWVvdXQ6IDVlMyxcbiAgICAgICAgICAgIGF1dG9wbGF5SG92ZXJQYXVzZTogITEsXG4gICAgICAgICAgICBhdXRvcGxheVNwZWVkOiAhMVxuICAgICAgICB9LCBlLnByb3RvdHlwZS5wbGF5ID0gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgICAgIHRoaXMuX3BhdXNlZCA9ICExLCB0aGlzLl9jb3JlLmlzKFwicm90YXRpbmdcIikgfHwgKHRoaXMuX2NvcmUuZW50ZXIoXCJyb3RhdGluZ1wiKSwgdGhpcy5fc2V0QXV0b1BsYXlJbnRlcnZhbCgpKVxuICAgICAgICB9LCBlLnByb3RvdHlwZS5fZ2V0TmV4dFRpbWVvdXQgPSBmdW5jdGlvbiAoZCwgZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3RpbWVvdXQgJiYgYi5jbGVhclRpbWVvdXQodGhpcy5fdGltZW91dCksIGIuc2V0VGltZW91dChhLnByb3h5KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9wYXVzZWQgfHwgdGhpcy5fY29yZS5pcyhcImJ1c3lcIikgfHwgdGhpcy5fY29yZS5pcyhcImludGVyYWN0aW5nXCIpIHx8IGMuaGlkZGVuIHx8IHRoaXMuX2NvcmUubmV4dChlIHx8IHRoaXMuX2NvcmUuc2V0dGluZ3MuYXV0b3BsYXlTcGVlZClcbiAgICAgICAgICAgIH0sIHRoaXMpLCBkIHx8IHRoaXMuX2NvcmUuc2V0dGluZ3MuYXV0b3BsYXlUaW1lb3V0KVxuICAgICAgICB9LCBlLnByb3RvdHlwZS5fc2V0QXV0b1BsYXlJbnRlcnZhbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHRoaXMuX3RpbWVvdXQgPSB0aGlzLl9nZXROZXh0VGltZW91dCgpXG4gICAgICAgIH0sIGUucHJvdG90eXBlLnN0b3AgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB0aGlzLl9jb3JlLmlzKFwicm90YXRpbmdcIikgJiYgKGIuY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVvdXQpLCB0aGlzLl9jb3JlLmxlYXZlKFwicm90YXRpbmdcIikpXG4gICAgICAgIH0sIGUucHJvdG90eXBlLnBhdXNlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdGhpcy5fY29yZS5pcyhcInJvdGF0aW5nXCIpICYmICh0aGlzLl9wYXVzZWQgPSAhMClcbiAgICAgICAgfSwgZS5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBhLCBiO1xuICAgICAgICAgICAgdGhpcy5zdG9wKCk7XG4gICAgICAgICAgICBmb3IgKGEgaW4gdGhpcy5faGFuZGxlcnMpIHRoaXMuX2NvcmUuJGVsZW1lbnQub2ZmKGEsIHRoaXMuX2hhbmRsZXJzW2FdKTtcbiAgICAgICAgICAgIGZvciAoYiBpbiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSkgXCJmdW5jdGlvblwiICE9IHR5cGVvZiB0aGlzW2JdICYmICh0aGlzW2JdID0gbnVsbClcbiAgICAgICAgfSwgYS5mbi5zYnlPd2xDYXJvdXNlbC5Db25zdHJ1Y3Rvci5QbHVnaW5zLmF1dG9wbGF5ID0gZVxuICAgIH0od2luZG93LlplcHRvIHx8IHdpbmRvdy5qUXVlcnksIHdpbmRvdywgZG9jdW1lbnQpLCBmdW5jdGlvbiAoYSwgYiwgYywgZCkge1xuICAgICAgICBcInVzZSBzdHJpY3RcIjtcbiAgICAgICAgdmFyIGUgPSBmdW5jdGlvbiAoYikge1xuICAgICAgICAgICAgdGhpcy5fY29yZSA9IGIsIHRoaXMuX2luaXRpYWxpemVkID0gITEsIHRoaXMuX3BhZ2VzID0gW10sIHRoaXMuX2NvbnRyb2xzID0ge30sIHRoaXMuX3RlbXBsYXRlcyA9IFtdLCB0aGlzLiRlbGVtZW50ID0gdGhpcy5fY29yZS4kZWxlbWVudCwgdGhpcy5fb3ZlcnJpZGVzID0ge1xuICAgICAgICAgICAgICAgIG5leHQ6IHRoaXMuX2NvcmUubmV4dCxcbiAgICAgICAgICAgICAgICBwcmV2OiB0aGlzLl9jb3JlLnByZXYsXG4gICAgICAgICAgICAgICAgdG86IHRoaXMuX2NvcmUudG9cbiAgICAgICAgICAgIH0sIHRoaXMuX2hhbmRsZXJzID0ge1xuICAgICAgICAgICAgICAgIFwicHJlcGFyZWQub3dsLmNhcm91c2VsXCI6IGEucHJveHkoZnVuY3Rpb24gKGIpIHtcbiAgICAgICAgICAgICAgICAgICAgYi5uYW1lc3BhY2UgJiYgdGhpcy5fY29yZS5zZXR0aW5ncy5kb3RzRGF0YSAmJiB0aGlzLl90ZW1wbGF0ZXMucHVzaCgnPGRpdiBjbGFzcz1cIicgKyB0aGlzLl9jb3JlLnNldHRpbmdzLmRvdENsYXNzICsgJ1wiPicgKyBhKGIuY29udGVudCkuZmluZChcIltkYXRhLWRvdF1cIikuYWRkQmFjayhcIltkYXRhLWRvdF1cIikuYXR0cihcImRhdGEtZG90XCIpICsgXCI8L2Rpdj5cIilcbiAgICAgICAgICAgICAgICB9LCB0aGlzKSwgXCJhZGRlZC5vd2wuY2Fyb3VzZWxcIjogYS5wcm94eShmdW5jdGlvbiAoYSkge1xuICAgICAgICAgICAgICAgICAgICBhLm5hbWVzcGFjZSAmJiB0aGlzLl9jb3JlLnNldHRpbmdzLmRvdHNEYXRhICYmIHRoaXMuX3RlbXBsYXRlcy5zcGxpY2UoYS5wb3NpdGlvbiwgMCwgdGhpcy5fdGVtcGxhdGVzLnBvcCgpKVxuICAgICAgICAgICAgICAgIH0sIHRoaXMpLCBcInJlbW92ZS5vd2wuY2Fyb3VzZWxcIjogYS5wcm94eShmdW5jdGlvbiAoYSkge1xuICAgICAgICAgICAgICAgICAgICBhLm5hbWVzcGFjZSAmJiB0aGlzLl9jb3JlLnNldHRpbmdzLmRvdHNEYXRhICYmIHRoaXMuX3RlbXBsYXRlcy5zcGxpY2UoYS5wb3NpdGlvbiwgMSlcbiAgICAgICAgICAgICAgICB9LCB0aGlzKSwgXCJjaGFuZ2VkLm93bC5jYXJvdXNlbFwiOiBhLnByb3h5KGZ1bmN0aW9uIChhKSB7XG4gICAgICAgICAgICAgICAgICAgIGEubmFtZXNwYWNlICYmIFwicG9zaXRpb25cIiA9PSBhLnByb3BlcnR5Lm5hbWUgJiYgdGhpcy5kcmF3KClcbiAgICAgICAgICAgICAgICB9LCB0aGlzKSwgXCJpbml0aWFsaXplZC5vd2wuY2Fyb3VzZWxcIjogYS5wcm94eShmdW5jdGlvbiAoYSkge1xuICAgICAgICAgICAgICAgICAgICBhLm5hbWVzcGFjZSAmJiAhdGhpcy5faW5pdGlhbGl6ZWQgJiYgKHRoaXMuX2NvcmUudHJpZ2dlcihcImluaXRpYWxpemVcIiwgbnVsbCwgXCJuYXZpZ2F0aW9uXCIpLCB0aGlzLmluaXRpYWxpemUoKSwgdGhpcy51cGRhdGUoKSwgdGhpcy5kcmF3KCksIHRoaXMuX2luaXRpYWxpemVkID0gITAsIHRoaXMuX2NvcmUudHJpZ2dlcihcImluaXRpYWxpemVkXCIsIG51bGwsIFwibmF2aWdhdGlvblwiKSlcbiAgICAgICAgICAgICAgICB9LCB0aGlzKSwgXCJyZWZyZXNoZWQub3dsLmNhcm91c2VsXCI6IGEucHJveHkoZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgICAgICAgICAgICAgYS5uYW1lc3BhY2UgJiYgdGhpcy5faW5pdGlhbGl6ZWQgJiYgKHRoaXMuX2NvcmUudHJpZ2dlcihcInJlZnJlc2hcIiwgbnVsbCwgXCJuYXZpZ2F0aW9uXCIpLCB0aGlzLnVwZGF0ZSgpLCB0aGlzLmRyYXcoKSwgdGhpcy5fY29yZS50cmlnZ2VyKFwicmVmcmVzaGVkXCIsIG51bGwsIFwibmF2aWdhdGlvblwiKSlcbiAgICAgICAgICAgICAgICB9LCB0aGlzKVxuICAgICAgICAgICAgfSwgdGhpcy5fY29yZS5vcHRpb25zID0gYS5leHRlbmQoe30sIGUuRGVmYXVsdHMsIHRoaXMuX2NvcmUub3B0aW9ucyksIHRoaXMuJGVsZW1lbnQub24odGhpcy5faGFuZGxlcnMpXG4gICAgICAgIH07XG4gICAgICAgIGUuRGVmYXVsdHMgPSB7XG4gICAgICAgICAgICBuYXY6ICExLFxuICAgICAgICAgICAgbmF2VGV4dDogW1wicHJldlwiLCBcIm5leHRcIl0sXG4gICAgICAgICAgICBuYXZTcGVlZDogITEsXG4gICAgICAgICAgICBuYXZFbGVtZW50OiBcImRpdlwiLFxuICAgICAgICAgICAgbmF2Q29udGFpbmVyOiAhMSxcbiAgICAgICAgICAgIG5hdkNvbnRhaW5lckNsYXNzOiBcInNieS1vd2wtbmF2XCIsXG4gICAgICAgICAgICBuYXZDbGFzczogW1wic2J5LW93bC1wcmV2XCIsIFwic2J5LW93bC1uZXh0XCJdLFxuICAgICAgICAgICAgc2xpZGVCeTogMSxcbiAgICAgICAgICAgIGRvdENsYXNzOiBcInNieS1vd2wtZG90XCIsXG4gICAgICAgICAgICBkb3RzQ2xhc3M6IFwic2J5LW93bC1kb3RzXCIsXG4gICAgICAgICAgICBkb3RzOiAhMCxcbiAgICAgICAgICAgIGRvdHNFYWNoOiAhMSxcbiAgICAgICAgICAgIGRvdHNEYXRhOiAhMSxcbiAgICAgICAgICAgIGRvdHNTcGVlZDogITEsXG4gICAgICAgICAgICBkb3RzQ29udGFpbmVyOiAhMVxuICAgICAgICB9LCBlLnByb3RvdHlwZS5pbml0aWFsaXplID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGIsIGMgPSB0aGlzLl9jb3JlLnNldHRpbmdzO1xuICAgICAgICAgICAgdGhpcy5fY29udHJvbHMuJHJlbGF0aXZlID0gKGMubmF2Q29udGFpbmVyID8gYShjLm5hdkNvbnRhaW5lcikgOiBhKFwiPGRpdj5cIikuYWRkQ2xhc3MoYy5uYXZDb250YWluZXJDbGFzcykuYXBwZW5kVG8odGhpcy4kZWxlbWVudCkpLmFkZENsYXNzKFwiZGlzYWJsZWRcIiksIHRoaXMuX2NvbnRyb2xzLiRwcmV2aW91cyA9IGEoXCI8XCIgKyBjLm5hdkVsZW1lbnQgKyBcIj5cIikuYWRkQ2xhc3MoYy5uYXZDbGFzc1swXSkuaHRtbChjLm5hdlRleHRbMF0pLnByZXBlbmRUbyh0aGlzLl9jb250cm9scy4kcmVsYXRpdmUpLm9uKFwiY2xpY2tcIiwgYS5wcm94eShmdW5jdGlvbiAoYSkge1xuICAgICAgICAgICAgICAgIHRoaXMucHJldihjLm5hdlNwZWVkKVxuICAgICAgICAgICAgfSwgdGhpcykpLCB0aGlzLl9jb250cm9scy4kbmV4dCA9IGEoXCI8XCIgKyBjLm5hdkVsZW1lbnQgKyBcIj5cIikuYWRkQ2xhc3MoYy5uYXZDbGFzc1sxXSkuaHRtbChjLm5hdlRleHRbMV0pLmFwcGVuZFRvKHRoaXMuX2NvbnRyb2xzLiRyZWxhdGl2ZSkub24oXCJjbGlja1wiLCBhLnByb3h5KGZ1bmN0aW9uIChhKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5uZXh0KGMubmF2U3BlZWQpXG4gICAgICAgICAgICB9LCB0aGlzKSksIGMuZG90c0RhdGEgfHwgKHRoaXMuX3RlbXBsYXRlcyA9IFthKFwiPGRpdj5cIikuYWRkQ2xhc3MoYy5kb3RDbGFzcykuYXBwZW5kKGEoXCI8c3Bhbj5cIikpLnByb3AoXCJvdXRlckhUTUxcIildKSwgdGhpcy5fY29udHJvbHMuJGFic29sdXRlID0gKGMuZG90c0NvbnRhaW5lciA/IGEoYy5kb3RzQ29udGFpbmVyKSA6IGEoXCI8ZGl2PlwiKS5hZGRDbGFzcyhjLmRvdHNDbGFzcykuYXBwZW5kVG8odGhpcy4kZWxlbWVudCkpLmFkZENsYXNzKFwiZGlzYWJsZWRcIiksIHRoaXMuX2NvbnRyb2xzLiRhYnNvbHV0ZS5vbihcImNsaWNrXCIsIFwiZGl2XCIsIGEucHJveHkoZnVuY3Rpb24gKGIpIHtcbiAgICAgICAgICAgICAgICB2YXIgZCA9IGEoYi50YXJnZXQpLnBhcmVudCgpLmlzKHRoaXMuX2NvbnRyb2xzLiRhYnNvbHV0ZSkgPyBhKGIudGFyZ2V0KS5pbmRleCgpIDogYShiLnRhcmdldCkucGFyZW50KCkuaW5kZXgoKTtcbiAgICAgICAgICAgICAgICBiLnByZXZlbnREZWZhdWx0KCksIHRoaXMudG8oZCwgYy5kb3RzU3BlZWQpXG4gICAgICAgICAgICB9LCB0aGlzKSk7XG4gICAgICAgICAgICBmb3IgKGIgaW4gdGhpcy5fb3ZlcnJpZGVzKSB0aGlzLl9jb3JlW2JdID0gYS5wcm94eSh0aGlzW2JdLCB0aGlzKVxuICAgICAgICB9LCBlLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGEsIGIsIGMsIGQ7XG4gICAgICAgICAgICBmb3IgKGEgaW4gdGhpcy5faGFuZGxlcnMpIHRoaXMuJGVsZW1lbnQub2ZmKGEsIHRoaXMuX2hhbmRsZXJzW2FdKTtcbiAgICAgICAgICAgIGZvciAoYiBpbiB0aGlzLl9jb250cm9scykgdGhpcy5fY29udHJvbHNbYl0ucmVtb3ZlKCk7XG4gICAgICAgICAgICBmb3IgKGQgaW4gdGhpcy5vdmVyaWRlcykgdGhpcy5fY29yZVtkXSA9IHRoaXMuX292ZXJyaWRlc1tkXTtcbiAgICAgICAgICAgIGZvciAoYyBpbiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSkgXCJmdW5jdGlvblwiICE9IHR5cGVvZiB0aGlzW2NdICYmICh0aGlzW2NdID0gbnVsbClcbiAgICAgICAgfSwgZS5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGEsIGIsIGMsIGQgPSB0aGlzLl9jb3JlLmNsb25lcygpLmxlbmd0aCAvIDIsIGUgPSBkICsgdGhpcy5fY29yZS5pdGVtcygpLmxlbmd0aCxcbiAgICAgICAgICAgICAgZiA9IHRoaXMuX2NvcmUubWF4aW11bSghMCksIGcgPSB0aGlzLl9jb3JlLnNldHRpbmdzLFxuICAgICAgICAgICAgICBoID0gZy5jZW50ZXIgfHwgZy5hdXRvV2lkdGggfHwgZy5kb3RzRGF0YSA/IDEgOiBnLmRvdHNFYWNoIHx8IGcuaXRlbXM7XG4gICAgICAgICAgICBpZiAoXCJwYWdlXCIgIT09IGcuc2xpZGVCeSAmJiAoZy5zbGlkZUJ5ID0gTWF0aC5taW4oZy5zbGlkZUJ5LCBnLml0ZW1zKSksIGcuZG90cyB8fCBcInBhZ2VcIiA9PSBnLnNsaWRlQnkpIGZvciAodGhpcy5fcGFnZXMgPSBbXSwgYSA9IGQsIGIgPSAwLCBjID0gMDsgYSA8IGU7IGErKykge1xuICAgICAgICAgICAgICAgIGlmIChiID49IGggfHwgMCA9PT0gYikge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fcGFnZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydDogTWF0aC5taW4oZiwgYSAtIGQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBhIC0gZCArIGggLSAxXG4gICAgICAgICAgICAgICAgICAgIH0pLCBNYXRoLm1pbihmLCBhIC0gZCkgPT09IGYpIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBiID0gMCwgKytjXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGIgKz0gdGhpcy5fY29yZS5tZXJnZXJzKHRoaXMuX2NvcmUucmVsYXRpdmUoYSkpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIGUucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgYiwgYyA9IHRoaXMuX2NvcmUuc2V0dGluZ3MsIGQgPSB0aGlzLl9jb3JlLml0ZW1zKCkubGVuZ3RoIDw9IGMuaXRlbXMsXG4gICAgICAgICAgICAgIGUgPSB0aGlzLl9jb3JlLnJlbGF0aXZlKHRoaXMuX2NvcmUuY3VycmVudCgpKSwgZiA9IGMubG9vcCB8fCBjLnJld2luZDtcbiAgICAgICAgICAgIHRoaXMuX2NvbnRyb2xzLiRyZWxhdGl2ZS50b2dnbGVDbGFzcyhcImRpc2FibGVkXCIsICFjLm5hdiB8fCBkKSwgYy5uYXYgJiYgKHRoaXMuX2NvbnRyb2xzLiRwcmV2aW91cy50b2dnbGVDbGFzcyhcImRpc2FibGVkXCIsICFmICYmIGUgPD0gdGhpcy5fY29yZS5taW5pbXVtKCEwKSksIHRoaXMuX2NvbnRyb2xzLiRuZXh0LnRvZ2dsZUNsYXNzKFwiZGlzYWJsZWRcIiwgIWYgJiYgZSA+PSB0aGlzLl9jb3JlLm1heGltdW0oITApKSksIHRoaXMuX2NvbnRyb2xzLiRhYnNvbHV0ZS50b2dnbGVDbGFzcyhcImRpc2FibGVkXCIsICFjLmRvdHMgfHwgZCksIGMuZG90cyAmJiAoYiA9IHRoaXMuX3BhZ2VzLmxlbmd0aCAtIHRoaXMuX2NvbnRyb2xzLiRhYnNvbHV0ZS5jaGlsZHJlbigpLmxlbmd0aCwgYy5kb3RzRGF0YSAmJiAwICE9PSBiID8gdGhpcy5fY29udHJvbHMuJGFic29sdXRlLmh0bWwodGhpcy5fdGVtcGxhdGVzLmpvaW4oXCJcIikpIDogYiA+IDAgPyB0aGlzLl9jb250cm9scy4kYWJzb2x1dGUuYXBwZW5kKG5ldyBBcnJheShiICsgMSkuam9pbih0aGlzLl90ZW1wbGF0ZXNbMF0pKSA6IGIgPCAwICYmIHRoaXMuX2NvbnRyb2xzLiRhYnNvbHV0ZS5jaGlsZHJlbigpLnNsaWNlKGIpLnJlbW92ZSgpLCB0aGlzLl9jb250cm9scy4kYWJzb2x1dGUuZmluZChcIi5hY3RpdmVcIikucmVtb3ZlQ2xhc3MoXCJhY3RpdmVcIiksIHRoaXMuX2NvbnRyb2xzLiRhYnNvbHV0ZS5jaGlsZHJlbigpLmVxKGEuaW5BcnJheSh0aGlzLmN1cnJlbnQoKSwgdGhpcy5fcGFnZXMpKS5hZGRDbGFzcyhcImFjdGl2ZVwiKSlcbiAgICAgICAgfSwgZS5wcm90b3R5cGUub25UcmlnZ2VyID0gZnVuY3Rpb24gKGIpIHtcbiAgICAgICAgICAgIHZhciBjID0gdGhpcy5fY29yZS5zZXR0aW5ncztcbiAgICAgICAgICAgIGIucGFnZSA9IHtcbiAgICAgICAgICAgICAgICBpbmRleDogYS5pbkFycmF5KHRoaXMuY3VycmVudCgpLCB0aGlzLl9wYWdlcyksXG4gICAgICAgICAgICAgICAgY291bnQ6IHRoaXMuX3BhZ2VzLmxlbmd0aCxcbiAgICAgICAgICAgICAgICBzaXplOiBjICYmIChjLmNlbnRlciB8fCBjLmF1dG9XaWR0aCB8fCBjLmRvdHNEYXRhID8gMSA6IGMuZG90c0VhY2ggfHwgYy5pdGVtcylcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgZS5wcm90b3R5cGUuY3VycmVudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBiID0gdGhpcy5fY29yZS5yZWxhdGl2ZSh0aGlzLl9jb3JlLmN1cnJlbnQoKSk7XG4gICAgICAgICAgICByZXR1cm4gYS5ncmVwKHRoaXMuX3BhZ2VzLCBhLnByb3h5KGZ1bmN0aW9uIChhLCBjKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGEuc3RhcnQgPD0gYiAmJiBhLmVuZCA+PSBiXG4gICAgICAgICAgICB9LCB0aGlzKSkucG9wKClcbiAgICAgICAgfSwgZS5wcm90b3R5cGUuZ2V0UG9zaXRpb24gPSBmdW5jdGlvbiAoYikge1xuICAgICAgICAgICAgdmFyIGMsIGQsIGUgPSB0aGlzLl9jb3JlLnNldHRpbmdzO1xuICAgICAgICAgICAgcmV0dXJuIFwicGFnZVwiID09IGUuc2xpZGVCeSA/IChjID0gYS5pbkFycmF5KHRoaXMuY3VycmVudCgpLCB0aGlzLl9wYWdlcyksIGQgPSB0aGlzLl9wYWdlcy5sZW5ndGgsIGIgPyArK2MgOiAtLWMsIGMgPSB0aGlzLl9wYWdlc1soYyAlIGQgKyBkKSAlIGRdLnN0YXJ0KSA6IChjID0gdGhpcy5fY29yZS5yZWxhdGl2ZSh0aGlzLl9jb3JlLmN1cnJlbnQoKSksIGQgPSB0aGlzLl9jb3JlLml0ZW1zKCkubGVuZ3RoLCBiID8gYyArPSBlLnNsaWRlQnkgOiBjIC09IGUuc2xpZGVCeSksIGNcbiAgICAgICAgfSwgZS5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uIChiKSB7XG4gICAgICAgICAgICBhLnByb3h5KHRoaXMuX292ZXJyaWRlcy50bywgdGhpcy5fY29yZSkodGhpcy5nZXRQb3NpdGlvbighMCksIGIpXG4gICAgICAgIH0sIGUucHJvdG90eXBlLnByZXYgPSBmdW5jdGlvbiAoYikge1xuICAgICAgICAgICAgYS5wcm94eSh0aGlzLl9vdmVycmlkZXMudG8sIHRoaXMuX2NvcmUpKHRoaXMuZ2V0UG9zaXRpb24oITEpLCBiKVxuICAgICAgICB9LCBlLnByb3RvdHlwZS50byA9IGZ1bmN0aW9uIChiLCBjLCBkKSB7XG4gICAgICAgICAgICB2YXIgZTtcbiAgICAgICAgICAgICFkICYmIHRoaXMuX3BhZ2VzLmxlbmd0aCA/IChlID0gdGhpcy5fcGFnZXMubGVuZ3RoLCBhLnByb3h5KHRoaXMuX292ZXJyaWRlcy50bywgdGhpcy5fY29yZSkodGhpcy5fcGFnZXNbKGIgJSBlICsgZSkgJSBlXS5zdGFydCwgYykpIDogYS5wcm94eSh0aGlzLl9vdmVycmlkZXMudG8sIHRoaXMuX2NvcmUpKGIsIGMpXG4gICAgICAgIH0sIGEuZm4uc2J5T3dsQ2Fyb3VzZWwuQ29uc3RydWN0b3IuUGx1Z2lucy5OYXZpZ2F0aW9uID0gZVxuICAgIH0od2luZG93LlplcHRvIHx8IHdpbmRvdy5qUXVlcnksIHdpbmRvdywgZG9jdW1lbnQpLCBmdW5jdGlvbiAoYSwgYiwgYywgZCkge1xuICAgICAgICBcInVzZSBzdHJpY3RcIjtcbiAgICAgICAgdmFyIGUgPSBmdW5jdGlvbiAoYykge1xuICAgICAgICAgICAgdGhpcy5fY29yZSA9IGMsIHRoaXMuX2hhc2hlcyA9IHt9LCB0aGlzLiRlbGVtZW50ID0gdGhpcy5fY29yZS4kZWxlbWVudCwgdGhpcy5faGFuZGxlcnMgPSB7XG4gICAgICAgICAgICAgICAgXCJpbml0aWFsaXplZC5vd2wuY2Fyb3VzZWxcIjogYS5wcm94eShmdW5jdGlvbiAoYykge1xuICAgICAgICAgICAgICAgICAgICBjLm5hbWVzcGFjZSAmJiBcIlVSTEhhc2hcIiA9PT0gdGhpcy5fY29yZS5zZXR0aW5ncy5zdGFydFBvc2l0aW9uICYmIGEoYikudHJpZ2dlcihcImhhc2hjaGFuZ2Uub3dsLm5hdmlnYXRpb25cIilcbiAgICAgICAgICAgICAgICB9LCB0aGlzKSwgXCJwcmVwYXJlZC5vd2wuY2Fyb3VzZWxcIjogYS5wcm94eShmdW5jdGlvbiAoYikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYi5uYW1lc3BhY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjID0gYShiLmNvbnRlbnQpLmZpbmQoXCJbZGF0YS1oYXNoXVwiKS5hZGRCYWNrKFwiW2RhdGEtaGFzaF1cIikuYXR0cihcImRhdGEtaGFzaFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYykgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5faGFzaGVzW2NdID0gYi5jb250ZW50XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB0aGlzKSwgXCJjaGFuZ2VkLm93bC5jYXJvdXNlbFwiOiBhLnByb3h5KGZ1bmN0aW9uIChjKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjLm5hbWVzcGFjZSAmJiBcInBvc2l0aW9uXCIgPT09IGMucHJvcGVydHkubmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSB0aGlzLl9jb3JlLml0ZW1zKHRoaXMuX2NvcmUucmVsYXRpdmUodGhpcy5fY29yZS5jdXJyZW50KCkpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGEubWFwKHRoaXMuX2hhc2hlcywgZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhID09PSBkID8gYiA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkuam9pbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlIHx8IGIubG9jYXRpb24uaGFzaC5zbGljZSgxKSA9PT0gZSkgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgYi5sb2NhdGlvbi5oYXNoID0gZVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwgdGhpcylcbiAgICAgICAgICAgIH0sIHRoaXMuX2NvcmUub3B0aW9ucyA9IGEuZXh0ZW5kKHt9LCBlLkRlZmF1bHRzLCB0aGlzLl9jb3JlLm9wdGlvbnMpLCB0aGlzLiRlbGVtZW50Lm9uKHRoaXMuX2hhbmRsZXJzKSwgYShiKS5vbihcImhhc2hjaGFuZ2Uub3dsLm5hdmlnYXRpb25cIiwgYS5wcm94eShmdW5jdGlvbiAoYSkge1xuICAgICAgICAgICAgICAgIHZhciBjID0gYi5sb2NhdGlvbi5oYXNoLnN1YnN0cmluZygxKSwgZSA9IHRoaXMuX2NvcmUuJHN0YWdlLmNoaWxkcmVuKCksXG4gICAgICAgICAgICAgICAgICBmID0gdGhpcy5faGFzaGVzW2NdICYmIGUuaW5kZXgodGhpcy5faGFzaGVzW2NdKTtcbiAgICAgICAgICAgICAgICBmICE9PSBkICYmIGYgIT09IHRoaXMuX2NvcmUuY3VycmVudCgpICYmIHRoaXMuX2NvcmUudG8odGhpcy5fY29yZS5yZWxhdGl2ZShmKSwgITEsICEwKVxuICAgICAgICAgICAgfSwgdGhpcykpXG4gICAgICAgIH07XG4gICAgICAgIGUuRGVmYXVsdHMgPSB7VVJMaGFzaExpc3RlbmVyOiAhMX0sIGUucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgYywgZDtcbiAgICAgICAgICAgIGEoYikub2ZmKFwiaGFzaGNoYW5nZS5vd2wubmF2aWdhdGlvblwiKTtcbiAgICAgICAgICAgIGZvciAoYyBpbiB0aGlzLl9oYW5kbGVycykgdGhpcy5fY29yZS4kZWxlbWVudC5vZmYoYywgdGhpcy5faGFuZGxlcnNbY10pO1xuICAgICAgICAgICAgZm9yIChkIGluIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKSBcImZ1bmN0aW9uXCIgIT0gdHlwZW9mIHRoaXNbZF0gJiYgKHRoaXNbZF0gPSBudWxsKVxuICAgICAgICB9LCBhLmZuLnNieU93bENhcm91c2VsLkNvbnN0cnVjdG9yLlBsdWdpbnMuSGFzaCA9IGVcbiAgICB9KHdpbmRvdy5aZXB0byB8fCB3aW5kb3cualF1ZXJ5LCB3aW5kb3csIGRvY3VtZW50KSwgZnVuY3Rpb24gKGEsIGIsIGMsIGQpIHtcbiAgICAgICAgZnVuY3Rpb24gZShiLCBjKSB7XG4gICAgICAgICAgICB2YXIgZSA9ICExLCBmID0gYi5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGIuc2xpY2UoMSk7XG4gICAgICAgICAgICByZXR1cm4gYS5lYWNoKChiICsgXCIgXCIgKyBoLmpvaW4oZiArIFwiIFwiKSArIGYpLnNwbGl0KFwiIFwiKSwgZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgICAgICAgICBpZiAoZ1tiXSAhPT0gZCkgcmV0dXJuIGUgPSAhYyB8fCBiLCAhMVxuICAgICAgICAgICAgfSksIGVcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGYoYSkge1xuICAgICAgICAgICAgcmV0dXJuIGUoYSwgITApXG4gICAgICAgIH1cblxuICAgICAgICB2YXIgZyA9IGEoXCI8c3VwcG9ydD5cIikuZ2V0KDApLnN0eWxlLCBoID0gXCJXZWJraXQgTW96IE8gbXNcIi5zcGxpdChcIiBcIiksIGkgPSB7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiB7XG4gICAgICAgICAgICAgICAgZW5kOiB7XG4gICAgICAgICAgICAgICAgICAgIFdlYmtpdFRyYW5zaXRpb246IFwid2Via2l0VHJhbnNpdGlvbkVuZFwiLFxuICAgICAgICAgICAgICAgICAgICBNb3pUcmFuc2l0aW9uOiBcInRyYW5zaXRpb25lbmRcIixcbiAgICAgICAgICAgICAgICAgICAgT1RyYW5zaXRpb246IFwib1RyYW5zaXRpb25FbmRcIixcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogXCJ0cmFuc2l0aW9uZW5kXCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYW5pbWF0aW9uOiB7XG4gICAgICAgICAgICAgICAgZW5kOiB7XG4gICAgICAgICAgICAgICAgICAgIFdlYmtpdEFuaW1hdGlvbjogXCJ3ZWJraXRBbmltYXRpb25FbmRcIixcbiAgICAgICAgICAgICAgICAgICAgTW96QW5pbWF0aW9uOiBcImFuaW1hdGlvbmVuZFwiLFxuICAgICAgICAgICAgICAgICAgICBPQW5pbWF0aW9uOiBcIm9BbmltYXRpb25FbmRcIixcbiAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uOiBcImFuaW1hdGlvbmVuZFwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LCBqID0ge1xuICAgICAgICAgICAgY3NzdHJhbnNmb3JtczogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAhIWUoXCJ0cmFuc2Zvcm1cIilcbiAgICAgICAgICAgIH0sIGNzc3RyYW5zZm9ybXMzZDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAhIWUoXCJwZXJzcGVjdGl2ZVwiKVxuICAgICAgICAgICAgfSwgY3NzdHJhbnNpdGlvbnM6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gISFlKFwidHJhbnNpdGlvblwiKVxuICAgICAgICAgICAgfSwgY3NzYW5pbWF0aW9uczogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAhIWUoXCJhbmltYXRpb25cIilcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgai5jc3N0cmFuc2l0aW9ucygpICYmIChhLnN1cHBvcnQudHJhbnNpdGlvbiA9IG5ldyBTdHJpbmcoZihcInRyYW5zaXRpb25cIikpLCBhLnN1cHBvcnQudHJhbnNpdGlvbi5lbmQgPSBpLnRyYW5zaXRpb24uZW5kW2Euc3VwcG9ydC50cmFuc2l0aW9uXSksIGouY3NzYW5pbWF0aW9ucygpICYmIChhLnN1cHBvcnQuYW5pbWF0aW9uID0gbmV3IFN0cmluZyhmKFwiYW5pbWF0aW9uXCIpKSwgYS5zdXBwb3J0LmFuaW1hdGlvbi5lbmQgPSBpLmFuaW1hdGlvbi5lbmRbYS5zdXBwb3J0LmFuaW1hdGlvbl0pLCBqLmNzc3RyYW5zZm9ybXMoKSAmJiAoYS5zdXBwb3J0LnRyYW5zZm9ybSA9IG5ldyBTdHJpbmcoZihcInRyYW5zZm9ybVwiKSksIGEuc3VwcG9ydC50cmFuc2Zvcm0zZCA9IGouY3NzdHJhbnNmb3JtczNkKCkpXG4gICAgfSh3aW5kb3cuWmVwdG8gfHwgd2luZG93LmpRdWVyeSwgd2luZG93LCBkb2N1bWVudCk7XG5cbiAgICAvLyBUd28gUm93IENhcm91c2VsXG4gICAgOyhmdW5jdGlvbiAoJCwgd2luZG93LCBkb2N1bWVudCwgdW5kZWZpbmVkKSB7XG4gICAgICAgIE93bDJyb3cgPSBmdW5jdGlvbiAoc2NvcGUpIHtcbiAgICAgICAgICAgIHRoaXMub3dsID0gc2NvcGU7XG4gICAgICAgICAgICB0aGlzLm93bC5vcHRpb25zID0gJC5leHRlbmQoe30sIE93bDJyb3cuRGVmYXVsdHMsIHRoaXMub3dsLm9wdGlvbnMpO1xuICAgICAgICAgICAgLy9saW5rIGNhbGxiYWNrIGV2ZW50cyB3aXRoIG93bCBjYXJvdXNlbCBoZXJlXG5cbiAgICAgICAgICAgIHRoaXMuaGFuZGxlcnMgPSB7XG4gICAgICAgICAgICAgICAgJ2luaXRpYWxpemUub3dsLmNhcm91c2VsJzogJC5wcm94eShmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vd2wuc2V0dGluZ3Mub3dsMnJvdykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5idWlsZDJyb3codGhpcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB0aGlzKVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdGhpcy5vd2wuJGVsZW1lbnQub24odGhpcy5oYW5kbGVycyk7XG4gICAgICAgIH07XG5cbiAgICAgICAgT3dsMnJvdy5EZWZhdWx0cyA9IHtcbiAgICAgICAgICAgIG93bDJyb3c6IGZhbHNlLFxuICAgICAgICAgICAgb3dsMnJvd1RhcmdldDogJ3NieV9pdGVtJyxcbiAgICAgICAgICAgIG93bDJyb3dDb250YWluZXI6ICdzYnlfb3dsMnJvdy1pdGVtJyxcbiAgICAgICAgICAgIG93bDJyb3dEaXJlY3Rpb246ICd1dGQnIC8vIGx0clxuICAgICAgICB9O1xuXG4gICAgICAgIC8vbWVodG9kczpcbiAgICAgICAgT3dsMnJvdy5wcm90b3R5cGUuYnVpbGQycm93ID0gZnVuY3Rpb24gKHRoaXNTY29wZSkge1xuXG4gICAgICAgICAgICB2YXIgY2Fyb3VzZWwgPSAkKHRoaXNTY29wZS5vd2wuJGVsZW1lbnQpO1xuICAgICAgICAgICAgdmFyIGNhcm91c2VsSXRlbXMgPSBjYXJvdXNlbC5maW5kKCcuJyArIHRoaXNTY29wZS5vd2wub3B0aW9ucy5vd2wycm93VGFyZ2V0KTtcblxuICAgICAgICAgICAgdmFyIGFFdmVuRWxlbWVudHMgPSBbXTtcbiAgICAgICAgICAgIHZhciBhT2RkRWxlbWVudHMgPSBbXTtcblxuICAgICAgICAgICAgJC5lYWNoKGNhcm91c2VsSXRlbXMsIGZ1bmN0aW9uIChpbmRleCwgaXRlbSkge1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCAlIDIgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgYUV2ZW5FbGVtZW50cy5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGFPZGRFbGVtZW50cy5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAvL2Nhcm91c2VsLmVtcHR5KCk7XG5cbiAgICAgICAgICAgIHN3aXRjaCAodGhpc1Njb3BlLm93bC5vcHRpb25zLm93bDJyb3dEaXJlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICBjYXNlICdsdHInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzU2NvcGUubGVmdFRvcmlnaHQodGhpc1Njb3BlLCBjYXJvdXNlbCwgY2Fyb3VzZWxJdGVtcyk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdCA6XG4gICAgICAgICAgICAgICAgICAgIHRoaXNTY29wZS51cFRvZG93bih0aGlzU2NvcGUsIGFFdmVuRWxlbWVudHMsIGFPZGRFbGVtZW50cywgY2Fyb3VzZWwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH07XG5cbiAgICAgICAgT3dsMnJvdy5wcm90b3R5cGUubGVmdFRvcmlnaHQgPSBmdW5jdGlvbiAodGhpc1Njb3BlLCBjYXJvdXNlbCwgY2Fyb3VzZWxJdGVtcykge1xuXG4gICAgICAgICAgICB2YXIgbzJ3Q29udGFpbmVyQ2xhc3MgPSB0aGlzU2NvcGUub3dsLm9wdGlvbnMub3dsMnJvd0NvbnRhaW5lcjtcbiAgICAgICAgICAgIHZhciBvd2xNYXJnaW4gPSB0aGlzU2NvcGUub3dsLm9wdGlvbnMubWFyZ2luO1xuICAgICAgICAgICAgdmFyIGNhcm91c2VsSXRlbXNMZW5ndGggPSBjYXJvdXNlbEl0ZW1zLmxlbmd0aDtcbiAgICAgICAgICAgIHZhciBmaXJzQXJyID0gW107XG4gICAgICAgICAgICB2YXIgc2Vjb25kQXJyID0gW107XG5cbiAgICAgICAgICAgIGlmIChjYXJvdXNlbEl0ZW1zTGVuZ3RoICUgMiA9PT0gMSkge1xuICAgICAgICAgICAgICAgIGNhcm91c2VsSXRlbXNMZW5ndGggPSAoKGNhcm91c2VsSXRlbXNMZW5ndGggLSAxKSAvIDIpICsgMTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY2Fyb3VzZWxJdGVtc0xlbmd0aCA9IGNhcm91c2VsSXRlbXNMZW5ndGggLyAyO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAkLmVhY2goY2Fyb3VzZWxJdGVtcywgZnVuY3Rpb24gKGluZGV4LCBpdGVtKSB7XG5cblxuICAgICAgICAgICAgICAgIGlmIChpbmRleCA8IGNhcm91c2VsSXRlbXNMZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgZmlyc0Fyci5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHNlY29uZEFyci5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAkLmVhY2goZmlyc0FyciwgZnVuY3Rpb24gKGluZGV4LCBpdGVtKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJvd0NvbnRhaW5lciA9ICQoJzxkaXYgY2xhc3M9XCInICsgbzJ3Q29udGFpbmVyQ2xhc3MgKyAnXCIvPicpO1xuXG4gICAgICAgICAgICAgICAgdmFyIGZpcnN0Um93RWxlbWVudCA9IGZpcnNBcnJbaW5kZXhdO1xuICAgICAgICAgICAgICAgIGZpcnN0Um93RWxlbWVudC5zdHlsZS5tYXJnaW5Cb3R0b20gPSBvd2xNYXJnaW4gKyAncHgnO1xuXG4gICAgICAgICAgICAgICAgcm93Q29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAuYXBwZW5kKGZpcnN0Um93RWxlbWVudClcbiAgICAgICAgICAgICAgICAgIC5hcHBlbmQoc2Vjb25kQXJyW2luZGV4XSk7XG5cbiAgICAgICAgICAgICAgICBjYXJvdXNlbC5hcHBlbmQocm93Q29udGFpbmVyKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIH07XG5cbiAgICAgICAgT3dsMnJvdy5wcm90b3R5cGUudXBUb2Rvd24gPSBmdW5jdGlvbiAodGhpc1Njb3BlLCBhRXZlbkVsZW1lbnRzLCBhT2RkRWxlbWVudHMsIGNhcm91c2VsKSB7XG5cbiAgICAgICAgICAgIHZhciBvMndDb250YWluZXJDbGFzcyA9IHRoaXNTY29wZS5vd2wub3B0aW9ucy5vd2wycm93Q29udGFpbmVyO1xuICAgICAgICAgICAgdmFyIG93bE1hcmdpbiA9IHRoaXNTY29wZS5vd2wub3B0aW9ucy5tYXJnaW47XG5cbiAgICAgICAgICAgICQuZWFjaChhRXZlbkVsZW1lbnRzLCBmdW5jdGlvbiAoaW5kZXgsIGl0ZW0pIHtcblxuICAgICAgICAgICAgICAgIHZhciByb3dDb250YWluZXIgPSAkKCc8ZGl2IGNsYXNzPVwiJyArIG8yd0NvbnRhaW5lckNsYXNzICsgJ1wiLz4nKTtcbiAgICAgICAgICAgICAgICB2YXIgZXZlbkVsZW1lbnQgPSBhRXZlbkVsZW1lbnRzW2luZGV4XTtcblxuICAgICAgICAgICAgICAgIGV2ZW5FbGVtZW50LnN0eWxlLm1hcmdpbkJvdHRvbSA9IG93bE1hcmdpbiArICdweCc7XG5cbiAgICAgICAgICAgICAgICByb3dDb250YWluZXJcbiAgICAgICAgICAgICAgICAgIC5hcHBlbmQoZXZlbkVsZW1lbnQpXG4gICAgICAgICAgICAgICAgICAuYXBwZW5kKGFPZGRFbGVtZW50c1tpbmRleF0pO1xuXG4gICAgICAgICAgICAgICAgY2Fyb3VzZWwuYXBwZW5kKHJvd0NvbnRhaW5lcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogRGVzdHJveXMgdGhlIHBsdWdpbi5cbiAgICAgICAgICovXG4gICAgICAgIE93bDJyb3cucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgaGFuZGxlciwgcHJvcGVydHk7XG4gICAgICAgIH07XG5cbiAgICAgICAgJC5mbi5zYnlPd2xDYXJvdXNlbC5Db25zdHJ1Y3Rvci5QbHVnaW5zWydvd2wycm93J10gPSBPd2wycm93O1xuICAgIH0pKHdpbmRvdy5aZXB0byB8fCB3aW5kb3cualF1ZXJ5LCB3aW5kb3csIGRvY3VtZW50KTtcblxuICAgIChmdW5jdGlvbigkKXtcblxuICAgICAgICBmdW5jdGlvbiBzYnlBZGRWaXNpYmlsaXR5TGlzdGVuZXIoKSB7XG4gICAgICAgICAgICAvKiBEZXRlY3Qgd2hlbiBlbGVtZW50IGJlY29tZXMgdmlzaWJsZS4gVXNlZCBmb3Igd2hlbiB0aGUgZmVlZCBpcyBpbml0aWFsbHkgaGlkZGVuLCBpbiBhIHRhYiBmb3IgZXhhbXBsZS4gaHR0cHM6Ly9naXRodWIuY29tL3NoYXVuYm93ZS9qcXVlcnkudmlzaWJpbGl0eUNoYW5nZWQgKi9cbiAgICAgICAgICAgICFmdW5jdGlvbiAoaSkge1xuICAgICAgICAgICAgICAgIHZhciBuID0ge1xuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB9LCBydW5PbkxvYWQ6ICEwLCBmcmVxdWVuY3k6IDEwMCwgc2J5UHJldmlvdXNWaXNpYmlsaXR5OiBudWxsXG4gICAgICAgICAgICAgICAgfSwgYyA9IHt9O1xuICAgICAgICAgICAgICAgIGMuc2J5Q2hlY2tWaXNpYmlsaXR5ID0gZnVuY3Rpb24gKGksIG4pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGpRdWVyeS5jb250YWlucyhkb2N1bWVudCwgaVswXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gbi5zYnlQcmV2aW91c1Zpc2liaWxpdHksIHQgPSBpLmlzKFwiOnZpc2libGVcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBuLnNieVByZXZpb3VzVmlzaWJpbGl0eSA9IHQsIG51bGwgPT0gZSA/IG4ucnVuT25Mb2FkICYmIG4uY2FsbGJhY2soaSwgdCkgOiBlICE9PSB0ICYmIG4uY2FsbGJhY2soaSwgdCksIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuc2J5Q2hlY2tWaXNpYmlsaXR5KGksIG4pXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBuLmZyZXF1ZW5jeSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIGkuZm4uc2J5VmlzaWJpbGl0eUNoYW5nZWQgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IGkuZXh0ZW5kKHt9LCBuLCBlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjLnNieUNoZWNrVmlzaWJpbGl0eShpKHRoaXMpLCB0KVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0oalF1ZXJ5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIFNieSgpIHtcbiAgICAgICAgICAgIHRoaXMuZmVlZHMgPSB7fTtcbiAgICAgICAgICAgIHRoaXMuY3RhcyA9IHt9O1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zID0gc2J5T3B0aW9ucztcbiAgICAgICAgICAgIHRoaXMuaXNUb3VjaCA9IHNieUlzVG91Y2goKTtcbiAgICAgICAgfVxuXG4gICAgICAgIFNieS5wcm90b3R5cGUgPSB7XG4gICAgICAgICAgICBjcmVhdGVQYWdlOiBmdW5jdGlvbiAoY3JlYXRlRmVlZHMsIGNyZWF0ZUZlZWRzQXJncykge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygd2luZG93LnNieWFqYXh1cmwgPT09ICd1bmRlZmluZWQnIHx8IHdpbmRvdy5zYnlhamF4dXJsLmluZGV4T2Yod2luZG93LmxvY2F0aW9uLmhvc3RuYW1lKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LnNieWFqYXh1cmwgPSB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUgKyAnL3dwLWFkbWluL2FkbWluLWFqYXgucGhwJztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAkKCcuc2J5X25vX2pzX2Vycm9yX21lc3NhZ2UnKS5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICAkKCcuc2J5X25vX2pzJykucmVtb3ZlQ2xhc3MoJ3NieV9ub19qcycpO1xuXG4gICAgICAgICAgICAgICAgY3JlYXRlRmVlZHMoY3JlYXRlRmVlZHNBcmdzKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBtYXliZUFkZFlUQVBJOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgeW91dHViZVNjcmlwdElkID0gXCJzYnkteW91dHViZS1hcGlcIjtcbiAgICAgICAgICAgICAgICB2YXIgeW91dHViZVNjcmlwdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHlvdXR1YmVTY3JpcHRJZCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoeW91dHViZVNjcmlwdCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGFnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGZpcnN0U2NyaXB0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJzY3JpcHRcIilbMF07XG5cbiAgICAgICAgICAgICAgICAgICAgdGFnLnNyYyA9IFwiaHR0cHM6Ly93d3cueW91dHViZS5jb20vaWZyYW1lX2FwaVwiO1xuICAgICAgICAgICAgICAgICAgICB0YWcuaWQgPSB5b3V0dWJlU2NyaXB0SWQ7XG4gICAgICAgICAgICAgICAgICAgIGZpcnN0U2NyaXB0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRhZywgZmlyc3RTY3JpcHQpO1xuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNyZWF0ZUxpZ2h0Ym94OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgbGJCdWlsZGVyID0gc2J5R2V0bGlnaHRib3hCdWlsZGVyKCk7XG4gICAgICAgICAgICAgICAgdmFyIHNieV9sYl9kZWxheSA9IChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzYnlfdGltZXIgPSAwO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHNieV9jYWxsYmFjaywgc2J5X21zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQoc2J5X3RpbWVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNieV90aW1lciA9IHNldFRpbWVvdXQoc2J5X2NhbGxiYWNrLCBzYnlfbXMpO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pKCk7XG4gICAgICAgICAgICAgICAgalF1ZXJ5KHdpbmRvdykub24oJ3Jlc2l6ZScsZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBzYnlfbGJfZGVsYXkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGJCdWlsZGVyLmFmdGVyUmVzaXplKCk7XG4gICAgICAgICAgICAgICAgICAgIH0sIDIwMCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgLyogTGlnaHRib3ggdjIuNy4xIGJ5IExva2VzaCBEaGFrYXIgLSBodHRwOi8vbG9rZXNoZGhha2FyLmNvbS9wcm9qZWN0cy9saWdodGJveDIvIC0gSGVhdmlseSBtb2RpZmllZCBzcGVjaWZpY2FsbHkgZm9yIHRoaXMgcGx1Z2luICovXG4gICAgICAgICAgICAgICAgKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGpRdWVyeSxcbiAgICAgICAgICAgICAgICAgICAgICBiID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGEoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZhZGVEdXJhdGlvbiA9IDUwMCwgdGhpcy5maXRJbWFnZXNJblZpZXdwb3J0ID0gITAsIHRoaXMucmVzaXplRHVyYXRpb24gPSA3MDAsIHRoaXMucG9zaXRpb25Gcm9tVG9wID0gNTAsIHRoaXMuc2hvd0ltYWdlTnVtYmVyTGFiZWwgPSAhMCwgdGhpcy5hbHdheXNTaG93TmF2T25Ub3VjaERldmljZXMgPSAhMSwgdGhpcy53cmFwQXJvdW5kID0gITFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5wcm90b3R5cGUuYWxidW1MYWJlbCA9IGZ1bmN0aW9uKGEsIGIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhICsgXCIgLyBcIiArIGJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgYVxuICAgICAgICAgICAgICAgICAgICAgIH0oKSxcbiAgICAgICAgICAgICAgICAgICAgICBjID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGIoYSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zID0gYSwgdGhpcy5hbGJ1bSA9IFtdLCB0aGlzLmN1cnJlbnRJbWFnZUluZGV4ID0gdm9pZCAwLCB0aGlzLmluaXQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBiLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVuYWJsZSgpLCB0aGlzLmJ1aWxkKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgYi5wcm90b3R5cGUuZW5hYmxlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhKFwiYm9keVwiKS5vbihcImNsaWNrXCIsIFwiYVtkYXRhLXNieS1saWdodGJveF1cIiwgZnVuY3Rpb24oYykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBiLnN0YXJ0KGEoYy5jdXJyZW50VGFyZ2V0KSksICExXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBiLnByb3RvdHlwZS5idWlsZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYShcIlwiK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYkJ1aWxkZXIudGVtcGxhdGUoKSkuYXBwZW5kVG8oYShcImJvZHlcIikpLCB0aGlzLiRsaWdodGJveCA9IGEoXCIjc2J5X2xpZ2h0Ym94XCIpLCB0aGlzLiRvdmVybGF5ID0gYShcIiNzYnlfbGlnaHRib3hPdmVybGF5XCIpLCB0aGlzLiRvdXRlckNvbnRhaW5lciA9IHRoaXMuJGxpZ2h0Ym94LmZpbmQoXCIuc2J5X2xiLW91dGVyQ29udGFpbmVyXCIpLCB0aGlzLiRjb250YWluZXIgPSB0aGlzLiRsaWdodGJveC5maW5kKFwiLnNieV9sYi1jb250YWluZXJcIiksIHRoaXMuY29udGFpbmVyVG9wUGFkZGluZyA9IHBhcnNlSW50KHRoaXMuJGNvbnRhaW5lci5jc3MoXCJwYWRkaW5nLXRvcFwiKSwgMTApLCB0aGlzLmNvbnRhaW5lclJpZ2h0UGFkZGluZyA9IHBhcnNlSW50KHRoaXMuJGNvbnRhaW5lci5jc3MoXCJwYWRkaW5nLXJpZ2h0XCIpLCAxMCksIHRoaXMuY29udGFpbmVyQm90dG9tUGFkZGluZyA9IHBhcnNlSW50KHRoaXMuJGNvbnRhaW5lci5jc3MoXCJwYWRkaW5nLWJvdHRvbVwiKSwgMTApLCB0aGlzLmNvbnRhaW5lckxlZnRQYWRkaW5nID0gcGFyc2VJbnQodGhpcy4kY29udGFpbmVyLmNzcyhcInBhZGRpbmctbGVmdFwiKSwgMTApLCB0aGlzLiRvdmVybGF5LmhpZGUoKS5vbihcImNsaWNrXCIsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBiLmVuZCgpLCAhMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIGpRdWVyeShkb2N1bWVudCkub24oJ2NsaWNrJywgZnVuY3Rpb24oZXZlbnQsIGIsIGMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL0ZhZGUgb3V0IHRoZSBsaWdodGJveCBpZiBjbGljayBhbnl3aGVyZSBvdXRzaWRlIG9mIHRoZSB0d28gZWxlbWVudHMgZGVmaW5lZCBiZWxvd1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghalF1ZXJ5KGV2ZW50LnRhcmdldCkuY2xvc2VzdCgnLnNieV9sYi1vdXRlckNvbnRhaW5lcicpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWpRdWVyeShldmVudC50YXJnZXQpLmNsb3Nlc3QoJy5zYnlfbGItZGF0YUNvbnRhaW5lcicpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9GYWRlIG91dCBsaWdodGJveFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlnaHRib3hPbkNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYkJ1aWxkZXIucGF1c2VQbGF5ZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSgnI3NieV9saWdodGJveE92ZXJsYXksICNzYnlfbGlnaHRib3gnKS5mYWRlT3V0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy4kbGlnaHRib3guaGlkZSgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoJyNzYnlfbGlnaHRib3hPdmVybGF5Jykub24oXCJjbGlja1wiLCBmdW5jdGlvbihjKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYkJ1aWxkZXIucGF1c2VQbGF5ZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSgnLnNieV9nZHByX25vdGljZScpLnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwic2J5X2xpZ2h0Ym94XCIgPT09IGEoYy50YXJnZXQpLmF0dHIoXCJpZFwiKSAmJiBiLmVuZCgpLCAhMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy4kbGlnaHRib3guZmluZChcIi5zYnlfbGItcHJldlwiKS5vbihcImNsaWNrXCIsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxiQnVpbGRlci5wYXVzZVBsYXllcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSgnLnNieV9nZHByX25vdGljZScpLnJlbW92ZSgpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGIuY2hhbmdlSW1hZ2UoMCA9PT0gYi5jdXJyZW50SW1hZ2VJbmRleCA/IGIuYWxidW0ubGVuZ3RoIC0gMSA6IGIuY3VycmVudEltYWdlSW5kZXggLSAxKSwgITFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzLiRsaWdodGJveC5maW5kKFwiLnNieV9sYi1jb250YWluZXJcIikub24oXCJzd2lwZXJpZ2h0XCIsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxiQnVpbGRlci5wYXVzZVBsYXllcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSgnLnNieV9nZHByX25vdGljZScpLnJlbW92ZSgpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGIuY2hhbmdlSW1hZ2UoMCA9PT0gYi5jdXJyZW50SW1hZ2VJbmRleCA/IGIuYWxidW0ubGVuZ3RoIC0gMSA6IGIuY3VycmVudEltYWdlSW5kZXggLSAxKSwgITFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB0aGlzLiRsaWdodGJveC5maW5kKFwiLnNieV9sYi1uZXh0XCIpLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGJCdWlsZGVyLnBhdXNlUGxheWVyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCcuc2J5X2dkcHJfbm90aWNlJykucmVtb3ZlKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYi5jaGFuZ2VJbWFnZShiLmN1cnJlbnRJbWFnZUluZGV4ID09PSBiLmFsYnVtLmxlbmd0aCAtIDEgPyAwIDogYi5jdXJyZW50SW1hZ2VJbmRleCArIDEpLCAhMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIHRoaXMuJGxpZ2h0Ym94LmZpbmQoXCIuc2J5X2xiLWNvbnRhaW5lclwiKS5vbihcInN3aXBlbGVmdFwiLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYkJ1aWxkZXIucGF1c2VQbGF5ZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoJy5zYnlfZ2Rwcl9ub3RpY2UnKS5yZW1vdmUoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBiLmNoYW5nZUltYWdlKGIuY3VycmVudEltYWdlSW5kZXggPT09IGIuYWxidW0ubGVuZ3RoIC0gMSA/IDAgOiBiLmN1cnJlbnRJbWFnZUluZGV4ICsgMSksICExXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRsaWdodGJveC5maW5kKFwiLnNieV9sYi1sb2FkZXIsIC5zYnlfbGItY2xvc2VcIikub24oXCJjbGlja1wiLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpZ2h0Ym94T25DbG9zZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGJCdWlsZGVyLnBhdXNlUGxheWVyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGIuZW5kKCksICExXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBiLnByb3RvdHlwZS5zdGFydCA9IGZ1bmN0aW9uKGIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGMoYSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQuYWxidW0ucHVzaChsYkJ1aWxkZXIuZ2V0RGF0YShhKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gdGhpcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGEod2luZG93KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUub24oXCJyZXNpemVcIiwgYS5wcm94eSh0aGlzLnNpemVPdmVybGF5LCB0aGlzKSksIGEoXCJzZWxlY3QsIG9iamVjdCwgZW1iZWRcIikuY3NzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5OiBcImhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgdGhpcy5zaXplT3ZlcmxheSgpLCB0aGlzLmFsYnVtID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZiwgZyA9IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBiLmF0dHIoXCJkYXRhLXNieS1saWdodGJveFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGEoYi5wcm9wKFwidGFnTmFtZVwiKSArICdbZGF0YS1zYnktbGlnaHRib3g9XCInICsgaCArICdcIl0nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGYubGVuZ3RoOyBpID0gKytpKSBjKGEoZltpXSkpLCBmW2ldID09PSBiWzBdICYmIChnID0gaSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoXCJsaWdodGJveFwiID09PSBiLmF0dHIoXCJyZWxcIikpIGMoYik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gYShiLnByb3AoXCJ0YWdOYW1lXCIpICsgJ1tyZWw9XCInICsgYi5hdHRyKFwicmVsXCIpICsgJ1wiXScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgZi5sZW5ndGg7IGogPSArK2opIGMoYShmW2pdKSksIGZbal0gPT09IGJbMF0gJiYgKGcgPSBqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGsgPSBlLnNjcm9sbFRvcCgpICsgdGhpcy5vcHRpb25zLnBvc2l0aW9uRnJvbVRvcCAtIDUwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gZS5zY3JvbGxMZWZ0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRsaWdodGJveC5jc3Moe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogayArIFwicHhcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiBsICsgXCJweFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS5mYWRlSW4odGhpcy5vcHRpb25zLmZhZGVEdXJhdGlvbiksIHRoaXMuY2hhbmdlSW1hZ2UoZylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgYi5wcm90b3R5cGUuY2hhbmdlSW1hZ2UgPSBmdW5jdGlvbihiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRpc2FibGVLZXlib2FyZE5hdigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSB0aGlzLiRsaWdodGJveC5maW5kKFwiLnNieV9sYi1pbWFnZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJG92ZXJsYXkuZmFkZUluKHRoaXMub3B0aW9ucy5mYWRlRHVyYXRpb24pLCBhKFwiLnNieV9sYi1sb2FkZXJcIikuZmFkZUluKFwic2xvd1wiKSwgdGhpcy4kbGlnaHRib3guZmluZChcIi5zYnlfbGItaW1hZ2UsIC5zYnlfbGItbmF2LCAuc2J5X2xiLXByZXYsIC5zYnlfbGItbmV4dCwgLnNieV9sYi1kYXRhQ29udGFpbmVyLCAuc2J5X2xiLW51bWJlcnMsIC5zYnlfbGItY2FwdGlvblwiKS5oaWRlKCksIHRoaXMuJG91dGVyQ29udGFpbmVyLmFkZENsYXNzKFwiYW5pbWF0aW5nXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSBuZXcgSW1hZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLm9ubG9hZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmLCBnLCBoLCBpLCBqLCBrLCBsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzYnlBcnJvd1dpZHRoID0gMTAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQuYXR0cihcInNyY1wiLCBjLmFsYnVtW2JdLmxpbmspLCBmID0gYShlKSwgZC53aWR0aChlLndpZHRoKSwgZC5oZWlnaHQoZS5oZWlnaHQpLCBjLm9wdGlvbnMuZml0SW1hZ2VzSW5WaWV3cG9ydCAmJiAobCA9IGEod2luZG93KS53aWR0aCgpLCBrID0gYSh3aW5kb3cpLmhlaWdodCgpLCBqID0gbCAtIGMuY29udGFpbmVyTGVmdFBhZGRpbmcgLSBjLmNvbnRhaW5lclJpZ2h0UGFkZGluZyAtIDIwIC0gc2J5QXJyb3dXaWR0aCwgaSA9IGsgLSBjLmNvbnRhaW5lclRvcFBhZGRpbmcgLSBjLmNvbnRhaW5lckJvdHRvbVBhZGRpbmcgLSAxNTAsIChlLndpZHRoID4gaiB8fCBlLmhlaWdodCA+IGkpICYmIChlLndpZHRoIC8gaiA+IGUuaGVpZ2h0IC8gaSA/IChoID0gaiwgZyA9IHBhcnNlSW50KGUuaGVpZ2h0IC8gKGUud2lkdGggLyBoKSwgMTApLCBkLndpZHRoKGgpLCBkLmhlaWdodChnKSkgOiAoZyA9IGksIGggPSBwYXJzZUludChlLndpZHRoIC8gKGUuaGVpZ2h0IC8gZyksIDEwKSwgZC53aWR0aChoKSwgZC5oZWlnaHQoZykpKSksIGMuc2l6ZUNvbnRhaW5lcihkLndpZHRoKCksIGQuaGVpZ2h0KCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBlLnNyYyA9IHRoaXMuYWxidW1bYl0ubGluaywgdGhpcy5jdXJyZW50SW1hZ2VJbmRleCA9IGJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgYi5wcm90b3R5cGUuc2l6ZU92ZXJsYXkgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJG92ZXJsYXkud2lkdGgoYSh3aW5kb3cpLndpZHRoKCkpLmhlaWdodChhKGRvY3VtZW50KS5oZWlnaHQoKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgYi5wcm90b3R5cGUuc2l6ZUNvbnRhaW5lciA9IGZ1bmN0aW9uKGEsIGIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGMoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC4kbGlnaHRib3guZmluZChcIi5zYnlfbGItZGF0YUNvbnRhaW5lclwiKS53aWR0aChnKSwgZC4kbGlnaHRib3guZmluZChcIi5zYnlfbGItcHJldkxpbmtcIikuaGVpZ2h0KGgpLCBkLiRsaWdodGJveC5maW5kKFwiLnNieV9sYi1uZXh0TGlua1wiKS5oZWlnaHQoaCksIGQuc2hvd0ltYWdlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gdGhpcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHRoaXMuJG91dGVyQ29udGFpbmVyLm91dGVyV2lkdGgoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IHRoaXMuJG91dGVyQ29udGFpbmVyLm91dGVySGVpZ2h0KCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBhICsgdGhpcy5jb250YWluZXJMZWZ0UGFkZGluZyArIHRoaXMuY29udGFpbmVyUmlnaHRQYWRkaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gYiArIHRoaXMuY29udGFpbmVyVG9wUGFkZGluZyArIHRoaXMuY29udGFpbmVyQm90dG9tUGFkZGluZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgIT09IGcgfHwgZiAhPT0gaCA/IHRoaXMuJG91dGVyQ29udGFpbmVyLmFuaW1hdGUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdGhpcy5vcHRpb25zLnJlc2l6ZUR1cmF0aW9uLCBcInN3aW5nXCIsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgOiBjKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgYi5wcm90b3R5cGUuc2hvd0ltYWdlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRsaWdodGJveC5maW5kKFwiLnNieV9sYi1sb2FkZXJcIikuaGlkZSgpLCB0aGlzLiRsaWdodGJveC5maW5kKFwiLnNieV9sYi1pbWFnZVwiKS5mYWRlSW4oXCJzbG93XCIpLCB0aGlzLnVwZGF0ZU5hdigpLCB0aGlzLnVwZGF0ZURldGFpbHMoKSwgdGhpcy5wcmVsb2FkTmVpZ2hib3JpbmdJbWFnZXMoKSwgdGhpcy5lbmFibGVLZXlib2FyZE5hdigpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGIucHJvdG90eXBlLnVwZGF0ZU5hdiA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSAhMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlRXZlbnQoXCJUb3VjaEV2ZW50XCIpLCBhID0gdGhpcy5vcHRpb25zLmFsd2F5c1Nob3dOYXZPblRvdWNoRGV2aWNlcyA/ICEwIDogITFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGIpIHt9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRsaWdodGJveC5maW5kKFwiLnNieV9sYi1uYXZcIikuc2hvdygpLCB0aGlzLmFsYnVtLmxlbmd0aCA+IDEgJiYgKHRoaXMub3B0aW9ucy53cmFwQXJvdW5kID8gKGEgJiYgdGhpcy4kbGlnaHRib3guZmluZChcIi5zYnlfbGItcHJldiwgLnNieV9sYi1uZXh0XCIpLmNzcyhcIm9wYWNpdHlcIiwgXCIxXCIpLCB0aGlzLiRsaWdodGJveC5maW5kKFwiLnNieV9sYi1wcmV2LCAuc2J5X2xiLW5leHRcIikuc2hvdygpKSA6ICh0aGlzLmN1cnJlbnRJbWFnZUluZGV4ID4gMCAmJiAodGhpcy4kbGlnaHRib3guZmluZChcIi5zYnlfbGItcHJldlwiKS5zaG93KCksIGEgJiYgdGhpcy4kbGlnaHRib3guZmluZChcIi5zYnlfbGItcHJldlwiKS5jc3MoXCJvcGFjaXR5XCIsIFwiMVwiKSksIHRoaXMuY3VycmVudEltYWdlSW5kZXggPCB0aGlzLmFsYnVtLmxlbmd0aCAtIDEgJiYgKHRoaXMuJGxpZ2h0Ym94LmZpbmQoXCIuc2J5X2xiLW5leHRcIikuc2hvdygpLCBhICYmIHRoaXMuJGxpZ2h0Ym94LmZpbmQoXCIuc2J5X2xiLW5leHRcIikuY3NzKFwib3BhY2l0eVwiLCBcIjFcIikpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgYi5wcm90b3R5cGUudXBkYXRlRGV0YWlscyA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSB0aGlzO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiogTkVXIFBIT1RPIEFDVElPTiAqKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGpRdWVyeSgnaWZyYW1lLnNieV9sYi1wbGF5ZXItbG9hZGVkJykubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCcuc2J5X2xiLXBsYXllci1wbGFjZWhvbGRlcicpLnJlcGxhY2VXaXRoKGpRdWVyeSgnaWZyYW1lLnNieV9sYi1wbGF5ZXItbG9hZGVkJykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSgnaWZyYW1lLnNieV9sYi1wbGF5ZXItbG9hZGVkJykucmVtb3ZlQ2xhc3MoJ3NieV9sYi1wbGF5ZXItbG9hZGVkJykuc2hvdygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9Td2l0Y2ggdmlkZW8gd2hlbiBlaXRoZXIgYSBuZXcgcG9wdXAgb3IgbmF2aWdhdGluZyB0byBuZXcgb25lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZmVlZCA9IHdpbmRvdy5zYnkuZmVlZHNbdGhpcy5hbGJ1bVt0aGlzLmN1cnJlbnRJbWFnZUluZGV4XS5mZWVkSW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGJCdWlsZGVyLmJlZm9yZVBsYXllclNldHVwKHRoaXMuJGxpZ2h0Ym94LHRoaXMuYWxidW1bdGhpcy5jdXJyZW50SW1hZ2VJbmRleF0sdGhpcy5jdXJyZW50SW1hZ2VJbmRleCx0aGlzLmFsYnVtLGZlZWQpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggc2J5X3N1cHBvcnRzX3ZpZGVvKCkgKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoJyNzYnlfbGlnaHRib3gnKS5yZW1vdmVDbGFzcygnc2J5X3ZpZGVvX2xpZ2h0Ym94Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZlZWQuc2V0dGluZ3MuY29uc2VudEdpdmVuICYmIHRoaXMuYWxidW1bdGhpcy5jdXJyZW50SW1hZ2VJbmRleF0udmlkZW8ubGVuZ3RoKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCcuc2J5X2dkcHJfbm90aWNlJykucmVtb3ZlKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBsYXllcklEID0gJ3NieV9sYi1wbGF5ZXInO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoJyNzYnlfbGlnaHRib3gnKS5hZGRDbGFzcygnc2J5X3ZpZGVvX2xpZ2h0Ym94Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggISB3aW5kb3cuc2J5T3B0aW9ucy5pc1BybyApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSgnI3NieV9saWdodGJveCcpLmFkZENsYXNzKCdzYnlfbGlnaHRib3hfZnJlZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZpZGVvSUQgPSB0aGlzLmFsYnVtW3RoaXMuY3VycmVudEltYWdlSW5kZXhdLnZpZGVvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9wbGF5ID0gc2J5T3B0aW9ucy5hdXRvcGxheTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cuc2J5TGlnaHRib3hQbGF5ZXIgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXJncyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3N0OiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgKyBmZWVkLmVtYmVkVVJMLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvSWQ6IHZpZGVvSUQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxheWVyVmFyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2Rlc3RicmFuZGluZzogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvcGxheTogYXV0b3BsYXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50czoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb25TdGF0ZUNoYW5nZSc6IGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2aWRlb0lEID0gZGF0YS50YXJnZXQuZ2V0VmlkZW9EYXRhKClbJ3ZpZGVvX2lkJ107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWVkLmFmdGVyU3RhdGVDaGFuZ2UocGxheWVySUQsdmlkZW9JRCxkYXRhLCQoJyMnICsgcGxheWVySUQpLmNsb3Nlc3QoJy5zYnlfdmlkZW9fdGh1bWJuYWlsX3dyYXAnKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVlZC5tYXliZUFkZENUQShwbGF5ZXJJRCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zYnlMaWdodGJveFBsYXllciA9IG5ldyB3aW5kb3cuWVQuUGxheWVyKHBsYXllcklELCBhcmdzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zYnlMaWdodGJveFBsYXllci5sb2FkVmlkZW9CeUlkKHZpZGVvSUQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kb3V0ZXJDb250YWluZXIucmVtb3ZlQ2xhc3MoXCJhbmltYXRpbmdcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJGxpZ2h0Ym94LmZpbmQoXCIuc2J5X2xiLWRhdGFDb250YWluZXJcIikuZmFkZUluKHRoaXMub3B0aW9ucy5yZXNpemVEdXJhdGlvbiwgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYi5zaXplT3ZlcmxheSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjc2J5X2xpZ2h0Ym94IC5zYnlfbGItcGxheWVyJykuY3NzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGVpZ2h0JyA6ICQoJyNzYnlfbGlnaHRib3ggLnNieV9sYi1vdXRlckNvbnRhaW5lcicpLmhlaWdodCgpKydweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dpZHRoJyA6ICQoJyNzYnlfbGlnaHRib3ggLnNieV9sYi1vdXRlckNvbnRhaW5lcicpLndpZHRoKCkrJ3B4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG9wJzogMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sMSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuJGxpZ2h0Ym94LmZpbmQoJ2lmcmFtZScpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kbGlnaHRib3guZmluZCgnaWZyYW1lJykuYXR0cigndGl0bGUnLHRoaXMuYWxidW1bdGhpcy5jdXJyZW50SW1hZ2VJbmRleF0udmlkZW9UaXRsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZ1bGxJbWFnZSA9ICQoJy5zYnlfaXRlbVtkYXRhLXZpZGVvLWlkPScgKyB0aGlzLmFsYnVtW3RoaXMuY3VycmVudEltYWdlSW5kZXhdLnZpZGVvKyddJykuZmluZCgnLnNieV92aWRlb190aHVtYm5haWwnKS5hdHRyKCdkYXRhLWZ1bGwtcmVzJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJy5zYnlfbGItaW1hZ2UnKS5hdHRyKCdzcmMnLGZ1bGxJbWFnZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJG91dGVyQ29udGFpbmVyLnJlbW92ZUNsYXNzKFwiYW5pbWF0aW5nXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRsaWdodGJveC5maW5kKFwiLnNieV9sYi1kYXRhQ29udGFpbmVyXCIpLmZhZGVJbih0aGlzLm9wdGlvbnMucmVzaXplRHVyYXRpb24sIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGIuc2l6ZU92ZXJsYXkoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KFwiLnNieV9sYi1jb250YWluZXJcIikucHJlcGVuZCgnPGEgaHJlZj1cImh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9Jyt0aGlzLmFsYnVtW3RoaXMuY3VycmVudEltYWdlSW5kZXhdLnZpZGVvKydcIiB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCIgY2xhc3M9XCJzYnlfZ2Rwcl9ub3RpY2VcIj48c3ZnIHN0eWxlPVwiY29sb3I6IHJnYmEoMjU1LDI1NSwyNTUsMSlcIiBjbGFzcz1cInN2Zy1pbmxpbmUtLWZhIGZhLXBsYXkgZmEtdy0xNCBzYnlfcGxheWJ0blwiIGFyaWEtbGFiZWw9XCJQbGF5XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgZGF0YS1mYS1wcm9jZXNzZWQ9XCJcIiBkYXRhLXByZWZpeD1cImZhXCIgZGF0YS1pY29uPVwicGxheVwiIHJvbGU9XCJwcmVzZW50YXRpb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCA0NDggNTEyXCI+PHBhdGggZmlsbD1cImN1cnJlbnRDb2xvclwiIGQ9XCJNNDI0LjQgMjE0LjdMNzIuNCA2LjZDNDMuOC0xMC4zIDAgNi4xIDAgNDcuOVY0NjRjMCAzNy41IDQwLjcgNjAuMSA3Mi40IDQxLjNsMzUyLTIwOGMzMS40LTE4LjUgMzEuNS02NC4xIDAtODIuNnpcIj48L3BhdGg+PC9zdmc+PC9hPicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYkJ1aWxkZXIuYWZ0ZXJQbGF5ZXJTZXR1cCh0aGlzLiRsaWdodGJveCx0aGlzLmFsYnVtW3RoaXMuY3VycmVudEltYWdlSW5kZXhdLHRoaXMuY3VycmVudEltYWdlSW5kZXgsdGhpcy5hbGJ1bSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5hbGJ1bS5sZW5ndGggPiAxICYmIHRoaXMub3B0aW9ucy5zaG93SW1hZ2VOdW1iZXJMYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRsaWdodGJveC5maW5kKFwiLnNieV9sYi1udW1iZXJcIikudGV4dCh0aGlzLm9wdGlvbnMuYWxidW1MYWJlbCh0aGlzLmN1cnJlbnRJbWFnZUluZGV4ICsgMSwgdGhpcy5hbGJ1bS5sZW5ndGgpKS5mYWRlSW4oXCJmYXN0XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJGxpZ2h0Ym94LmZpbmQoXCIuc2J5X2xiLW51bWJlclwiKS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGIucHJvdG90eXBlLnByZWxvYWROZWlnaGJvcmluZ0ltYWdlcyA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuYWxidW0ubGVuZ3RoID4gdGhpcy5jdXJyZW50SW1hZ2VJbmRleCArIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IG5ldyBJbWFnZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLnNyYyA9IHRoaXMuYWxidW1bdGhpcy5jdXJyZW50SW1hZ2VJbmRleCArIDFdLmxpbmtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRJbWFnZUluZGV4ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gbmV3IEltYWdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIuc3JjID0gdGhpcy5hbGJ1bVt0aGlzLmN1cnJlbnRJbWFnZUluZGV4IC0gMV0ubGlua1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBiLnByb3RvdHlwZS5lbmFibGVLZXlib2FyZE5hdiA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYShkb2N1bWVudCkub24oXCJrZXl1cC5rZXlib2FyZFwiLCBhLnByb3h5KHRoaXMua2V5Ym9hcmRBY3Rpb24sIHRoaXMpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBiLnByb3RvdHlwZS5kaXNhYmxlS2V5Ym9hcmROYXYgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEoZG9jdW1lbnQpLm9mZihcIi5rZXlib2FyZFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBiLnByb3RvdHlwZS5rZXlib2FyZEFjdGlvbiA9IGZ1bmN0aW9uKGEpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIEtFWUNPREVfRVNDICAgICAgICA9IDI3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIEtFWUNPREVfTEVGVEFSUk9XICA9IDM3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIEtFWUNPREVfUklHSFRBUlJPVyA9IDM5O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIga2V5Y29kZSA9IGV2ZW50LmtleUNvZGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIga2V5ICAgICA9IFN0cmluZy5mcm9tQ2hhckNvZGUoa2V5Y29kZSkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrZXljb2RlID09PSBLRVlDT0RFX0VTQyB8fCBrZXkubWF0Y2goL3h8b3xjLykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggc2J5X3N1cHBvcnRzX3ZpZGVvKCkgKSAkKCcjc2J5X2xpZ2h0Ym94IHZpZGVvLnNieV92aWRlbycpWzBdLnBhdXNlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI3NieV9saWdodGJveCBpZnJhbWUnKS5hdHRyKCdzcmMnLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbmQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAncCcgfHwga2V5Y29kZSA9PT0gS0VZQ09ERV9MRUZUQVJST1cpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50SW1hZ2VJbmRleCAhPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZUltYWdlKHRoaXMuY3VycmVudEltYWdlSW5kZXggLSAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMub3B0aW9ucy53cmFwQXJvdW5kICYmIHRoaXMuYWxidW0ubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZUltYWdlKHRoaXMuYWxidW0ubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoIHNieV9zdXBwb3J0c192aWRlbygpICkgJCgnI3NieV9saWdodGJveCB2aWRlby5zYnlfdmlkZW8nKVswXS5wYXVzZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyNzYnlfbGlnaHRib3ggaWZyYW1lJykuYXR0cignc3JjJywgJycpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ24nIHx8IGtleWNvZGUgPT09IEtFWUNPREVfUklHSFRBUlJPVykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRJbWFnZUluZGV4ICE9PSB0aGlzLmFsYnVtLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VJbWFnZSh0aGlzLmN1cnJlbnRJbWFnZUluZGV4ICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLm9wdGlvbnMud3JhcEFyb3VuZCAmJiB0aGlzLmFsYnVtLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VJbWFnZSgwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGJCdWlsZGVyLnBhdXNlUGxheWVyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgYi5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRpc2FibGVLZXlib2FyZE5hdigpLCBhKHdpbmRvdykub2ZmKFwicmVzaXplXCIsIHRoaXMuc2l6ZU92ZXJsYXkpLCB0aGlzLiRsaWdodGJveC5mYWRlT3V0KHRoaXMub3B0aW9ucy5mYWRlRHVyYXRpb24pLCB0aGlzLiRvdmVybGF5LmZhZGVPdXQodGhpcy5vcHRpb25zLmZhZGVEdXJhdGlvbiksIGEoXCJzZWxlY3QsIG9iamVjdCwgZW1iZWRcIikuY3NzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5OiBcInZpc2libGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgYlxuICAgICAgICAgICAgICAgICAgICAgIH0oKTtcbiAgICAgICAgICAgICAgICAgICAgYShmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IG5ldyBiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBjKGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vTGlnaHRib3ggaGlkZSBwaG90byBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJy5zYnlfbGlnaHRib3hfYWN0aW9uIGEnKS5vZmYoKS5vbignY2xpY2snLCBmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnBhcmVudCgpLmZpbmQoJy5zYnlfbGlnaHRib3hfdG9vbHRpcCcpLnRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH0pLmNhbGwodGhpcyk7XG4gICAgICAgICAgICAgICAgd2luZG93LnNieU9wdGlvbnMubGlnaHRib3hDcmVhdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjcmVhdGVGZWVkczogZnVuY3Rpb24gKGFyZ3MpIHtcbiAgICAgICAgICAgICAgICBpZiAoICFzYnlPcHRpb25zLmlzQWRtaW4gJiYgc2J5T3B0aW9ucy5saWdodGJveENyZWF0ZWQgPT09IHVuZGVmaW5lZCApIHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LnNieS5jcmVhdGVMaWdodGJveCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhcmdzLndoZW5GZWVkc0NyZWF0ZWQoXG4gICAgICAgICAgICAgICAgICAkKCcuc2JfeW91dHViZScpLmVhY2goZnVuY3Rpb24gKGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hdHRyKCdkYXRhLXNieS1pbmRleCcsIGluZGV4ICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5maW5kKCcuc2J5X3BsYXllcicpLnJlcGxhY2VXaXRoKCc8ZGl2IGlkPVwic2J5X3BsYXllcicraW5kZXgrJ1wiPjwvZGl2PicpO1xuICAgICAgICAgICAgICAgICAgICAgIHZhciAkc2VsZiA9ICQodGhpcyksXG4gICAgICAgICAgICAgICAgICAgICAgICBmbGFncyA9IHR5cGVvZiAkc2VsZi5hdHRyKCdkYXRhLXNieS1mbGFncycpICE9PSAndW5kZWZpbmVkJyA/ICRzZWxmLmF0dHIoJ2RhdGEtc2J5LWZsYWdzJykuc3BsaXQoJywnKSA6IFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhbCA9IHR5cGVvZiAkc2VsZi5hdHRyKCdkYXRhLW9wdGlvbnMnKSAhPT0gJ3VuZGVmaW5lZCcgPyBKU09OLnBhcnNlKCRzZWxmLmF0dHIoJ2RhdGEtb3B0aW9ucycpKSA6IHt9O1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChmbGFncy5pbmRleE9mKCd0ZXN0QWpheCcpID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LnNieS50cmlnZ2VyZWRUZXN0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN1Ym1pdERhdGEgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhY3Rpb24nIDogJ3NieV9vbl9hamF4X3Rlc3RfdHJpZ2dlcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU3VjY2VzcyA9IGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2RpZCB0ZXN0Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2J5QWpheChzdWJtaXREYXRhLG9uU3VjY2VzcylcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgdmFyIGZlZWRPcHRpb25zID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xzIDogJHNlbGYuYXR0cignZGF0YS1jb2xzJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHNtb2JpbGUgOiAkc2VsZi5hdHRyKCdkYXRhLWNvbHNtb2JpbGUnKSAhPT0gJ3NhbWUnID8gJHNlbGYuYXR0cignZGF0YS1jb2xzbW9iaWxlJykgOiAkc2VsZi5hdHRyKCdkYXRhLWNvbHMnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtIDogJHNlbGYuYXR0cignZGF0YS1udW0nKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nUmVzIDogJHNlbGYuYXR0cignZGF0YS1yZXMnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmVlZElEIDogJHNlbGYuYXR0cignZGF0YS1mZWVkaWQnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zdElEIDogdHlwZW9mICRzZWxmLmF0dHIoICdkYXRhLXBvc3RpZCcgKSAhPT0gJ3VuZGVmaW5lZCcgPyAkc2VsZi5hdHRyKCAnZGF0YS1wb3N0aWQnICkgOiAndW5rbm93bicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0Q29kZUF0dHMgOiAkc2VsZi5hdHRyKCdkYXRhLXNob3J0Y29kZS1hdHRzJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6aW5nRW5hYmxlZCA6IChmbGFncy5pbmRleE9mKCdyZXNpemVEaXNhYmxlJykgPT09IC0xKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VMb2FkRW5hYmxlZCA6IChmbGFncy5pbmRleE9mKCdpbWFnZUxvYWREaXNhYmxlJykgPT09IC0xKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdFbmFibGVkIDogKGZsYWdzLmluZGV4T2YoJ2RlYnVnJykgPiAtMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZhdm9yTG9jYWwgOiAoZmxhZ3MuaW5kZXhPZignZmF2b3JMb2NhbCcpID4gLTEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBhamF4UG9zdExvYWQgOiAoZmxhZ3MuaW5kZXhPZignYWpheFBvc3RMb2FkJykgPiAtMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrV1BQb3N0cyA6IChmbGFncy5pbmRleE9mKCdjaGVja1dQUG9zdHMnKSA+IC0xKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlQ2hlY2tQb3N0cyA6IChmbGFncy5pbmRleE9mKCdzaW5nbGVDaGVja1Bvc3RzJykgPiAtMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hcnJvd1BsYXllciA6IChmbGFncy5pbmRleE9mKCduYXJyb3dQbGF5ZXInKSA+IC0xKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RwciA6IChmbGFncy5pbmRleE9mKCdnZHByJykgPiAtMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNlbnRHaXZlbiA6IChmbGFncy5pbmRleE9mKCdnZHByJykgPT09IC0xKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbm9DRE4gOiAoZmxhZ3MuaW5kZXhPZignZGlzYWJsZWNkbicpID4gLTEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd0Nvb2tpZXM6IChmbGFncy5pbmRleE9mKCdhbGxvd2Nvb2tpZXMnKSA+IC0xKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGlnaHRib3hFbmFibGVkIDogdHlwZW9mICRzZWxmLmF0dHIoJ2RhdGEtc2J5LXN1cHBvcnRzLWxpZ2h0Ym94JykgIT09ICd1bmRlZmluZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdG9yIDogKGZsYWdzLmluZGV4T2YoJ2xvY2F0b3InKSA+IC0xKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b01pblJlcyA6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYWwgOiBnZW5lcmFsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmVCYXJFbmFibGVkOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zYnkuZmVlZHNbaW5kZXhdID0gc2J5R2V0TmV3RmVlZCh0aGlzLCBpbmRleCwgZmVlZE9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygd2luZG93LnNieUFQSVJlYWR5ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2J5LmZlZWRzW2luZGV4XS5wbGF5ZXJBUElSZWFkeSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zYnkuZmVlZHNbaW5kZXhdLnNldFJlc2l6ZWRJbWFnZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2J5LmZlZWRzW2luZGV4XS5pbml0KCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICB2YXIgZXZ0ID0galF1ZXJ5LkV2ZW50KCdzYnlhZnRlcmZlZWRjcmVhdGUnKTtcbiAgICAgICAgICAgICAgICAgICAgICBldnQuZmVlZCA9IHdpbmRvdy5zYnkuZmVlZHNbaW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSh3aW5kb3cpLnRyaWdnZXIoZXZ0KTtcblxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFmdGVyRmVlZHNDcmVhdGVkOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgLy8gZW5hYmxlIGhlYWRlciBob3ZlciBhY3Rpb25cbiAgICAgICAgICAgICAgICAkKCcuc2JfeW91dHViZV9oZWFkZXInKS5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyICR0aGlzSGVhZGVyID0gJCh0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgJHRoaXNIZWFkZXIuZmluZCgnLnNieV9oZWFkZXJfbGluaycpLm9uKCdtb3VzZWVudGVyIG1vdXNlbGVhdmUnLCBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2goZS50eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbW91c2VlbnRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzSGVhZGVyLmZpbmQoJy5zYnlfaGVhZGVyX2ltZ19ob3ZlcicpLmFkZENsYXNzKCdzYnlfZmFkZV9pbicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtb3VzZWxlYXZlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXNIZWFkZXIuZmluZCgnLnNieV9oZWFkZXJfaW1nX2hvdmVyJykucmVtb3ZlQ2xhc3MoJ3NieV9mYWRlX2luJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuc2J5QVBJUmVhZHkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGV2dCA9IGpRdWVyeS5FdmVudCgnc2J5ZmVlZGFuZHl0cmVhZHknKTtcbiAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KHdpbmRvdykudHJpZ2dlcihldnQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVuY29kZUhUTUw6IGZ1bmN0aW9uKHJhdykge1xuICAgICAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSBwYXNzZWQgdmFyaWFibGUgaXMgZGVmaW5lZFxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcmF3ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIHJlcGxhY2UgZ3JlYXRlciB0aGFuIGFuZCBsZXNzIHRoYW4gc3ltYm9scyB3aXRoIGh0bWwgZW50aXR5IHRvIGRpc2FsbG93IGh0bWwgaW4gY29tbWVudHNcbiAgICAgICAgICAgICAgICB2YXIgZW5jb2RlZCA9IHJhdy5yZXBsYWNlKC8oPikvZywnJmd0OycpLFxuICAgICAgICAgICAgICAgICAgZW5jb2RlZCA9IGVuY29kZWQucmVwbGFjZSgvKDwpL2csJyZsdDsnKTtcbiAgICAgICAgICAgICAgICBlbmNvZGVkID0gZW5jb2RlZC5yZXBsYWNlKC8oJmx0O2JyXFwvJmd0OykvZywnPGJyPicpO1xuICAgICAgICAgICAgICAgIGVuY29kZWQgPSBlbmNvZGVkLnJlcGxhY2UoLygmbHQ7YnImZ3Q7KS9nLCc8YnI+Jyk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZW5jb2RlZDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB1cmxEZXRlY3Q6IGZ1bmN0aW9uKHRleHQpIHtcbiAgICAgICAgICAgICAgICB2YXIgdXJsUmVnZXggPSAvaHR0cHM/OlxcL1xcLyh3d3dcXC4pP1stYS16QS1aMC05QDolLl9cXCt+Iz1dezIsMjU2fVxcLlthLXpdezIsNn1cXGIoWy1hLXpBLVowLTlAOiVfXFwrLn4jPyYvLz1dKikvZztcbiAgICAgICAgICAgICAgICByZXR1cm4gdGV4dC5tYXRjaCh1cmxSZWdleCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY3RhRGV0ZWN0OiBmdW5jdGlvbih0ZXh0KSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgY3RhTWF0Y2hlcyA9IHRleHQubWF0Y2goL3tMaW5rOiguKil9L2cpLFxuICAgICAgICAgICAgICAgICAgY3RhID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICBpZiAoY3RhTWF0Y2hlcyAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdXJsTWF0Y2hlcyA9IHdpbmRvdy5zYnkudXJsRGV0ZWN0KGN0YU1hdGNoZXNbMF0pO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh1cmxNYXRjaGVzICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gdXJsTWF0Y2hlc1swXS50cmltKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNieUJ1dHRvblRleHQgPSBjdGFNYXRjaGVzWzBdLnJlcGxhY2UoJ3tMaW5rOicsJycpLnJlcGxhY2UoJ30nLCcnKS5yZXBsYWNlKHVybCwnJykucmVwbGFjZSgnICAnLCcgJykudHJpbSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY3RhID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiAnbGluaycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiB1cmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogc2J5QnV0dG9uVGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdDVEEgZm91bmQgYnV0IG5vIFVSTCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGN0YTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzaHVmZmxlOiBmdW5jdGlvbihhcnJheSkge1xuICAgICAgICAgICAgICAgIHZhciBjdXJyZW50SW5kZXggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgICAgICAgICAgICB0ZW1wb3JhcnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgIHJhbmRvbUluZGV4O1xuXG4gICAgICAgICAgICAgICAgLy8gV2hpbGUgdGhlcmUgcmVtYWluIGVsZW1lbnRzIHRvIHNodWZmbGUuLi5cbiAgICAgICAgICAgICAgICB3aGlsZSAoMCAhPT0gY3VycmVudEluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFBpY2sgYSByZW1haW5pbmcgZWxlbWVudC4uLlxuICAgICAgICAgICAgICAgICAgICByYW5kb21JbmRleCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGN1cnJlbnRJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRJbmRleCAtPSAxO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIEFuZCBzd2FwIGl0IHdpdGggdGhlIGN1cnJlbnQgZWxlbWVudC5cbiAgICAgICAgICAgICAgICAgICAgdGVtcG9yYXJ5VmFsdWUgPSBhcnJheVtjdXJyZW50SW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICBhcnJheVtjdXJyZW50SW5kZXhdID0gYXJyYXlbcmFuZG9tSW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICBhcnJheVtyYW5kb21JbmRleF0gPSB0ZW1wb3JhcnlWYWx1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gYXJyYXk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgZnVuY3Rpb24gU2J5RmVlZChlbCwgaW5kZXgsIHNldHRpbmdzKSB7XG4gICAgICAgICAgICB0aGlzLmVsID0gZWw7XG4gICAgICAgICAgICB0aGlzLmluZGV4ID0gaW5kZXg7XG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzID0gc2V0dGluZ3M7XG4gICAgICAgICAgICB0aGlzLnBsYWNlaG9sZGVyVVJMID0gd2luZG93LnNieS5vcHRpb25zLnBsYWNlaG9sZGVyO1xuICAgICAgICAgICAgaWYgKHNldHRpbmdzLm5hcnJvd1BsYXllcikge1xuICAgICAgICAgICAgICAgIHRoaXMucGxhY2Vob2xkZXJVUkwgPSB3aW5kb3cuc2J5Lm9wdGlvbnMucGxhY2Vob2xkZXJOYXJyb3dcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucGxheWVyQVBJUmVhZHkgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuY29uc2VudEdpdmVuID0gc2V0dGluZ3MuY29uc2VudEdpdmVuO1xuICAgICAgICAgICAgdGhpcy5wbGF5ZXJzID0ge307XG4gICAgICAgICAgICB0aGlzLm1pbkltYWdlV2lkdGggPSAwO1xuICAgICAgICAgICAgdGhpcy5pbWFnZVJlc29sdXRpb24gPSAxNTA7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZWRJbWFnZXMgPSB7fTtcbiAgICAgICAgICAgIHRoaXMubmVlZHNSZXNpemluZyA9IFtdO1xuICAgICAgICAgICAgdGhpcy5vdXRPZlBhZ2VzID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmlzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMubW9zdFJlY2VudGx5TG9hZGVkUG9zdHMgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuZW1iZWRVUkwgPSAnLy93d3cueW91dHViZS1ub2Nvb2tpZS5jb20nO1xuICAgICAgICAgICAgaWYgKHNldHRpbmdzLmFsbG93Q29va2llcykge1xuICAgICAgICAgICAgICAgIHRoaXMuZW1iZWRVUkwgPSAnLy93d3cueW91dHViZS5jb20nXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgICAgIFNieUZlZWQucHJvdG90eXBlID0ge1xuICAgICAgICAgICAgaW5pdDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIGZlZWQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIGZlZWQuc2V0dGluZ3MuY29uc2VudEdpdmVuID0gZmVlZC5jaGVja0NvbnNlbnQoKTtcblxuICAgICAgICAgICAgICAgIGlmIChmZWVkLnNldHRpbmdzLmNvbnNlbnRHaXZlbikge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2J5Lm1heWJlQWRkWVRBUEkoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoZmVlZC5zZXR0aW5ncy5ub0NETiAmJiAhZmVlZC5zZXR0aW5ncy5jb25zZW50R2l2ZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCQodGhpcy5lbCkuZmluZCgnLnNiX3lvdXR1YmVfaGVhZGVyJykubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMuZWwpLmZpbmQoJy5zYl95b3V0dWJlX2hlYWRlcicpLmFkZENsYXNzKCdzYnlfbm9fY29uc2VudCcpXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJCh0aGlzLmVsKS5wcmV2KCcuc2JfeW91dHViZV9oZWFkZXInKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcy5lbCkucHJldignLnNiX3lvdXR1YmVfaGVhZGVyJykuYWRkQ2xhc3MoJ3NieV9ub19jb25zZW50JylcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoJCh0aGlzLmVsKS5maW5kKCcjc2J5X21vZF9lcnJvcicpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAkKHRoaXMuZWwpLnByZXBlbmQoJCh0aGlzLmVsKS5maW5kKCcjc2J5X21vZF9lcnJvcicpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2V0dGluZ3MuYWpheFBvc3RMb2FkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0TmV3UG9zdFNldCgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWZ0ZXJJbml0aWFsSW1hZ2VzTG9hZGVkKCk7XG4gICAgICAgICAgICAgICAgICAgIC8vT25seSBjaGVjayB0aGUgd2lkdGggb25jZSB0aGUgcmVzaXplIGV2ZW50IGlzIG92ZXJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIHNieV9kZWxheSA9IChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzYnlfdGltZXIgPSAwO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHNieV9jYWxsYmFjaywgc2J5X21zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQoc2J5X3RpbWVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNieV90aW1lciA9IHNldFRpbWVvdXQoc2J5X2NhbGxiYWNrLCBzYnlfbXMpO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pKCk7XG4gICAgICAgICAgICAgICAgalF1ZXJ5KHdpbmRvdykub24oJ3Jlc2l6ZScsZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBzYnlfZGVsYXkoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmVlZC5hZnRlclJlc2l6ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9LCAxKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbml0TGF5b3V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRHYWxsZXJ5TGF5b3V0KCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaW5pdEdhbGxlcnlMYXlvdXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciAkc2VsZiA9ICQodGhpcy5lbCksXG4gICAgICAgICAgICAgICAgICBmZWVkID0gdGhpcztcbiAgICAgICAgICAgICAgICBpZiAoJHNlbGYuaGFzQ2xhc3MoJ3NieV9sYXlvdXRfZ2FsbGVyeScpICYmICRzZWxmLmZpbmQoJy5zYnlfcGxheWVyX291dGVyX3dyYXAnKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXliZVJhaXNlU2luZ2xlSW1hZ2VSZXNvbHV0aW9uKCRzZWxmLmZpbmQoJy5zYnlfcGxheWVyX291dGVyX3dyYXAnKSwgMCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICRzZWxmLmZpbmQoJy5zYnlfcGxheWVyX291dGVyX3dyYXAgLnNieV92aWRlb190aHVtYm5haWwnKS5vZmYoKS5vbignY2xpY2snLGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCghZmVlZC5zZXR0aW5ncy5saWdodGJveEVuYWJsZWQgfHwgKGZlZWQuc2V0dGluZ3MubGlnaHRib3hFbmFibGVkICYmIGZlZWQuc2V0dGluZ3Mubm9DRE4pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAoZmVlZC5zZXR0aW5ncy5ub0NETiB8fCAhZmVlZC5zZXR0aW5ncy5jb25zZW50R2l2ZW4pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQodGhpcykuY2xvc2VzdCgnLnNieV9pdGVtJykubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiB0eXBlb2YgJCh0aGlzKS5jbG9zZXN0KCcuc2J5X2l0ZW0nKS5hdHRyKCdkYXRhLXZpZGVvLWlkJykgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuYXR0cignaHJlZicsJ2h0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9JyskKHRoaXMpLmNsb3Nlc3QoJy5zYnlfaXRlbScpLmF0dHIoJ2RhdGEtdmlkZW8taWQnKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBmZWVkLm9uVGh1bWJuYWlsQ2xpY2soJCh0aGlzKSwgdHJ1ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgJHNlbGYuZmluZCgnLnNieV9pdGVtJykuZmlyc3QoKS5hZGRDbGFzcygnc2J5X2N1cnJlbnQnKTtcblxuICAgICAgICAgICAgICAgICAgICAkc2VsZi5vbignbW91c2VlbnRlcicsZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWZlZWQuY2FuQ3JlYXRlUGxheWVyKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoISRzZWxmLmZpbmQoJy5zYnlfcGxheWVyX291dGVyX3dyYXAgaWZyYW1lJykubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNlbGYuYWRkQ2xhc3MoJ3NieV9wbGF5ZXJfYWRkZWQnKS5maW5kKCcuc2J5X3BsYXllcl9vdXRlcl93cmFwJykuYWRkQ2xhc3MoJ3NieV9wbGF5ZXJfbG9hZGluZycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLmZpbmQoJy5zYnlfcGxheWVyX291dGVyX3dyYXAgLnNieV92aWRlb190aHVtYm5haWwnKS5maW5kKCcuc2J5X2xvYWRlcicpLnNob3coKS5yZW1vdmVDbGFzcygnc2J5X2hpZGRlbicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlZWQuY3JlYXRlUGxheWVyKCdzYnlfcGxheWVyJytmZWVkLmluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGZlZWQucGxheWVyID09PSAndW5kZWZpbmVkJyAmJiBmZWVkLnBsYXllckVhZ2VyTG9hZGVkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWVkLmNyZWF0ZVBsYXllcignc2J5X3BsYXllcicrZmVlZC5pbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuc2J5U2VtaUVhZ2VyTG9hZGluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmVlZC5jcmVhdGVQbGF5ZXIoJ3NieV9wbGF5ZXInK2ZlZWQuaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGZlZWQuc2V0dGluZ3Mubm9DRE4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLmZpbmQoJy5zYnlfcGxheWVyX291dGVyX3dyYXAnKS5hcHBlbmQoJzxkaXYgY2xhc3M9XCJzYnlfcGxheV9idG5cIj5cXG4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2J5X3BsYXlfYnRuX2JnXCI+PC9zcGFuPlxcbicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICA8c3ZnIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGZvY3VzYWJsZT1cImZhbHNlXCIgZGF0YS1wcmVmaXg9XCJmYWJcIiBkYXRhLWljb249XCJ5b3V0dWJlXCIgcm9sZT1cImltZ1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDU3NiA1MTJcIiBjbGFzcz1cInN2Zy1pbmxpbmUtLWZhIGZhLXlvdXR1YmUgZmEtdy0xOFwiPjxwYXRoIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBkPVwiTTU0OS42NTUgMTI0LjA4M2MtNi4yODEtMjMuNjUtMjQuNzg3LTQyLjI3Ni00OC4yODQtNDguNTk3QzQ1OC43ODEgNjQgMjg4IDY0IDI4OCA2NFMxMTcuMjIgNjQgNzQuNjI5IDc1LjQ4NmMtMjMuNDk3IDYuMzIyLTQyLjAwMyAyNC45NDctNDguMjg0IDQ4LjU5Ny0xMS40MTIgNDIuODY3LTExLjQxMiAxMzIuMzA1LTExLjQxMiAxMzIuMzA1czAgODkuNDM4IDExLjQxMiAxMzIuMzA1YzYuMjgxIDIzLjY1IDI0Ljc4NyA0MS41IDQ4LjI4NCA0Ny44MjFDMTE3LjIyIDQ0OCAyODggNDQ4IDI4OCA0NDhzMTcwLjc4IDAgMjEzLjM3MS0xMS40ODZjMjMuNDk3LTYuMzIxIDQyLjAwMy0yNC4xNzEgNDguMjg0LTQ3LjgyMSAxMS40MTItNDIuODY3IDExLjQxMi0xMzIuMzA1IDExLjQxMi0xMzIuMzA1czAtODkuNDM4LTExLjQxMi0xMzIuMzA1em0tMzE3LjUxIDIxMy41MDhWMTc1LjE4NWwxNDIuNzM5IDgxLjIwNS0xNDIuNzM5IDgxLjIwMXpcIiBjbGFzcz1cIlwiPjwvcGF0aD48L3N2Zz4gICAgICAgICAgICAgICAgICAgIDwvZGl2PicpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY3JlYXRlUGxheWVyOiBmdW5jdGlvbihwbGF5ZXJJRCx2aWRlb0lELGF1dG9wbGF5LGFyZ3MpIHtcbiAgICAgICAgICAgICAgICB2YXIgJHNlbGYgPSAkKHRoaXMuZWwpLFxuICAgICAgICAgICAgICAgICAgZmVlZCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdmlkZW9JRCA9IHR5cGVvZiB2aWRlb0lEICE9PSAndW5kZWZpbmVkJyA/IHZpZGVvSUQgOiB0aGlzLmdldFZpZGVvSUQoJHNlbGYuZmluZCgnLnNieV9pdGVtJykuZmlyc3QoKSk7XG4gICAgICAgICAgICAgICAgYXV0b3BsYXkgPSB0eXBlb2YgYXV0b3BsYXkgIT09ICd1bmRlZmluZWQnID8gYXV0b3BsYXkgOiAwO1xuXG4gICAgICAgICAgICAgICAgLy8gZG8gbm90IGNyZWF0ZSBwbGF5ZXIgaW4gY3VzdG9taXplciBwcmV2aWV3XG4gICAgICAgICAgICAgICAgaWYgKCBzYnlPcHRpb25zLmlzQ3VzdG9taXplciAhPT0gdW5kZWZpbmVkICYmIHNieU9wdGlvbnMuaXNDdXN0b21pemVyICkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBhcmdzID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICBhcmdzID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaG9zdDogd2luZG93LmxvY2F0aW9uLnByb3RvY29sICsgZmVlZC5lbWJlZFVSTCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvSWQ6IHZpZGVvSUQsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGF5ZXJWYXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZXN0YnJhbmRpbmc6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9wbGF5OiBhdXRvcGxheVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGFyZ3MuZXZlbnRzID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICBhcmdzLmV2ZW50cyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICdvblJlYWR5JzogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLmZpbmQoJy5zYnlfcGxheWVyX291dGVyX3dyYXAnKS5yZW1vdmVDbGFzcygnc2J5X3BsYXllcl9sb2FkaW5nJykuZmluZCgnLnNieV92aWRlb190aHVtYm5haWwnKS5jc3MoJ3otaW5kZXgnLCAtMSkuZmluZCgnLnNieV9sb2FkZXInKS5oaWRlKCkuYWRkQ2xhc3MoJ3NieV9oaWRkZW4nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJCgnIycgKyBwbGF5ZXJJRCkubGVuZ3RoICYmICQoJyMnICsgcGxheWVySUQpLmNsb3Nlc3QoJy5zYnlfdmlkZW9fdGh1bWJuYWlsX3dyYXAnKS5maW5kKCcuc2J5X3ZpZGVvX3RodW1ibmFpbCcpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjJyArIHBsYXllcklEKS5jbG9zZXN0KCcuc2J5X3ZpZGVvX3RodW1ibmFpbF93cmFwJykuZmluZCgnLnNieV92aWRlb190aHVtYm5haWwnKS5mYWRlVG8oMCwgJ3Nsb3cnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmNzcygnei1pbmRleCcsIC0xKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuZmluZCgnLnNieV9sb2FkZXInKS5oaWRlKCkuYWRkQ2xhc3MoJ3NieV9oaWRkZW4nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuY2xvc2VzdCgnLnNieV9pdGVtJykucmVtb3ZlQ2xhc3MoJ3NieV9wbGF5ZXJfbG9hZGluZycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGV2dCA9IGpRdWVyeS5FdmVudCgnc2J5YWZ0ZXJwbGF5ZXJyZWFkeScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2dC5mZWVkID0gZmVlZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldnQucGxheWVyID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkod2luZG93KS50cmlnZ2VyKGV2dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgJ29uU3RhdGVDaGFuZ2UnOiBmdW5jdGlvbihkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNlbGYuZmluZCgnLnNieV9wbGF5ZXJfb3V0ZXJfd3JhcCcpLnJlbW92ZUNsYXNzKCdzYnlfcGxheWVyX2xvYWRpbmcnKS5maW5kKCcuc2J5X3ZpZGVvX3RodW1ibmFpbCcpLmNzcygnei1pbmRleCcsIC0xKS5maW5kKCcuc2J5X2xvYWRlcicpLmhpZGUoKS5hZGRDbGFzcygnc2J5X2hpZGRlbicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlZWQuYWZ0ZXJTdGF0ZUNoYW5nZShwbGF5ZXJJRCx2aWRlb0lELGRhdGEsJCgnIycgKyBwbGF5ZXJJRCkuY2xvc2VzdCgnLnNieV92aWRlb190aHVtYm5haWxfd3JhcCcpKTtcblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuZGF0YSAhPT0gMSkgcmV0dXJuO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZlZWRJRDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGZlZWQuZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvcnRjb2RlQXR0ciA9IGZlZWQuZWwuZ2V0QXR0cmlidXRlKCdkYXRhLXNob3J0Y29kZS1hdHRzJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHNob3J0Y29kZUF0dHIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlZWRJRCA9IEpTT04ucGFyc2Uoc2hvcnRjb2RlQXR0cik/LmZlZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnc2J5LXZpZGVvLWludGVyYWN0aW9uJywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvSUQ6IHZpZGVvSUQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWVkSUQ6IGZlZWRJRFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBmZWVkLnBsYXllcnMgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLmZpbmQoJy5zYnlfaXRlbScpLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaXRlbVZpZElEID0gZmVlZC5nZXRWaWRlb0lEKCQodGhpcykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQodGhpcykuZmluZCgnaWZyYW1lJykubGVuZ3RoICYmIChpdGVtVmlkSUQgIT09IHZpZGVvSUQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBmZWVkLnBsYXllcnNbaXRlbVZpZElEXSAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGZlZWQucGxheWVyc1tpdGVtVmlkSURdLnBhdXNlVmlkZW8gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVlZC5wbGF5ZXJzW2l0ZW1WaWRJRF0ucGF1c2VWaWRlbygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuc2J5RWFnZXJMb2FkaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBuZXdQbGF5ZXIgPSBZVC5nZXQocGxheWVySUQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBuZXdQbGF5ZXIgPSBuZXcgd2luZG93LllULlBsYXllcihwbGF5ZXJJRCwgYXJncyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5tYXliZUFkZENUQShwbGF5ZXJJRCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoJHNlbGYuaGFzQ2xhc3MoJ3NieV9sYXlvdXRfbGlzdCcpICYmIHR5cGVvZiB0aGlzLnBsYXllcnNbdmlkZW9JRF0gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGxheWVyc1t2aWRlb0lEXSA9IG5ld1BsYXllcjtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGlzLnBsYXllciA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wbGF5ZXIgPSBuZXdQbGF5ZXI7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIGV2dCA9IGpRdWVyeS5FdmVudCgnc2J5YWZ0ZXJwbGF5ZXJjcmVhdGVkJyk7XG4gICAgICAgICAgICAgICAgZXZ0LmZlZWQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIGpRdWVyeSh3aW5kb3cpLnRyaWdnZXIoZXZ0KTtcblxuICAgICAgICAgICAgICAgICRzZWxmLmZpbmQoJy5zYnlfcGxheWVyX291dGVyX3dyYXAgLnNieV9wbGF5X2J0bicpLnJlbW92ZSgpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ld1BsYXllcjtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhZnRlclN0YXRlQ2hhbmdlOiBmdW5jdGlvbihwbGF5ZXJJRCx2aWRlb0lELGRhdGEsJHBsYXllcikge1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFmdGVySW5pdGlhbEltYWdlc0xvYWRlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0TGF5b3V0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkTW9yZUJ1dHRvbkluaXQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGVFeHRyYUl0ZW1zRm9yV2lkdGgoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmJlZm9yZU5ld0ltYWdlc1JldmVhbGVkKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXZlYWxOZXdJbWFnZXMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFmdGVyTmV3SW1hZ2VzUmV2ZWFsZWQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFmdGVyRmVlZFNldCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2l6ZVBsYXllcigpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2l6ZUl0ZW1zKCk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2V0dGluZ3MuY29uc2VudEdpdmVuKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwbHlGdWxsRmVhdHVyZXMoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUZlYXR1cmVzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFmdGVyUmVzaXplOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEltYWdlSGVpZ2h0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRJbWFnZVJlc29sdXRpb24oKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1heWJlUmFpc2VJbWFnZVJlc29sdXRpb24oKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEltYWdlU2l6ZUNsYXNzKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWZ0ZXJMb2FkTW9yZUNsaWNrZWQ6IGZ1bmN0aW9uKCRidXR0b24pIHtcbiAgICAgICAgICAgICAgICAkYnV0dG9uLmZpbmQoJy5zYnlfbG9hZGVyJykucmVtb3ZlQ2xhc3MoJ3NieV9oaWRkZW4nKTtcbiAgICAgICAgICAgICAgICAkYnV0dG9uLmZpbmQoJy5zYnlfYnRuX3RleHQnKS5hZGRDbGFzcygnc2J5X2hpZGRlbicpO1xuICAgICAgICAgICAgICAgICRidXR0b24uY2xvc2VzdCgnLnNiX3lvdXR1YmUnKS5maW5kKCcuc2J5X251bV9kaWZmX2hpZGUnKS5hZGRDbGFzcygnc2J5X3RyYW5zaXRpb24nKS5yZW1vdmVDbGFzcygnc2J5X251bV9kaWZmX2hpZGUnKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhZnRlck5ld0ltYWdlc0xvYWRlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyICRzZWxmID0gJCh0aGlzLmVsKSxcbiAgICAgICAgICAgICAgICAgIGZlZWQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHRoaXMuYmVmb3JlTmV3SW1hZ2VzUmV2ZWFsZWQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJldmVhbE5ld0ltYWdlcygpO1xuICAgICAgICAgICAgICAgIHRoaXMuYWZ0ZXJOZXdJbWFnZXNSZXZlYWxlZCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2l6ZVBsYXllcigpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2l6ZUl0ZW1zKCk7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vSGlkZSB0aGUgbG9hZGVyIGluIHRoZSBsb2FkIG1vcmUgYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICRzZWxmLmZpbmQoJy5zYnlfbG9hZGVyJykuYWRkQ2xhc3MoJ3NieV9oaWRkZW4nKTtcbiAgICAgICAgICAgICAgICAgICAgJHNlbGYuZmluZCgnLnNieV9idG5fdGV4dCcpLnJlbW92ZUNsYXNzKCdzYnlfaGlkZGVuJyk7XG4gICAgICAgICAgICAgICAgICAgIGZlZWQubWF5YmVSYWlzZUltYWdlUmVzb2x1dGlvbigpO1xuICAgICAgICAgICAgICAgIH0sIDEpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNldHRpbmdzLmNvbnNlbnRHaXZlbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcGx5RnVsbEZlYXR1cmVzKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVGZWF0dXJlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBiZWZvcmVOZXdJbWFnZXNSZXZlYWxlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRJbWFnZUhlaWdodCgpO1xuICAgICAgICAgICAgICAgIHRoaXMubWF5YmVSYWlzZUltYWdlUmVzb2x1dGlvbih0cnVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEltYWdlU2l6ZUNsYXNzKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWZ0ZXJGZWVkU2V0OiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNpemVQbGF5ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciAkc2VsZiA9ICQodGhpcy5lbCksXG4gICAgICAgICAgICAgICAgICBmZWVkID0gdGhpcztcbiAgICAgICAgICAgICAgICBpZiAoJHNlbGYuaGFzQ2xhc3MoJ3NieV9sYXlvdXRfZ2FsbGVyeScpKSB7XG4gICAgICAgICAgICAgICAgICAgICRwbGF5ZXJUaHVtYm5haWwgPSAkc2VsZi5maW5kKCcuc2J5X3BsYXllcl9pdGVtJykuZmluZCgnLnNieV9wbGF5ZXJfdmlkZW9fdGh1bWJuYWlsJyk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBwbGF5ZXJXaWR0aCA9ICRwbGF5ZXJUaHVtYm5haWwuaW5uZXJXaWR0aCgpLFxuICAgICAgICAgICAgICAgICAgICAgIG5ld1BsYXllckhlaWdodCA9IE1hdGguZmxvb3IocGxheWVyV2lkdGggKiA5IC8gMTYpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmVlZC5zZXR0aW5ncy5uYXJyb3dQbGF5ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1BsYXllckhlaWdodCA9IE1hdGguZmxvb3IocGxheWVyV2lkdGggKiAzIC8gNCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgJHBsYXllclRodW1ibmFpbC5jc3MoJ2hlaWdodCcsbmV3UGxheWVySGVpZ2h0KydweCcpLmNzcygnb3ZlcmZsb3cnLCdoaWRkZW4nKTtcblxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJHNlbGYuaGFzQ2xhc3MoJ3NieV9sYXlvdXRfbGlzdCcpKSB7XG4gICAgICAgICAgICAgICAgICAgICRzZWxmLmZpbmQoJy5zYnlfaXRlbScpLmVhY2goZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICRwbGF5ZXJUaHVtYm5haWwgPSAkKHRoaXMpLmZpbmQoJy5zYnlfaXRlbV92aWRlb190aHVtYm5haWwnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwbGF5ZXJXaWR0aCA9ICRwbGF5ZXJUaHVtYm5haWwuaW5uZXJXaWR0aCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdQbGF5ZXJIZWlnaHQgPSBNYXRoLmZsb29yKHBsYXllcldpZHRoICogOSAvIDE2KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmZWVkLnNldHRpbmdzLm5hcnJvd1BsYXllcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1BsYXllckhlaWdodCA9IE1hdGguZmxvb3IocGxheWVyV2lkdGggKiAzIC8gNCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAkcGxheWVyVGh1bWJuYWlsLmNzcygnaGVpZ2h0JyxuZXdQbGF5ZXJIZWlnaHQrJ3B4JykuY3NzKCdvdmVyZmxvdycsJ2hpZGRlbicpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2l6ZUl0ZW1zOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgJHNlbGYgPSAkKHRoaXMuZWwpLFxuICAgICAgICAgICAgICAgICAgZmVlZCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgaWYgKCEkc2VsZi5oYXNDbGFzcygnc2J5X2xheW91dF9saXN0JykpIHtcbiAgICAgICAgICAgICAgICAgICAgJHNlbGYuZmluZCgnLnNieV9pdGVtJykuZmluZCgnLnNieV9pdGVtX3ZpZGVvX3RodW1ibmFpbCcpLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5oYXNDbGFzcygnc2J5X2ltZ0xpcXVpZF9yZWFkeScpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRodW1iV2lkdGggPSAkKHRoaXMpLmlubmVyV2lkdGgoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1RodW1iSGVpZ2h0ID0gTWF0aC5mbG9vcih0aHVtYldpZHRoICogOSAvIDE2KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmNzcygnaGVpZ2h0JyxuZXdUaHVtYkhlaWdodCsncHgnKS5jc3MoJ292ZXJmbG93JywnaGlkZGVuJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJldmVhbE5ld0ltYWdlczogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyICRzZWxmID0gJCh0aGlzLmVsKSxcbiAgICAgICAgICAgICAgICAgIGZlZWQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHRoaXMuYXBwbHlJbWFnZUxpcXVpZCgpO1xuXG4gICAgICAgICAgICAgICAgLy8gQ2FsbCBDdXN0b20gSlMgaWYgaXQgZXhpc3RzXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBzYnlDdXN0b21KUyA9PSAnZnVuY3Rpb24nKSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7IHNieUN1c3RvbUpTKCk7IH0sIDEwMCk7XG5cbiAgICAgICAgICAgICAgICAkc2VsZi5maW5kKCcuc2J5LXNjcmVlbnJlYWRlcicpLmZpbmQoJ2ltZycpLnJlbW92ZSgpO1xuXG4gICAgICAgICAgICAgICAgJHNlbGYuZmluZCgnLnNieV9pdGVtLnNieV9uZXcnKS5lYWNoKGZ1bmN0aW9uIChpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgJHNlbGYgPSBqUXVlcnkodGhpcyk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy9QaG90byBsaW5rc1xuICAgICAgICAgICAgICAgICAgICAvL0lmIGxpZ2h0Ym94IGlzIGRpc2FibGVkXG4gICAgICAgICAgICAgICAgICAgIHZpZGVvSUQgPSAkc2VsZi5hdHRyKCdkYXRhLXZpZGVvLWlkJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5zYnlFYWdlckxvYWRpbmcgJiYgZmVlZC5jYW5DcmVhdGVQbGF5ZXIoKSAmJiAkKCcjc2J5X3BsYXllcl8nK3ZpZGVvSUQpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGxheWVyID0gbmV3IFlULlBsYXllcignc2J5X3BsYXllcl8nK3ZpZGVvSUQsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcxMDAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWRlb0lkOiB2aWRlb0lELFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXllclZhcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZXN0YnJhbmRpbmc6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b3BsYXk6IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50czoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb25TdGF0ZUNoYW5nZSc6IGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2aWRlb0lEID0gZGF0YS50YXJnZXQuZ2V0VmlkZW9EYXRhKClbJ3ZpZGVvX2lkJ107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5kYXRhICE9PSAxKSByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KHZpZGVvSW50ZXJhY3Rpb25FdmVudCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvSUQ6IHZpZGVvSUQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNlbGYuZmluZCgnLnNieV9pdGVtJykuZWFjaChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaXRlbVZpZElEID0galF1ZXJ5KHRoaXMpLmF0dHIoJ2RhdGEtdmlkZW8taWQnKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqUXVlcnkodGhpcykuZmluZCgnaWZyYW1lJykubGVuZ3RoICYmIGpRdWVyeShkYXRhLnRhcmdldC5hKS5hdHRyKCdpZCcpICE9PSBqUXVlcnkodGhpcykuZmluZCgnaWZyYW1lJykuYXR0cignaWQnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZVC5nZXQoJ3NieV9wbGF5ZXJfJytpdGVtVmlkSUQpLnBhdXNlVmlkZW8oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgJHNlbGYuZmluZCgnLnNieV92aWRlb190aHVtYm5haWwnKS5vbignbW91c2VlbnRlcicsZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmZWVkLm9uVGh1bWJuYWlsRW50ZXIoJCh0aGlzKSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgJHNlbGYuZmluZCgnLnNieV9wbGF5ZXJfd3JhcCcpLm9uKCdtb3VzZWxlYXZlJyxmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZlZWQub25UaHVtYm5haWxMZWF2ZSgkKHRoaXMpLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAvL2luaXQgY2xpY2tcbiAgICAgICAgICAgICAgICAgICAgJHNlbGYuZmluZCgnLnNieV92aWRlb190aHVtYm5haWwnKS5vbignY2xpY2snLGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKCFmZWVkLnNldHRpbmdzLmxpZ2h0Ym94RW5hYmxlZCB8fCAoZmVlZC5zZXR0aW5ncy5saWdodGJveEVuYWJsZWQgJiYgZmVlZC5zZXR0aW5ncy5ub0NETikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICYmIChmZWVkLnNldHRpbmdzLm5vQ0ROIHx8ICFmZWVkLnNldHRpbmdzLmNvbnNlbnRHaXZlbikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5jbG9zZXN0KCcuc2J5X2l0ZW0nKS5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHR5cGVvZiAkKHRoaXMpLmNsb3Nlc3QoJy5zYnlfaXRlbScpLmF0dHIoJ2RhdGEtdmlkZW8taWQnKSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hdHRyKCdocmVmJywnaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj0nKyQodGhpcykuY2xvc2VzdCgnLnNieV9pdGVtJykuYXR0cignZGF0YS12aWRlby1pZCcpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZlZWQub25UaHVtYm5haWxDbGljaygkKHRoaXMpLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIGxpZ2h0Ym94XG4gICAgICAgICAgICAgICAgICAgIGlmIChmZWVkLnNldHRpbmdzLmxpZ2h0Ym94RW5hYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgJHNlbGYuZmluZCgnLnNieV92aWRlb190aHVtYm5haWwnKS5hdHRyKCdkYXRhLXNieS1saWdodGJveCcsZmVlZC5pbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHNieU9wdGlvbnMgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBzYnlPcHRpb25zLmxpZ2h0Ym94UGxhY2Vob2xkZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZlZWQuc2V0dGluZ3MubmFycm93UGxheWVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLmZpbmQoJy5zYnlfdmlkZW9fdGh1bWJuYWlsJykuYXR0cignaHJlZicsc2J5T3B0aW9ucy5saWdodGJveFBsYWNlaG9sZGVyTmFycm93KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2VsZi5maW5kKCcuc2J5X3ZpZGVvX3RodW1ibmFpbCcpLmF0dHIoJ2hyZWYnLHNieU9wdGlvbnMubGlnaHRib3hQbGFjZWhvbGRlcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGZlZWQuYWZ0ZXJJdGVtUmV2ZWFsZWQoJHNlbGYpO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIG5vIGluZm9cbiAgICAgICAgICAgICAgICAgICAgaWYgKCRzZWxmLmZpbmQoJy5zYnlfaW5mb19pdGVtJykudGV4dCgpLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLmZpbmQoJy5zYnlfaW5mb19pdGVtJykuYWRkQ2xhc3MoJ3NieV9ub19zcGFjZScpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7IC8vRW5kIC5zYnlfaXRlbSBlYWNoXG5cbiAgICAgICAgICAgICAgICAkc2VsZi5maW5kKCcuc2J5X3BsYXllcl9pdGVtJykuZWFjaChmdW5jdGlvbiAoaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyICRzZWxmID0galF1ZXJ5KHRoaXMpO1xuXG4gICAgICAgICAgICAgICAgICAgIGZlZWQuYWZ0ZXJJdGVtUmV2ZWFsZWQoJHNlbGYpO1xuICAgICAgICAgICAgICAgIH0pOyAvL0VuZCAuc2J5X2l0ZW0gZWFjaFxuXG4gICAgICAgICAgICAgICAgLy9SZW1vdmUgdGhlIG5ldyBjbGFzcyBhZnRlciA1MDBtcywgb25jZSB0aGUgc29ydGluZyBpcyBkb25lXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICRzZWxmLmZpbmQoJy5zYnlfaXRlbS5zYnlfbmV3JykucmVtb3ZlQ2xhc3MoJ3NieV9uZXcnKTtcbiAgICAgICAgICAgICAgICAgICAgLy9Mb29wIHRocm91Z2ggaXRlbXMgYW5kIHJlbW92ZSBjbGFzcyB0byByZXZlYWwgdGhlbVxuICAgICAgICAgICAgICAgICAgICB2YXIgdGltZSA9IDEsXG4gICAgICAgICAgICAgICAgICAgICAgbnVtID0gJHNlbGYuZmluZCgnLnNieV90cmFuc2l0aW9uJykubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICAkc2VsZi5maW5kKCcuc2J5X3RyYW5zaXRpb24nKS5lYWNoKGZ1bmN0aW9uKGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgJHNieV9pdGVtX3RyYW5zaXRpb25fZWwgPSBqUXVlcnkodGhpcyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoIGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNieV9pdGVtX3RyYW5zaXRpb25fZWwucmVtb3ZlQ2xhc3MoJ3NieV90cmFuc2l0aW9uJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LCB0aW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vdGltZSArPSAxMDtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSwgMSk7XG5cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhZnRlckl0ZW1SZXZlYWxlZDogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhZnRlck5ld0ltYWdlc1JldmVhbGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxpc3RlbkZvclZpc2liaWxpdHlDaGFuZ2UoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbmROZWVkc1Jlc2l6aW5nVG9TZXJ2ZXIoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbmRDaGVja1dQUG9zdHNUb1NlcnZlcigpO1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5zZXR0aW5ncy5pbWFnZUxvYWRFbmFibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICQoJy5zYnlfbm9fcmVzcmFpc2UnKS5yZW1vdmVDbGFzcygnc2J5X25vX3Jlc3JhaXNlJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIGV2dCA9ICQuRXZlbnQoJ3NieWFmdGVyaW1hZ2VzbG9hZGVkJyk7XG4gICAgICAgICAgICAgICAgZXZ0LmVsID0gJCh0aGlzLmVsKTtcbiAgICAgICAgICAgICAgICAkKHdpbmRvdykudHJpZ2dlcihldnQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldFJlc2l6ZWRJbWFnZXM6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpZiAoJCh0aGlzLmVsKS5maW5kKCcuc2J5X3Jlc2l6ZWRfaW1hZ2VfZGF0YScpLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgJiYgdHlwZW9mICQodGhpcy5lbCkuZmluZCgnLnNieV9yZXNpemVkX2ltYWdlX2RhdGEnKS5hdHRyKCdkYXRhLXJlc2l6ZWQnKSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgICAgICAgICAgICYmICQodGhpcy5lbCkuZmluZCgnLnNieV9yZXNpemVkX2ltYWdlX2RhdGEnKS5hdHRyKCdkYXRhLXJlc2l6ZWQnKS5pbmRleE9mKCd7XCInKSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc2l6ZWRJbWFnZXMgPSBKU09OLnBhcnNlKCQodGhpcy5lbCkuZmluZCgnLnNieV9yZXNpemVkX2ltYWdlX2RhdGEnKS5hdHRyKCdkYXRhLXJlc2l6ZWQnKSk7XG4gICAgICAgICAgICAgICAgICAgICQodGhpcy5lbCkuZmluZCgnLnNieV9yZXNpemVkX2ltYWdlX2RhdGEnKS5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2VuZE5lZWRzUmVzaXppbmdUb1NlcnZlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIGZlZWQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIGlmIChmZWVkLm5lZWRzUmVzaXppbmcubGVuZ3RoID4gMCAmJiBmZWVkLnNldHRpbmdzLnJlc2l6aW5nRW5hYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgaXRlbU9mZnNldCA9ICQodGhpcy5lbCkuZmluZCgnLnNieV9pdGVtJykubGVuZ3RoO1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBzdWJtaXREYXRhID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAnc2J5X3Jlc2l6ZWRfaW1hZ2VzX3N1Ym1pdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBuZWVkc19yZXNpemluZzogZmVlZC5uZWVkc1Jlc2l6aW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiBpdGVtT2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmVlZF9pZDogZmVlZC5zZXR0aW5ncy5mZWVkSUQsXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbjogZmVlZC5sb2NhdGlvbkd1ZXNzKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3N0X2lkOiBmZWVkLnNldHRpbmdzLnBvc3RJRCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHM6IGZlZWQuc2V0dGluZ3Muc2hvcnRDb2RlQXR0cyxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG9uU3VjY2VzcyA9IGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnRyaW0oKS5pbmRleE9mKCd7JykgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSBKU09OLnBhcnNlKGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmZWVkLnNldHRpbmdzLmRlYnVnRW5hYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhyZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBzYnlBamF4KHN1Ym1pdERhdGEsb25TdWNjZXNzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2VuZENoZWNrV1BQb3N0c1RvU2VydmVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgZmVlZCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgaWYgKGZlZWQuc2V0dGluZ3MuY2hlY2tXUFBvc3RzIHx8IGZlZWQuc2V0dGluZ3Muc2luZ2xlQ2hlY2tQb3N0cykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgZmVlZElEID0gdHlwZW9mIGZlZWQuc2V0dGluZ3MuZmVlZElEICE9PSAndW5kZWZpbmVkJyA/IGZlZWQuc2V0dGluZ3MuZmVlZElEIDogJ3NieV9zaW5nbGUnLFxuICAgICAgICAgICAgICAgICAgICAgIHBvc3RzID0gZmVlZC5tb3N0UmVjZW50bHlMb2FkZWRQb3N0cztcbiAgICAgICAgICAgICAgICAgICAgZmVlZC5tb3N0UmVjZW50bHlMb2FkZWRQb3N0cyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICB2YXIgc3VibWl0RGF0YSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ3NieV9jaGVja193cF9zdWJtaXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmVlZF9pZDogZmVlZElELFxuICAgICAgICAgICAgICAgICAgICAgICAgYXR0czogZmVlZC5zZXR0aW5ncy5zaG9ydENvZGVBdHRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb246IGZlZWQubG9jYXRpb25HdWVzcygpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zdF9pZDogZmVlZC5zZXR0aW5ncy5wb3N0SUQsXG4gICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6ICEgJCh0aGlzLmVsKS5oYXNDbGFzcygnc2J5X2xheW91dF9jYXJvdXNlbCcpID8gJCh0aGlzLmVsKS5maW5kKCcuc2J5X2l0ZW0nKS5sZW5ndGggOiBNYXRoLmZsb29yKCgkKHRoaXMuZWwpLmZpbmQoJy5zYnlfaXRlbScpLmxlbmd0aCAvIDIpIC0xKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc3RzOiBwb3N0c1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB2YXIgb25TdWNjZXNzID0gZnVuY3Rpb24oZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEudHJpbSgpLmluZGV4T2YoJ3snKSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IEpTT04ucGFyc2UoZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZlZWQuc2V0dGluZ3MuZGVidWdFbmFibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVlZC5hZnRlclNlbmRDaGVja1dQUG9zdHNUb1NlcnZlcihyZXNwb25zZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgc2J5QWpheChzdWJtaXREYXRhLG9uU3VjY2Vzcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFmdGVyU2VuZENoZWNrV1BQb3N0c1RvU2VydmVyOiBmdW5jdGlvbiAocmVzcG9uc2UpIHtcblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxvYWRNb3JlQnV0dG9uSW5pdDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciAkc2VsZiA9ICQodGhpcy5lbCksXG4gICAgICAgICAgICAgICAgICBmZWVkID0gdGhpcztcbiAgICAgICAgICAgICAgICAkc2VsZi5maW5kKCcuc2J5X2Zvb3RlciAuc2J5X2xvYWRfYnRuJykub2ZmKCkub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBmZWVkLmFmdGVyTG9hZE1vcmVDbGlja2VkKGpRdWVyeSh0aGlzKSk7XG4gICAgICAgICAgICAgICAgICAgIGZlZWQuZ2V0TmV3UG9zdFNldCgpO1xuICAgICAgICAgICAgICAgIH0pOyAvL0VuZCBjbGljayBldmVudFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldE5ld1Bvc3RTZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgJHNlbGYgPSAkKHRoaXMuZWwpLFxuICAgICAgICAgICAgICAgICAgZmVlZCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdmFyIGl0ZW1PZmZzZXQgPSAkc2VsZi5maW5kKCcuc2J5X2l0ZW0nKS5sZW5ndGgsXG4gICAgICAgICAgICAgICAgICBzdWJtaXREYXRhID0ge1xuICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ3NieV9sb2FkX21vcmVfY2xpY2tlZCcsXG4gICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiBpdGVtT2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgICAgIGZlZWRfaWQ6IGZlZWQuc2V0dGluZ3MuZmVlZElELFxuICAgICAgICAgICAgICAgICAgICAgIGF0dHM6IGZlZWQuc2V0dGluZ3Muc2hvcnRDb2RlQXR0cyxcbiAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbjogZmVlZC5sb2NhdGlvbkd1ZXNzKCksXG4gICAgICAgICAgICAgICAgICAgICAgcG9zdF9pZDogZmVlZC5zZXR0aW5ncy5wb3N0SUQsXG4gICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9yZXNvbHV0aW9uOiBmZWVkLmltYWdlUmVzb2x1dGlvblxuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB2YXIgb25TdWNjZXNzID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEudHJpbSgpLmluZGV4T2YoJ3snKSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gSlNPTi5wYXJzZShkYXRhKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tXUFBvc3RzID0gdHlwZW9mIHJlc3BvbnNlLmZlZWRTdGF0dXMuY2hlY2tXUFBvc3RzICE9PSAndW5kZWZpbmVkJyA/IHJlc3BvbnNlLmZlZWRTdGF0dXMuY2hlY2tXUFBvc3RzIDogZmFsc2U7O1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZlZWQuc2V0dGluZ3MuZGVidWdFbmFibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2cocmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoZWNrV1BQb3N0cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlZWQuc2V0dGluZ3MuY2hlY2tXUFBvc3RzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVlZC5zZXR0aW5ncy5jaGVja1dQUG9zdHMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGZlZWQuYXBwZW5kTmV3UG9zdHMocmVzcG9uc2UuaHRtbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBmZWVkLmFkZFJlc2l6ZWRJbWFnZXMocmVzcG9uc2UucmVzaXplZEltYWdlcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmVlZC5zZXR0aW5ncy5hamF4UG9zdExvYWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWVkLnNldHRpbmdzLmFqYXhQb3N0TG9hZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlZWQuYWZ0ZXJJbml0aWFsSW1hZ2VzTG9hZGVkKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlZWQuYWZ0ZXJOZXdJbWFnZXNMb2FkZWQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXNwb25zZS5mZWVkU3RhdHVzLnNob3VsZFBhZ2luYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVlZC5vdXRPZlBhZ2VzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2VsZi5maW5kKCcuc2J5X2xvYWRfYnRuJykuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWVkLm91dE9mUGFnZXMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgJCgnLnNieV9ub19qcycpLnJlbW92ZUNsYXNzKCdzYnlfbm9fanMnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5Db21tZW50cygpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHNieUFqYXgoc3VibWl0RGF0YSwgb25TdWNjZXNzKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhcHBlbmROZXdQb3N0czogZnVuY3Rpb24gKG5ld1Bvc3RzSHRtbCkge1xuICAgICAgICAgICAgICAgIHZhciAkc2VsZiA9ICQodGhpcy5lbCksXG4gICAgICAgICAgICAgICAgICBmZWVkID0gdGhpcztcbiAgICAgICAgICAgICAgICBpZiAoJHNlbGYuZmluZCgnLnNieV9pdGVtc193cmFwIC5zYnlfaXRlbScpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAkc2VsZi5maW5kKCcuc2J5X2l0ZW1zX3dyYXAgLnNieV9pdGVtJykubGFzdCgpLmFmdGVyKG5ld1Bvc3RzSHRtbCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgJHNlbGYuZmluZCgnLnNieV9pdGVtc193cmFwJykuYXBwZW5kKG5ld1Bvc3RzSHRtbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFkZFJlc2l6ZWRJbWFnZXM6IGZ1bmN0aW9uIChyZXNpemVkSW1hZ2VzVG9BZGQpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpbWFnZUlEIGluIHJlc2l6ZWRJbWFnZXNUb0FkZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc2l6ZWRJbWFnZXNbaW1hZ2VJRF0gPSByZXNpemVkSW1hZ2VzVG9BZGRbaW1hZ2VJRF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldEltYWdlSGVpZ2h0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBtYXliZVJhaXNlU2luZ2xlSW1hZ2VSZXNvbHV0aW9uOiBmdW5jdGlvbiAoJGl0ZW0sIGluZGV4LCBmb3JjZUNoYW5nZSkge1xuICAgICAgICAgICAgICAgIHZhciBmZWVkID0gdGhpcyxcbiAgICAgICAgICAgICAgICAgIGltZ1NyY1NldCA9IGZlZWQuZ2V0SW1hZ2VVcmxzKCRpdGVtKSxcbiAgICAgICAgICAgICAgICAgIGN1cnJlbnRVcmwgPSAkaXRlbS5maW5kKCcuc2J5X3ZpZGVvX3RodW1ibmFpbCA+IGltZycpLmF0dHIoJ3NyYycpLFxuICAgICAgICAgICAgICAgICAgY3VycmVudFJlcyA9IDE1MCxcbiAgICAgICAgICAgICAgICAgIGFzcGVjdFJhdGlvID0gMSwgLy8gYWxsIHRodW1ibmFpbHMgYXJlIG9yaWVudGVkIHRoZSBzYW1lIHNvIHRoZSBiZXN0IGNhbGN1bGF0aW9uIHVzZXMgMVxuICAgICAgICAgICAgICAgICAgZm9yY2VDaGFuZ2UgPSB0eXBlb2YgZm9yY2VDaGFuZ2UgIT09ICd1bmRlZmluZWQnID8gZm9yY2VDaGFuZ2UgOiBmYWxzZTtcblxuICAgICAgICAgICAgICAgIGlmICgkaXRlbS5oYXNDbGFzcygnc2J5X25vX3Jlc3JhaXNlJykgICB8fFxuICAgICAgICAgICAgICAgICAgKCFmZWVkLnNldHRpbmdzLmNvbnNlbnRHaXZlbiAmJiBmZWVkLnNldHRpbmdzLm5vQ0ROKSApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICQuZWFjaChpbWdTcmNTZXQsIGZ1bmN0aW9uIChpbmRleCwgdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlID09PSBjdXJyZW50VXJsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50UmVzID0gcGFyc2VJbnQoaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGltYWdlIGhhcyBhbHJlYWR5IGJlZW4gY2hhbmdlZCB0byBhbiBleGlzdGluZyByZWFsIHNvdXJjZSwgZG9uJ3QgZm9yY2UgdGhlIGNoYW5nZVxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yY2VDaGFuZ2UgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIC8vSW1hZ2UgcmVzXG4gICAgICAgICAgICAgICAgdmFyIG5ld1JlcyA9IDY0MDtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGZlZWQuc2V0dGluZ3MuaW1nUmVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RodW1iJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1JlcyA9IDEyMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdtZWRpdW0nOlxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3UmVzID0gMzIwO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xhcmdlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1JlcyA9IDQ4MDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdmdWxsJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1JlcyA9IDY0MDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1pbkltYWdlV2lkdGggPSBNYXRoLm1heChmZWVkLnNldHRpbmdzLmF1dG9NaW5SZXMsJGl0ZW0uZmluZCgnLnNieV92aWRlb190aHVtYm5haWwnKS5pbm5lcldpZHRoKCkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzSW1hZ2VSZXBsYWNlID0gZmVlZC5nZXRCZXN0UmVzb2x1dGlvbkZvckF1dG8obWluSW1hZ2VXaWR0aCwgYXNwZWN0UmF0aW8sICQodGhpcy5lbCkuZmluZCgnc2J5X2l0ZW0nKS5maXJzdCgpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpc0ltYWdlUmVwbGFjZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDgwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdSZXMgPSA0ODA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzIwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdSZXMgPSAzMjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTIwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdSZXMgPSAxMjA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKG5ld1JlcyA+IGN1cnJlbnRSZXMgfHwgY3VycmVudFVybCA9PT0gZmVlZC5wbGFjZWhvbGRlclVSTCB8fCBmb3JjZUNoYW5nZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmVlZC5zZXR0aW5ncy5kZWJ1Z0VuYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZWFzb24gPSBjdXJyZW50VXJsID09PSBmZWVkLnBsYWNlaG9sZGVyVVJMID8gJ3dhcyBwbGFjZWhvbGRlcicgOiAndG9vIHNtYWxsJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdyYWlzIHJlcyBmb3IgJyArIGN1cnJlbnRVcmwsIHJlYXNvbik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdmFyIG5ld1VybCA9IGltZ1NyY1NldFtuZXdSZXNdO1xuICAgICAgICAgICAgICAgICAgICAkaXRlbS5maW5kKCcuc2J5X3ZpZGVvX3RodW1ibmFpbCA+IGltZycpLmF0dHIoJ3NyYycsIG5ld1VybCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICgkaXRlbS5maW5kKCcuc2J5X3ZpZGVvX3RodW1ibmFpbCcpLmhhc0NsYXNzKCdzYnlfaW1nTGlxdWlkX3JlYWR5JykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICRpdGVtLmZpbmQoJy5zYnlfdmlkZW9fdGh1bWJuYWlsJykuY3NzKCdiYWNrZ3JvdW5kLWltYWdlJywgJ3VybChcIicgKyBuZXdVcmwgKyAnXCIpJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAkaXRlbS5maW5kKCdpbWcnKS5vbignZXJyb3InLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghJCh0aGlzKS5oYXNDbGFzcygnc2J5X2ltZ19lcnJvcicpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmFkZENsYXNzKCdzYnlfaW1nX2Vycm9yJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgc291cmNlRnJvbUFQSSA9ICgkKHRoaXMpLmF0dHIoJ3NyYycpLmluZGV4T2YoJ2kueXRpbWcuY29tJykgPiAtMSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc291cmNlRnJvbUFQSSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgJCh0aGlzKS5jbG9zZXN0KCcuc2J5X3ZpZGVvX3RodW1ibmFpbCcpLmF0dHIoJ2RhdGEtZnVsbC1yZXMnKSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hdHRyKCdzcmMnLCAkKHRoaXMpLmNsb3Nlc3QoJy5zYnlfdmlkZW9fdGh1bWJuYWlsJykuYXR0cignZGF0YS1mdWxsLXJlcycpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5jbG9zZXN0KCcuc2J5X3ZpZGVvX3RodW1ibmFpbCcpLmNzcygnYmFja2dyb3VuZC1pbWFnZScsICd1cmwoJyArICQodGhpcykuY2xvc2VzdCgnLnNieV92aWRlb190aHVtYm5haWwnKS5hdHRyKCdkYXRhLWZ1bGwtcmVzJykgKyAnKScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJCh0aGlzKS5jbG9zZXN0KCcuc2J5X3ZpZGVvX3RodW1ibmFpbCcpLmF0dHIoJ2hyZWYnKSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hdHRyKCdzcmMnLCAkKHRoaXMpLmNsb3Nlc3QoJy5zYnlfdmlkZW9fdGh1bWJuYWlsJykuYXR0cignaHJlZicpICsgJ21lZGlhP3NpemU9bCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmNsb3Nlc3QoJy5zYnlfdmlkZW9fdGh1bWJuYWlsJykuY3NzKCdiYWNrZ3JvdW5kLWltYWdlJywgJ3VybCgnICsgJCh0aGlzKS5jbG9zZXN0KCcuc2J5X3ZpZGVvX3RodW1ibmFpbCcpLmF0dHIoJ2hyZWYnKSArICdtZWRpYT9zaXplPWwpJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWVkLnNldHRpbmdzLmZhdm9yTG9jYWwgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzcmNTZXQgPSBmZWVkLmdldEltYWdlVXJscygkKHRoaXMpLmNsb3Nlc3QoJy5zYnlfaXRlbScpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHNyY1NldFs2NDBdICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmF0dHIoJ3NyYycsIHNyY1NldFs2NDBdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5jbG9zZXN0KCcuc2J5X3ZpZGVvX3RodW1ibmFpbCcpLmNzcygnYmFja2dyb3VuZC1pbWFnZScsICd1cmwoJyArIHNyY1NldFs2NDBdICsgJyknKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlZWQuYWZ0ZXJSZXNpemUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIDEpXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygndW5maXhlZCBlcnJvciAnICsgJCh0aGlzKS5hdHRyKCdzcmMnKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBtYXliZVJhaXNlSW1hZ2VSZXNvbHV0aW9uOiBmdW5jdGlvbiAoanVzdE5ldykge1xuICAgICAgICAgICAgICAgIHZhciBmZWVkID0gdGhpcyxcbiAgICAgICAgICAgICAgICAgIGl0ZW1zU2VsZWN0b3IgPSB0eXBlb2YganVzdE5ldyAhPT0gJ3VuZGVmaW5lZCcgJiYganVzdE5ldyA9PT0gdHJ1ZSA/ICcuc2J5X2l0ZW0uc2J5X25ldycgOiAnLnNieV9pdGVtJyxcbiAgICAgICAgICAgICAgICAgIGZvcmNlQ2hhbmdlID0gIWZlZWQuaXNJbml0aWFsaXplZCA/IHRydWUgOiBmYWxzZTtcbiAgICAgICAgICAgICAgICAkKGZlZWQuZWwpLmZpbmQoaXRlbXNTZWxlY3RvcikuZWFjaChmdW5jdGlvbiAoaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEkKHRoaXMpLmhhc0NsYXNzKCdzYnlfbnVtX2RpZmZfaGlkZScpXG4gICAgICAgICAgICAgICAgICAgICAgJiYgJCh0aGlzKS5maW5kKCcuc2J5X3ZpZGVvX3RodW1ibmFpbCcpLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICYmIHR5cGVvZiAkKHRoaXMpLmZpbmQoJy5zYnlfdmlkZW9fdGh1bWJuYWlsJykuYXR0cignZGF0YS1pbWctc3JjLXNldCcpICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmVlZC5tYXliZVJhaXNlU2luZ2xlSW1hZ2VSZXNvbHV0aW9uKCQodGhpcyksaW5kZXgsZm9yY2VDaGFuZ2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7IC8vRW5kIC5zYnlfaXRlbSBlYWNoXG4gICAgICAgICAgICAgICAgZmVlZC5pc0luaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRCZXN0UmVzb2x1dGlvbkZvckF1dG86IGZ1bmN0aW9uKGNvbFdpZHRoLCBhc3BlY3RSYXRpbywgJGl0ZW0pIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNOYU4oYXNwZWN0UmF0aW8pIHx8IGFzcGVjdFJhdGlvIDwgMSkge1xuICAgICAgICAgICAgICAgICAgICBhc3BlY3RSYXRpbyA9IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBiZXN0V2lkdGggPSBjb2xXaWR0aCAqIGFzcGVjdFJhdGlvLFxuICAgICAgICAgICAgICAgICAgYmVzdFdpZHRoUm91bmRlZCA9IE1hdGguY2VpbChiZXN0V2lkdGggLyAxMCkgKiAxMCxcbiAgICAgICAgICAgICAgICAgIGN1c3RvbVNpemVzID0gWzEyMCwgMzIwLCA0ODAsIDY0MF07XG5cbiAgICAgICAgICAgICAgICBpZiAoJGl0ZW0uaGFzQ2xhc3MoJ3NieV9oaWdobGlnaHRlZCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIGJlc3RXaWR0aFJvdW5kZWQgPSBiZXN0V2lkdGhSb3VuZGVkICoyO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChjdXN0b21TaXplcy5pbmRleE9mKHBhcnNlSW50KGJlc3RXaWR0aFJvdW5kZWQpKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRvbmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgJC5lYWNoKGN1c3RvbVNpemVzLCBmdW5jdGlvbiAoaW5kZXgsIGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtID4gcGFyc2VJbnQoYmVzdFdpZHRoUm91bmRlZCkgJiYgIWRvbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZXN0V2lkdGhSb3VuZGVkID0gaXRlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGJlc3RXaWR0aFJvdW5kZWQ7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaGlkZUV4dHJhSXRlbXNGb3JXaWR0aDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubGF5b3V0ID09PSAnY2Fyb3VzZWwnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyICRzZWxmID0gJCh0aGlzLmVsKSxcbiAgICAgICAgICAgICAgICAgIG51bSA9IHR5cGVvZiAkc2VsZi5hdHRyKCdkYXRhLW51bScpICE9PSAndW5kZWZpbmVkJyAmJiAkc2VsZi5hdHRyKCdkYXRhLW51bScpICE9PSAnJyA/IHBhcnNlSW50KCRzZWxmLmF0dHIoJ2RhdGEtbnVtJykpIDogMSxcbiAgICAgICAgICAgICAgICAgIG51bW1vYmlsZSA9IHR5cGVvZiAkc2VsZi5hdHRyKCdkYXRhLW51bW1vYmlsZScpICE9PSAndW5kZWZpbmVkJyAmJiAkc2VsZi5hdHRyKCdkYXRhLW51bW1vYmlsZScpICE9PSAnJyA/IHBhcnNlSW50KCRzZWxmLmF0dHIoJ2RhdGEtbnVtbW9iaWxlJykpIDogbnVtO1xuXG4gICAgICAgICAgICAgICAgaWYgKCEkc2VsZi5oYXNDbGFzcygnLnNieV9sYXlvdXRfY2Fyb3VzZWwnKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoJCh3aW5kb3cpLndpZHRoKCkgPCA0ODApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudW1tb2JpbGUgPCAkc2VsZi5maW5kKCcuc2J5X2l0ZW0nKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2VsZi5maW5kKCcuc2J5X2l0ZW0nKS5zbGljZShudW1tb2JpbGUgLSAkc2VsZi5maW5kKCcuc2J5X2l0ZW0nKS5sZW5ndGgpLmFkZENsYXNzKCdzYnlfbnVtX2RpZmZfaGlkZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bSA8ICRzZWxmLmZpbmQoJy5zYnlfaXRlbScpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLmZpbmQoJy5zYnlfaXRlbScpLnNsaWNlKG51bSAtICRzZWxmLmZpbmQoJy5zYnlfaXRlbScpLmxlbmd0aCkuYWRkQ2xhc3MoJ3NieV9udW1fZGlmZl9oaWRlJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXRJbWFnZVNpemVDbGFzczogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciAkc2VsZiA9ICQodGhpcy5lbCk7XG4gICAgICAgICAgICAgICAgJHNlbGYucmVtb3ZlQ2xhc3MoJ3NieV9zbWFsbCBzYnlfbWVkaXVtJyk7XG4gICAgICAgICAgICAgICAgdmFyIGZlZWRXaWR0aCA9ICRzZWxmLmlubmVyV2lkdGgoKSxcbiAgICAgICAgICAgICAgICAgIHBob3RvUGFkZGluZyA9IHBhcnNlSW50KCgkc2VsZi5maW5kKCcuc2J5X2l0ZW1zX3dyYXAnKS5vdXRlcldpZHRoKCkgLSAkc2VsZi5maW5kKCcuc2J5X2l0ZW1zX3dyYXAnKS53aWR0aCgpKSkgLyAyLFxuICAgICAgICAgICAgICAgICAgY29scyA9IHRoaXMuZ2V0Q29sdW1uQ291bnQoKSxcbiAgICAgICAgICAgICAgICAgIGZlZWRXaWR0aFNhbnNQYWRkaW5nID0gZmVlZFdpZHRoIC0gKHBob3RvUGFkZGluZyAqIChjb2xzKzIpKSxcbiAgICAgICAgICAgICAgICAgIGNvbFdpZHRoID0gKGZlZWRXaWR0aFNhbnNQYWRkaW5nIC8gY29scyk7XG5cbiAgICAgICAgICAgICAgICBpZiAoY29sV2lkdGggPiAxNDAgJiYgY29sV2lkdGggPCAyNDApIHtcbiAgICAgICAgICAgICAgICAgICAgJHNlbGYuYWRkQ2xhc3MoJ3NieV9tZWRpdW0nKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbFdpZHRoIDw9IDE0MCkge1xuICAgICAgICAgICAgICAgICAgICAkc2VsZi5hZGRDbGFzcygnc2J5X3NtYWxsJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldE1pbkltYWdlV2lkdGg6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpZiAoJCh0aGlzLmVsKS5maW5kKCcuc2J5X2l0ZW0gLnNieV92aWRlb190aHVtYm5haWwnKS5maXJzdCgpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1pbkltYWdlV2lkdGggPSAkKHRoaXMuZWwpLmZpbmQoJy5zYnlfaXRlbSAuc2J5X3ZpZGVvX3RodW1ibmFpbCcpLmZpcnN0KCkuaW5uZXJXaWR0aCgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWluSW1hZ2VXaWR0aCA9IDE1MDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0SW1hZ2VSZXNvbHV0aW9uOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2V0dGluZ3MuaW1nUmVzID09PSAnYXV0bycpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbWFnZVJlc29sdXRpb24gPSAnYXV0byc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLnNldHRpbmdzLmltZ1Jlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndGh1bWInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW1hZ2VSZXNvbHV0aW9uID0gMTUwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbWVkaXVtJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmltYWdlUmVzb2x1dGlvbiA9IDMyMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbWFnZVJlc29sdXRpb24gPSA2NDA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0SW1hZ2VVcmxzOiBmdW5jdGlvbiAoJGl0ZW0pIHtcbiAgICAgICAgICAgICAgICB2YXIgc3JjU2V0ID0gSlNPTi5wYXJzZSgkaXRlbS5maW5kKCcuc2J5X3ZpZGVvX3RodW1ibmFpbCcpLmF0dHIoJ2RhdGEtaW1nLXNyYy1zZXQnKS5yZXBsYWNlKC9cXFxcXFwvL2csICcvJykpLFxuICAgICAgICAgICAgICAgICAgaWQgPSAkaXRlbS5hdHRyKCdpZCcpLnJlcGxhY2UoJ3NieV8nLCAnJykucmVwbGFjZSgncGxheWVyXycsJycpO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5yZXNpemVkSW1hZ2VzW2lkXSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgICAgICAgICAgICYmIHRoaXMucmVzaXplZEltYWdlc1tpZF0gIT09ICd2aWRlbydcbiAgICAgICAgICAgICAgICAgICYmIHRoaXMucmVzaXplZEltYWdlc1tpZF0gIT09ICdwZW5kaW5nJ1xuICAgICAgICAgICAgICAgICAgJiYgdGhpcy5yZXNpemVkSW1hZ2VzW2lkXS5pZCAhPT0gJ2Vycm9yJ1xuICAgICAgICAgICAgICAgICAgJiYgdGhpcy5yZXNpemVkSW1hZ2VzW2lkXS5pZCAhPT0gJ3ZpZGVvJ1xuICAgICAgICAgICAgICAgICAgJiYgdGhpcy5yZXNpemVkSW1hZ2VzW2lkXS5pZCAhPT0gJ3BlbmRpbmcnKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnJlc2l6ZWRJbWFnZXNbaWRdWydzaXplcyddICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZvdW5kU2l6ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5yZXNpemVkSW1hZ2VzW2lkXVsnc2l6ZXMnXVsnZnVsbCddICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kU2l6ZXMucHVzaCg2NDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY1NldFs2NDBdID0gc2J5T3B0aW9ucy5yZXNpemVkX3VybCArIHRoaXMucmVzaXplZEltYWdlc1tpZF0uaWQgKyAnZnVsbC5qcGcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpdGVtLmZpbmQoJy5zYnlfbGlua19hcmVhJykuYXR0ciggJ2hyZWYnLCBzYnlPcHRpb25zLnJlc2l6ZWRfdXJsICsgdGhpcy5yZXNpemVkSW1hZ2VzW2lkXS5pZCArICdmdWxsLmpwZycgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaXRlbS5maW5kKCcuc2J5X3ZpZGVvX3RodW1ibmFpbCcpLmF0dHIoICdkYXRhLWZ1bGwtcmVzJywgc2J5T3B0aW9ucy5yZXNpemVkX3VybCArIHRoaXMucmVzaXplZEltYWdlc1tpZF0uaWQgKyAnZnVsbC5qcGcnICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMucmVzaXplZEltYWdlc1tpZF1bJ3NpemVzJ11bJ2xvdyddICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kU2l6ZXMucHVzaCgzMjApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY1NldFszMjBdID0gc2J5T3B0aW9ucy5yZXNpemVkX3VybCArIHRoaXMucmVzaXplZEltYWdlc1tpZF0uaWQgKyAnbG93LmpwZyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2V0dGluZ3MuZmF2b3JMb2NhbCAmJiB0eXBlb2YgdGhpcy5yZXNpemVkSW1hZ2VzW2lkXVsnc2l6ZXMnXVsnZnVsbCddID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaXRlbS5maW5kKCcuc2J5X2xpbmtfYXJlYScpLmF0dHIoICdocmVmJywgc2J5T3B0aW9ucy5yZXNpemVkX3VybCArIHRoaXMucmVzaXplZEltYWdlc1tpZF0uaWQgKyAnbG93LmpwZycgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGl0ZW0uZmluZCgnLnNieV92aWRlb190aHVtYm5haWwnKS5hdHRyKCAnZGF0YS1mdWxsLXJlcycsIHNieU9wdGlvbnMucmVzaXplZF91cmwgKyB0aGlzLnJlc2l6ZWRJbWFnZXNbaWRdLmlkICsgJ2xvdy5qcGcnICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnJlc2l6ZWRJbWFnZXNbaWRdWydzaXplcyddWyd0aHVtYiddICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kU2l6ZXMucHVzaCgxNTApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY1NldFsxNTBdID0gc2J5T3B0aW9ucy5yZXNpemVkX3VybCArIHRoaXMucmVzaXplZEltYWdlc1tpZF0uaWQgKyAndGh1bWIuanBnJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNldHRpbmdzLmZhdm9yTG9jYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZm91bmRTaXplcy5pbmRleE9mKDY0MCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb3VuZFNpemVzLmluZGV4T2YoMzIwKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNTZXRbNjQwXSA9IHNieU9wdGlvbnMucmVzaXplZF91cmwgKyB0aGlzLnJlc2l6ZWRJbWFnZXNbaWRdLmlkICsgJ2xvdy5qcGcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb3VuZFNpemVzLmluZGV4T2YoMzIwKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvdW5kU2l6ZXMuaW5kZXhPZig2NDApID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY1NldFszMjBdID0gc2J5T3B0aW9ucy5yZXNpemVkX3VybCArIHRoaXMucmVzaXplZEltYWdlc1tpZF0uaWQgKyAnZnVsbC5qcGcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZvdW5kU2l6ZXMuaW5kZXhPZigxNTApID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY1NldFszMjBdID0gc2J5T3B0aW9ucy5yZXNpemVkX3VybCArIHRoaXMucmVzaXplZEltYWdlc1tpZF0uaWQgKyAndGh1bWIuanBnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZm91bmRTaXplcy5pbmRleE9mKDE1MCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb3VuZFNpemVzLmluZGV4T2YoMzIwKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNTZXRbMTUwXSA9IHNieU9wdGlvbnMucmVzaXplZF91cmwgKyB0aGlzLnJlc2l6ZWRJbWFnZXNbaWRdLmlkICsgJ2xvdy5qcGcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZvdW5kU2l6ZXMuaW5kZXhPZig2NDApID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY1NldFsxNTBdID0gc2J5T3B0aW9ucy5yZXNpemVkX3VybCArIHRoaXMucmVzaXplZEltYWdlc1tpZF0uaWQgKyAnZnVsbC5qcGcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5yZXNpemVkSW1hZ2VzW2lkXSA9PT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgICAgICAgICAgIHx8ICh0eXBlb2YgdGhpcy5yZXNpemVkSW1hZ2VzW2lkXVsnaWQnXSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5yZXNpemVkSW1hZ2VzW2lkXVsnaWQnXSAhPT0gJ3BlbmRpbmcnICYmIHRoaXMucmVzaXplZEltYWdlc1tpZF1bJ2lkJ10gIT09ICdlcnJvcicpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkVG9OZWVkc1Jlc2l6aW5nKGlkKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gc3JjU2V0O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldFZpZGVvSUQ6IGZ1bmN0aW9uICgkZWwpIHtcbiAgICAgICAgICAgICAgICBpZiAoJGVsLmhhc0NsYXNzKCdzYnlfaXRlbScpIHx8ICRlbC5oYXNDbGFzcygnc2J5X3BsYXllcl9pdGVtJykpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiAkZWwuZmluZCgnLnNieV92aWRlb190aHVtYm5haWwnKS5hdHRyKCdkYXRhLXZpZGVvLWlkJykgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJGVsLmZpbmQoJy5zYnlfdmlkZW9fdGh1bWJuYWlsJykuYXR0cignZGF0YS12aWRlby1pZCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkZWwuY2xvc2VzdCgnc2J5X2l0ZW0nKS5sZW5ndGggfHwgJGVsLmNsb3Nlc3QoJ3NieV9wbGF5ZXJfaXRlbScpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgJHRhcmdlRWwgPSAkZWwuY2xvc2VzdCgnc2J5X2l0ZW0nKS5sZW5ndGggPyAkZWwuY2xvc2VzdCgnc2J5X2l0ZW0nKSA6ICRlbC5jbG9zZXN0KCdzYnlfcGxheWVyX2l0ZW0nKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiAkdGFyZ2VFbC5maW5kKCcuc2J5X3ZpZGVvX3RodW1ibmFpbCcpLmF0dHIoJ2RhdGEtdmlkZW8taWQnKSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkdGFyZ2VFbC5maW5kKCcuc2J5X3ZpZGVvX3RodW1ibmFpbCcpLmF0dHIoJ2RhdGEtdmlkZW8taWQnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJGVsLmhhc0NsYXNzKCdzYl95b3V0dWJlJykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRlbC5maW5kKCcuc2J5X2l0ZW0nKS5maXJzdCgpLmZpbmQoJy5zYnlfdmlkZW9fdGh1bWJuYWlsJykuYXR0cignZGF0YS12aWRlby1pZCcpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJCh0aGlzLmVsKS5maW5kKCcuc2J5X3ZpZGVvX3RodW1ibmFpbCcpLmZpcnN0KCkubGVuZ3RoICYmIHR5cGVvZiAkKHRoaXMuZWwpLmZpbmQoJy5zYnlfdmlkZW9fdGh1bWJuYWlsJykuZmlyc3QoKS5hdHRyKCdkYXRhLXZpZGVvLWlkJykgIT09ICd1bmRlZmluZWQnKXtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQodGhpcy5lbCkuZmluZCgnLnNieV92aWRlb190aHVtYm5haWwnKS5maXJzdCgpLmF0dHIoJ2RhdGEtdmlkZW8taWQnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldEF2YXRhclVybDogZnVuY3Rpb24gKHVzZXJuYW1lLGZhdm9yVHlwZSkge1xuICAgICAgICAgICAgICAgIGlmICh1c2VybmFtZSA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciBhdmFpbGFibGVBdmF0YXJzID0gdGhpcy5zZXR0aW5ncy5nZW5lcmFsLmF2YXRhcnMsXG4gICAgICAgICAgICAgICAgICBmYXZvclR5cGUgPSB0eXBlb2YgZmF2b3JUeXBlICE9PSAndW5kZWZpbmVkJyA/IGZhdm9yVHlwZSA6ICdsb2NhbCc7XG5cbiAgICAgICAgICAgICAgICBpZiAoZmF2b3JUeXBlID09PSAnbG9jYWwnKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgYXZhaWxhYmxlQXZhdGFyc1snTENMJyt1c2VybmFtZV0gIT09ICd1bmRlZmluZWQnICYmIHBhcnNlSW50KGF2YWlsYWJsZUF2YXRhcnNbJ0xDTCcrdXNlcm5hbWVdKSA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNieU9wdGlvbnMucmVzaXplZF91cmwgKyB1c2VybmFtZSArICcuanBnJztcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgYXZhaWxhYmxlQXZhdGFyc1t1c2VybmFtZV0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXZhaWxhYmxlQXZhdGFyc1t1c2VybmFtZV07XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGF2YWlsYWJsZUF2YXRhcnNbdXNlcm5hbWVdICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGF2YWlsYWJsZUF2YXRhcnNbdXNlcm5hbWVdO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBhdmFpbGFibGVBdmF0YXJzWydMQ0wnK3VzZXJuYW1lXSAhPT0gJ3VuZGVmaW5lZCcgJiYgcGFyc2VJbnQoYXZhaWxhYmxlQXZhdGFyc1snTENMJyt1c2VybmFtZV0pID09PSAxKSAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNieU9wdGlvbnMucmVzaXplZF91cmwgKyB1c2VybmFtZSArICcuanBnJztcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhZGRUb05lZWRzUmVzaXppbmc6IGZ1bmN0aW9uIChpZCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm5lZWRzUmVzaXppbmcuaW5kZXhPZihpZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmVlZHNSZXNpemluZy5wdXNoKGlkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYXBwbHlJbWFnZUxpcXVpZDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciAkc2VsZiA9ICQodGhpcy5lbCksXG4gICAgICAgICAgICAgICAgICBmZWVkID0gdGhpcztcbiAgICAgICAgICAgICAgICBzYnlBZGRJbWdMaXF1aWQoKTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mICRzZWxmLmZpbmQoXCIuc2J5X3BsYXllcl9pdGVtXCIpLnNieV9pbWdMaXF1aWQgPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoJHNlbGYuZmluZCgnLnNieV9wbGF5ZXJfaXRlbScpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgJHNlbGYuZmluZChcIi5zYnlfcGxheWVyX2l0ZW0gLnNieV9wbGF5ZXJfdmlkZW9fdGh1bWJuYWlsXCIpLnNieV9pbWdMaXF1aWQoe2ZpbGw6IHRydWV9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAkc2VsZi5maW5kKFwiLnNieV9pdGVtIC5zYnlfaXRlbV92aWRlb190aHVtYm5haWxcIikuc2J5X2ltZ0xpcXVpZCh7ZmlsbDogdHJ1ZX0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsaXN0ZW5Gb3JWaXNpYmlsaXR5Q2hhbmdlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgZmVlZCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgc2J5QWRkVmlzaWJpbGl0eUxpc3RlbmVyKCk7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiAkKHRoaXMuZWwpLmZpbHRlcignOmhpZGRlbicpLnNieVZpc2liaWxpdHlDaGFuZ2VkID09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgLy9JZiB0aGUgZmVlZCBpcyBpbml0aWFsbHkgaGlkZGVuIChpbiBhIHRhYiBmb3IgZXhhbXBsZSkgdGhlbiBjaGVjayBmb3Igd2hlbiBpdCBiZWNvbWVzIHZpc2libGUgYW5kIHNldCB0aGVuIHNldCB0aGUgaGVpZ2h0XG4gICAgICAgICAgICAgICAgICAgICQodGhpcy5lbCkuZmlsdGVyKCc6aGlkZGVuJykuc2J5VmlzaWJpbGl0eUNoYW5nZWQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uIChlbGVtZW50LCB2aXNpYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVlZC5hZnRlclJlc2l6ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJ1bk9uTG9hZDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldENvbHVtbkNvdW50OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgJHNlbGYgPSAkKHRoaXMuZWwpLFxuICAgICAgICAgICAgICAgICAgY29scyA9IHRoaXMuc2V0dGluZ3MuY29scyxcbiAgICAgICAgICAgICAgICAgIGNvbHNtb2JpbGUgPSB0aGlzLnNldHRpbmdzLmNvbHNtb2JpbGUsXG4gICAgICAgICAgICAgICAgICByZXR1cm5Db2xzID0gY29scztcblxuICAgICAgICAgICAgICAgIHNieVdpbmRvd1dpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG5cbiAgICAgICAgICAgICAgICBpZiAoJHNlbGYuaGFzQ2xhc3MoJ3NieV9tb2JfY29sX2F1dG8nKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2J5V2luZG93V2lkdGggPCA2NDAgJiYgKHBhcnNlSW50KGNvbHMpID4gMiAmJiBwYXJzZUludChjb2xzKSA8IDcpKSByZXR1cm5Db2xzID0gMjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNieVdpbmRvd1dpZHRoIDwgNjQwICYmIChwYXJzZUludChjb2xzKSA+IDYgJiYgcGFyc2VJbnQoY29scykgPCAxMSkpIHJldHVybkNvbHMgPSA0O1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2J5V2luZG93V2lkdGggPD0gNDgwICYmIHBhcnNlSW50KGNvbHMpID4gMikgcmV0dXJuQ29scyA9IDE7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzYnlXaW5kb3dXaWR0aCA8PSA0ODApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuQ29scyA9IGNvbHNtb2JpbGU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KHJldHVybkNvbHMpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uVGh1bWJuYWlsQ2xpY2s6IGZ1bmN0aW9uKCRjbGlja2VkLGlzUGxheWVyLHZpZGVvSUQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuY2FuQ3JlYXRlUGxheWVyKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgJHNlbGYgPSAkKHRoaXMuZWwpO1xuICAgICAgICAgICAgICAgIGlmICgkc2VsZi5oYXNDbGFzcygnc2J5X2xheW91dF9nYWxsZXJ5JykpIHtcbiAgICAgICAgICAgICAgICAgICAgJHNlbGYuZmluZCgnLnNieV9jdXJyZW50JykucmVtb3ZlQ2xhc3MoJ3NieV9jdXJyZW50Jyk7XG4gICAgICAgICAgICAgICAgICAgICRjbGlja2VkLmNsb3Nlc3QoJy5zYnlfaXRlbScpLmFkZENsYXNzKCdzYnlfY3VycmVudCcpO1xuXG4gICAgICAgICAgICAgICAgICAgICRjbGlja2VkLmNsb3Nlc3QoJy5zYnlfaXRlbScpLmFkZENsYXNzKCdzYnlfY3VycmVudCcpO1xuICAgICAgICAgICAgICAgICAgICAkc2VsZi5hZGRDbGFzcygnc2J5X3BsYXllcl9hZGRlZCcpLmZpbmQoJy5zYnlfcGxheWVyX291dGVyX3dyYXAnKS5hZGRDbGFzcygnc2J5X3BsYXllcl9sb2FkaW5nJyk7XG4gICAgICAgICAgICAgICAgICAgICRzZWxmLmZpbmQoJy5zYnlfcGxheWVyX291dGVyX3dyYXAgLnNieV92aWRlb190aHVtYm5haWwnKS5maW5kKCcuc2J5X2xvYWRlcicpLnNob3coKS5yZW1vdmVDbGFzcygnc2J5X2hpZGRlbicpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoISRzZWxmLmZpbmQoJy5zYnlfcGxheWVyX291dGVyX3dyYXAgaWZyYW1lJykubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNQbGF5ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVBsYXllcignc2J5X3BsYXllcicrdGhpcy5pbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2aWRlb0lEID0gdHlwZW9mIHZpZGVvSUQgPT09ICd1bmRlZmluZWQnID8gdGhpcy5nZXRWaWRlb0lEKCRjbGlja2VkLmNsb3Nlc3QoJy5zYnlfaXRlbScpKSA6IHZpZGVvSUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVQbGF5ZXIoJ3NieV9wbGF5ZXInK3RoaXMuaW5kZXgsdmlkZW9JRCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNQbGF5ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmlkZW9JRCA9IHR5cGVvZiB2aWRlb0lEID09PSAndW5kZWZpbmVkJyA/IHRoaXMuZ2V0VmlkZW9JRCgkc2VsZi5maW5kKCcuc2J5X2l0ZW0nKS5maXJzdCgpKSA6IHZpZGVvSUQ7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBsYXlWaWRlb0luUGxheWVyKHZpZGVvSUQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmlkZW9JRCA9IHR5cGVvZiB2aWRlb0lEID09PSAndW5kZWZpbmVkJyA/IHRoaXMuZ2V0VmlkZW9JRCgkY2xpY2tlZC5jbG9zZXN0KCcuc2J5X2l0ZW0nKSkgOiB2aWRlb0lEO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VQbGF5ZXJJbmZvKCRjbGlja2VkLmNsb3Nlc3QoJy5zYnlfaXRlbScpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBsYXlWaWRlb0luUGxheWVyKHZpZGVvSUQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWZ0ZXJWaWRlb0NoYW5nZWQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUdhbGxlcnlQbGF5ZXJTdWJzY3JpYmVCdG4oJGNsaWNrZWQpO1xuXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkKHRoaXMuZWwpLmhhc0NsYXNzKCdzYnlfbGF5b3V0X2dyaWQnKSB8fCAkKHRoaXMuZWwpLmhhc0NsYXNzKCdzYnlfbGF5b3V0X2Nhcm91c2VsJykpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyICRzYnlJdGVtID0gJGNsaWNrZWQuY2xvc2VzdCgnLnNieV9pdGVtJyksXG4gICAgICAgICAgICAgICAgICAgICAgdmlkZW9JRCA9IHR5cGVvZiB2aWRlb0lEID09PSAndW5kZWZpbmVkJyA/IHRoaXMuZ2V0VmlkZW9JRCgkc2J5SXRlbSkgOiB2aWRlb0lEO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBsYXlWaWRlb0luUGxheWVyKHZpZGVvSUQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFmdGVyVmlkZW9DaGFuZ2VkKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkKHRoaXMuZWwpLmhhc0NsYXNzKCdzYnlfbGF5b3V0X2xpc3QnKSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgJHNieUl0ZW0gPSAkY2xpY2tlZC5jbG9zZXN0KCcuc2J5X2l0ZW0nKSxcbiAgICAgICAgICAgICAgICAgICAgICB2aWRlb0lEID0gdHlwZW9mIHZpZGVvSUQgPT09ICd1bmRlZmluZWQnID8gdGhpcy5nZXRWaWRlb0lEKCRzYnlJdGVtKSA6IHZpZGVvSUQ7XG4gICAgICAgICAgICAgICAgICAgIGlmICgkc2J5SXRlbS5sZW5ndGggJiYgISRzYnlJdGVtLmZpbmQoJ2lmcmFtZScpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgJHNieUl0ZW0uZmluZCgnLnNieV9sb2FkZXInKS5zaG93KCkucmVtb3ZlQ2xhc3MoJ3NieV9oaWRkZW4nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICRzYnlJdGVtLmFkZENsYXNzKCdzYnlfcGxheWVyX2xvYWRpbmcgc2J5X3BsYXllcl9sb2FkZWQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlUGxheWVyKCdzYnlfcGxheWVyXycrdmlkZW9JRCx2aWRlb0lEKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGxheVZpZGVvSW5QbGF5ZXIodmlkZW9JRCwkc2J5SXRlbS5hdHRyKCdkYXRhLXZpZGVvLWlkJykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZnRlclZpZGVvQ2hhbmdlZCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uVGh1bWJuYWlsRW50ZXI6IGZ1bmN0aW9uKCRob3ZlcmVkKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmNhbkNyZWF0ZVBsYXllcigpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyICRzZWxmID0gJCh0aGlzLmVsKTtcbiAgICAgICAgICAgICAgICBpZiAoJHNlbGYuaGFzQ2xhc3MoJ3NieV9sYXlvdXRfbGlzdCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciAkc2J5SXRlbSA9ICRob3ZlcmVkLmNsb3Nlc3QoJy5zYnlfaXRlbScpLFxuICAgICAgICAgICAgICAgICAgICAgIHZpZGVvSUQgPSB0aGlzLmdldFZpZGVvSUQoJHNieUl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoISRzYnlJdGVtLmZpbmQoJ2lmcmFtZScpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgJHNieUl0ZW0uZmluZCgnLnNieV9sb2FkZXInKS5zaG93KCkucmVtb3ZlQ2xhc3MoJ3NieV9oaWRkZW4nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICRzYnlJdGVtLmFkZENsYXNzKCdzYnlfcGxheWVyX2xvYWRpbmcgc2J5X3BsYXllcl9sb2FkZWQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlUGxheWVyKCdzYnlfcGxheWVyXycrdmlkZW9JRCx2aWRlb0lELDApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uVGh1bWJuYWlsTGVhdmU6IGZ1bmN0aW9uKCRob3ZlcmVkKSB7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY2hhbmdlUGxheWVySW5mbzogZnVuY3Rpb24oJG5ld0l0ZW0pIHtcblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBsYXllckVhZ2VyTG9hZGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMucGxheWVyICE9PSAndW5kZWZpbmVkJyB8fCAkKHRoaXMuZWwpLmhhc0NsYXNzKCdzYnlfcGxheWVyX2xvYWRlZCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjYW5DcmVhdGVQbGF5ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIGlmICgkKHRoaXMuZWwpLmZpbmQoJyNzYnlfYmxhbmsnKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbmNlbnRHaXZlbiA9IHRoaXMuc2V0dGluZ3MuY29uc2VudEdpdmVuXG5cbiAgICAgICAgICAgICAgICAvLyBGaXggZm9yIGVsZW1lbnRvciBidWlsZGVyIGZvciBsaXN0IHZpZXcuIFdoZXJlIHZpZGVvIHdvdWxkIG5vdCBsb2FkIG9uIGhvY2VyLlxuICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRvckNoZWNrID0gd2luZG93LnNieS5mZWVkc1t0aGlzLmluZGV4XS5wbGF5ZXJBUElSZWFkeSAmJiBjb25jZW50R2l2ZW47XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wbGF5ZXJFYWdlckxvYWRlZCgpIHx8ICh0aGlzLnBsYXllckFQSVJlYWR5ICYmIGNvbmNlbnRHaXZlbikgfHwgKHdpbmRvdy5zYnlBUElSZWFkeSAmJiBjb25jZW50R2l2ZW4pIHx8IGVsZW1lbnRvckNoZWNrO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBsYXlWaWRlb0luUGxheWVyOiBmdW5jdGlvbih2aWRlb0lELHBsYXllcklEKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBsYXllciAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHRoaXMucGxheWVyLmxvYWRWaWRlb0J5SWQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGxheWVyLmxvYWRWaWRlb0J5SWQodmlkZW9JRCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygd2luZG93LnNieUxpZ2h0Ym94UGxheWVyICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICAgICAgICAgICAgJiYgdHlwZW9mIHdpbmRvdy5zYnlMaWdodGJveFBsYXllci5sb2FkVmlkZW9CeUlkICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2J5TGlnaHRib3hQbGF5ZXIubG9hZFZpZGVvQnlJZCh2aWRlb0lEKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBwbGF5ZXJJRCAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgICAgICAgICAgICYmIHR5cGVvZiB0aGlzLnBsYXllcnMgIT09ICd1bmRlZmluZWQnXG4gICAgICAgICAgICAgICAgICAmJiB0eXBlb2YgdGhpcy5wbGF5ZXJzW3BsYXllcklEXSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgICAgICAgICAgICYmIHR5cGVvZiB0aGlzLnBsYXllcnNbcGxheWVySURdLmxvYWRWaWRlb0J5SWQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGxheWVyc1twbGF5ZXJJRF0ubG9hZFZpZGVvQnlJZCh2aWRlb0lEKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWZ0ZXJWaWRlb0NoYW5nZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIGlmICgkKHRoaXMuZWwpLmhhc0NsYXNzKCdzYnlfbGF5b3V0X2dhbGxlcnknKSkge1xuICAgICAgICAgICAgICAgICAgICAkKHRoaXMuZWwpLmZpbmQoJy5zYnlfcGxheWVyX291dGVyX3dyYXAnKS5yZW1vdmVDbGFzcygnc2J5X3BsYXllcl9sb2FkaW5nJyk7XG4gICAgICAgICAgICAgICAgICAgICQodGhpcy5lbCkuZmluZCgnLnNieV9wbGF5ZXJfb3V0ZXJfd3JhcCAuc2J5X3ZpZGVvX3RodW1ibmFpbCcpLmZpbmQoJy5zYnlfbG9hZGVyJykuaGlkZSgpLmFkZENsYXNzKCdzYnlfaGlkZGVuJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgJCgnaHRtbCwgYm9keScpLmFuaW1hdGUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG9wOiAkKHRoaXMuZWwpLmZpbmQoJy5zYnlfcGxheWVyX291dGVyX3dyYXAnKS5vZmZzZXQoKS50b3BcbiAgICAgICAgICAgICAgICAgICAgfSwgMzAwKTtcblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB1cGRhdGVHYWxsZXJ5UGxheWVyU3Vic2NyaWJlQnRuOiBmdW5jdGlvbigkY2xpY2tlZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1VUkwgPSAkY2xpY2tlZC5hdHRyKCdocmVmJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVnZXggPSAvY2hhbm5lbFxcLyguKikkLztcbiAgICAgICAgICAgICAgICBjb25zdCBtYXRjaCA9IGl0ZW1VUkwubWF0Y2gocmVnZXgpO1xuICAgICAgICAgICAgICAgIGlmICggISBtYXRjaCApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBjaGFubmVsSWQgPSBtYXRjaFsxXTtcbiAgICAgICAgICAgICAgICBjb25zdCBzdWJzY3JpYmVCdG5VUkwgPSAnaHR0cDovL3d3dy55b3V0dWJlLmNvbS9jaGFubmVsLycrIGNoYW5uZWxJZCArJz9zdWJfY29uZmlybWF0aW9uPTEmZmVhdHVyZT1zdWJzY3JpYmUtZW1iZWQtY2xpY2snO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICQoJy5zYnktY2hhbm5lbC1zdWJzY3JpYmUtYnRuIGEnKS5hdHRyKCdocmVmJywgc3Vic2NyaWJlQnRuVVJMKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjaGVja0NvbnNlbnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNldHRpbmdzLmNvbnNlbnRHaXZlbiB8fCAhdGhpcy5zZXR0aW5ncy5nZHByKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0dGluZ3Mubm9DRE4gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygd2luZG93LldQQ29uc2VudCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXR0aW5ncy5jb25zZW50R2l2ZW4gPSB3aW5kb3cuV1BDb25zZW50Lmhhc0NvbnNlbnQoJ21hcmtldGluZycpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIENMSV9Db29raWUgIT09IFwidW5kZWZpbmVkXCIpIHsgLy8gR0RQUiBDb29raWUgQ29uc2VudCBieSBXZWJUb2ZmZWVcbiAgICAgICAgICAgICAgICAgICAgaWYgKENMSV9Db29raWUucmVhZChDTElfQUNDRVBUX0NPT0tJRV9OQU1FKSAhPT0gbnVsbCkgIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2ViVG9mZmVlIG5vIGxvbmdlciB1c2VzIHRoaXMgY29va2llIGJ1dCBiZWluZyBsZWZ0IGhlcmUgdG8gbWFpbnRhaW4gYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChDTElfQ29va2llLnJlYWQoJ2Nvb2tpZWxhd2luZm8tY2hlY2tib3gtbm9uLW5lY2Vzc2FyeScpICE9PSAnbnVsbCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldHRpbmdzLmNvbnNlbnRHaXZlbiA9IENMSV9Db29raWUucmVhZCgnY29va2llbGF3aW5mby1jaGVja2JveC1ub24tbmVjZXNzYXJ5JykgPT09ICd5ZXMnO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoQ0xJX0Nvb2tpZS5yZWFkKCdjb29raWVsYXdpbmZvLWNoZWNrYm94LW5lY2Vzc2FyeScpICE9PSAnbnVsbCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldHRpbmdzLmNvbnNlbnRHaXZlbiA9IENMSV9Db29raWUucmVhZCgnY29va2llbGF3aW5mby1jaGVja2JveC1uZWNlc3NhcnknKSA9PT0gJ3llcyc7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHdpbmRvdy5jbkFyZ3MgIT09IFwidW5kZWZpbmVkXCIpIHsgLy8gQ29va2llIE5vdGljZSBieSBkRmFjdG9yeVxuICAgICAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBcIjsgXCIgKyBkb2N1bWVudC5jb29raWUsXG4gICAgICAgICAgICAgICAgICAgICAgcGFydHMgPSB2YWx1ZS5zcGxpdCggJzsgY29va2llX25vdGljZV9hY2NlcHRlZD0nICk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCBwYXJ0cy5sZW5ndGggPT09IDIgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmFsID0gcGFydHMucG9wKCkuc3BsaXQoICc7JyApLnNoaWZ0KCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0dGluZ3MuY29uc2VudEdpdmVuID0gKHZhbCA9PT0gJ3RydWUnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHdpbmRvdy5jb21wbGlhbnogIT09ICd1bmRlZmluZWQnKSB7IC8vIENvbXBsaWFueiBieSBSZWFsbHkgU2ltcGxlIFBsdWdpbnNcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXR0aW5ncy5jb25zZW50R2l2ZW4gPSAoIHNieUNtcGx6R2V0Q29va2llKCdjbXBsel9tYXJrZXRpbmcnKSA9PT0gJ2FsbG93JyB8fCBqUXVlcnkoJ2JvZHknKS5oYXNDbGFzcygnY21wbHotc3RhdHVzLW1hcmtldGluZycpICk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygd2luZG93LkNvb2tpZWJvdCAhPT0gXCJ1bmRlZmluZWRcIikgeyAvLyBDb29raWVib3QgYnkgQ3lib3QgQS9TXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0dGluZ3MuY29uc2VudEdpdmVuID0gQ29va2llYm90LmNvbnNlbnRlZDtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB3aW5kb3cuQm9ybGFic0Nvb2tpZSAhPT0gJ3VuZGVmaW5lZCcpIHsgLy8gQm9ybGFicyBDb29raWUgYnkgQm9ybGFic1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldHRpbmdzLmNvbnNlbnRHaXZlbiA9IHR5cGVvZiB3aW5kb3cuQm9ybGFic0Nvb2tpZS5Db25zZW50cyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cuQm9ybGFic0Nvb2tpZS5Db25zZW50cy5oYXNDb25zZW50KCd5b3V0dWJlJykgOiB3aW5kb3cuQm9ybGFic0Nvb2tpZS5jaGVja0Nvb2tpZUNvbnNlbnQoJ3lvdXR1YmUnKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHNieUNtcGx6R2V0Q29va2llKCdtb292ZV9nZHByX3BvcHVwJykpIHsgLy8gTW9vdmUgR0RQUiBQb3B1cFxuICAgICAgICAgICAgICAgICAgICB2YXIgbW9vdmVfZ2Rwcl9wb3B1cCA9IEpTT04ucGFyc2UoZGVjb2RlVVJJQ29tcG9uZW50KHNieUNtcGx6R2V0Q29va2llKCdtb292ZV9nZHByX3BvcHVwJykpKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXR0aW5ncy5jb25zZW50R2l2ZW4gPSB0eXBlb2YgbW9vdmVfZ2Rwcl9wb3B1cC50aGlyZHBhcnR5ICE9PSBcInVuZGVmaW5lZFwiICYmIG1vb3ZlX2dkcHJfcG9wdXAudGhpcmRwYXJ0eSA9PT0gXCIxXCI7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIGV2dCA9IGpRdWVyeS5FdmVudCgnc2J5Y2hlY2tjb25zZW50Jyk7XG4gICAgICAgICAgICAgICAgZXZ0LmZlZWQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIGpRdWVyeSh3aW5kb3cpLnRyaWdnZXIoZXZ0KTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNldHRpbmdzLmNvbnNlbnRHaXZlbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldHRpbmdzLm5vQ0ROID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0dGluZ3MuY29uc2VudEdpdmVuOyAvLyBHRFBSIG5vdCBlbmFibGVkXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWZ0ZXJDb25zZW50VG9nZ2xlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY2hlY2tDb25zZW50KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGZlZWQgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2J5Lm1heWJlQWRkWVRBUEkoKTtcbiAgICAgICAgICAgICAgICAgICAgZmVlZC5tYXliZVJhaXNlSW1hZ2VSZXNvbHV0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIGZlZWQuYXBwbHlGdWxsRmVhdHVyZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZlZWQuYWZ0ZXJSZXNpemUoKTtcbiAgICAgICAgICAgICAgICAgICAgfSw1MDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZW1vdmVGZWF0dXJlczogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIGZlZWQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIGlmIChmZWVkLnNldHRpbmdzLm5vQ0ROKSB7XG4gICAgICAgICAgICAgICAgICAgICQoZmVlZC5lbCkuZmluZCgnLnNieV92aWRlb190aHVtYm5haWwnKS5lYWNoKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5yZW1vdmVBdHRyKCdkYXRhLXNieS1saWdodGJveCcpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYXBwbHlGdWxsRmVhdHVyZXM6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciBmZWVkID0gdGhpcztcblxuICAgICAgICAgICAgICAgICQoZmVlZC5lbCkuZmluZCgnLnNieV9oZWFkZXJfaW1nIGltZycpLmF0dHIoJ3NyYycsJChmZWVkLmVsKS5maW5kKCcuc2J5X2hlYWRlcl9pbWcnKS5hdHRyKCdkYXRhLWF2YXRhci11cmwnKSk7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiAkKGZlZWQuZWwpLmZpbmQoJy5zYnlfdmlkZW9fdGh1bWJuYWlsJykuZmlyc3QoKS5hdHRyKCdkYXRhLXNieS1saWdodGJveCcpID09PSAndW5kZWZpbmVkJ1xuICAgICAgICAgICAgICAgICAgJiYgZmVlZC5zZXR0aW5ncy5saWdodGJveEVuYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgJChmZWVkLmVsKS5maW5kKCcuc2J5X3ZpZGVvX3RodW1ibmFpbCcpLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmF0dHIoJ2RhdGEtc2J5LWxpZ2h0Ym94JyxmZWVkLmluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciAkc2VsZiA9ICQoZmVlZC5lbCk7XG4gICAgICAgICAgICAgICAgJHNlbGYuZmluZCgnLnNieV9ub19jb25zZW50JykucmVtb3ZlQ2xhc3MoJ3NieV9ub19jb25zZW50Jyk7XG4gICAgICAgICAgICAgICAgaWYgKCRzZWxmLmhhc0NsYXNzKCdzYnlfbGF5b3V0X2dhbGxlcnknKSAmJiAkc2VsZi5maW5kKCcuc2J5X3BsYXllcl9vdXRlcl93cmFwJykubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWF5YmVSYWlzZVNpbmdsZUltYWdlUmVzb2x1dGlvbigkc2VsZi5maW5kKCcuc2J5X3BsYXllcl9vdXRlcl93cmFwJyksIDAsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAkc2VsZi5maW5kKCcuc2J5X2l0ZW0nKS5maXJzdCgpLmFkZENsYXNzKCdzYnlfY3VycmVudCcpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghZmVlZC5jYW5DcmVhdGVQbGF5ZXIoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghJHNlbGYuZmluZCgnLnNieV9wbGF5ZXJfb3V0ZXJfd3JhcCBpZnJhbWUnKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZlZWQuY3JlYXRlUGxheWVyKCdzYnlfcGxheWVyJytmZWVkLmluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxvY2F0aW9uR3Vlc3M6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciAkZmVlZCA9ICQodGhpcy5lbCksXG4gICAgICAgICAgICAgICAgICBsb2NhdGlvbiA9ICdjb250ZW50JztcblxuICAgICAgICAgICAgICAgIGlmICgkZmVlZC5jbG9zZXN0KCdmb290ZXInKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24gPSAnZm9vdGVyJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCRmZWVkLmNsb3Nlc3QoJy5oZWFkZXInKS5sZW5ndGhcbiAgICAgICAgICAgICAgICAgIHx8ICRmZWVkLmNsb3Nlc3QoJ2hlYWRlcicpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbiA9ICdoZWFkZXInO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJGZlZWQuY2xvc2VzdCgnLnNpZGViYXInKS5sZW5ndGhcbiAgICAgICAgICAgICAgICAgIHx8ICRmZWVkLmNsb3Nlc3QoJ2FzaWRlJykubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uID0gJ3NpZGViYXInO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBsb2NhdGlvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBmdW5jdGlvbiBTYnlGZWVkUHJvKGVsLCBpbmRleCwgc2V0dGluZ3MpIHtcbiAgICAgICAgICAgIFNieUZlZWQuY2FsbCh0aGlzLCBlbCwgaW5kZXgsIHNldHRpbmdzKTtcblxuICAgICAgICAgICAgdGhpcy5DVEEgPSB7fTtcblxuICAgICAgICAgICAgdGhpcy5pbml0TGF5b3V0ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0R2FsbGVyeUxheW91dCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5pdEdyaWQoKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdENhcm91c2VscygpO1xuICAgICAgICAgICAgICAgIHZhciBldnQgPSBqUXVlcnkuRXZlbnQoJ3NieWFmdGVybGF5b3V0aW5pdCcpO1xuICAgICAgICAgICAgICAgIGV2dC5mZWVkID0gdGhpcztcbiAgICAgICAgICAgICAgICBqUXVlcnkod2luZG93KS50cmlnZ2VyKGV2dCk7XG4gICAgICAgICAgICAgICAgb3BlbkNvbW1lbnRzKCk7IFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdGhpcy5pbml0R3JpZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuc2J5U2VtaUVhZ2VyTG9hZGluZyAmJiBqUXVlcnkoJyNzYnlfbGlnaHRib3gnKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGZlZWQgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICBwbGF5ZXJJRCA9ICdzYnlfbGItcGxheWVyJztcbiAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCcjc2J5X2xpZ2h0Ym94JykuYWRkQ2xhc3MoJ3NieV92aWRlb19saWdodGJveCcpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoICEgd2luZG93LnNieU9wdGlvbnMuaXNQcm8gKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoJyNzYnlfbGlnaHRib3gnKS5hZGRDbGFzcygnc2J5X2xpZ2h0Ym94X2ZyZWUnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHZhciB2aWRlb0lEID0gJCh0aGlzLmVsKS5maW5kKCdzYnlfaXRlbScpLmZpcnN0KCkuYXR0cignZGF0YS12aWRlby1pZCcpLFxuICAgICAgICAgICAgICAgICAgICAgIGF1dG9wbGF5ID0gc2J5T3B0aW9ucy5hdXRvcGxheTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cuc2J5TGlnaHRib3hQbGF5ZXIgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXJncyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3N0OiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgKyBmZWVkLmVtYmVkVVJMLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvSWQ6IHZpZGVvSUQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxheWVyVmFyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2Rlc3RicmFuZGluZzogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvcGxheTogYXV0b3BsYXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50czoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb25TdGF0ZUNoYW5nZSc6IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmlkZW9JRCA9IGRhdGEudGFyZ2V0LmdldFZpZGVvRGF0YSgpWyd2aWRlb19pZCddO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVlZC5hZnRlclN0YXRlQ2hhbmdlKHBsYXllcklELCB2aWRlb0lELCBkYXRhLCAkKCcjJyArIHBsYXllcklEKS5jbG9zZXN0KCcuc2J5X3ZpZGVvX3RodW1ibmFpbF93cmFwJykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZlZWQubWF5YmVBZGRDVEEocGxheWVySUQpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2J5TGlnaHRib3hQbGF5ZXIgPSBuZXcgd2luZG93LllULlBsYXllcihwbGF5ZXJJRCwgYXJncyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB0aGlzLmluaXRDYXJvdXNlbHMgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgZmVlZCA9IHRoaXMsXG4gICAgICAgICAgICAgICAgICAkc2VsZiA9ICQodGhpcy5lbCk7XG5cbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMuc2V0dGluZ3MuZ2VuZXJhbC5jYXJvdXNlbCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgY29scyA9IHRoaXMuc2V0dGluZ3MuY29scyxcbiAgICAgICAgICAgICAgICAgIGNvbHNtb2JpbGUgPSB0aGlzLnNldHRpbmdzLmNvbHNtb2JpbGU7XG5cbiAgICAgICAgICAgICAgICAkc2VsZi5maW5kKCcuc2J5X2l0ZW1zX3dyYXAnKS5hZGRDbGFzcygnc2J5X2Nhcm91c2VsJyk7XG4gICAgICAgICAgICAgICAgJHNlbGYuZmluZCgnLnNieV9sb2FkX2J0bicpLnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgICRzZWxmLmZpbmQoJy5zYnlfaXRlbScpLmNzcyh7XG4gICAgICAgICAgICAgICAgICAgICdwYWRkaW5nLXRvcCcgOiAkc2VsZi5maW5kKCcuc2J5X2l0ZW1zX3dyYXAnKS5jc3MoJ3BhZGRpbmctdG9wJyksXG4gICAgICAgICAgICAgICAgICAgICdwYWRkaW5nLXJpZ2h0JyA6ICRzZWxmLmZpbmQoJy5zYnlfaXRlbXNfd3JhcCcpLmNzcygncGFkZGluZy10b3AnKSxcbiAgICAgICAgICAgICAgICAgICAgJ3BhZGRpbmctYm90dG9tJyA6ICRzZWxmLmZpbmQoJy5zYnlfaXRlbXNfd3JhcCcpLmNzcygncGFkZGluZy10b3AnKSxcbiAgICAgICAgICAgICAgICAgICAgJ3BhZGRpbmctbGVmdCcgOiAkc2VsZi5maW5kKCcuc2J5X2l0ZW1zX3dyYXAnKS5jc3MoJ3BhZGRpbmctdG9wJylcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAkc2VsZi5maW5kKCcuc2J5X2l0ZW0nKS5lYWNoKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmF0dHIoJ3N0eWxlJywkKHRoaXMpLmF0dHIoJ3N0eWxlJykucmVwbGFjZSgncGFkZGluZzogJyskc2VsZi5maW5kKCcuc2J5X2l0ZW1zX3dyYXAnKS5jc3MoJ3BhZGRpbmctdG9wJyksJ3BhZGRpbmc6ICcrJHNlbGYuZmluZCgnLnNieV9pdGVtc193cmFwJykuY3NzKCdwYWRkaW5nLXRvcCcpICsgJyAhaW1wb3J0YW50JykpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgdmFyIGFycm93cyA9IGZlZWQuc2V0dGluZ3MuZ2VuZXJhbC5jYXJvdXNlbFswXSxcbiAgICAgICAgICAgICAgICAgIHBhZ2luYXRpb24gPSBmZWVkLnNldHRpbmdzLmdlbmVyYWwuY2Fyb3VzZWxbMV0sXG4gICAgICAgICAgICAgICAgICBhdXRvcGxheSA9IGZlZWQuc2V0dGluZ3MuZ2VuZXJhbC5jYXJvdXNlbFsyXSxcbiAgICAgICAgICAgICAgICAgIHRpbWUgPSBmZWVkLnNldHRpbmdzLmdlbmVyYWwuY2Fyb3VzZWxbM10sXG4gICAgICAgICAgICAgICAgICBsb29wID0gZmVlZC5zZXR0aW5ncy5nZW5lcmFsLmNhcm91c2VsWzRdLFxuICAgICAgICAgICAgICAgICAgcm93cyA9IGZlZWQuc2V0dGluZ3MuZ2VuZXJhbC5jYXJvdXNlbFs1XTtcbiAgICAgICAgICAgICAgICAvL0luaXRpYXRlIGNhcm91c2VsXG4gICAgICAgICAgICAgICAgaWYoICFhdXRvcGxheSApIHRpbWUgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIC8vU2V0IGRlZmF1bHRzIGZvciByZXNwb25zaXZlIGJyZWFrcG9pbnRzXG4gICAgICAgICAgICAgICAgdmFyIGl0ZW1zVGFibGV0U21hbGwgPSBjb2xzLFxuICAgICAgICAgICAgICAgICAgaXRlbXNNb2JpbGUgPSBjb2xzLFxuICAgICAgICAgICAgICAgICAgYXJyb3dzID0gYXJyb3dzID8gJ29uaG92ZXInIDogJ2hpZGUnLFxuICAgICAgICAgICAgICAgICAgYXV0b3BsYXkgPSB0aW1lICE9PSBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIGhhczJyb3dzID0gKHJvd3MgPT0gMiksXG4gICAgICAgICAgICAgICAgICBsb29wID0gKCFsb29wKSxcbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICBmZWVkLmFmdGVyUmVzaXplKCk7XG4gICAgICAgICAgICAgICAgICAgICAgfSwgMSk7XG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgYWZ0ZXJJbml0ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdmFyICRzZWxmID0galF1ZXJ5KGZlZWQuZWwpO1xuICAgICAgICAgICAgICAgICAgICAgICRzZWxmLmZpbmQoJy5zYnlfaXRlbXNfd3JhcC5zYnlfY2Fyb3VzZWwnKS5mYWRlSW4oKTtcbiAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLmZpbmQoJy5zYnlfaXRlbXNfd3JhcC5zYnlfY2Fyb3VzZWwgLnNieV9pbmZvLCAuc2J5X293bDJyb3ctaXRlbSwuc2J5X2l0ZW1zX3dyYXAuc2J5X2Nhcm91c2VsJykuZmFkZUluKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICB9LCAxKTtcblxuICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgJG5hdkVsZW1lbnRzV3JhcHBlciA9ICRzZWxmLmZpbmQoJy5zYnktb3dsLW5hdicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXJyb3dzID09PSAnb25ob3ZlcicpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGFycm93cyA9PT0gJ2JlbG93Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyICRkb3RzID0gJHNlbGYuZmluZCgnLnNieS1vd2wtZG90cycpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcHJldiA9ICRzZWxmLmZpbmQoJy5zYnktb3dsLXByZXYnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5leHQgPSAkc2VsZi5maW5kKCcuc2J5LW93bC1uZXh0JyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuYXYgPSAkc2VsZi5maW5kKCcuc2J5LW93bC1uYXYnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRvdCA9ICRzZWxmLmZpbmQoJy5zYnktb3dsLWRvdCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aERvdHMgPSAkZG90Lmxlbmd0aCAqICRkb3QuaW5uZXJXaWR0aCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhXaWR0aCA9ICRzZWxmLmlubmVyV2lkdGgoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHByZXYuYWZ0ZXIoJGRvdHMpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbmF2LmNzcygncG9zaXRpb24nLCAncmVsYXRpdmUnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuZXh0LmNzcygncG9zaXRpb24nLCAnYWJzb2x1dGUnKS5jc3MoJ3RvcCcsICctNnB4JykuY3NzKCdyaWdodCcsIE1hdGgubWF4KCguNSAqICRuYXYuaW5uZXJXaWR0aCgpIC0gLjUgKiAod2lkdGhEb3RzKSAtICRuZXh0LmlubmVyV2lkdGgoKSAtIDYpLCAwKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcHJldi5jc3MoJ3Bvc2l0aW9uJywgJ2Fic29sdXRlJykuY3NzKCd0b3AnLCAnLTZweCcpLmNzcygnbGVmdCcsIE1hdGgubWF4KCguNSAqICRuYXYuaW5uZXJXaWR0aCgpIC0gLjUgKiAod2lkdGhEb3RzKSAtICRwcmV2LmlubmVyV2lkdGgoKSAtIDYpLCAwKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYXJyb3dzID09PSAnaGlkZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuYXZFbGVtZW50c1dyYXBwZXIuYWRkQ2xhc3MoJ2hpZGUnKS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIH0sIDEpO1xuICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIC8vRGlzYWJsZSBtb2JpbGUgbGF5b3V0XG4gICAgICAgICAgICAgICAgaWYoICRzZWxmLmhhc0NsYXNzKCdzYnlfbW9iX2NvbF9hdXRvJykgKSB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zVGFibGV0U21hbGwgPSAyO1xuICAgICAgICAgICAgICAgICAgICBpZiggcGFyc2VJbnQoY29scykgIT0gMiApIGl0ZW1zTW9iaWxlID0gMTtcbiAgICAgICAgICAgICAgICAgICAgaWYoIHBhcnNlSW50KGNvbHMpID09IDIgKSBpdGVtc01vYmlsZSA9IDI7IC8vSWYgdGhlIGNvbHMgYXJlIHNldCB0byAyIHRoZW4gZG9uJ3QgY2hhbmdlIHRvIDEgY29sIG9uIG1vYmlsZVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zTW9iaWxlID0gY29sc21vYmlsZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLmNhcm91c2VsQXJncyA9IHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbXM6IGNvbHMsXG4gICAgICAgICAgICAgICAgICAgIGxvb3A6IGxvb3AsXG4gICAgICAgICAgICAgICAgICAgIHJld2luZDogIWxvb3AsXG4gICAgICAgICAgICAgICAgICAgIGF1dG9wbGF5OiBhdXRvcGxheSxcbiAgICAgICAgICAgICAgICAgICAgYXV0b3BsYXlUaW1lb3V0OiBNYXRoLm1heCh0aW1lLDIwMDApLFxuICAgICAgICAgICAgICAgICAgICBhdXRvcGxheUhvdmVyUGF1c2U6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIG5hdjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgbmF2VGV4dDogWyc8c3ZnIGNsYXNzPVwic3ZnLWlubGluZS0tZmEgZmEtY2hldnJvbi1sZWZ0IGZhLXctMTBcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBkYXRhLWZhLXByb2Nlc3NlZD1cIlwiIGRhdGEtcHJlZml4PVwiZmFcIiBkYXRhLWljb249XCJjaGV2cm9uLWxlZnRcIiByb2xlPVwicHJlc2VudGF0aW9uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMzIwIDUxMlwiPjxwYXRoIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBkPVwiTTM0LjUyIDIzOS4wM0wyMjguODcgNDQuNjljOS4zNy05LjM3IDI0LjU3LTkuMzcgMzMuOTQgMGwyMi42NyAyMi42N2M5LjM2IDkuMzYgOS4zNyAyNC41Mi4wNCAzMy45TDEzMS40OSAyNTZsMTU0LjAyIDE1NC43NWM5LjM0IDkuMzggOS4zMiAyNC41NC0uMDQgMzMuOWwtMjIuNjcgMjIuNjdjLTkuMzcgOS4zNy0yNC41NyA5LjM3LTMzLjk0IDBMMzQuNTIgMjcyLjk3Yy05LjM3LTkuMzctOS4zNy0yNC41NyAwLTMzLjk0elwiPjwvcGF0aD48L3N2Zz4nLCAnPHN2ZyBjbGFzcz1cInN2Zy1pbmxpbmUtLWZhIGZhLWNoZXZyb24tcmlnaHQgZmEtdy0xMFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGRhdGEtZmEtcHJvY2Vzc2VkPVwiXCIgZGF0YS1wcmVmaXg9XCJmYVwiIGRhdGEtaWNvbj1cImNoZXZyb24tcmlnaHRcIiByb2xlPVwicHJlc2VudGF0aW9uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMzIwIDUxMlwiPjxwYXRoIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBkPVwiTTI4NS40NzYgMjcyLjk3MUw5MS4xMzIgNDY3LjMxNGMtOS4zNzMgOS4zNzMtMjQuNTY5IDkuMzczLTMzLjk0MSAwbC0yMi42NjctMjIuNjY3Yy05LjM1Ny05LjM1Ny05LjM3NS0yNC41MjItLjA0LTMzLjkwMUwxODguNTA1IDI1NiAzNC40ODQgMTAxLjI1NWMtOS4zMzUtOS4zNzktOS4zMTctMjQuNTQ0LjA0LTMzLjkwMWwyMi42NjctMjIuNjY3YzkuMzczLTkuMzczIDI0LjU2OS05LjM3MyAzMy45NDEgMEwyODUuNDc1IDIzOS4wM2M5LjM3MyA5LjM3MiA5LjM3MyAyNC41NjguMDAxIDMzLjk0MXpcIj48L3BhdGg+PC9zdmc+J10sXG4gICAgICAgICAgICAgICAgICAgIGRvdHM6IHBhZ2luYXRpb24sXG4gICAgICAgICAgICAgICAgICAgIG93bDJyb3c6IGhhczJyb3dzLFxuICAgICAgICAgICAgICAgICAgICByZXNwb25zaXZlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAwOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6IGl0ZW1zTW9iaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgNDgwOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6IGl0ZW1zVGFibGV0U21hbGxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICA2NDA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtczogY29sc1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogb25DaGFuZ2UsXG4gICAgICAgICAgICAgICAgICAgIG9uSW5pdGlhbGl6ZTogYWZ0ZXJJbml0XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdGhpcy5zdHJpcEVtb2ppaHRtbCA9IGZ1bmN0aW9uICgkZWwpIHtcbiAgICAgICAgICAgICAgICAkZWwuZmluZCgnLmVtb2ppJykuZWFjaChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5yZXBsYWNlV2l0aCgkKHRoaXMpLmF0dHIoJ2FsdCcpKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHJldHVybiAkZWwuaHRtbCgpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdGhpcy5hZnRlckl0ZW1SZXZlYWxlZCA9IGZ1bmN0aW9uKCRpdGVtKSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgZmVlZCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgaWYgKCRpdGVtLmZpbmQoJy5zYnlfY2FwdGlvbicpLmxlbmd0aCAmJiAhICRpdGVtLmZpbmQoJy5zYnlfY2FwdGlvbicpLmhhc0NsYXNzKCdzYnlfZnVsbF9jYXB0aW9uJykpIHtcbiAgICAgICAgICAgICAgICAgICAgLy9FeHBhbmQgcG9zdFxuICAgICAgICAgICAgICAgICAgICB2YXIgJGNhcHRpb24gPSAkaXRlbS5maW5kKCcuc2J5X2l0ZW1fY2FwdGlvbl93cmFwIC5zYnlfY2FwdGlvbicpLFxuICAgICAgICAgICAgICAgICAgICAgICRob3ZlckNhcHRpb24gPSAkaXRlbS5maW5kKCcuc2J5X2l0ZW1fdmlkZW9fdGh1bWJuYWlsIC5zYnlfY2FwdGlvbicpLFxuICAgICAgICAgICAgICAgICAgICAgIHRleHRfbGltaXQgPSB0eXBlb2YgZmVlZC5zZXR0aW5ncy5nZW5lcmFsLmRlc2NyaXB0aW9ubGVuZ3RoICE9PSAndW5kZWZpbmVkJyA/IHBhcnNlSW50KGZlZWQuc2V0dGluZ3MuZ2VuZXJhbC5kZXNjcmlwdGlvbmxlbmd0aCkgOiAxNTA7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ZXh0X2xpbWl0IDwgMSkgdGV4dF9saW1pdCA9IDk5OTk5O1xuICAgICAgICAgICAgICAgICAgICAvL1NldCB0aGUgZnVsbCB0ZXh0IHRvIGJlIHRoZSBjYXB0aW9uICh1c2VkIGluIHRoZSBpbWFnZSBhbHQpXG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIGNhcHRpb25UZXh0ID0gdGhpcy5zdHJpcEVtb2ppaHRtbCgkaXRlbS5maW5kKCcuc2J5X2NhcHRpb24nKS5maXJzdCgpKSxcbiAgICAgICAgICAgICAgICAgICAgICBickNvdW50ID0gKGNhcHRpb25UZXh0Lm1hdGNoKC88YnI+L2cpIHx8IFtdKS5sZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgICAgYnJBZGp1c3QgPSAodHlwZW9mIHNieU9wdGlvbnMuYnJBZGp1c3QgPT09ICd1bmRlZmluZWQnIHx8IHNieU9wdGlvbnMuYnJBZGp1c3QgPT09ICcxJyB8fCBzYnlPcHRpb25zLmJyQWRqdXN0ID09PSB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAvLyBjb21tZW50IG91dCB1bm5lY2Vzc2FyeSBjb2RlIHRoYXQgc3RyaXBlcyBvdXQgdGV4dCBsaW1pdCB3aXRoIHdyb25nIHRleHQgbGltaXRcbiAgICAgICAgICAgICAgICAgICAgLy8gcmVwbGFjZSBlbW9qaSB3aXRoIGFsdCBmb3IgbW9yZSBhY2N1cmF0ZSBzaG9ydGVuaW5nXG4vLyAgICAgICAgICAgICAgICAgICAgIGlmIChickFkanVzdCAmJiBickNvdW50ID4gMCAmJiBjYXB0aW9uVGV4dC5pbmRleE9mKCc8YnI+JykgPCB0ZXh0X2xpbWl0KSB7XG4vLyAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgJHNpemluZ0NhcHRpb24gPSAkaXRlbS5maW5kKCcuc2J5X3ZpZGVvX3RpdGxlJykuZmlyc3QoKTtcbi8vICAgICAgICAgICAgICAgICAgICAgICAgIGNhcHRpb25XaWR0aCA9ICRzaXppbmdDYXB0aW9uLndpZHRoKCkgPiAyMCA/ICRzaXppbmdDYXB0aW9uLndpZHRoKCkgOiAkaXRlbS53aWR0aCgpLFxuLy8gICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZSA9ICRzaXppbmdDYXB0aW9uLmNzcygnZm9udC1zaXplJyksXG4vLyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnNQZXJMaW5lID0gY2FwdGlvbldpZHRoIC8gcGFyc2VJbnQoZm9udFNpemUpICogMS44NSxcbi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Q2hhcnNQZXJMaW5lID0gTWF0aC5mbG9vcihjaGFyYWN0ZXJzUGVyTGluZSksXG4vLyAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RlZE1heExpbmVzID0gTWF0aC5jZWlsKHRleHRfbGltaXQgLyBjaGFyYWN0ZXJzUGVyTGluZSk7XG4vLyAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3BsaXRDYXB0aW9uID0gY2FwdGlvblRleHQuc3BsaXQoJzxicj4nKSxcbi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZXNDb25zdW1lZCA9IDAsXG4vLyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkanVzdGVkVGV4dExpbWl0ID0gMDtcbi8vICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5lYWNoKHNwbGl0Q2FwdGlvbiwgZnVuY3Rpb24gKCkge1xuLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsaW5lc0xlZnQgPSBwcm9qZWN0ZWRNYXhMaW5lcyAtIGxpbmVzQ29uc3VtZWQ7XG4vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmVzTGVmdCA+IDApIHtcbi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRoaXNMaW5lc0NvbnN1bWVkID0gTWF0aC5tYXgoMSwgTWF0aC5jZWlsKHRoaXMubGVuZ3RoIC8gY2hhcmFjdGVyc1BlckxpbmUpKTtcbi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRqdXN0ZWRUZXh0TGltaXQgKz0gTWF0aC5taW4odGhpcy5sZW5ndGggKyA0LCBsaW5lc0xlZnQgKiBtYXhDaGFyc1BlckxpbmUpO1xuLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lc0NvbnN1bWVkICs9IHRoaXNMaW5lc0NvbnN1bWVkO1xuLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbi8vICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuLy8gICAgICAgICAgICAgICAgICAgICAgICAgdGV4dF9saW1pdCA9IGFkanVzdGVkVGV4dExpbWl0O1xuLy8gICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHZhciBzaG9ydF90ZXh0ID0gY2FwdGlvblRleHQuc3Vic3RyaW5nKDAsIHRleHRfbGltaXQpO1xuICAgICAgICAgICAgICAgICAgICBzaG9ydF90ZXh0ID0gY2FwdGlvblRleHQubGVuZ3RoID4gdGV4dF9saW1pdCA/IHNob3J0X3RleHQuc3Vic3RyKDAsIE1hdGgubWluKHNob3J0X3RleHQubGVuZ3RoLCBzaG9ydF90ZXh0Lmxhc3RJbmRleE9mKFwiIFwiKSkpIDogc2hvcnRfdGV4dDtcblxuXG4gICAgICAgICAgICAgICAgICAgIC8vQ3V0IHRoZSB0ZXh0IGJhc2VkIG9uIGxpbWl0cyBzZXRcbiAgICAgICAgICAgICAgICAgICAgaWYgKCRjYXB0aW9uLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgJGNhcHRpb24uaHRtbChzYnlMaW5raWZ5KHNob3J0X3RleHQpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzaG9ydF90ZXh0ID09PSBjYXB0aW9uVGV4dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjYXB0aW9uLm5leHQoJy5zYnlfZXhwYW5kJykucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKCRob3ZlckNhcHRpb24ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaG92ZXJDYXB0aW9uVGV4dCA9IHNob3J0X3RleHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2hvcnRfdGV4dCAhPT0gY2FwdGlvblRleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3ZlckNhcHRpb25UZXh0ICs9ICc8c3BhbiBjbGFzcz1cInNieV9tb3JlXCI+Li4uPC9zcGFuPic7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAkaG92ZXJDYXB0aW9uLmh0bWwoaG92ZXJDYXB0aW9uVGV4dCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvL1Nob3cgdGhlICdTZWUgTW9yZScgbGluayBpZiBuZWVkZWRcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNhcHRpb25UZXh0Lmxlbmd0aCA+IHRleHRfbGltaXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICRpdGVtLmZpbmQoJy5zYnlfZXhwYW5kJykuc2hvdygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vQ2xpY2sgZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgJGl0ZW0uZmluZCgnLnNieV9leHBhbmQgYScpLm9mZignY2xpY2snKS5vbignY2xpY2snLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyICRleHBhbmQgPSBqUXVlcnkodGhpcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAkY2FwdGlvbiA9IHR5cGVvZiAkY2FwdGlvbiAhPT0gJ3VuZGVmaW5lZCcgPyAkY2FwdGlvbiA6ICRpdGVtLmZpbmQoJy5zYnlfaW5mbyAuc2J5X2NhcHRpb24nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhcHRpb25UZXh0ID0gdHlwZW9mIGNhcHRpb250ZXh0ICE9PSAndW5kZWZpbmVkJyA/IGNhcHRpb25UZXh0IDogc2J5RW5jb2RlSW5wdXQoJGl0ZW0uZmluZCgnLnNieV9pdGVtX3ZpZGVvX3RodW1ibmFpbCcpLmF0dHIoJ2RhdGEtdGl0bGUnKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGl0ZW0uaGFzQ2xhc3MoJ3NieV9jYXB0aW9uX2Z1bGwnKSAmJiB0eXBlb2Ygc2hvcnRfdGV4dCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY2FwdGlvbi5odG1sKHNob3J0X3RleHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpdGVtLnJlbW92ZUNsYXNzKCdzYnlfY2FwdGlvbl9mdWxsJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjYXB0aW9uLmh0bWwoc2J5TGlua2lmeShjYXB0aW9uVGV4dCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpdGVtLmFkZENsYXNzKCdzYnlfY2FwdGlvbl9mdWxsJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBmZWVkLmFmdGVyUmVzaXplKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuc2V0VXBDVEEoJGl0ZW0pO1xuXG4gICAgICAgICAgICAgICAgLy9QaG90byBsaW5rc1xuICAgICAgICAgICAgICAgIC8vSWYgbGlnaHRib3ggaXMgZGlzYWJsZWRcbiAgICAgICAgICAgICAgICB2YXIgZGlzYWJsZWxpZ2h0Ym94ID0gdHlwZW9mIGZlZWQuc2V0dGluZ3MuZ2VuZXJhbC5kaXNhYmxlbGlnaHRib3ggIT09ICd1bmRlZmluZWQnID8gZmVlZC5zZXR0aW5ncy5nZW5lcmFsLmRpc2FibGVsaWdodGJveCA6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgY2FwdGlvbmxpbmtzID0gdHlwZW9mIGZlZWQuc2V0dGluZ3MuZ2VuZXJhbC5jYXB0aW9ubGlua3MgIT09ICd1bmRlZmluZWQnID8gZmVlZC5zZXR0aW5ncy5nZW5lcmFsLmNhcHRpb25saW5rcyA6IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlmKCBkaXNhYmxlbGlnaHRib3ggfHwgY2FwdGlvbmxpbmtzICl7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNhcHRpb25saW5rcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gc2J5VXJsRGV0ZWN0KHRleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsUmVnZXggPSAvaHR0cHM/OlxcL1xcLyh3d3dcXC4pP1stYS16QS1aMC05QDolLl9cXCt+Iz1dezIsMjU2fVxcLlthLXpdezIsNn1cXGIoWy1hLXpBLVowLTlAOiVfXFwrLn4jPyYvLz1dKikvZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGV4dC5tYXRjaCh1cmxSZWdleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjYXAgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgJGl0ZW0uZmluZCgnaW1nJykuYXR0cignYWx0JykgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FwID0gJGl0ZW0uZmluZCgnaW1nJykuYXR0cignYWx0Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiAkaXRlbS5maW5kKCd2aWRlbycpLmF0dHIoJ2FsdCcpICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcCA9ICRpdGVtLmZpbmQoJ3ZpZGVvJykuYXR0cignYWx0Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBzYnlVcmxEZXRlY3QoY2FwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHVybCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpdGVtLmZpbmQoJ2EnKS5hdHRyKCdocmVmJywgdXJsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAkaXRlbS5maW5kKCcuc2J5X2xpbmsnKS5hZGRDbGFzcygnc2J5X2Rpc2FibGVfbGlnaHRib3gnKTtcbiAgICAgICAgICAgICAgICAgICAgLy9JZiBsaWdodGJveCBpcyBlbmFibGVkIGFkZCBsaWdodGJveCBsaW5rc1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyICRzYnlfcGhvdG9fd3JhcCA9ICRpdGVtLmZpbmQoJy5zYnlfcGhvdG9fd3JhcCcpLFxuICAgICAgICAgICAgICAgICAgICAgICRzYnlfbGluayA9ICRzYnlfcGhvdG9fd3JhcC5maW5kKCcuc2J5X2xpbmsnKTtcbiAgICAgICAgICAgICAgICAgICAgZmVlZE9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBob3ZlcmVmZmVjdDogJ3RydWUnXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIGlmKGZlZWRPcHRpb25zLmhvdmVyZWZmZWN0ID09ICdub25lJyl7XG4gICAgICAgICAgICAgICAgICAgICAgICAvL2xhdW5jaCBsaWdodGJveCBvbiBjbGlja1xuICAgICAgICAgICAgICAgICAgICAgICAgJHNieV9saW5rLmNzcygnYmFja2dyb3VuZCcsICdub25lJykuc2hvdygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgJHNieV9saW5rLmZpbmQoJyonKS5oaWRlKCkuZW5kKCkuZmluZCgnLnNieV9saW5rX2FyZWEnKS5zaG93KCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkc2J5X3Bob3RvX3dyYXAub24oJ21vdXNlZW50ZXIgbW91c2VsZWF2ZScsIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2goZS50eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ21vdXNlZW50ZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGl0ZW0uYWRkQ2xhc3MoJ3NieV9hbmltYXRlJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbW91c2VsZWF2ZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaXRlbS5yZW1vdmVDbGFzcygnc2J5X2FuaW1hdGUnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciB2aWRlb0lEID0gdHlwZW9mICRpdGVtLmF0dHIoJ2RhdGEtdmlkZW8taWQnKSAhPT0gJ3VuZGVmaW5lZCcgPyAkaXRlbS5hdHRyKCdkYXRhLXZpZGVvLWlkJykgOiAkaXRlbS5maW5kKCcuc2J5X3ZpZGVvX3RodW1ibmFpbCcpLmF0dHIoJ2RhdGEtdmlkZW8taWQnKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1vc3RSZWNlbnRseUxvYWRlZFBvc3RzLnB1c2godmlkZW9JRCk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB0aGlzLmFmdGVyRmVlZFNldCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5jYXJvdXNlbEFyZ3MgIT09ICd1bmRlZmluZWQnICkge1xuICAgICAgICAgICAgICAgICAgICAkKHRoaXMuZWwpLmZpbmQoJy5zYnlfY2Fyb3VzZWwnKS5zYnlPd2xDYXJvdXNlbCh0aGlzLmNhcm91c2VsQXJncyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwYXJzZUludCh0aGlzLnNldHRpbmdzLmdlbmVyYWwuY2Fyb3VzZWxbNV0pID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMuZWwpLmFkZENsYXNzKCdzYnlfY2Fyb3VzZWxfMl9yb3cnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdGhpcy5zZXRVcENUQSA9IGZ1bmN0aW9uKCRpdGVtLHZpZGVvSUQpIHtcbiAgICAgICAgICAgICAgICAvL3dpbmRvdy5zYnkuY3Rhc1xuXG4gICAgICAgICAgICAgICAgdmFyIHZpZGVvSUQgPSB0eXBlb2YgdmlkZW9JRCAhPT0gJ3VuZGVmaW5lZCcgPyB2aWRlb0lEIDogJGl0ZW0uZmluZCgnLnNieV9pdGVtX3ZpZGVvX3RodW1ibmFpbCcpLmF0dHIoJ2RhdGEtdmlkZW8taWQnKSxcbiAgICAgICAgICAgICAgICAgIHRleHQgPSBzYnlFbmNvZGVJbnB1dCh0eXBlb2YgJGl0ZW0uZmluZCgnLnNieV9pdGVtX3ZpZGVvX3RodW1ibmFpbCcpLmF0dHIoJ2RhdGEtdGl0bGUnKSAhPT0gJ3VuZGVmaW5lZCcgPyAkaXRlbS5maW5kKCcuc2J5X2l0ZW1fdmlkZW9fdGh1bWJuYWlsJykuYXR0cignZGF0YS10aXRsZScpIDogJycpLFxuICAgICAgICAgICAgICAgICAgY3RhSW5DYXB0aW9uID0gd2luZG93LnNieS5jdGFEZXRlY3QodGV4dCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoY3RhSW5DYXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zYnkuY3Rhc1t2aWRlb0lEXSA9IGN0YUluQ2FwdGlvbjtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2J5LmN0YXNbdmlkZW9JRF0gPSB0aGlzLmdldERlZmF1bHRDVEEoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB0aGlzLmdldERlZmF1bHRDVEEgPSBmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5zZXR0aW5ncy5nZW5lcmFsLmN0YSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5zZXR0aW5ncy5nZW5lcmFsLmN0YS50eXBlICE9PSAnZGVmYXVsdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2V0dGluZ3MuZ2VuZXJhbC5jdGEudHlwZSA9PT0gJ2xpbmsnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiAnbGluaycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiB0aGlzLnNldHRpbmdzLmdlbmVyYWwuY3RhLmRlZmF1bHRMaW5rLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IHRoaXMuc2V0dGluZ3MuZ2VuZXJhbC5jdGEuZGVmYXVsdFRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiAncmVsYXRlZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRlZDogdGhpcy5zZXR0aW5ncy5nZW5lcmFsLmN0YS5kZWZhdWx0UG9zdHNcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB0aGlzLmFmdGVyUmVzaXplID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRJbWFnZUhlaWdodCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0SW1hZ2VSZXNvbHV0aW9uKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5tYXliZVJhaXNlSW1hZ2VSZXNvbHV0aW9uKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRJbWFnZVNpemVDbGFzcygpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0QWxsQ1RBRGltZW5zaW9ucygpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2l6ZVBsYXllcigpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2l6ZUl0ZW1zKCk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB0aGlzLnNldEFsbENUQURpbWVuc2lvbnMgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAkLmVhY2godGhpcy5DVEEsIGZ1bmN0aW9uKGluZGV4LCBDVEFPYmopIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKENUQU9iai5pc0luaXRpYWxpemVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBDVEFPYmouc2V0Q1RBU3R5bGVzKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHRoaXMuYWZ0ZXJTZW5kQ2hlY2tXUFBvc3RzVG9TZXJ2ZXIgPSBmdW5jdGlvbihyZXNwb25zZSl7XG4gICAgICAgICAgICAgICAgdmFyICRzZWxmID0gJCh0aGlzLmVsKTtcblxuICAgICAgICAgICAgICAgICRzZWxmLmZpbmQoJy5zYnlfaXRlbScpLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcmVzcG9uc2VbICQodGhpcykuYXR0cignZGF0YS12aWRlby1pZCcpIF0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IHJlc3BvbnNlWyAkKHRoaXMpLmF0dHIoJ2RhdGEtdmlkZW8taWQnKSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy9zYnlfdmlld3NfY291bnRcbiAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuZmluZCgnLnNieV92aWV3X2NvdW50JykudGV4dChkYXRhLnNieV92aWV3X2NvdW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuZmluZCgnLnNieV9jb21tZW50X2NvdW50JykudGV4dChkYXRhLnNieV9jb21tZW50X2NvdW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuZmluZCgnLnNieV9saWtlX2NvdW50JykudGV4dChkYXRhLnNieV9saWtlX2NvdW50KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy9TZXQgZm9yIGF0dHJpYnV0ZXMgdG9vLlxuICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5maW5kKCcuc2J5X3ZpZGVvX3RodW1ibmFpbCcpLmF0dHIoJ2RhdGEtdmlld3MnLGRhdGEuc2J5X3ZpZXdfY291bnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5maW5kKCcuc2J5X3ZpZGVvX3RodW1ibmFpbCcpLmF0dHIoJ2RhdGEtY29tbWVudC1jb3VudCcsIGRhdGEuc2J5X2NvbW1lbnRfY291bnQpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5zYnlfbGl2ZV9icm9hZGNhc3QuYnJvYWRjYXN0X3R5cGUgIT09ICdub25lJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuZmluZCgnLnNieV9sc19tZXNzYWdlJykudGV4dChkYXRhLnNieV9saXZlX2Jyb2FkY2FzdC5saXZlX3N0cmVhbWluZ19zdHJpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuZmluZCgnLnNieV9kYXRlJykuaHRtbChkYXRhLnNieV9saXZlX2Jyb2FkY2FzdC5saXZlX3N0cmVhbWluZ19kYXRlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZGF0YS5zYnlfbGl2ZV9icm9hZGNhc3QubGl2ZV9zdHJlYW1pbmdfdGltZXN0YW1wICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuYXR0cignZGF0YS1saXZlLWRhdGUnLGRhdGEuc2J5X2xpdmVfYnJvYWRjYXN0LmxpdmVfc3RyZWFtaW5nX3RpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGRhdGEuc2J5X2Rlc2NyaXB0aW9uICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuZmluZCgnLnNieV9pdGVtX3ZpZGVvX3RodW1ibmFpbCcpLmF0dHIoJ2RhdGEtdGl0bGUnLCBzYnlFbmNvZGVJbnB1dChkYXRhLnNieV9kZXNjcmlwdGlvbikgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgJHNlbGYuZmluZCgnLnNieV9wbGF5ZXJfaXRlbScpLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcmVzcG9uc2VbICQodGhpcykuZmluZCgnLnNieV92aWRlb190aHVtYm5haWwnKS5hdHRyKCdkYXRhLXZpZGVvLWlkJykgXSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkYXRhID0gcmVzcG9uc2VbICQodGhpcykuZmluZCgnLnNieV92aWRlb190aHVtYm5haWwnKS5hdHRyKCdkYXRhLXZpZGVvLWlkJykgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuZmluZCgnLnNieV92aWV3X2NvdW50JykudGV4dChkYXRhLnNieV92aWV3X2NvdW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuZmluZCgnLnNieV9jb21tZW50X2NvdW50JykudGV4dChkYXRhLnNieV9jb21tZW50X2NvdW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykuZmluZCgnLnNieV9saWtlX2NvdW50JykudGV4dChkYXRhLnNieV9saWtlX2NvdW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnNieV9saXZlX2Jyb2FkY2FzdC5icm9hZGNhc3RfdHlwZSAhPT0gJ25vbmUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5maW5kKCcuc2J5X2xzX21lc3NhZ2UnKS50ZXh0KGRhdGEuc2J5X2xpdmVfYnJvYWRjYXN0LmxpdmVfc3RyZWFtaW5nX3N0cmluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5maW5kKCcuc2J5X2RhdGUnKS5odG1sKGRhdGEuc2J5X2xpdmVfYnJvYWRjYXN0LmxpdmVfc3RyZWFtaW5nX2RhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkYXRhLnNieV9saXZlX2Jyb2FkY2FzdC5saXZlX3N0cmVhbWluZ190aW1lc3RhbXAgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hdHRyKCdkYXRhLWxpdmUtZGF0ZScsZGF0YS5zYnlfbGl2ZV9icm9hZGNhc3QubGl2ZV9zdHJlYW1pbmdfdGltZXN0YW1wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgdmFyIGV2dCA9IGpRdWVyeS5FdmVudCgnc2J5YWZ0ZXJjaGVja3Bvc3RzJyk7XG4gICAgICAgICAgICAgICAgZXZ0LmZlZWQgPSB3aW5kb3cuc2J5LmZlZWRzW2luZGV4XTtcbiAgICAgICAgICAgICAgICBldnQucmVzcG9uc2UgPSByZXNwb25zZTtcbiAgICAgICAgICAgICAgICBqUXVlcnkod2luZG93KS50cmlnZ2VyKGV2dCk7XG5cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHRoaXMuYWZ0ZXJTdGF0ZUNoYW5nZSA9IGZ1bmN0aW9uKHBsYXllcklELHZpZGVvSUQsZGF0YSwkcGxheWVyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5DVEFbcGxheWVySURdLnRvZ2dsZUNUQSh2aWRlb0lELGRhdGEuZGF0YSwkcGxheWVyKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHRoaXMuY2hhbmdlUGxheWVySW5mbyA9IGZ1bmN0aW9uKCRuZXdJdGVtKSB7XG4gICAgICAgICAgICAgICAgdmFyICRzZWxmID0gJCh0aGlzLmVsKTtcbiAgICAgICAgICAgICAgICAkc2VsZi5maW5kKCcuc2J5X3BsYXllcl9pdGVtJykuZmluZCgnLnNieV9pbmZvJykucmVwbGFjZVdpdGgoXG4gICAgICAgICAgICAgICAgICAkbmV3SXRlbS5maW5kKCcuc2J5X2luZm8nKS5jbG9uZSh0cnVlLHRydWUpXG4gICAgICAgICAgICAgICAgKTtcbiBcbiAgICAgICAgICAgICAgICBjb25zdCB2aWRlb1RpdGxlID0gY2hlY2tWYWx1ZSgkbmV3SXRlbS5hdHRyKCdkYXRhLXZpZGVvLXRpdGxlJykpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHZpZGVvUHVibGlzaERhdGEgPSBjaGVja1ZhbHVlKCRuZXdJdGVtLmZpbmQoJy5zYnlfdmlkZW9fdGh1bWJuYWlsJykuYXR0cignZGF0YS1mb3JtYXR0ZWQtcHVibGlzaGVkLWRhdGUnKSkgO1xuXG4gICAgICAgICAgICAgICAgJHNlbGYuZmluZCgnLnNieS1wbGF5ZXItaW5mbyAuc2J5LXZpZGVvLWhlYWRlci1pbmZvIC5zYnktdmlkZW8taW5mby1oZWFkZXIgaDUnKS50ZXh0KCB2aWRlb1RpdGxlICk7XG4gICAgICAgICAgICAgICAgJHNlbGYuZmluZCgnLnNieS1wbGF5ZXItaW5mbyAuc2J5LXZpZGVvLWhlYWRlci1tZXRhIC5zYnktdmlkZW8tZGF0ZScpLnRleHQoIHZpZGVvUHVibGlzaERhdGEgKTtcblxuICAgICAgICAgICAgICAgIHJlc2V0Q29tbWVudHMoJHNlbGYpO1xuICAgICAgICAgICAgICAgIG9wZW5Db21tZW50cygpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdGhpcy5tYXliZUFkZENUQSA9IGZ1bmN0aW9uKHBsYXllcklELCRlbCkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5DVEFbcGxheWVySURdID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLkNUQVtwbGF5ZXJJRF0gPSBuZXcgU2J5Q1RBKHBsYXllcklELHRoaXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBTYnlGZWVkUHJvLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU2J5RmVlZC5wcm90b3R5cGUpO1xuXG4gICAgICAgIGZ1bmN0aW9uIFNieUxpZ2h0Ym94QnVpbGRlcigpIHt9XG5cbiAgICAgICAgU2J5TGlnaHRib3hCdWlsZGVyLnByb3RvdHlwZSA9IHtcbiAgICAgICAgICAgIGdldERhdGE6IGZ1bmN0aW9uKGEpe1xuICAgICAgICAgICAgICAgIHZhciBjbG9zZXN0RmVlZEluZGV4ID0gcGFyc2VJbnQoYS5jbG9zZXN0KCcuc2JfeW91dHViZScpLmF0dHIoJ2RhdGEtc2J5LWluZGV4JyktMSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgZmVlZEluZGV4IDogY2xvc2VzdEZlZWRJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgbGluazogYS5hdHRyKFwiaHJlZlwiKSxcbiAgICAgICAgICAgICAgICAgICAgdmlkZW9UaXRsZTogdHlwZW9mIGEuYXR0cihcImRhdGEtdmlkZW8tdGl0bGVcIikgIT09ICd1bmRlZmluZWQnID8gc2J5RW5jb2RlSW5wdXQoYS5hdHRyKFwiZGF0YS12aWRlby10aXRsZVwiKSkgOiAnWW91VHViZSBWaWRlbycsXG4gICAgICAgICAgICAgICAgICAgIHZpZGVvOiBhLmF0dHIoXCJkYXRhLXZpZGVvLWlkXCIpLFxuICAgICAgICAgICAgICAgICAgICBjaGFubmVsSUQ6IGEuYXR0cihcImRhdGEtY2hhbm5lbC1pZFwiKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZW1wbGF0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBcIjxkaXYgaWQ9J3NieV9saWdodGJveE92ZXJsYXknIGNsYXNzPSdzYnlfbGlnaHRib3hPdmVybGF5Jz48L2Rpdj5cIitcbiAgICAgICAgICAgICAgICAgIFwiPGRpdiBpZD0nc2J5X2xpZ2h0Ym94JyBjbGFzcz0nc2J5X2xpZ2h0Ym94Jz5cIitcbiAgICAgICAgICAgICAgICAgIFwiPGRpdiBjbGFzcz0nc2J5X2xiLW91dGVyQ29udGFpbmVyJz5cIitcbiAgICAgICAgICAgICAgICAgIFwiPGRpdiBjbGFzcz0nc2J5X2xiLWNvbnRhaW5lcic+XCIrXG4gICAgICAgICAgICAgICAgICBcIjxpbWcgY2xhc3M9J3NieV9sYi1pbWFnZScgYWx0PSdMaWdodGJveCBpbWFnZSBwbGFjZWhvbGRlcicgc3JjPScnIC8+XCIrXG4gICAgICAgICAgICAgICAgICBcIjxkaXYgY2xhc3M9J3NieV9sYi1wbGF5ZXIgc2J5X2xiLXBsYXllci1wbGFjZWhvbGRlcicgaWQ9J3NieV9sYi1wbGF5ZXInPjwvZGl2PlwiICtcbiAgICAgICAgICAgICAgICAgIFwiPGRpdiBjbGFzcz0nc2J5X2xiLW5hdic+PGEgY2xhc3M9J3NieV9sYi1wcmV2JyBocmVmPScjJyA+PHAgY2xhc3M9J3NieS1zY3JlZW5yZWFkZXInPlByZXZpb3VzIFNsaWRlPC9wPjxzcGFuPjwvc3Bhbj48L2E+PGEgY2xhc3M9J3NieV9sYi1uZXh0JyBocmVmPScjJyA+PHAgY2xhc3M9J3NieS1zY3JlZW5yZWFkZXInPk5leHQgU2xpZGU8L3A+PHNwYW4+PC9zcGFuPjwvYT48L2Rpdj5cIitcbiAgICAgICAgICAgICAgICAgIFwiPGRpdiBjbGFzcz0nc2J5X2xiLWxvYWRlcic+PGEgY2xhc3M9J3NieV9sYi1jYW5jZWwnPjwvYT48L2Rpdj5cIitcbiAgICAgICAgICAgICAgICAgIFwiPC9kaXY+XCIrXG4gICAgICAgICAgICAgICAgICBcIjwvZGl2PlwiK1xuICAgICAgICAgICAgICAgICAgXCI8ZGl2IGNsYXNzPSdzYnlfbGItZGF0YUNvbnRhaW5lcic+XCIrXG4gICAgICAgICAgICAgICAgICBcIjxkaXYgY2xhc3M9J3NieV9sYi1kYXRhJz5cIitcbiAgICAgICAgICAgICAgICAgIFwiPGRpdiBjbGFzcz0nc2J5X2xiLWRldGFpbHMnPlwiK1xuICAgICAgICAgICAgICAgICAgXCI8ZGl2IGNsYXNzPSdzYnlfbGItY2FwdGlvbic+PC9kaXY+XCIrXG4gICAgICAgICAgICAgICAgICBcIjxkaXYgY2xhc3M9J3NieV9sYi1pbmZvJz5cIitcbiAgICAgICAgICAgICAgICAgIFwiPGRpdiBjbGFzcz0nc2J5X2xiLW51bWJlcic+PC9kaXY+XCIrXG4gICAgICAgICAgICAgICAgICBcIjwvZGl2PlwiK1xuICAgICAgICAgICAgICAgICAgXCI8L2Rpdj5cIitcbiAgICAgICAgICAgICAgICAgIFwiPGRpdiBjbGFzcz0nc2J5X2xiLWNsb3NlQ29udGFpbmVyJz48YSBjbGFzcz0nc2J5X2xiLWNsb3NlJz48L2E+PC9kaXY+XCIrXG4gICAgICAgICAgICAgICAgICBcIjwvZGl2PlwiK1xuICAgICAgICAgICAgICAgICAgXCI8L2Rpdj5cIitcbiAgICAgICAgICAgICAgICAgIFwiPC9kaXY+XCI7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYmVmb3JlUGxheWVyU2V0dXA6IGZ1bmN0aW9uKCRsaWdodGJveCxkYXRhLGluZGV4LGFsYnVtLGZlZWQpe1xuXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWZ0ZXJQbGF5ZXJTZXR1cDogZnVuY3Rpb24gKCRsaWdodGJveCxkYXRhLGluZGV4LGFsYnVtKSB7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWZ0ZXJSZXNpemU6IGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgdmFyIHBsYXllckhlaWdodCA9ICQoJyNzYnlfbGlnaHRib3ggLnNieV9sYi1wbGF5ZXInKS5oZWlnaHQoKTtcblxuICAgICAgICAgICAgICAgIGlmIChwbGF5ZXJIZWlnaHQgPiAxMDApIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGhlaWdodERpZiA9ICQoJyNzYnlfbGlnaHRib3ggLnNieV9sYi1vdXRlckNvbnRhaW5lcicpLmhlaWdodCgpIC0gcGxheWVySGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICBpZiAoaGVpZ2h0RGlmID4gMTApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICQoJyNzYnlfbGlnaHRib3ggLnNieV9sYi1wbGF5ZXInKS5jc3MoJ3RvcCcsaGVpZ2h0RGlmLzIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBhdXNlUGxheWVyOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cuc2J5TGlnaHRib3hQbGF5ZXIgPT09ICd1bmRlZmluZWQnXG4gICAgICAgICAgICAgICAgICAmJiB0eXBlb2YgWVQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBZVC5nZXQoJ3NieV9sYi1wbGF5ZXInKSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgICAgICAgICAgICYmIHR5cGVvZiBZVC5nZXQoJ3NieV9sYi1wbGF5ZXInKS5wYXVzZVZpZGVvID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIFlULmdldCgnc2J5X2xiLXBsYXllcicpLnBhdXNlVmlkZW8oKVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHdpbmRvdy5zYnlMaWdodGJveFBsYXllciAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgICAgICAgICAgICYmIHR5cGVvZiB3aW5kb3cuc2J5TGlnaHRib3hQbGF5ZXIucGF1c2VWaWRlbyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2J5TGlnaHRib3hQbGF5ZXIucGF1c2VWaWRlbygpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIFNieUxpZ2h0Ym94QnVpbGRlclByby5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFNieUxpZ2h0Ym94QnVpbGRlci5wcm90b3R5cGUpO1xuXG4gICAgICAgIGZ1bmN0aW9uIFNieUxpZ2h0Ym94QnVpbGRlclBybygpIHtcbiAgICAgICAgICAgIFNieUxpZ2h0Ym94QnVpbGRlci5jYWxsKHRoaXMpO1xuXG4gICAgICAgICAgICAgICBcblxuICAgICAgICAgICAgdGhpcy5nZXREYXRhID0gZnVuY3Rpb24oYSl7XG4gICAgICAgICAgICAgICAgY29uc3QgZmVlZFBhcmVudCA9IGEuY2xvc2VzdCgnLnNiX3lvdXR1YmUnKTtcbiAgICAgICAgICAgICAgICB2YXIgY2xvc2VzdEZlZWRJbmRleCA9IHBhcnNlSW50KGZlZWRQYXJlbnQuYXR0cignZGF0YS1zYnktaW5kZXgnKS0xKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzdWJzY3JpYmVCdG5UZXh0ID0gZmVlZFBhcmVudC5hdHRyKCdkYXRhLXN1YnNjcmliZS1idG4tdGV4dCcpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHN1YnNjcmliZUJ0biA9IGZlZWRQYXJlbnQuYXR0cignZGF0YS1zdWJzY3JpYmUtYnRuJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgY29sb3JTY2hlbWUgPSBmZWVkUGFyZW50Lmhhc0NsYXNzKCdzYnlfcGFsZXR0ZV9kYXJrJykgPyAnZGFyaycgOiAnbGlnaHQnO1xuICAgICAgICAgICAgICAgIGNvbnN0IGF0dHMgPSBmZWVkUGFyZW50LmF0dHIoJ2RhdGEtc2hvcnRjb2RlLWF0dHMnKTtcbiAgICAgICAgICAgICAgICBjb25zdCBsaXZlRGF0YUF0dHIgPSBhLmNsb3Nlc3QoJy5zYnlfaXRlbScpLmF0dHIoJ2RhdGEtbGl2ZS1kYXRlJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hhbm5lbEhlYWRlckNvbG9yc0F0dHIgPSBmZWVkUGFyZW50LmF0dHIoJ2RhdGFfY2hhbm5lbF9oZWFkZXJfY29sb3JzJykgPyAgSlNPTi5wYXJzZShmZWVkUGFyZW50LmF0dHIoJ2RhdGFfY2hhbm5lbF9oZWFkZXJfY29sb3JzJykpIDogJyc7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBmZWVkSW5kZXggOiBjbG9zZXN0RmVlZEluZGV4LFxuICAgICAgICAgICAgICAgICAgICBsaW5rOiBhLmF0dHIoXCJocmVmXCIpLFxuICAgICAgICAgICAgICAgICAgICB2aWRlbzogYS5hdHRyKFwiZGF0YS12aWRlby1pZFwiKSxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHNieUVuY29kZUlucHV0KGEuYXR0cihcImRhdGEtdGl0bGVcIikpLFxuICAgICAgICAgICAgICAgICAgICB2aWRlb1RpdGxlOiB0eXBlb2YgYS5hdHRyKFwiZGF0YS12aWRlby10aXRsZVwiKSAhPT0gJ3VuZGVmaW5lZCcgPyBzYnlFbmNvZGVJbnB1dChhLmF0dHIoXCJkYXRhLXZpZGVvLXRpdGxlXCIpKSA6ICdZb3VUdWJlIFZpZGVvJyxcbiAgICAgICAgICAgICAgICAgICAgYXZhdGFyOiBhLmF0dHIoXCJkYXRhLWF2YXRhclwiKSxcbiAgICAgICAgICAgICAgICAgICAgdXNlcjogc2J5RW5jb2RlSW5wdXQoYS5hdHRyKFwiZGF0YS11c2VyXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgY2hhbm5lbFVSTDogYS5hdHRyKFwiZGF0YS11cmxcIiksXG4gICAgICAgICAgICAgICAgICAgIGNoYW5uZWxJRDogYS5hdHRyKFwiZGF0YS1jaGFubmVsLWlkXCIpLFxuICAgICAgICAgICAgICAgICAgICBjaGFubmVsU3Vic2NyaWJlcnM6IGEuY2xvc2VzdCgnLnNiX3lvdXR1YmUnKS5hdHRyKCdkYXRhLWNoYW5uZWwtc3Vic2NyaWJlcnMnKSxcbiAgICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlQnRuOiBzdWJzY3JpYmVCdG4sXG4gICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZUJ0blRleHQ6IHN1YnNjcmliZUJ0blRleHQsXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yU2NoZW1lOiBjb2xvclNjaGVtZSxcbiAgICAgICAgICAgICAgICAgICAgcHVibGlzaGVkRGF0ZTogYS5hdHRyKFwiZGF0YS1wdWJsaXNoZWQtZGF0ZVwiKSxcbiAgICAgICAgICAgICAgICAgICAgY29tbWVudENvdW50OiBhLmF0dHIoXCJkYXRhLWNvbW1lbnQtY291bnRcIiksXG4gICAgICAgICAgICAgICAgICAgIHZpZXdzOiBhLmF0dHIoXCJkYXRhLXZpZXdzXCIpLFxuICAgICAgICAgICAgICAgICAgICBsaXZlRGF0YTogbGl2ZURhdGFBdHRyLFxuICAgICAgICAgICAgICAgICAgICBjaGFubmVsSGVhZGVyQ29sb3JzIDogY2hhbm5lbEhlYWRlckNvbG9yc0F0dHIsXG4gICAgICAgICAgICAgICAgICAgIGF0dHM6IGF0dHNcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB0aGlzLnRlbXBsYXRlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBcbiAgICAgICAgICAgICAgICA8ZGl2IGlkPSdzYnlfbGlnaHRib3hPdmVybGF5JyBjbGFzcz0nc2J5X2xpZ2h0Ym94T3ZlcmxheSc+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBpZD0nc2J5X2xpZ2h0Ym94JyBjbGFzcz0nc2J5X2xpZ2h0Ym94Jz5cbiAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nc2J5X2xiLWhlYWRlcic+PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdzYnlfbGItb3V0ZXJDb250YWluZXInPlxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0nc2J5X2xiLWNsb3NlJz48L2E+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J3NieV9sYi1jb250YWluZXInPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J3NieV9sYl92aWRlb190aHVtYm5haWxfd3JhcCc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0nc2J5X2xiX3ZpZGVvX3RodW1ibmFpbCc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9J3NieV9sYi1pbWFnZScgYWx0PSdMaWdodGJveCBpbWFnZSBwbGFjZWhvbGRlcicgc3JjPScnIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J3NieV9sYi1wbGF5ZXInIGlkPSdzYnlfbGItcGxheWVyJz48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdzYnlfbGItbmF2Jz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSdzYnlfbGItcHJldicgaHJlZj0nIyc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSdzYnktc2NyZWVucmVhZGVyJz5QcmV2aW91cyBTbGlkZTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9J3NieV9sYi1uZXh0JyBocmVmPScjJz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9J3NieS1zY3JlZW5yZWFkZXInPk5leHQgU2xpZGU8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdzYnlfbGItbG9hZGVyJz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSdzYnlfbGItY2FuY2VsJz48L2E+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdzYnlfbGItZGF0YUNvbnRhaW5lcic+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J3NieV9sYi1kYXRhJz5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdzYnlfbGItZGV0YWlscyc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdzYnlfbGItY2FwdGlvbic+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J3NieV9sYi1pbmZvJz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nc2J5X2xiLW51bWJlcic+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5gO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdGhpcy5iZWZvcmVQbGF5ZXJTZXR1cCA9IGZ1bmN0aW9uKCRsaWdodGJveCxkYXRhLGluZGV4LGFsYnVtLGZlZWQpe1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICQoJ2JvZHknKS5jc3MoJ292ZXJmbG93JywgJ2hpZGRlbicpO1xuICAgICAgICAgICAgICAgIGlmICghJGxpZ2h0Ym94LmZpbmQoJy5zYnlfY3RhX2l0ZW1zX3dyYXBzJykubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICRsaWdodGJveC5maW5kKCcuc2J5X2xiX3ZpZGVvX3RodW1ibmFpbF93cmFwJykuYXBwZW5kKCQoZmVlZC5lbCkuZmluZCgnLnNieV9jdGFfaXRlbXNfd3JhcHMnKS5jbG9uZSgpKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAkbGlnaHRib3guZmluZCgnLnNieV9jdGFfaXRlbXNfd3JhcHMnKS5yZXBsYWNlV2l0aCgkKGZlZWQuZWwpLmZpbmQoJy5zYnlfY3RhX2l0ZW1zX3dyYXBzJykuY2xvbmUoKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdGhpcy5hZnRlclBsYXllclNldHVwID0gZnVuY3Rpb24oJGxpZ2h0Ym94LGRhdGEsaW5kZXgsYWxidW0pIHtcblxuICAgICAgICAgICAgICAgIHRoaXMuYXZhaWxhYmxlQXZhdGFyVXJscyA9IHt9O1xuICAgICAgICAgICAgICAgIGNvbnN0IHN1YnNjcmliZVNlY3Rpb24gPSBkYXRhPy5zdWJzY3JpYmVCdG4gPyBkYXRhLnN1YnNjcmliZUJ0biA6IGZhbHNlO1xuICAgICAgICAgICAgICAgIGNvbnN0IHN1YnNjcmliZUJ0blRleHQgPSBkYXRhPy5zdWJzY3JpYmVCdG5UZXh0ID8gZGF0YS5zdWJzY3JpYmVCdG5UZXh0IDogJyc7XG5cbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHNieUxpZ2h0Ym94QWN0aW9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzYnlMaWdodGJveEFjdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICB9LDEwMCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYoZGF0YT8uY29sb3JTY2hlbWUgJiYgJ2RhcmsnID09PSBkYXRhLmNvbG9yU2NoZW1lICkge1xuICAgICAgICAgICAgICAgICAgICBMaWdodGJveENvbG9yU2NoZW1lKGRhdGEuY29sb3JTY2hlbWUsIHRydWUpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBhdmF0YXJJbWFnZSA9ICcnLFxuXG4gICAgICAgICAgICAgICAgc3Vic2NyaWJlQnRuID0gc3Vic2NyaWJlU2VjdGlvbiA/ICc8YSBjbGFzcz1cInNieS1sYi1zdWJzY3JpYmUtYnRuXCIgaHJlZj1cImh0dHA6Ly93d3cueW91dHViZS5jb20vY2hhbm5lbC8nKyBkYXRhLmNoYW5uZWxJRCArJz9zdWJfY29uZmlybWF0aW9uPTEmZmVhdHVyZT1zdWJzY3JpYmUtZW1iZWQtY2xpY2tcIiB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+JysgZ2V0U3RhdGljU1ZHKCd5b3V0dWJlJykgKycgPHA+JyArIHN1YnNjcmliZUJ0blRleHQgKyc8L3A+PC9hPicgOiAnJztcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGRhdGEuYXZhdGFyICE9PSAndW5kZWZpbmVkJyAmJiBkYXRhLmF2YXRhciAhPT0gJycgJiYgdHlwZW9mIGRhdGEudXNlciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgYXZhdGFySW1hZ2UgPSAoZGF0YS5hdmF0YXIgIT09ICd1bmRlZmluZWQnKSA/IGRhdGEuYXZhdGFyIDogJyc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZGF0YS51c2VyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICBqUXVlcnkuZWFjaCh3aW5kb3cuc2J5LmZlZWRzLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5hdmFpbGFibGVBdmF0YXJVcmxzICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgdGhpcy5hdmFpbGFibGVBdmF0YXJVcmxzW2RhdGEudXNlcl0gIT09ICd1bmRlZmluZWQnICYmIHRoaXMuYXZhaWxhYmxlQXZhdGFyVXJsc1tkYXRhLnVzZXJdICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YXRhckltYWdlID0gdGhpcy5hdmFpbGFibGVBdmF0YXJVcmxzW2RhdGEudXNlcl07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGNoYW5uZWxTdWJzY3JpYmVycyA9IGRhdGE/LmNoYW5uZWxTdWJzY3JpYmVycyA/PyAnJztcbiAgICAgICAgICAgICAgICBjb25zdCBhdmF0YXJJbWFnZUh0bWwgPSBhdmF0YXJJbWFnZSA/ICc8aW1nIHNyYz1cIicrIGF2YXRhckltYWdlICsnXCIgcmVmZXJyZXJQb2xpY3k9XCJuby1yZWZlcnJlclwiLz4nIDogZ2V0U3RhdGljU1ZHKCdwcm9maWxlLXBpY3R1cmUnKTtcbiAgICAgICAgICAgICAgICBjb25zdCB1c2VySHRtbCA9IHN1YnNjcmliZVNlY3Rpb24gJiYgYXZhdGFySW1hZ2UgPyAnPGRpdiBjbGFzcz1cInNieS1sYi1jaGFubmVsLWhlYWRlclwiPjxhIGNsYXNzPVwic2J5X2xpZ2h0Ym94X3VzZXJuYW1lXCIgaHJlZj1cIicrIGRhdGEuY2hhbm5lbFVSTCsnXCIgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXJcIj4nKyBhdmF0YXJJbWFnZUh0bWwgKyAnPHAgY2xhc3M9XCJzYnktbGItY2hhbm5lbC1uYW1lLXdpdGgtc3Vic1wiPjxzcGFuPkAnK2RhdGEudXNlciArICc8L3NwYW4+PHNwYW4+JyArIGNoYW5uZWxTdWJzY3JpYmVycyArJzwvc3Bhbj48L3A+PC9hPiAnICsgc3Vic2NyaWJlQnRuICsgJzwvZGl2PicgOiAnJztcbiAgICAgICAgICAgICAgICBjb25zdCBzdWJzY3JpYmVDbGFzcyA9IHN1YnNjcmliZVNlY3Rpb24gJiYgYXZhdGFySW1hZ2UgPyAnc2J5X2xiLWNoYW5uZWwtaW5mbycgOiAnc2J5X2xiLW5vLWNoYW5uZWwtaW5mbydcblxuICAgICAgICAgICAgICAgIGlmKCB3aW5kb3cuc2J5T3B0aW9ucy5pc1BybyApIHtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gZGF0YT8udGl0bGUgPyBhZGRMaW5rc1RvdGV4dChkYXRhLnRpdGxlKSA6ICcnO1xuICAgICAgICAgICAgICAgIGNvbnN0IHB1Ymxpc2hlZERhdGUgPSBkYXRhPy5wdWJsaXNoZWREYXRlID8gdGltZUFnbyhjb252ZXJ0VW5peFRvTXMoZGF0YS5wdWJsaXNoZWREYXRlKSkgOiAnJztcbiAgICAgICAgICAgICAgICBjb25zdCB2aWV3cyA9IGRhdGE/LnZpZXdzID8gZGF0YS52aWV3cyA6ICcnO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgdmlkZW9IZWFkZXJTZWN0aW9uICA9IGBcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNieV9sYi12aWRlby1oZWFkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aDM+JHtkYXRhLnZpZGVvVGl0bGV9PC9oMz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYnlfbGItdmlkZW8taW5mb1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPiR7dmlld3N9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2J5X2xiLXNwYWNlclwiPsK3PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPiR7cHVibGlzaGVkRGF0ZX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgYDtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHZpZGVvRGVzY3JpcHRpb25odG1sID0gYFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2J5X2xiLXZpZGVvLWRlc2NyaXB0aW9uLXdyYXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYnlfbGItZGVzY3JpcHRpb24gc2J5LXJlYWQtbW9yZS10YXJnZXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2Rlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwic2J5X2xiLW1vcmUtaW5mby1idG4gc2J5LXJlYWQtbW9yZS10cmlnZ2VyXCI+RGVzY3JpcHRpb24ke2dldFN0YXRpY1NWRygnYW5nbGUtZG93bicpfTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICBgO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgY29tbWVudFNlY3Rpb25IdG1sID0gYFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2J5LWNvbW1lbnRzLXdyYXBcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgYDtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHZpZGVvRGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbiA/IHZpZGVvRGVzY3JpcHRpb25odG1sIDogJyc7XG5cbiAgICAgICAgICAgICAgICAkbGlnaHRib3guZmluZChcIi5zYnlfbGItY2FwdGlvblwiKS5odG1sKCBgPGRpdiBjbGFzcz1cInNieV9sYi1jYXB0aW9uLWlubmVyICR7c3Vic2NyaWJlQ2xhc3N9XCI+YCArIHZpZGVvSGVhZGVyU2VjdGlvbiArIHVzZXJIdG1sICsgdmlkZW9EZXNjcmlwdGlvbiArIGNvbW1lbnRTZWN0aW9uSHRtbCArIGA8L2Rpdj5gICkuZmFkZUluKFwiZmFzdFwiKTtcblxuICAgICAgICAgICAgICAgIGlmKCBkYXRhPy5saXZlRGF0YSAmJiAnMCcgPT09IGRhdGEubGl2ZURhdGEgKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZpZGVvSWQgPSBkYXRhPy52aWRlbyA/IGRhdGEudmlkZW8gOiAnJzsgXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGF0dHMgPSBkYXRhPy5hdHRzID8gZGF0YS5hdHRzIDogJyc7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRDb21tZW50Q291bnQgPSBkYXRhPy5jb21tZW50Q291bnQgPyBkYXRhLmNvbW1lbnRDb3VudCA6ICcnOyBcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gJGxpZ2h0Ym94LmZpbmQoXCIuc2J5LWNvbW1lbnRzLXdyYXBcIik7XG4gICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlQ29tbWVudFNlY3Rpb24odmlkZW9JZCwgYXR0cywgdGFyZ2V0LCBjdXJyZW50Q29tbWVudENvdW50KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0b2dnbGVSZWFkTW9yZSgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmKCBkYXRhPy5jaGFubmVsSGVhZGVyQ29sb3JzICkge1xuICAgICAgICAgICAgICAgICAgICBzZXRDb2xvcnNUb0NoYW5uZWxIZWFkZXIoZGF0YS5jaGFubmVsSGVhZGVyQ29sb3JzKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBTYnlDVEEodmlkZW9JRCxmZWVkKSB7XG4gICAgICAgICAgICB0aGlzLmlzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMudmlkZW9JRCA9IHZpZGVvSUQ7XG4gICAgICAgICAgICB0aGlzLmNhbGxiYWNrID0gdGhpcy5yZWxhdGVkO1xuICAgICAgICAgICAgdGhpcy5jYWxsYmFja0FyZ3MgPSB7fTtcbiAgICAgICAgICAgIHRoaXMuZmVlZE9iakluQ29udGV4dCA9IGZlZWQ7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gMTtcbiAgICAgICAgICAgIHRoaXMubnVtSXRlbXMgPSA0O1xuICAgICAgICAgICAgdGhpcy5udW1JdGVtQ29sdW1ucyA9IDI7XG4gICAgICAgICAgICB0aGlzLiRwbGF5ZXIgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIFNieUNUQS5wcm90b3R5cGUgPSB7XG4gICAgICAgICAgICB0b2dnbGVDVEE6IGZ1bmN0aW9uKHZpZGVvSUQsZGF0YU51bSwkcGxheWVyKXtcbiAgICAgICAgICAgICAgICB0aGlzLiRwbGF5ZXIgPSAkcGxheWVyLmxlbmd0aCA/ICRwbGF5ZXIgOiAkKCcuc2J5X2xiLWNvbnRhaW5lcicpOyAvLyB1c2UgdGhlIGxpZ2h0Ym94IGNvbnRhaW5lciBpZiBubyBwbGF5ZXIgaXMgc2V0XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IGRhdGFOdW07XG4gICAgICAgICAgICAgICAgdGhpcy52aWRlb0lEID0gdmlkZW9JRDtcbiAgICAgICAgICAgICAgICB0aGlzLmlzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMucmVzZXRDVEEoKTtcblxuICAgICAgICAgICAgICAgIC8vY3RhRGV0ZWN0XG5cbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHdpbmRvdy5zYnkuY3Rhc1t2aWRlb0lEXSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxsYmFja0FyZ3MgPSB3aW5kb3cuc2J5LmN0YXNbdmlkZW9JRF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBjYWxsYmFjayA9IHRoaXMuY2FsbGJhY2tBcmdzLmNhbGxiYWNrO1xuXG4gICAgICAgICAgICAgICAgaWYgKGNhbGxiYWNrID09PSAnbGluaycpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxsYmFjayA9IHRoaXMubGluaztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNhbGxiYWNrID09PSAncmVsYXRlZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxsYmFjayA9IHRoaXMucmVsYXRlZDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGRhdGFOdW0gPT09IDIgfHwgZGF0YU51bSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiRwbGF5ZXIuZmluZCgnLnNieV9jdGFfaXRlbXNfd3JhcHMnKS5hZGRDbGFzcygnc2J5X2N0YV9pc19vcGVuJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCBkYXRhTnVtID09PSAyICl7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRwbGF5ZXIuZmluZCgnLnNieV9jdGFfaXRlbXNfd3JhcHMnKS5hZGRDbGFzcygnc2J5X2N0YV9zdGF0ZV9wYXVzZWQnKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJHBsYXllci5maW5kKCcuc2J5X2N0YV9pdGVtc193cmFwcycpLmFkZENsYXNzKCdzYnlfY3RhX3N0YXRlX2VuZGVkJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLiRwbGF5ZXIuZmluZCgnLnNieV9jdGFfaXRlbXNfd3JhcHMnKS5zaG93KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsbGJhY2soKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRDVEFTdHlsZXMoKTtcblxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJHBsYXllci5maW5kKCcuc2J5X2N0YV9pdGVtc193cmFwcycpLnJlbW92ZUNsYXNzKCdzYnlfY3RhX2lzX29wZW4nKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLiRwbGF5ZXIuZmluZCgnLnNieV9jdGFfaXRlbXNfd3JhcHMnKS5oaWRlKClcbiAgICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQ2xhc3MoJ3NieV9jdGFfc3RhdGVfcGF1c2VkJylcbiAgICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQ2xhc3MoJ3NieV9jdGFfc3RhdGVfZW5kZWQnKVxuICAgICAgICAgICAgICAgICAgICAgIC5yZW1vdmVDbGFzcygnc2J5X2N0YV9pc19vcGVuJyk7XG4gICAgICAgICAgICAgICAgfVxuXG5cblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlbGF0ZWQ6IGZ1bmN0aW9uKGFyZ3MpIHtcbiAgICAgICAgICAgICAgICB2YXIgY3RhT2JqID0gdGhpcyxcbiAgICAgICAgICAgICAgICAgIGZlZWRPYmpJbkNvbnRleHQgPSB0aGlzLmZlZWRPYmpJbkNvbnRleHQsXG4gICAgICAgICAgICAgICAgICByZWxhdGVkID0gd2luZG93LnNieS5zaHVmZmxlKHRoaXMuZ2V0UmVsYXRlZChmZWVkT2JqSW5Db250ZXh0KSksXG4gICAgICAgICAgICAgICAgICBhZGRlZCA9IDAsXG4gICAgICAgICAgICAgICAgICBjdXJyZW50VmlkZW9JZCA9IHRoaXMudmlkZW9JRCxcbiAgICAgICAgICAgICAgICAgICRwbGF5ZXIgPSB0aGlzLiRwbGF5ZXI7XG5cbiAgICAgICAgICAgICAgICB0aGlzLiRwbGF5ZXIuZmluZCgnLnNieV9jdGFfaXRlbXNfd3JhcHMnKVxuICAgICAgICAgICAgICAgICAgLnJlbW92ZUNsYXNzKCdzYnlfY3RhX2NvbHNfJyArIHRoaXMubnVtSXRlbUNvbHVtbnMpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5udW1JdGVtcyA9IDQ7XG4gICAgICAgICAgICAgICAgdGhpcy5udW1JdGVtQ29sdW1ucyA9IDI7XG5cbiAgICAgICAgICAgICAgICBpZiAoJHBsYXllci53aWR0aCgpIDwgNDgwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubnVtSXRlbXMgPSAxO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm51bUl0ZW1Db2x1bW5zID0gMVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciBudW1JdGVtcyA9IHRoaXMubnVtSXRlbXM7XG5cbiAgICAgICAgICAgICAgICAkLmVhY2gocmVsYXRlZCwgZnVuY3Rpb24oaW5kZXgsIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZS52aWRlb0lEICE9PSBjdXJyZW50VmlkZW9JZCAmJiBhZGRlZCA8IG51bUl0ZW1zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkcGxheWVyLmZpbmQoJy5zYnlfY3RhX2l0ZW1zX3dyYXBzIC5zYnlfY3RhX2lubmVyX3dyYXAnKS5hcHBlbmQoJzxkaXYgY2xhc3M9XCJzYnlfY3RhX2l0ZW1cIj48ZGl2IGNsYXNzPVwic2J5X3ZpZGVvX3RodW1ibmFpbF93cmFwXCI+JyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICc8YSBjbGFzcz1cInNieV92aWRlb190aHVtYm5haWxcIiBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyXCIgZGF0YS12aWRlby1pZD1cIicrdmFsdWUudmlkZW9JRCsnXCI+JyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPVwic2J5X3RodW1ibmFpbF9ob3ZlclwiPicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz1cInNieV90aHVtYm5haWxfaG92ZXJfaW5uZXJcIj4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPVwic2J5X3ZpZGVvX3RpdGxlXCI+Jyt2YWx1ZS50aXRsZSsnPC9zcGFuPicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAnPC9kaXY+JyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICc8L2Rpdj4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPVwic2J5LXNjcmVlbnJlYWRlclwiPlBsYXk8L3NwYW4+JyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICc8aW1nIHNyYz1cIicrdmFsdWUudGh1bWJuYWlsKydcIiBhbHQ9XCInK3ZhbHVlLnRpdGxlKydcIj4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPVwic2J5X2xvYWRlciBzYnlfaGlkZGVuXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7XCI+PC9zcGFuPicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAnPC9hPicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAnPC9kaXY+JyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICc8L2Rpdj4nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZGVkKys7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICRwbGF5ZXIuZmluZCgnLnNieV9jdGFfaXRlbXNfd3JhcHMgLnNieV92aWRlb190aHVtYm5haWwnKS5lYWNoKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLm9mZigpLm9uKCdjbGljaycsZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG5ld1ZpZGVvSUQgPSAkKHRoaXMpLmF0dHIoJ2RhdGEtdmlkZW8taWQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZlZWRPYmpJbkNvbnRleHQub25UaHVtYm5haWxDbGljaygkKHRoaXMpLHRydWUsbmV3VmlkZW9JRCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjdGFPYmoudmlkZW9JRCA9IG5ld1ZpZGVvSUQ7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0UmVsYXRlZDogZnVuY3Rpb24oZmVlZE9iakluQ29udGV4dCkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZmVlZE9iakluQ29udGV4dC5zZXR0aW5ncy5nZW5lcmFsLmN0YS5kZWZhdWx0UG9zdHNbMF0gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciAkZmVlZEVsID0gJChmZWVkT2JqSW5Db250ZXh0LmVsKSxcbiAgICAgICAgICAgICAgICAgICAgICByZWxhdGVkVmlkcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAkZmVlZEVsLmZpbmQoJy5zYnlfaXRlbScpLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mICQodGhpcykuZmluZCgnLnNieV9pdGVtX3ZpZGVvX3RodW1ibmFpbCcpLmF0dHIoJ2RhdGEtZnVsbC1yZXMnKSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGhpc1ZpZCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9JRDogJCh0aGlzKS5hdHRyKCdkYXRhLXZpZGVvLWlkJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBzYnlFbmNvZGVJbnB1dCgkKHRoaXMpLmF0dHIoJ2RhdGEtdmlkZW8tdGl0bGUnKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRodW1ibmFpbDogJCh0aGlzKS5maW5kKCcuc2J5X2l0ZW1fdmlkZW9fdGh1bWJuYWlsJykuYXR0cignZGF0YS1mdWxsLXJlcycpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhdGVkVmlkcy5wdXNoKHRoaXNWaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlbGF0ZWRWaWRzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gZmVlZE9iakluQ29udGV4dC5zZXR0aW5ncy5nZW5lcmFsLmN0YS5kZWZhdWx0UG9zdHM7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGluazogZnVuY3Rpb24oYXJncykge1xuICAgICAgICAgICAgICAgIHZhciAkcGxheWVyID0gdGhpcy4kcGxheWVyLFxuICAgICAgICAgICAgICAgICAgZmVlZE9iakluQ29udGV4dCA9IHRoaXMuZmVlZE9iakluQ29udGV4dDtcblxuICAgICAgICAgICAgICAgIHRoaXMuJHBsYXllci5maW5kKCcuc2J5X2N0YV9pdGVtc193cmFwcycpXG4gICAgICAgICAgICAgICAgICAucmVtb3ZlQ2xhc3MoJ3NieV9jdGFfY29sc18nICsgdGhpcy5udW1JdGVtQ29sdW1ucyk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLm51bUl0ZW1zID0gMTtcbiAgICAgICAgICAgICAgICB0aGlzLm51bUl0ZW1Db2x1bW5zID0gMTtcblxuICAgICAgICAgICAgICAgIHZhciBzdHlsZSA9ICcnLFxuICAgICAgICAgICAgICAgICAgc3R5bGVDbGFzcyA9ICcnO1xuXG4gICAgICAgICAgICAgICAgaWYgKGZlZWRPYmpJbkNvbnRleHQuc2V0dGluZ3MuZ2VuZXJhbC5jdGEuY29sb3IgIT09ICcnIHx8IGZlZWRPYmpJbkNvbnRleHQuc2V0dGluZ3MuZ2VuZXJhbC5jdGEudGV4dENvbG9yICE9PSAnJykge1xuICAgICAgICAgICAgICAgICAgICBzdHlsZSA9ICcgc3R5bGU9XCInO1xuICAgICAgICAgICAgICAgICAgICBzdHlsZUNsYXNzID0gJyBzYnlfY3VzdG9tJztcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZmVlZE9iakluQ29udGV4dC5zZXR0aW5ncy5nZW5lcmFsLmN0YS5jb2xvciAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlICs9ICdiYWNrZ3JvdW5kOiByZ2IoJyArIGZlZWRPYmpJbkNvbnRleHQuc2V0dGluZ3MuZ2VuZXJhbC5jdGEuY29sb3IgKyAnKTsnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChmZWVkT2JqSW5Db250ZXh0LnNldHRpbmdzLmdlbmVyYWwuY3RhLnRleHRDb2xvciAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlICs9ICdjb2xvcjogcmdiKCcgKyBmZWVkT2JqSW5Db250ZXh0LnNldHRpbmdzLmdlbmVyYWwuY3RhLnRleHRDb2xvciArICcpOyc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgc3R5bGUgKz0gJ1wiJztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YXIgb3BlbkF0dHMgPSAnJztcbiAgICAgICAgICAgICAgICBpZiAoZmVlZE9iakluQ29udGV4dC5zZXR0aW5ncy5nZW5lcmFsLmN0YS5vcGVuVHlwZSA9PT0gJ25ld3dpbmRvdycpIHtcbiAgICAgICAgICAgICAgICAgICAgb3BlbkF0dHMgPSAnIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyXCInO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICRwbGF5ZXIuZmluZCgnLnNieV9jdGFfaXRlbXNfd3JhcHMgLnNieV9jdGFfaW5uZXJfd3JhcCcpLmFwcGVuZCgnPGRpdiBjbGFzcz1cInNieV9jdGFfaXRlbVwiPicgK1xuICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9XCJzYnlfYnRuX3dyYXBcIj4nICtcbiAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPVwic2J5X2J0bicrc3R5bGVDbGFzcysnXCI+JyArXG5cbiAgICAgICAgICAgICAgICAgICc8YSBjbGFzcz1cInNieV9jdGFfYnV0dG9uXCIgaHJlZj1cIicrdGhpcy5jYWxsYmFja0FyZ3MudXJsKydcIicrb3BlbkF0dHMrJyBkYXRhLXZpZGVvLWlkPVwiJyt0aGlzLnZpZGVvSUQrJ1wiJytzdHlsZSsnPicgK1xuICAgICAgICAgICAgICAgICAgdGhpcy5jYWxsYmFja0FyZ3MudGV4dCArXG4gICAgICAgICAgICAgICAgICAnPC9hPicgK1xuICAgICAgICAgICAgICAgICAgJzwvZGl2PicgK1xuICAgICAgICAgICAgICAgICAgJzwvZGl2PicgK1xuXG4gICAgICAgICAgICAgICAgICAnPC9kaXY+J1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0Q1RBU3R5bGVzOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgcGxheWVyVG9wSGVpZ2h0ID0gNjAsXG4gICAgICAgICAgICAgICAgICBwbGF5ZXJCb3R0b21IZWlnaHQgPSA0OSxcbiAgICAgICAgICAgICAgICAgIG1pbmltdW1IZWlnaHQgPSA5MCxcbiAgICAgICAgICAgICAgICAgIGN0YU92ZXJsYXlIZWlnaHQgPSBNYXRoLm1heChtaW5pbXVtSGVpZ2h0LHRoaXMuJHBsYXllci5oZWlnaHQoKSAtIHBsYXllclRvcEhlaWdodCAtIHBsYXllckJvdHRvbUhlaWdodCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLiRwbGF5ZXIuZmluZCgnLnNieV9jdGFfaXRlbXNfd3JhcHMnKVxuICAgICAgICAgICAgICAgICAgLmNzcygnaGVpZ2h0JyxjdGFPdmVybGF5SGVpZ2h0KydweCcpXG4gICAgICAgICAgICAgICAgICAuY3NzKCd3aWR0aCcsKHRoaXMuJHBsYXllci5maW5kKCdpZnJhbWUnKS53aWR0aCgpLTIwKSsncHgnKVxuICAgICAgICAgICAgICAgICAgLmFkZENsYXNzKCdzYnlfY3RhX2NvbHNfJyArIHRoaXMubnVtSXRlbUNvbHVtbnMpO1xuXG4gICAgICAgICAgICAgICAgdmFyIG51bVJvd3MgPSBNYXRoLm1heCgxLHRoaXMubnVtSXRlbXMvdGhpcy5udW1JdGVtQ29sdW1ucyksXG4gICAgICAgICAgICAgICAgICB0b3RhbFZlcnRpY2FsUGFkZGluZyA9IHBhcnNlSW50KHRoaXMuJHBsYXllci5maW5kKCcuc2J5X2N0YV9pdGVtc193cmFwcycpLmNzcygncGFkZGluZy10b3AnKS5yZXBsYWNlKCdweCcsJycpKSAqIDIsXG4gICAgICAgICAgICAgICAgICBtYXhDVEFJdGVtSGVpZ2h0ID0gTWF0aC5tYXgobWluaW11bUhlaWdodCwoY3RhT3ZlcmxheUhlaWdodC10b3RhbFZlcnRpY2FsUGFkZGluZykvbnVtUm93cyk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLiRwbGF5ZXIuZmluZCgnLnNieV9jdGFfaXRlbScpLmNzcygnbWF4LWhlaWdodCcsbWF4Q1RBSXRlbUhlaWdodCsncHgnKS5maW5kKCdpbWcnKS5jc3Moe1xuICAgICAgICAgICAgICAgICAgICAnbWF4LWhlaWdodCc6IG1heENUQUl0ZW1IZWlnaHQrJ3B4JyxcbiAgICAgICAgICAgICAgICAgICAgJ3dpZHRoJzogJ2F1dG8nLFxuICAgICAgICAgICAgICAgICAgICAnbWFyZ2luJzogJ2F1dG8nXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy4kcGxheWVyLmZpbmQoJy5zYnlfYnRuX3dyYXAnKS5jc3MoJ2hlaWdodCcsbWF4Q1RBSXRlbUhlaWdodCsncHgnKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXNldENUQTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kcGxheWVyLmZpbmQoJy5zYnlfY3RhX2l0ZW1zX3dyYXBzIC5zYnlfY3RhX2lubmVyX3dyYXAnKS5lbXB0eSgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH07XG5cbiAgICAgICAgd2luZG93LnNieV9pbml0ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB3aW5kb3cuc2J5ID0gbmV3IFNieSgpO1xuICAgICAgICAgICAgd2luZG93LnNieS5jcmVhdGVQYWdlKCB3aW5kb3cuc2J5LmNyZWF0ZUZlZWRzLCB7d2hlbkZlZWRzQ3JlYXRlZDogd2luZG93LnNieS5hZnRlckZlZWRzQ3JlYXRlZH0pO1xuICAgICAgICB9O1xuXG5cblxuICAgICAgICB3aW5kb3cuc2J5X2Nhcm91c2VsX2luaXQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdsb2cnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIHNieUdldE5ld0ZlZWQoZmVlZCxpbmRleCxmZWVkT3B0aW9ucykge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBTYnlGZWVkUHJvKGZlZWQsaW5kZXgsZmVlZE9wdGlvbnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gc2J5R2V0bGlnaHRib3hCdWlsZGVyKCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBTYnlMaWdodGJveEJ1aWxkZXJQcm8oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIHNieUlzVG91Y2goKSB7XG4gICAgICAgICAgICBpZiAoXCJvbnRvdWNoc3RhcnRcIiBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIHNieUNtcGx6R2V0Q29va2llKGNuYW1lKSB7XG4gICAgICAgICAgICB2YXIgbmFtZSA9IGNuYW1lICsgXCI9XCI7IC8vQ3JlYXRlIHRoZSBjb29raWUgbmFtZSB2YXJpYWJsZSB3aXRoIGNvb2tpZSBuYW1lIGNvbmNhdGVuYXRlIHdpdGggPSBzaWduXG4gICAgICAgICAgICB2YXIgY0FyciA9IHdpbmRvdy5kb2N1bWVudC5jb29raWUuc3BsaXQoJzsnKTsgLy9DcmVhdGUgY29va2llIGFycmF5IGJ5IHNwbGl0IHRoZSBjb29raWUgYnkgJzsnXG5cbiAgICAgICAgICAgIC8vTG9vcCB0aHJvdWdoIHRoZSBjb29raWVzIGFuZCByZXR1cm4gdGhlIGNvb2tpZSB2YWx1ZSBpZiBpdCBmaW5kIHRoZSBjb29raWUgbmFtZVxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjQXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIGMgPSBjQXJyW2ldLnRyaW0oKTtcbiAgICAgICAgICAgICAgICAvL0lmIHRoZSBuYW1lIGlzIHRoZSBjb29raWUgc3RyaW5nIGF0IHBvc2l0aW9uIDAsIHdlIGZvdW5kIHRoZSBjb29raWUgYW5kIHJldHVybiB0aGUgY29va2llIHZhbHVlXG4gICAgICAgICAgICAgICAgaWYgKGMuaW5kZXhPZihuYW1lKSA9PSAwKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYy5zdWJzdHJpbmcobmFtZS5sZW5ndGgsIGMubGVuZ3RoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICAgIH1cblxuXG4gICAgfSkoalF1ZXJ5KTtcblxuICAgIGlmICh0eXBlb2Ygd2luZG93LnNieUVhZ2VyTG9hZGluZyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgd2luZG93LnNieUVhZ2VyTG9hZGluZyA9IHR5cGVvZiB3aW5kb3cuc2J5T3B0aW9ucyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cuc2J5T3B0aW9ucy5lYWdlcmxvYWQgOiBmYWxzZTtcbiAgICAgICAgaWYgKGpRdWVyeSgnLmVsZW1lbnRvci13aWRnZXQtdmlkZW8nKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHZhciBzZXR0aW5ncyA9IHR5cGVvZiBqUXVlcnkoJy5lbGVtZW50b3Itd2lkZ2V0LXZpZGVvJykuYXR0cignZGF0YS1zZXR0aW5ncycpICE9PSAndW5kZWZpbmVkJyA/IEpTT04ucGFyc2UoIGpRdWVyeSgnLmVsZW1lbnRvci13aWRnZXQtdmlkZW8nKS5hdHRyKCdkYXRhLXNldHRpbmdzJykpIDogZmFsc2U7XG4gICAgICAgICAgICBpZiAoc2V0dGluZ3MgJiYgdHlwZW9mIHNldHRpbmdzLnlvdXR1YmVfdXJsICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5zYnlFYWdlckxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGpRdWVyeSgnZGl2W2RhdGEtdmMtdmlkZW8tYmddJykubGVuZ3RoKSB7XG4gICAgICAgICAgICB3aW5kb3cuc2J5RWFnZXJMb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAodHlwZW9mIHdpbmRvdy5zYnlTZW1pRWFnZXJMb2FkaW5nID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICB3aW5kb3cuc2J5U2VtaUVhZ2VyTG9hZGluZyA9IHR5cGVvZiB3aW5kb3cuc2J5T3B0aW9ucyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cuc2J5T3B0aW9ucy5zZW1pRWFnZXJsb2FkIDogZmFsc2U7XG4gICAgICAgIGlmIChqUXVlcnkoJ2RpdltkYXRhLXZjLXZpZGVvLWJnXScpLmxlbmd0aCB8fCB3aW5kb3cuc2J5RWFnZXJMb2FkaW5nKSB7XG4gICAgICAgICAgICB3aW5kb3cuc2J5U2VtaUVhZ2VyTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgalF1ZXJ5KGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigkKSB7XG4gICAgICAgIGlmICghd2luZG93LnNieVNlbWlFYWdlckxvYWRpbmcpIHtcbiAgICAgICAgICAgIHNieV9pbml0KCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDb29raWUgTm90aWNlIGJ5IGRGYWN0b3J5XG4gICAgICAgICQoJyNjb29raWUtbm90aWNlIGEnKS5vbignY2xpY2snLGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAkLmVhY2god2luZG93LnNieS5mZWVkcyxmdW5jdGlvbihpbmRleCl7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zYnkuZmVlZHNbIGluZGV4IF0uYWZ0ZXJDb25zZW50VG9nZ2xlZCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSwxMDAwKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gQ29va2llIE5vdGljZSBieSBkRmFjdG9yeVxuICAgICAgICAkKCcjY29va2llLWxhdy1pbmZvLWJhciBhJykub24oJ2NsaWNrJyxmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgJC5lYWNoKHdpbmRvdy5zYnkuZmVlZHMsZnVuY3Rpb24oaW5kZXgpe1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2J5LmZlZWRzWyBpbmRleCBdLmFmdGVyQ29uc2VudFRvZ2dsZWQoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sMTAwMCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIEdEUFIgQ29va2llIENvbnNlbnQgYnkgV2ViVG9mZmVlXG4gICAgICAgICQoJy5jbGktdXNlci1wcmVmZXJlbmNlLWNoZWNrYm94Jykub24oJ2NsaWNrJyxmdW5jdGlvbigpe1xuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAkLmVhY2god2luZG93LnNieS5mZWVkcyxmdW5jdGlvbihpbmRleCl7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zYnkuZmVlZHNbIGluZGV4IF0uc2V0dGluZ3MuY29uc2VudEdpdmVuID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zYnkuZmVlZHNbIGluZGV4IF0uYWZ0ZXJDb25zZW50VG9nZ2xlZCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSwxMDAwKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gQ29va2llYm90XG4gICAgICAgICQod2luZG93KS5vbignQ29va2llYm90T25BY2NlcHQnLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgICQuZWFjaCh3aW5kb3cuc2J5LmZlZWRzLGZ1bmN0aW9uKGluZGV4KXtcbiAgICAgICAgICAgICAgICB3aW5kb3cuc2J5LmZlZWRzWyBpbmRleCBdLnNldHRpbmdzLmNvbnNlbnRHaXZlbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgd2luZG93LnNieS5mZWVkc1sgaW5kZXggXS5hZnRlckNvbnNlbnRUb2dnbGVkKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gQ29tcGxpYW56IGJ5IFJlYWxseSBTaW1wbGUgUGx1Z2luc1xuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbXBsel9zdGF0dXNfY2hhbmdlJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIGlmIChlLmRldGFpbC5jYXRlZ29yeSA9PT0gJ21hcmtldGluZycgJiYgZS5kZXRhaWwudmFsdWU9PT0nYWxsb3cnKSB7XG4gICAgICAgICAgICAgICAgJC5lYWNoKHdpbmRvdy5zYnkuZmVlZHMsZnVuY3Rpb24oaW5kZXgpe1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2J5LmZlZWRzWyBpbmRleCBdLnNldHRpbmdzLmNvbnNlbnRHaXZlbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zYnkuZmVlZHNbIGluZGV4IF0uYWZ0ZXJDb25zZW50VG9nZ2xlZCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAkKGRvY3VtZW50KS5vbignY21wbHpGaXJlQ2F0ZWdvcmllcycsIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgaWYgKCBldmVudC5kZXRhaWwuY2F0ZWdvcnk9PT0nbWFya2V0aW5nJyApIHtcbiAgICAgICAgICAgICAgICAkLmVhY2god2luZG93LnNieS5mZWVkcyxmdW5jdGlvbihpbmRleCl7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zYnkuZmVlZHNbIGluZGV4IF0uc2V0dGluZ3MuY29uc2VudEdpdmVuID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LnNieS5mZWVkc1sgaW5kZXggXS5hZnRlckNvbnNlbnRUb2dnbGVkKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIEJvcmxhYnMgQ29va2llIGJ5IEJvcmxhYnNcbiAgICAgICAgJChkb2N1bWVudCkub24oJ2JvcmxhYnMtY29va2llLWNvbnNlbnQtc2F2ZWQnLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgICQuZWFjaCh3aW5kb3cuc2J5LmZlZWRzLGZ1bmN0aW9uKGluZGV4KXtcbiAgICAgICAgICAgICAgICB3aW5kb3cuc2J5LmZlZWRzWyBpbmRleCBdLnNldHRpbmdzLmNvbnNlbnRHaXZlbiA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHdpbmRvdy5zYnkuZmVlZHNbIGluZGV4IF0uYWZ0ZXJDb25zZW50VG9nZ2xlZCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0eXBlb2Ygd2luZG93LmNvbnNlbnRBcGkgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB3aW5kb3cuY29uc2VudEFwaT8uY29uc2VudChcImZlZWRzLWZvci15b3V0dWJlXCIpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGFwcGxpZXMgZnVsbCBmZWF0dXJlcyB0byBmZWVkXG4gICAgICAgICAgICAgICAgICAgICQuZWFjaCh3aW5kb3cuc2J5LmZlZWRzLGZ1bmN0aW9uKGluZGV4KXtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zYnkuZmVlZHNbIGluZGV4IF0uc2V0dGluZ3MuY29uc2VudEdpdmVuID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zYnkuZmVlZHNbIGluZGV4IF0uYWZ0ZXJDb25zZW50VG9nZ2xlZCgpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGRvIG5vdGhpbmdcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgICQoJy5tb292ZS1nZHByLWluZm9iYXItYWxsb3ctYWxsJykub24oJ2NsaWNrJyxmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgJC5lYWNoKHdpbmRvdy5zYnkuZmVlZHMsZnVuY3Rpb24oaW5kZXgpe1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2J5LmZlZWRzWyBpbmRleCBdLmFmdGVyQ29uc2VudFRvZ2dsZWQoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sMTAwMCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFdQQ29uc2VudFxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignd3Bjb25zZW50X2NvbnNlbnRfc2F2ZWQnLCBmdW5jdGlvbihldmVudCkge1xuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAkLmVhY2god2luZG93LnNieS5mZWVkcyxmdW5jdGlvbihpbmRleCl7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zYnkuZmVlZHNbIGluZGV4IF0uYWZ0ZXJDb25zZW50VG9nZ2xlZCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSwxMDAwKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3dwY29uc2VudF9jb25zZW50X3VwZGF0ZWQnLCBmdW5jdGlvbihldmVudCkge1xuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAkLmVhY2god2luZG93LnNieS5mZWVkcyxmdW5jdGlvbihpbmRleCl7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zYnkuZmVlZHNbIGluZGV4IF0uYWZ0ZXJDb25zZW50VG9nZ2xlZCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSwxMDAwKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gaGlkZSBub3RpY2Ugb24gY2xpY2sgYW5kIHNlbmQgYWpheCByZXF1ZXN0IHRvIGJhY2tlbmRcbiAgICAgICAgJCgnI3NieS1mcmNlLWhpZGUtbGljZW5zZS1lcnJvcicpLm9uKCdjbGljaycsZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAkKCcjc2J5LWZyLWNlLWxpY2Vuc2UtZXJyb3InKS5zbGlkZVVwKCk7XG4gICAgICAgICAgICBqUXVlcnkuYWpheCh7XG4gICAgICAgICAgICAgICAgdXJsOiBzYnlPcHRpb25zLmFkbWluQWpheFVybCxcbiAgICAgICAgICAgICAgICB0eXBlOiAncG9zdCcsXG4gICAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICdzYnlfaGlkZV9mcm9udGVuZF9saWNlbnNlX2Vycm9yJyxcbiAgICAgICAgICAgICAgICAgICAgbm9uY2U6IHNieU9wdGlvbnMubm9uY2VcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKG1zZyl7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKG1zZyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pXG4gICAgfSk7XG5cbn0gLy8gaWYgc2J5X2pzX2V4aXN0c1xuXG5pZiAod2luZG93LnNieVNlbWlFYWdlckxvYWRpbmcpIHtcbiAgICB2YXIgc2J5WVNjcmlwdElkID0gXCJzYnkteW91dHViZS1hcGlcIjtcbiAgICB2YXIgc2J5WVNjcmlwdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNieVlTY3JpcHRJZCk7XG5cbiAgICBpZiAoc2J5WVNjcmlwdCA9PT0gbnVsbCkge1xuICAgICAgICB2YXIgdGFnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtcbiAgICAgICAgdmFyIGZpcnN0U2NyaXB0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJzY3JpcHRcIilbMF07XG5cbiAgICAgICAgdGFnLnNyYyA9IFwiaHR0cHM6Ly93d3cueW91dHViZS5jb20vaWZyYW1lX2FwaVwiO1xuICAgICAgICB0YWcuaWQgPSBzYnlZU2NyaXB0SWQ7XG4gICAgICAgIGZpcnN0U2NyaXB0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRhZywgZmlyc3RTY3JpcHQpO1xuXG4gICAgfVxufVxuXG53aW5kb3cub25Zb3VUdWJlSWZyYW1lQVBJUmVhZHkgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgbnVtRmVlZHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdzYl95b3V0dWJlJykubGVuZ3RoO1xuICAgIGlmIChudW1GZWVkcyA+IDApIHtcbiAgICAgICAgaWYgKHdpbmRvdy5zYnlTZW1pRWFnZXJMb2FkaW5nKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHdpbmRvdy5zYnkgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1GZWVkczsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zYnkuZmVlZHNbaV0ucGxheWVyQVBJUmVhZHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgd2luZG93LnNieUFQSVJlYWR5ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNieV9pbml0KCk7XG4gICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgIGlmICh3aW5kb3cuc2J5RWFnZXJMb2FkaW5nKSB7XG4gICAgICAgICAgICAgICAgdmFyIGZsYWdMaWdodGJveCA9IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgYXV0b3BsYXkgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIGpRdWVyeSgnLnNiX3lvdXR1YmUnKS5lYWNoKGZ1bmN0aW9uKGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciAkc2VsZiA9IGpRdWVyeSh0aGlzKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoJHNlbGYuaGFzQ2xhc3MoJ3NieV9sYXlvdXRfbGlzdCcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkodGhpcykuYWRkQ2xhc3MoJ3NieV9wbGF5ZXJfbG9hZGVkJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLmZpbmQoJy5zYnlfaXRlbScpLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9JRCA9IGpRdWVyeSh0aGlzKS5hdHRyKCdkYXRhLXZpZGVvLWlkJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy90aGlzLmNyZWF0ZVBsYXllcigsdmlkZW9JRCwwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGF5ZXIgPSBuZXcgWVQuUGxheWVyKCdzYnlfcGxheWVyXycrdmlkZW9JRCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcxMDAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvSWQ6IHZpZGVvSUQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXllclZhcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVzdGJyYW5kaW5nOiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b3BsYXk6IGF1dG9wbGF5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50czoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29uU3RhdGVDaGFuZ2UnOiBmdW5jdGlvbihkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZpZGVvSUQgPSBkYXRhLnRhcmdldC5nZXRWaWRlb0RhdGEoKVsndmlkZW9faWQnXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5kYXRhICE9PSAxKSByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNlbGYuZmluZCgnLnNieV9pdGVtJykuZWFjaChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGl0ZW1WaWRJRCA9IGpRdWVyeSh0aGlzKS5hdHRyKCdkYXRhLXZpZGVvLWlkJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGpRdWVyeSh0aGlzKS5maW5kKCdpZnJhbWUnKS5sZW5ndGggJiYgalF1ZXJ5KGRhdGEudGFyZ2V0LmEpLmF0dHIoJ2lkJykgIT09IGpRdWVyeSh0aGlzKS5maW5kKCdpZnJhbWUnKS5hdHRyKCdpZCcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZVC5nZXQoJ3NieV9wbGF5ZXJfJytpdGVtVmlkSUQpLnBhdXNlVmlkZW8oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCRzZWxmLmhhc0NsYXNzKCdzYnlfbGF5b3V0X2dhbGxlcnknKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KHRoaXMpLmFkZENsYXNzKCdzYnlfcGxheWVyX2xvYWRlZCcpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGF5ZXIgPSBuZXcgWVQuUGxheWVyKCdzYnlfcGxheWVyJytpbmRleCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzEwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvSWQ6IGpRdWVyeSh0aGlzKS5maW5kKCcuc2J5X2l0ZW0nKS5maXJzdCgpLmF0dHIoJ2RhdGEtdmlkZW8taWQnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGF5ZXJWYXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVzdGJyYW5kaW5nOiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWw6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9wbGF5OiBhdXRvcGxheVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvblN0YXRlQ2hhbmdlJzogZnVuY3Rpb24oZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZpZGVvSUQgPSBkYXRhLnRhcmdldC5nZXRWaWRlb0RhdGEoKVsndmlkZW9faWQnXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmRhdGEgIT09IDEpIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLmZpbmQoJy5zYnlfaXRlbScpLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGl0ZW1WaWRJRCA9IGpRdWVyeSh0aGlzKS5hdHRyKCdkYXRhLXZpZGVvLWlkJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoalF1ZXJ5KHRoaXMpLmZpbmQoJ2lmcmFtZScpLmxlbmd0aCAmJiBqUXVlcnkoZGF0YS50YXJnZXQuYSkuYXR0cignaWQnKSAhPT0galF1ZXJ5KHRoaXMpLmZpbmQoJ2lmcmFtZScpLmF0dHIoJ2lkJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWVQuZ2V0KCdzYnlfcGxheWVyXycraXRlbVZpZElEKS5wYXVzZVZpZGVvKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdMaWdodGJveCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygd2luZG93LnNieSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bUZlZWRzOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LnNieS5mZWVkc1tpXS5wbGF5ZXJBUElSZWFkeSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB3aW5kb3cuc2J5QVBJUmVhZHkgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgalF1ZXJ5KCcuc2JfeW91dHViZScpLmVhY2goZnVuY3Rpb24oaW5kZXgpIHtcbiAgICAgICAgICAgIHZhciAkc2VsZiA9IGpRdWVyeSh0aGlzKTtcbiAgICAgICAgICAgIGlmICgkc2VsZi5maW5kKCcuc2J5X2xpdmVfcGxheWVyJykubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcGxheWVyID0gbmV3IFlULlBsYXllcigkc2VsZi5maW5kKCcuc2J5X2xpdmVfcGxheWVyJykuYXR0cignaWQnKSwge1xuICAgICAgICAgICAgICAgICAgICBldmVudHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICdvblJlYWR5JzogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLmZpbmQoJy5zYnlfbGl2ZV9wbGF5ZXInKS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNlbGYuZmluZCgnLnNieV9pdGVtJykucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZpZGVvSUQgPSBZVC5nZXQoJHNlbGYuZmluZCgnLnNieV9saXZlX3BsYXllcicpLmF0dHIoJ2lkJykpLmdldFZpZGVvRGF0YSgpLnZpZGVvX2lkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLmZpbmQoJy5zYnlfcGxheWVyX3ZpZGVvX3RodW1ibmFpbCcpLmF0dHIoJ2RhdGEtdmlkZW8taWQnLHZpZGVvSUQpLmNzcygnei1pbmRleCcsLTEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpdGVtT2Zmc2V0ID0gJHNlbGYuZmluZCgnLnNieV9pdGVtJykubGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VibWl0RGF0YSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICdzYnlfbGl2ZV9yZXRyaWV2ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9faWQ6IHZpZGVvSUQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVlZF9pZDogJHNlbGYuYXR0cignZGF0YS1mZWVkaWQnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRzOiAkc2VsZi5hdHRyKCdkYXRhLXNob3J0Y29kZS1hdHRzJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvblN1Y2Nlc3MgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS50cmltKCkuaW5kZXhPZigneycpID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZmVlZCA9IHdpbmRvdy5zYnkuZmVlZHNbaW5kZXhdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IEpTT04ucGFyc2UoZGF0YSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrV1BQb3N0cyA9IHR5cGVvZiByZXNwb25zZS5mZWVkU3RhdHVzLmNoZWNrV1BQb3N0cyAhPT0gJ3VuZGVmaW5lZCcgPyByZXNwb25zZS5mZWVkU3RhdHVzLmNoZWNrV1BQb3N0cyA6IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZlZWQuc2V0dGluZ3MuZGVidWdFbmFibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2cocmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoZWNrV1BQb3N0cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlZWQuc2V0dGluZ3MuY2hlY2tXUFBvc3RzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVlZC5zZXR0aW5ncy5jaGVja1dQUG9zdHMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlZWQuYXBwZW5kTmV3UG9zdHMocmVzcG9uc2UuaHRtbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWVkLmFkZFJlc2l6ZWRJbWFnZXMocmVzcG9uc2UucmVzaXplZEltYWdlcyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlZWQuYWZ0ZXJJbml0aWFsSW1hZ2VzTG9hZGVkKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmVzcG9uc2UuZmVlZFN0YXR1cy5zaG91bGRQYWdpbmF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlZWQub3V0T2ZQYWdlcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNlbGYuZmluZCgnLnNieV9sb2FkX2J0bicpLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVlZC5vdXRPZlBhZ2VzID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSgnLnNieV9ub19qcycpLnJlbW92ZUNsYXNzKCdzYnlfbm9fanMnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLmZpbmQoJy5zYnlfbGl2ZV9wbGF5ZXInKS5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2VsZi5oYXNDbGFzcygnc2J5X2xheW91dF9nYWxsZXJ5JykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWVkLmNyZWF0ZVBsYXllcignc2J5X3BsYXllcicrZmVlZC5pbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2VsZi5maW5kKCcuc2J5X3BsYXllcl9pdGVtJykuY3NzKCdvcGFjaXR5JywxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLmZpbmQoJy5zYnlfaXRlbScpLmNzcygnb3BhY2l0eScsMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2VsZi5maW5kKCcuc2J5X3BsYXllcl9sb2FkaW5nJykucmVtb3ZlQ2xhc3MoJ3NieV9wbGF5ZXJfbG9hZGluZycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzZWxmLmhhc0NsYXNzKCdzYnlfbGF5b3V0X2xpc3QnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLmZpbmQoJy5zYnlfaXRlbV92aWRlb190aHVtYm5haWwnKS5vbignbW91c2VlbnRlcicsZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSh0aGlzKS5jc3MoJ3otaW5kZXgnLC0xKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmFqYXgoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHNieU9wdGlvbnMuYWRtaW5BamF4VXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAncG9zdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHN1Ym1pdERhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IG9uU3VjY2Vzc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChmbGFnTGlnaHRib3gpIHtcbiAgICAgICAgICAgIGlmICghalF1ZXJ5KCcjc2J5X2xiLXBsYXllcicpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGpRdWVyeSgnLnNiX3lvdXR1YmUnKS5maXJzdCgpLmFwcGVuZCgnPGRpdiBjbGFzcz1cInNieV9sYi1wbGF5ZXItbG9hZGVkIHNieV9sYi1wbGF5ZXJcIiBpZD1cInNieV9sYi1wbGF5ZXJcIiBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCI+PC9kaXY+Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwbGF5ZXIgPSBuZXcgWVQuUGxheWVyKCdzYnlfbGItcGxheWVyJywge1xuICAgICAgICAgICAgICAgIGhlaWdodDogJzEwMCcsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAnLFxuICAgICAgICAgICAgICAgIHZpZGVvSWQ6IGpRdWVyeSh0aGlzKS5maW5kKCcuc2J5X2l0ZW0nKS5maXJzdCgpLmF0dHIoJ2RhdGEtdmlkZW8taWQnKSxcbiAgICAgICAgICAgICAgICBwbGF5ZXJWYXJzOiB7XG4gICAgICAgICAgICAgICAgICAgIG1vZGVzdGJyYW5kaW5nOiAxLCBcbiAgICAgICAgICAgICAgICAgICAgcmVsOiAwLFxuICAgICAgICAgICAgICAgICAgICBhdXRvcGxheTogYXV0b3BsYXlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHdpbmRvdy5zYnlMaWdodGJveFBsYXllciA9IHBsYXllcjtcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB3aW5kb3cuc2J5ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICB2YXIgZXZ0ID0galF1ZXJ5LkV2ZW50KCdzYnlmZWVkYW5keXRyZWFkeScpO1xuICAgICAgICBqUXVlcnkod2luZG93KS50cmlnZ2VyKGV2dCk7XG4gICAgfVxuXG59O1xuXG4vKipcbiAqIFJldHJpZXZlcyBhIHNwZWNpZmljIGF0dHJpYnV0ZSB2YWx1ZSBmcm9tIHRoZSBnaXZlbiBBUEkgZGF0YSBvYmplY3QuXG4gKiBcbiAqIEBwYXJhbSB7T2JqZWN0fSByb290UGF0aFxuICogQHBhcmFtIHtzdHJpbmd9IGF0dHJOYW1lXG4gKiBcbiAqIEByZXR1cm5zIHtzdHJpbmd8Ym9vbGVhbn1cbiAqL1xuXG5mdW5jdGlvbiBnZXRTaW5nbGVBcGlEYXRhKHJvb3RQYXRoLCBhdHRyTmFtZSkge1xuICAgIHN3aXRjaChhdHRyTmFtZSkge1xuICAgICAgICBjYXNlICdhdXRob3JQcm9maWxlSW1hZ2VVcmwnOlxuICAgICAgICAgICAgcmV0dXJuIHJvb3RQYXRoPy5zbmlwcGV0Py5hdXRob3JQcm9maWxlSW1hZ2VVcmwgPyByb290UGF0aC5zbmlwcGV0LmF1dGhvclByb2ZpbGVJbWFnZVVybCA6ICcnO1xuICAgICAgICBjYXNlICdhdXRob3JEaXNwbGF5TmFtZSc6XG4gICAgICAgICAgICByZXR1cm4gcm9vdFBhdGg/LnNuaXBwZXQ/LmF1dGhvckRpc3BsYXlOYW1lID8gcm9vdFBhdGguc25pcHBldC5hdXRob3JEaXNwbGF5TmFtZSA6ICcnO1xuICAgICAgICBjYXNlICdhdXRob3JDaGFubmVsVXJsJzpcbiAgICAgICAgICAgIHJldHVybiByb290UGF0aD8uc25pcHBldD8uYXV0aG9yQ2hhbm5lbFVybCA/IHJvb3RQYXRoLnNuaXBwZXQuYXV0aG9yQ2hhbm5lbFVybCA6ICcnO1xuICAgICAgICBjYXNlICd0ZXh0RGlzcGxheSc6XG4gICAgICAgICAgICByZXR1cm4gcm9vdFBhdGg/LnNuaXBwZXQ/LnRleHREaXNwbGF5ID8gcm9vdFBhdGguc25pcHBldC50ZXh0RGlzcGxheSA6ICcnO1xuICAgICAgICBjYXNlICdsaWtlQ291bnQnOlxuICAgICAgICAgICAgcmV0dXJuIHJvb3RQYXRoPy5zbmlwcGV0Py5saWtlQ291bnQgPyByb290UGF0aC5zbmlwcGV0Lmxpa2VDb3VudCA6ICcnO1xuICAgICAgICBjYXNlICdwdWJsaXNoZWRBdCc6XG4gICAgICAgICAgICByZXR1cm4gcm9vdFBhdGg/LnNuaXBwZXQ/LnB1Ymxpc2hlZEF0ID8gcm9vdFBhdGguc25pcHBldC5wdWJsaXNoZWRBdCA6ICcnO1xuICAgICAgICBjYXNlICd0b3RhbFJlcGx5Q291bnQnOlxuICAgICAgICAgICAgcmV0dXJuIHJvb3RQYXRoPy50b3RhbFJlcGx5Q291bnQgPyByb290UGF0aC50b3RhbFJlcGx5Q291bnQgOiAnJztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG5cbi8qKlxuICogUmV0cmlldmVzIGEgc3RhdGljIFNWRyBpbWFnZSBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgbmFtZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFxuICogQHJldHVybnMge3N0cmluZ3xib29sZWFufSBcbiAqL1xuZnVuY3Rpb24gZ2V0U3RhdGljU1ZHKG5hbWUpIHtcblxuICAgIHN3aXRjaChuYW1lKSB7XG4gICAgICAgIGNhc2UgJ3Byb2ZpbGUtcGljdHVyZSc6XG4gICAgICAgICAgICByZXR1cm4gJzxzdmcgZmlsbD1cImN1cnJlbnRDb2xvclwiIHdpZHRoPVwiODAwcHhcIiBoZWlnaHQ9XCI4MDBweFwiIHZpZXdCb3g9XCIwIDAgNTEyIDUxMlwiIGlkPVwiX3gzMF8xXCIgdmVyc2lvbj1cIjEuMVwiIHhtbDpzcGFjZT1cInByZXNlcnZlXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiPjxwYXRoIGQ9XCJNMjU2LDBDMTE0LjYxNSwwLDAsMTE0LjYxNSwwLDI1NnMxMTQuNjE1LDI1NiwyNTYsMjU2czI1Ni0xMTQuNjE1LDI1Ni0yNTZTMzk3LjM4NSwwLDI1NiwweiBNMjU2LDkwICBjMzcuMDIsMCw2Ny4wMzEsMzUuNDY4LDY3LjAzMSw3OS4yMTlTMjkzLjAyLDI0OC40MzgsMjU2LDI0OC40MzhzLTY3LjAzMS0zNS40NjgtNjcuMDMxLTc5LjIxOVMyMTguOTgsOTAsMjU2LDkweiBNMzY5LjQ2LDQwMiAgSDE0Mi41NGMtMTEuMzc4LDAtMjAuNjAyLTkuMjI0LTIwLjYwMi0yMC42MDJDMTIxLjkzOCwzMjguMTU5LDE4MS45NTksMjg1LDI1NiwyODVzMTM0LjA2Miw0My4xNTksMTM0LjA2Miw5Ni4zOTggIEMzOTAuMDYyLDM5Mi43NzYsMzgwLjgzOSw0MDIsMzY5LjQ2LDQwMnpcIi8+PC9zdmc+JztcbiAgICAgICAgY2FzZSAndGh1bWJzLXVwJzpcbiAgICAgICAgICAgIHJldHVybiAnPHN2ZyB3aWR0aD1cIjE1XCIgaGVpZ2h0PVwiMTNcIiB2aWV3Qm94PVwiMCAwIDE1IDEzXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0xMy40MTU5IDQuMTgwMjdDMTMuNzYxIDQuMTgwMjcgMTQuMDc3OCA0LjMyMTc3IDE0LjM2NjQgNC42MDQ3N0MxNC42NTQ5IDQuODg3NzcgMTQuNzk5MiA1LjIwNzM4IDE0Ljc5OTIgNS41NjM2VjYuMjcwNkMxNC43OTkyIDYuMzY0NzEgMTQuNzkwMiA2LjQ1MTg4IDE0Ljc3MjIgNi41MzIxQzE0Ljc1NDIgNi42MTIzMiAxNC43MjcyIDYuNjkyNjYgMTQuNjkxMiA2Ljc3MzFMMTIuNjg0IDExLjQ5MDhDMTIuNTg0NSAxMS43NDQ5IDEyLjQxODEgMTEuOTQ4NiAxMi4xODQ5IDEyLjEwMTlDMTEuOTUxNyAxMi4yNTUyIDExLjY5IDEyLjMzMTggMTEuMzk5OSAxMi4zMzE4SDUuMTU5MzhDNC43NzI4MiAxMi4zMzE4IDQuNDQ1NjYgMTIuMjAwNiA0LjE3Nzg4IDExLjkzODNDMy45MDk5OSAxMS42NzU5IDMuNzc2MDQgMTEuMzQ2IDMuNzc2MDQgMTAuOTQ4NFY0Ljc1NjFDMy43NzYwNCA0LjU2Mjc3IDMuODEzMzIgNC4zODA0OSAzLjg4Nzg4IDQuMjA5MjdDMy45NjI1NCA0LjAzODA0IDQuMDY0NzcgMy44ODc1NCA0LjE5NDU0IDMuNzU3NzdMNy4yODkzOCAwLjY2MjkzMkM3LjUxODYgMC40MzEwNDMgNy43OTQyNyAwLjI4MTMyMSA4LjExNjM4IDAuMjEzNzY1QzguNDM4NDkgMC4xNDYzMjEgOC43MTQxNiAwLjE3ODk4OCA4Ljk0MzM4IDAuMzExNzY1QzkuMjI1NDkgMC40NjQyMSA5LjQwOTMyIDAuNjk1OTMyIDkuNDk0ODggMS4wMDY5M0M5LjU4MDMyIDEuMzE3OTMgOS41ODk5OSAxLjYyODA0IDkuNTIzODggMS45MzcyN0w5LjA5NTU0IDQuMTgwMjdIMTMuNDE1OVpNMS4zNDQwNCAxMi4zMzE4QzEuMDEzOTMgMTIuMzMxOCAwLjcyNjc2NyAxMi4yMDk3IDAuNDgyNTQ0IDExLjk2NTRDMC4yMzgzMjIgMTEuNzIxMiAwLjExNjIxMSAxMS40MzQgMC4xMTYyMTEgMTEuMTAzOVY1LjQwODI3QzAuMTE2MjExIDUuMDc4MDQgMC4yMzY5ODkgNC43OTA4MiAwLjQ3ODU0NCA0LjU0NjZDMC43MjAxIDQuMzAyMzggMS4wMDQ2NiA0LjE4MDI3IDEuMzMyMjEgNC4xODAyN0gxLjM0ODA0QzEuNjc4MjcgNC4xODAyNyAxLjk2NTQ5IDQuMzAyMzggMi4yMDk3MSA0LjU0NjZDMi40NTM5MyA0Ljc5MDgyIDIuNTc2MDQgNS4wNzgwNCAyLjU3NjA0IDUuNDA4MjdWMTEuMTAzOUMyLjU3NjA0IDExLjQzNCAyLjQ1MzkzIDExLjcyMTIgMi4yMDk3MSAxMS45NjU0QzEuOTY1NDkgMTIuMjA5NyAxLjY3ODI3IDEyLjMzMTggMS4zNDgwNCAxMi4zMzE4SDEuMzQ0MDRaXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiLz48L3N2Zz4nO1xuICAgICAgICBjYXNlICdhbmdsZS1kb3duJzpcbiAgICAgICAgICAgIHJldHVybiAnPHN2ZyB3aWR0aD1cIjhcIiBoZWlnaHQ9XCI2XCIgdmlld0JveD1cIjAgMCA4IDZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTAuOTQgMC43MjY2NTRMNCAzLjc3OTk5TDcuMDYgMC43MjY2NTRMOCAxLjY2NjY1TDQgNS42NjY2NUwwIDEuNjY2NjVMMC45NCAwLjcyNjY1NFpcIiBmaWxsPVwiY3VycmVudENvbG9yXCIvPjwvc3ZnPic7XG4gICAgICAgIGNhc2UgJ3lvdXR1YmUnOlxuICAgICAgICAgICAgcmV0dXJuICc8c3ZnIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxMVwiIHZpZXdCb3g9XCIwIDAgMTQgMTFcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTUuNjY2NzEgNy41TDkuMTI2NzEgNS41TDUuNjY2NzEgMy41VjcuNVpNMTMuMzczNCAyLjI4QzEzLjQ2IDIuNTkzMzQgMTMuNTIgMy4wMTMzNCAxMy41NiAzLjU0NjY3QzEzLjYwNjcgNC4wOCAxMy42MjY3IDQuNTQgMTMuNjI2NyA0Ljk0TDEzLjY2NjcgNS41QzEzLjY2NjcgNi45NiAxMy41NiA4LjAzMzM0IDEzLjM3MzQgOC43MkMxMy4yMDY3IDkuMzIgMTIuODIgOS43MDY2NyAxMi4yMiA5Ljg3MzM0QzExLjkwNjcgOS45NiAxMS4zMzM0IDEwLjAyIDEwLjQ1MzQgMTAuMDZDOS41ODY3MSAxMC4xMDY3IDguNzkzMzcgMTAuMTI2NyA4LjA2MDA0IDEwLjEyNjdMNy4wMDAwNCAxMC4xNjY3QzQuMjA2NzEgMTAuMTY2NyAyLjQ2NjcxIDEwLjA2IDEuNzgwMDQgOS44NzMzNEMxLjE4MDA0IDkuNzA2NjcgMC43OTMzNzQgOS4zMiAwLjYyNjcwNyA4LjcyQzAuNTQwMDQxIDguNDA2NjcgMC40ODAwNDEgNy45ODY2NyAwLjQ0MDA0MSA3LjQ1MzM0QzAuMzkzMzc0IDYuOTIgMC4zNzMzNzQgNi40NiAwLjM3MzM3NCA2LjA2TDAuMzMzMzc0IDUuNUMwLjMzMzM3NCA0LjA0IDAuNDQwMDQxIDIuOTY2NjcgMC42MjY3MDcgMi4yOEMwLjc5MzM3NCAxLjY4IDEuMTgwMDQgMS4yOTMzNCAxLjc4MDA0IDEuMTI2NjdDMi4wOTMzNyAxLjA0IDIuNjY2NzEgMC45ODAwMDIgMy41NDY3MSAwLjk0MDAwMkM0LjQxMzM3IDAuODkzMzM2IDUuMjA2NzEgMC44NzMzMzYgNS45NDAwNCAwLjg3MzMzNkw3LjAwMDA0IDAuODMzMzM2QzkuNzkzMzcgMC44MzMzMzYgMTEuNTMzNCAwLjk0MDAwMyAxMi4yMiAxLjEyNjY3QzEyLjgyIDEuMjkzMzQgMTMuMjA2NyAxLjY4IDEzLjM3MzQgMi4yOFpcIiBmaWxsPVwiY3VycmVudENvbG9yXCIvPjwvc3ZnPic7XG4gICAgICAgIGNhc2UgJ2Nyb3NzJzpcbiAgICAgICAgICAgIHJldHVybiAnPHN2ZyB3aWR0aD1cIjE1XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE1IDE0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0xNC4yNSAxLjQxTDEyLjg0IDBMNy4yNSA1LjU5TDEuNjYgMEwwLjI1IDEuNDFMNS44NCA3TDAuMjUgMTIuNTlMMS42NiAxNEw3LjI1IDguNDFMMTIuODQgMTRMMTQuMjUgMTIuNTlMOC42NiA3TDE0LjI1IDEuNDFaXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiLz48L3N2Zz4nO1xuICAgICAgICBjYXNlICdtZXNzYWdlJzpcbiAgICAgICAgICAgIHJldHVybiAnPHN2ZyB3aWR0aD1cIjI4XCIgaGVpZ2h0PVwiMjZcIiB2aWV3Qm94PVwiMCAwIDI4IDI2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0zLjMzMzQxIDIyQzIuNjAwMDggMjIgMS45NzIzIDIxLjczODkgMS40NTAwOCAyMS4yMTY3QzAuOTI3ODU5IDIwLjY5NDQgMC42NjY3NDggMjAuMDY2NyAwLjY2Njc0OCAxOS4zMzMzVjMuMzMzMzRDMC42NjY3NDggMi42IDAuOTI3ODU5IDEuOTcyMjMgMS40NTAwOCAxLjQ1MDAxQzEuOTcyMyAwLjkyNzc4MyAyLjYwMDA4IDAuNjY2NjcyIDMuMzMzNDEgMC42NjY2NzJIMjQuNjY2N0MyNS40MDAxIDAuNjY2NjcyIDI2LjAyNzkgMC45Mjc3ODMgMjYuNTUwMSAxLjQ1MDAxQzI3LjA3MjMgMS45NzIyMyAyNy4zMzM0IDIuNiAyNy4zMzM0IDMuMzMzMzRWMjQuMUMyNy4zMzM0IDI0LjcgMjcuMDYxMiAyNS4xMTY3IDI2LjUxNjcgMjUuMzVDMjUuOTcyMyAyNS41ODMzIDI1LjQ4OSAyNS40ODg5IDI1LjA2NjcgMjUuMDY2N0wyMi4wMDAxIDIySDMuMzMzNDFaTTIzLjEzMzQgMTkuMzMzM0wyNC42NjY3IDIwLjgzMzNWMy4zMzMzNEgzLjMzMzQxVjE5LjMzMzNIMjMuMTMzNFpcIiBmaWxsPVwiY3VycmVudENvbG9yXCIvPjwvc3ZnPic7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxufVxuXG5cbi8qKlxuICogR2VuZXJhdGVzIHRoZSBIVE1MIHRlbXBsYXRlIGZvciBhIHNpbmdsZSBjb21tZW50LlxuICogXG4gKiBAcGFyYW0ge3N0cmluZ30gYXV0aG9yUHJvZmlsZUltYWdlVXJsXG4gKiBAcGFyYW0ge3N0cmluZ30gYXV0aG9yRGlzcGxheU5hbWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBhdXRob3JDaGFubmVsVXJsXG4gKiBAcGFyYW0ge3N0cmluZ30gdGV4dERpc3BsYXlcbiAqIEBwYXJhbSB7bnVtYmVyfSBsaWtlQ291bnRcbiAqIEBwYXJhbSB7c3RyaW5nfSBwdWJsaXNoZWRBdFxuICogQHBhcmFtIHtudW1iZXJ9IHRvdGFsUmVwbHlDb3VudFxuICogXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBjb21tZW50U2luZ2xlVGVtcGxhdGUoYXV0aG9yUHJvZmlsZUltYWdlVXJsLCBhdXRob3JEaXNwbGF5TmFtZSwgYXV0aG9yQ2hhbm5lbFVybCwgdGV4dERpc3BsYXksIGxpa2VDb3VudCwgcHVibGlzaGVkQXQsIHRvdGFsUmVwbHlDb3VudCkge1xuXG4gICAgY29uc3QgZHVtbXlQcm9maWxlUGljID0gYXV0aG9yUHJvZmlsZUltYWdlVXJsID8gYDxpbWcgc3JjPSR7YXV0aG9yUHJvZmlsZUltYWdlVXJsfSBsb2FkaW5nPVwibGF6eVwiIHJlZmVycmVyUG9saWN5PVwibm8tcmVmZXJyZXJcIi8+YCA6IGdldFN0YXRpY1NWRygncHJvZmlsZS1waWN0dXJlJyk7XG4gICAgY29uc3QgcmVwbGllcyA9IHRvdGFsUmVwbHlDb3VudCA/IGA8YnV0dG9uIGNsYXNzPVwic2J5LXJlcGxpZXNcIj4ke3RvdGFsUmVwbHlDb3VudCA/IHRvdGFsUmVwbHlDb3VudCA6IDAgfSBSZXBsaWVzICR7Z2V0U3RhdGljU1ZHKCdhbmdsZS1kb3duJyl9PC9idXR0b24+YCA6ICcnO1xuXG4gICAgcmV0dXJuIGBcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYnktY29tbWVudC1wcm9maWxlLXBpY1wiPlxuICAgICAgICAgICAgICAgICR7ZHVtbXlQcm9maWxlUGljfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2J5LWNvbW1lbnQtaGVhZGluZ1wiPlxuICAgICAgICAgICAgICAgIDxhIGhyZWY9XCIke2F1dGhvckNoYW5uZWxVcmx9XCIgdGFyZ2V0PVwiX2JsYW5rXCIgY2xhc3M9XCJzYnktY29tbWVudC11c2VyLW5hbWVcIj4ke2F1dGhvckRpc3BsYXlOYW1lfTwvYT5cbiAgICAgICAgICAgICAgICA8c3Bhbj4ke3RpbWVBZ28ocHVibGlzaGVkQXQpfTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYnktY29tbWVudC10ZXh0XCI+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJzYnktcmVhZC1tb3JlLXRhcmdldFwiPiR7dGV4dERpc3BsYXl9PC9wPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYnktcmVhZC1tb3JlLXRyaWdnZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInNieS1yZWFkLW1vcmUtdGV4dFwiPlJlYWQgTW9yZTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwic2J5LXJlYWQtbGVzcy10ZXh0XCI+UmVhZCBMZXNzPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2J5LWNvbW1lbnQtYm90dG9tXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYnktY29tbWVudC1saWtlc1wiPlxuICAgICAgICAgICAgICAgICAgICAke2dldFN0YXRpY1NWRygndGh1bWJzLXVwJyl9ICR7bGlrZUNvdW50ID8gZm9ybWF0TGFyZ2VOdW1iZXIobGlrZUNvdW50KSA6IDAgfVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAke3JlcGxpZXN9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICBgO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyB0aGUgSFRNTCB0ZW1wbGF0ZSB3aGVuIG5vIGNvbW1lbnRzIGFyZSBmb3VuZC5cbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5cbmZ1bmN0aW9uIG5vQ29tbWVudHNUZW1wbGF0ZSgpIHtcbiAgICByZXR1cm4gYFxuICAgICAgICA8aDQgY2xhc3M9XCJzYnktY29tbWVudHMtc3ViLWhlYWRpbmdcIj5Db21tZW50czwvaDQ+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYnktbm8tY29tbWVudHNcIj5cbiAgICAgICAgICAgICR7Z2V0U3RhdGljU1ZHKCdtZXNzYWdlJyl9XG4gICAgICAgICAgICA8cD5UaGVyZSBhcmUgbm8gY29tbWVudHMgdG8gZGlzcGxheTwvcD5cbiAgICAgICAgPC9kaXY+YDtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZXMgdGhlIEhUTUwgdGVtcGxhdGUgd2hlbiB0aGVyZSBpcyBhbiBlcnJvciByZXRyaXZpbmcgY29tbWVudHMuXG4gKlxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gZXJyb3JDb21tZW50VGVtcGxhdGUoZXJyb3IpIHtcbiAgICByZXR1cm4gYFxuICAgICAgICA8aDQgY2xhc3M9XCJzYnktY29tbWVudHMtc3ViLWhlYWRpbmdcIj5Db21tZW50czwvaDQ+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYnktbm8tY29tbWVudHNcIj5cbiAgICAgICAgICAgIDxwPiR7ZXJyb3J9PC9wPlxuICAgICAgICA8L2Rpdj5gO1xufVxuXG4vKipcbiAqIEZvcm1hdCBkYXRlIGFuZCB0aW1lIGZvciBJU08gODYwMVxuICogXG4gKiBAcGFyYW0gdGltZXN0YW1wXG4gKiBcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIHRpbWVBZ28odGltZXN0YW1wKSB7XG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCBwYXN0ID0gbmV3IERhdGUodGltZXN0YW1wKTtcbiAgICBjb25zdCBkaWZmTXMgPSBub3cgLSBwYXN0O1xuXG4gICAgLy8gSGVscGVyIGZ1bmN0aW9ucyB0byBnZXQgdGltZSB1bml0c1xuICAgIGNvbnN0IHNlY29uZHMgPSBNYXRoLmZsb29yKGRpZmZNcyAvIDEwMDApO1xuICAgIGNvbnN0IG1pbnV0ZXMgPSBNYXRoLmZsb29yKHNlY29uZHMgLyA2MCk7XG4gICAgY29uc3QgaG91cnMgPSBNYXRoLmZsb29yKG1pbnV0ZXMgLyA2MCk7XG4gICAgY29uc3QgZGF5cyA9IE1hdGguZmxvb3IoaG91cnMgLyAyNCk7XG4gICAgY29uc3QgbW9udGhzID0gTWF0aC5mbG9vcihkYXlzIC8gMzApO1xuICAgIGNvbnN0IHllYXJzID0gTWF0aC5mbG9vcihtb250aHMgLyAxMik7XG5cbiAgICAvLyBEZXRlcm1pbmUgdGhlIGxhcmdlc3QgdW5pdCBvZiB0aW1lIHRoYXQgYXBwbGllc1xuICAgIGlmICh5ZWFycyA+IDApIHtcbiAgICAgICAgcmV0dXJuIGAke3llYXJzfSB5ZWFyJHt5ZWFycyA+IDEgPyAncycgOiAnJ30gYWdvYDtcbiAgICB9XG4gICAgaWYgKG1vbnRocyA+IDApIHtcbiAgICAgICAgcmV0dXJuIGAke21vbnRoc30gbW9udGgke21vbnRocyA+IDEgPyAncycgOiAnJ30gYWdvYDtcbiAgICB9XG4gICAgaWYgKGRheXMgPiAwKSB7XG4gICAgICAgIHJldHVybiBgJHtkYXlzfSBkYXkke2RheXMgPiAxID8gJ3MnIDogJyd9IGFnb2A7XG4gICAgfVxuICAgIGlmIChob3VycyA+IDApIHtcbiAgICAgICAgcmV0dXJuIGAke2hvdXJzfSBob3VyJHtob3VycyA+IDEgPyAncycgOiAnJ30gYWdvYDtcbiAgICB9XG4gICAgaWYgKG1pbnV0ZXMgPiAwKSB7XG4gICAgICAgIHJldHVybiBgJHttaW51dGVzfSBtaW51dGUke21pbnV0ZXMgPiAxID8gJ3MnIDogJyd9IGFnb2A7XG4gICAgfVxuICAgIGlmIChzZWNvbmRzID4gMCkge1xuICAgICAgICByZXR1cm4gYCR7c2Vjb25kc30gc2Vjb25kJHtzZWNvbmRzID4gMSA/ICdzJyA6ICcnfSBhZ29gO1xuICAgIH1cblxuICAgIHJldHVybiAnanVzdCBub3cnO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIHBsYWluIHRleHQgaW50byBIVE1MIHdpdGggY2xpY2thYmxlIGxpbmtzLlxuICogXG4gKiBAcGFyYW0ge3N0cmluZ30gdGV4dFxuICogXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBcbiAqL1xuZnVuY3Rpb24gYWRkTGlua3NUb3RleHQodGV4dCkge1xuICAgIC8vQWRkIGxpbmtzIHRvIHRoZSBjYXB0aW9uXG4gICAgaWYoIXRleHQpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoLyg+IykvZywnPiAjJyk7XG5cbiAgICByZXR1cm4gc2J5TGlua2lmeSh0ZXh0KTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IFVuaXggdGltZXN0YW1wIHRvIG1pbGxpc2Vjb25kc1xuICogQHBhcmFtIHRpbWVzdGFtcFxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuXG5mdW5jdGlvbiBjb252ZXJ0VW5peFRvTXModGltZXN0YW1wKSB7XG5cbiAgICBpZiggISB0aW1lc3RhbXAgKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IERhdGUocGFyc2VJbnQodGltZXN0YW1wKSAqIDEwMDApO1xuXG59XG5cbi8qKlxuICogVG9nZ2xlcyB0aGUgdmlzaWJpbGl0eSBvZiBhY2NvcmRpb24gc2VjdGlvbnMgYmFzZWQgb24gdGhlIHRyaWdnZXIgZWxlbWVudC5cbiAqIFxuICogQHBhcmFtIHtzdHJpbmd9IGNsYXNzTmFtZVxuICogQHBhcmFtIHtzdHJpbmd9IHRhcmdldFxuICogQHBhcmFtIHtzdHJpbmd9IHBhcmVudFxuICogQHBhcmFtIHtzdHJpbmd9IHRyaWdnZXIgXG4gKiBcbiAqIEByZXR1cm5zIHt2b2lkfSBcbiAqL1xuZnVuY3Rpb24gdG9nZ2xlQWNjb3JkaW9uKGNsYXNzTmFtZSwgdGFyZ2V0LCBwYXJlbnQgLHRyaWdnZXIgICkge1xuICAgIGpRdWVyeSh0cmlnZ2VyKS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpO1xuICAgIGpRdWVyeSh0YXJnZXQpLnVuYmluZCgnY2xpY2snKTtcbiAgICBqUXVlcnkodGFyZ2V0KS5jbGljayhmdW5jdGlvbigpe1xuICAgICAgICBqUXVlcnkodGhpcykudG9nZ2xlQ2xhc3MoY2xhc3NOYW1lICsgJy10cmlnZ2VyJyk7XG4gICAgICAgIGpRdWVyeSh0aGlzKS5jbG9zZXN0KHBhcmVudCkuZmluZCh0cmlnZ2VyKS50b2dnbGUoKTtcbiAgICB9KTtcbn1cbi8qKlxuICogVG9nZ2xlcyB0aGUgdmlzaWJpbGl0eSBvZiBcIlJlYWQgTW9yZVwiIGJ1dHRvbnNcbiAqIFxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmZ1bmN0aW9uIHRvZ2dsZVJlYWRNb3JlKCkge1xuICAgIGNvbnN0IHRhcmdldCA9IGpRdWVyeSgnLnNieS1yZWFkLW1vcmUtdGFyZ2V0Jyk7XG4gICAgY29uc3QgdHJpZ2dlckNsYXNzTmFtZSA9ICcuc2J5LXJlYWQtbW9yZS10cmlnZ2VyJztcblxuICAgIHRhcmdldC5lYWNoKGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgY29uc3QgY3VycmVudFRhcmdldCA9IGpRdWVyeSh0aGlzKVswXTtcblxuICAgICAgICBjb25zdCBwYXJhZ3JhcGhIZWlnaHQgPSBjdXJyZW50VGFyZ2V0LnNjcm9sbEhlaWdodDtcbiAgICAgICAgY29uc3QgY2xpZW50SGVpZ2h0ID0gY3VycmVudFRhcmdldC5vZmZzZXRIZWlnaHQ7XG4gICAgICAgIGNvbnN0IGhhc01vcmVUaGFuRm91ckxpbmVzID0gcGFyYWdyYXBoSGVpZ2h0ID4gY2xpZW50SGVpZ2h0ICYmIHBhcmFncmFwaEhlaWdodCA+IGNsaWVudEhlaWdodCArIDE7IC8vIGNsaWVudEhlaWdodCArIDEgdG8gZml4IGZpcmVmb3ggY2xpZW50SGVpZ2h0IGNhbGN1bGF0ZSBpc3N1ZS5cblxuICAgICAgICBpZiAoaGFzTW9yZVRoYW5Gb3VyTGluZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHRyaWdnZXIgPSBqUXVlcnkodGhpcykucGFyZW50KCkuZmluZCh0cmlnZ2VyQ2xhc3NOYW1lKTtcblxuICAgICAgICAgICAgdHJpZ2dlci51bmJpbmQoJ2NsaWNrJyk7XG4gICAgICAgICAgICB0cmlnZ2VyLmNsaWNrKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIGpRdWVyeSh0aGlzKS50b2dnbGVDbGFzcygnc2J5LXJlYWQtbW9yZS10cmlnZ2VyLWFjdGl2ZScpO1xuICAgICAgICAgICAgICAgIGpRdWVyeSh0aGlzKS5wYXJlbnQoKS5maW5kKCcuc2J5LXJlYWQtbW9yZS10YXJnZXQnKS50b2dnbGVDbGFzcygnc2J5LXJlYWQtbW9yZS10YXJnZXQtYWN0aXZlJyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGpRdWVyeSh0aGlzKS5wYXJlbnQoKS5maW5kKHRyaWdnZXJDbGFzc05hbWUpLmhpZGUoKTtcbiAgICAgICAgfVxuXG4gICAgfSk7XG59XG5cbi8qKlxuICogQXBwbGllcyBhIGNvbG9yIHNjaGVtZSBjbGFzcyB0byB0aGUgbGlnaHRib3ggYmFzZWQgb24gdGhlIGZsYWcgcHJvdmlkZWQuXG4gKiBcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb2xvclNjaGVtZSBcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gZmxhZ1xuICovXG5mdW5jdGlvbiBMaWdodGJveENvbG9yU2NoZW1lKGNvbG9yU2NoZW1lLCBmbGFnKSB7XG5cbiAgICBjb25zdCBjb21tZW50V3JhcCA9IGpRdWVyeSgnLnNieV9sYi1jYXB0aW9uJyk7XG4gICAgY29uc3QgY29sb3JTY2hlbWVDbGFzc05hbWUgPSAnc2J5LWxiLWRhcmstc2NoZW1lJztcblxuICAgIGlmKCBmYWxzZSA9PT0gZmxhZykge1xuICAgICAgICBjb21tZW50V3JhcC5yZW1vdmVDbGFzcyhjb2xvclNjaGVtZUNsYXNzTmFtZSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiggJ2RhcmsnID09PSBjb2xvclNjaGVtZSAmJiB0cnVlID09PSBmbGFnKSB7XG4gICAgICAgIGNvbW1lbnRXcmFwLmFkZENsYXNzKGNvbG9yU2NoZW1lQ2xhc3NOYW1lKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cblxuLyoqXG4gKiBSZXNldHMgdGhlIGJvZHkncyBvdmVyZmxvdyBzdHlsZSBhbmQgdGhlIGxpZ2h0Ym94IGNvbG9yIHNjaGVtZSB3aGVuIHRoZSBsaWdodGJveCBpcyBjbG9zZWQuXG4gKlxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmZ1bmN0aW9uIGxpZ2h0Ym94T25DbG9zZSgpIHtcbiAgICBqUXVlcnkoJ2JvZHknKS5jc3MoJ292ZXJmbG93JywgJ2F1dG8nKTtcbiAgICBMaWdodGJveENvbG9yU2NoZW1lKCcnLCBmYWxzZSk7XG4gICAgalF1ZXJ5KCcuc2J5X2dkcHJfbm90aWNlJykucmVtb3ZlKCk7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBsYXlvdXQgdHlwZSBvZiB0aGUgY2xvc2VzdCBhbmNlc3RvciBlbGVtZW50IHdpdGggYSBzcGVjaWZpYyBsYXlvdXQgY2xhc3MuXG4gKlxuICogQHBhcmFtIHtqUXVlcnl8SFRNTEVsZW1lbnR9IHRhcmdldFxuICogQHJldHVybnMge3N0cmluZ3xib29sZWFufVxuICovXG5mdW5jdGlvbiBnZXRMYXlvdXQodGFyZ2V0KSB7XG4gICAgY29uc3QgY3VycmVudFRhcmdldCA9IHRhcmdldC5jbG9zZXN0KCcuc2JfeW91dHViZScpO1xuXG4gICAgaWYoIGN1cnJlbnRUYXJnZXQuaGFzQ2xhc3MoJ3NieV9sYXlvdXRfbGlzdCcpICkge1xuICAgICAgICByZXR1cm4gJ2xpc3QnXG4gICAgfVxuXG4gICAgaWYoIGN1cnJlbnRUYXJnZXQuaGFzQ2xhc3MoJ3NieV9sYXlvdXRfZ3JpZCcpICkge1xuICAgICAgICByZXR1cm4gJ2dyaWQnXG4gICAgfVxuXG4gICAgaWYoIGN1cnJlbnRUYXJnZXQuaGFzQ2xhc3MoJ3NieV9sYXlvdXRfY2Fyb3VzZWwnKSApIHtcbiAgICAgICAgcmV0dXJuICdjYXJvdXNlbCdcbiAgICB9XG5cbiAgICBpZiggY3VycmVudFRhcmdldC5oYXNDbGFzcygnc2J5X2xheW91dF9nYWxsZXJ5JykgKSB7XG4gICAgICAgIHJldHVybiAnZ2FsbGVyeSdcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogT3BlbnMgYW5kIGRpc3BsYXlzIHRoZSBjb21tZW50cyBzZWN0aW9uIG9uIHRoZSBwYWdlLlxuICogXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZnVuY3Rpb24gb3BlbkNvbW1lbnRzKCkge1xuXG4gICAgaWYoICEgd2luZG93LnNieU9wdGlvbnMuaXNQcm8gKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3Qgb3BlbkNvbW1lbnRUcmlnZ2VyID0galF1ZXJ5KCcuc2J5LWNvbW1lbnRzLXRyaWdnZXInKTtcbiAgICBvcGVuQ29tbWVudFRyaWdnZXIudW5iaW5kKCdjbGljaycpO1xuICAgIG9wZW5Db21tZW50VHJpZ2dlci5jbGljayhmdW5jdGlvbigpIHtcbiAgICAgICAgY29uc3QgY29tbWVudFdyYXBDbGFzcyA9ICcuc2J5LWNvbW1lbnRzLXdyYXAnO1xuICAgICAgICBjb25zdCBjb21tZW50U2VjaW9uV3JhcCA9IGpRdWVyeSh0aGlzKS5jbG9zZXN0KCcuc2J5LWNvbW1lbnQtY29udGFpbmVyJyk7XG4gICAgICAgIGNvbnN0IGNvbW1lbnRTZWN0aW9uID0gIGNvbW1lbnRTZWNpb25XcmFwLmZpbmQoY29tbWVudFdyYXBDbGFzcyk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRMYXlvdXQgPSAgZ2V0TGF5b3V0KGpRdWVyeSh0aGlzKSk7XG5cbiAgICAgICAgaWYoIGNvbW1lbnRTZWN0aW9uLnRleHQoKS5sZW5ndGggPD0gMCkge1xuICAgICAgICAgICAgbGV0IGNvbW1lbnRDb3VudDtcbiAgICAgICAgICAgIGxldCB2aWRlb0lkO1xuICAgICAgICAgICAgbGV0IHRhcmdldDtcblxuICAgICAgICAgICAgaWYoICdnYWxsZXJ5JyA9PT0gY3VycmVudExheW91dCApIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRQYXJlbnQgPSBqUXVlcnkodGhpcykuY2xvc2VzdCgnLnNiX3lvdXR1YmUnKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50VGFyZ2V0ID0gdGFyZ2V0UGFyZW50LmZpbmQoJy5zYnlfaXRlbS5zYnlfY3VycmVudCcpO1xuXG4gICAgICAgICAgICAgICAgaWYoIHRhcmdldFBhcmVudCAmJiBjdXJyZW50VGFyZ2V0ICkge1xuICAgICAgICAgICAgICAgICAgICB2aWRlb0lkID0gY2hlY2tWYWx1ZShjdXJyZW50VGFyZ2V0LmF0dHIoJ2RhdGEtdmlkZW8taWQnKSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbW1lbnRDb3VudCA9IGNoZWNrVmFsdWUoY3VycmVudFRhcmdldC5maW5kKCdhJykuYXR0cignZGF0YS1jb21tZW50LWNvdW50JykpO1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQgPSB0YXJnZXRQYXJlbnQuZmluZChjb21tZW50V3JhcENsYXNzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmKCAnbGlzdCcgPT09IGN1cnJlbnRMYXlvdXQgKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFRhcmdldCA9IGpRdWVyeSh0aGlzKS5jbG9zZXN0KCcuc2J5X2l0ZW0nKTtcblxuICAgICAgICAgICAgICAgIGlmKCBjdXJyZW50VGFyZ2V0ICkge1xuICAgICAgICAgICAgICAgICAgICB2aWRlb0lkID0gY2hlY2tWYWx1ZShjdXJyZW50VGFyZ2V0LmF0dHIoJ2RhdGEtdmlkZW8taWQnKSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbW1lbnRDb3VudCA9IGNoZWNrVmFsdWUoY3VycmVudFRhcmdldC5maW5kKCdhJykuYXR0cignZGF0YS1jb21tZW50LWNvdW50JykpO1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQgPSBjdXJyZW50VGFyZ2V0LmZpbmQoY29tbWVudFdyYXBDbGFzcyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gUmVzZXQgYWxsIG90aGVyIGNvbW1lbnRzIG9wZW5lZCBcbiAgICAgICAgICAgICAgICByZXNldENvbW1lbnRzKGpRdWVyeSh0aGlzKS5jbG9zZXN0KCcuc2JfeW91dHViZScpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgYXR0cyA9IGNoZWNrVmFsdWUoalF1ZXJ5KHRoaXMpLmNsb3Nlc3QoJy5zYl95b3V0dWJlJykuYXR0cignZGF0YS1zaG9ydGNvZGUtYXR0cycpKTtcblxuICAgICAgICAgICAgZ2VuZXJhdGVDb21tZW50U2VjdGlvbih2aWRlb0lkLCBhdHRzLCB0YXJnZXQsIGNvbW1lbnRDb3VudCk7XG4gICAgICAgICAgICBjb21tZW50U2VjdGlvbi5hZGRDbGFzcygnc2J5LWNvbW1lbnRzLWFjdGl2ZScpO1xuXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb21tZW50U2VjdGlvbi50b2dnbGUoKTtcbiAgICAgICAgICAgIGNvbW1lbnRTZWN0aW9uLnRvZ2dsZUNsYXNzKCdzYnktY29tbWVudHMtYWN0aXZlJyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjdXJyZW50VGV4dFN0YXRlID0gY29tbWVudFNlY2lvbldyYXAuZmluZCgnLnNieS1jb21tZW50cy10cmlnZ2VyIHAnKTtcblxuICAgICAgICBpZiggY3VycmVudFRleHRTdGF0ZSApIHtcbiAgICAgICAgICAgIGNoYW5nZVRleHRPblRvZ2dsZShjdXJyZW50VGV4dFN0YXRlLCAnU2hvdyBDb21tZW50cycsICdIaWRlIENvbW1lbnRzJyk7XG4gICAgICAgIH1cblxuICAgIH0pO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSB2YWxpZCB2YWx1ZSBvciBhbiBlbXB0eSBzdHJpbmcgYmFzZWQgb24gdGhlIGlucHV0LlxuICogQHBhcmFtIHsqfSBlbGVtZW50IFxuICogQHJldHVybnMge3N0cmluZ30gXG4gKi9cbmZ1bmN0aW9uIGNoZWNrVmFsdWUoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50ID8gZWxlbWVudCA6ICcnO1xufVxuXG4vKipcbiAqIFNlbmRzIGFuIEFKQVggcmVxdWVzdCB3aXRoIHRoZSBzcGVjaWZpZWQgZGF0YSBhbmQgaGFuZGxlcyB0aGUgcmVzcG9uc2UuXG4gKiBAcGFyYW0ge09iamVjdH0gc3VibWl0RGF0YVxuICogQHBhcmFtIHtGdW5jdGlvbn0gb25TdWNjZXNzIFxuICogXG4gKiBAcmV0dXJucyB7dm9pZH0gXG4gKi9cbmZ1bmN0aW9uIHNieUFqYXgoc3VibWl0RGF0YSxvblN1Y2Nlc3MpIHtcbiAgICBqUXVlcnkuYWpheCh7XG4gICAgICAgIHVybDogc2J5T3B0aW9ucy5hZG1pbkFqYXhVcmwsXG4gICAgICAgIHR5cGU6ICdwb3N0JyxcbiAgICAgICAgZGF0YTogc3VibWl0RGF0YSxcbiAgICAgICAgc3VjY2Vzczogb25TdWNjZXNzXG4gICAgfSk7XG59XG5cbi8qKlxuICogRmV0Y2hlcyBhbmQgZ2VuZXJhdGVzIGEgY29tbWVudCBzZWN0aW9uIGZvciBhIGdpdmVuIHZpZGVvLlxuICogXG4gKiBAcGFyYW0ge3N0cmluZ30gdmlkZW9JZCBcbiAqIEBwYXJhbSB7T2JqZWN0fSBhdHRzXG4gKiBAcGFyYW0ge2pRdWVyeX0gdGFyZ2V0XG4gKiBcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5cbmZ1bmN0aW9uIGdlbmVyYXRlQ29tbWVudFNlY3Rpb24odmlkZW9JZCwgYXR0cywgdGFyZ2V0LCBjb21tZW50Q291bnQpIHtcblxuICAgIHN1Ym1pdERhdGEgPSB7XG4gICAgICAgIGFjdGlvbjogJ3NieV9nZXRfY29tbWVudHMnLFxuICAgICAgICB2aWRlb19pZDogdmlkZW9JZCxcbiAgICAgICAgYXR0czogYXR0c1xuICAgIH07XG5cbiAgICBsZXQgb25TdWNjZXNzID0gZnVuY3Rpb24gKGRhdGEpIHtcblxuICAgICAgICBpZiggISBkYXRhICkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYoIGZhbHNlID09PSBkYXRhLnN1Y2Nlc3MgKSB7XG4gICAgICAgICAgICB0YXJnZXQuaHRtbChlcnJvckNvbW1lbnRUZW1wbGF0ZShkYXRhLmRhdGEpKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvbW1lbnRKc29uID0gSlNPTi5wYXJzZShkYXRhKTtcblxuICAgICAgICBpZiggISBjb21tZW50SnNvbiApIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKCBjb21tZW50SnNvbj8uc3VjY2VzcyAmJiBmYWxzZSA9PT0gY29tbWVudEpzb24uc3VjY2Vzcykge1xuICAgICAgICAgICAgdGFyZ2V0Lmh0bWwoZXJyb3JDb21tZW50VGVtcGxhdGUoY29tbWVudEpzb24uZGF0YSkpO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYoIGNvbW1lbnRKc29uPy5lcnJvciAmJiBjb21tZW50SnNvbj8uZXJyb3I/Lm1lc3NhZ2UpIHtcbiAgICAgICAgICAgIGxldCBlcnJvck1lc3NhZ2UgPSBjb21tZW50SnNvbi5lcnJvci5tZXNzYWdlO1xuICAgICAgICAgICAgaWYoIGVycm9yTWVzc2FnZS5pbmNsdWRlcygnZGlzYWJsZWQgY29tbWVudHMnKSApIHtcbiAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSAnQ29tbWVudHMgYXJlIHR1cm5lZCBvZmYnXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0YXJnZXQuaHRtbChlcnJvckNvbW1lbnRUZW1wbGF0ZShlcnJvck1lc3NhZ2UpKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5vT2ZJdGVtcyA9IGNvbW1lbnRKc29uPy5pdGVtcyAmJiBjb21tZW50SnNvbj8uaXRlbXMubGVuZ3RoID8gY29tbWVudEpzb24uaXRlbXMubGVuZ3RoIDogJyc7XG4gICAgICAgIGNvbnN0IHZpZGVvTGluayA9IHZpZGVvSWQgPyBgaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj0ke3ZpZGVvSWR9YCA6ICcnO1xuXG4gICAgICAgIGlmKCEgbm9PZkl0ZW1zICkge1xuICAgICAgICAgICAgdGFyZ2V0Lmh0bWwobm9Db21tZW50c1RlbXBsYXRlKCkpO1xuICAgICAgICAgICAgdG9nZ2xlUmVhZE1vcmUoKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGN1cnJlbnRDb21tZW50Q291bnQgPSBjb21tZW50Q291bnQgPyBgKCAke2NvbW1lbnRDb3VudH0gKWAgOiAnJztcblxuICAgICAgICBsZXQgY29tbWVudEh0bWwgPSBgPGg0IGNsYXNzPVwic2J5LWNvbW1lbnRzLXN1Yi1oZWFkaW5nXCI+Q29tbWVudHMgJHtjdXJyZW50Q29tbWVudENvdW50fTwvaDQ+PHVsIGNsYXNzPVwic2J5LWNvbW1lbnRzXCI+YDtcbiAgICAgICAgalF1ZXJ5LmVhY2goY29tbWVudEpzb24uaXRlbXMsIGZ1bmN0aW9uKGluZGV4LCBjb21tZW50KSB7XG5cbiAgICAgICAgICAgIGNvbnN0IHRvcExldmVsQ29tbWVudFBhdGggPSBjb21tZW50Py5zbmlwcGV0Py50b3BMZXZlbENvbW1lbnQ7XG4gICAgICAgICAgICBjb25zdCB0b3BMZXZlbENvbW1lbnRTbmlwcGV0ID0gY29tbWVudD8uc25pcHBldDtcblxuICAgICAgICAgICAgLy8gR2VuZXJhdGUgdGhlIEhUTUwgZm9yIGVhY2ggY29tbWVudFxuICAgICAgICAgICAgY29tbWVudEh0bWwgKz0gYDxsaSBjbGFzcz1cInNieS1jb21tZW50XCI+JHtjb21tZW50U2luZ2xlVGVtcGxhdGUoIGdldFNpbmdsZUFwaURhdGEodG9wTGV2ZWxDb21tZW50UGF0aCwgJ2F1dGhvclByb2ZpbGVJbWFnZVVybCcpLCBnZXRTaW5nbGVBcGlEYXRhKHRvcExldmVsQ29tbWVudFBhdGgsICdhdXRob3JEaXNwbGF5TmFtZScpLCBnZXRTaW5nbGVBcGlEYXRhKHRvcExldmVsQ29tbWVudFBhdGgsICdhdXRob3JDaGFubmVsVXJsJyksIGdldFNpbmdsZUFwaURhdGEodG9wTGV2ZWxDb21tZW50UGF0aCwgJ3RleHREaXNwbGF5JyksIGdldFNpbmdsZUFwaURhdGEodG9wTGV2ZWxDb21tZW50UGF0aCwgJ2xpa2VDb3VudCcpLCBnZXRTaW5nbGVBcGlEYXRhKHRvcExldmVsQ29tbWVudFBhdGgsICdwdWJsaXNoZWRBdCcpLCBnZXRTaW5nbGVBcGlEYXRhKHRvcExldmVsQ29tbWVudFNuaXBwZXQsICd0b3RhbFJlcGx5Q291bnQnKSl9XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJzYnktcmVwbHktY29tbWVudHNcIj5gO1xuXG4gICAgICAgICAgICBpZiggY29tbWVudD8ucmVwbGllcz8uY29tbWVudHMgKSB7XG4gICAgICAgICAgICAgICAgLy8gVXNlICQuZWFjaCB0byBsb29wIHRocm91Z2ggcmVwbGllc1xuICAgICAgICAgICAgICAgIGpRdWVyeS5lYWNoKGNvbW1lbnQucmVwbGllcy5jb21tZW50cywgZnVuY3Rpb24ocmVwbHlJbmRleCwgcmVwbHkpIHtcblxuICAgICAgICAgICAgICAgICAgICBjb21tZW50SHRtbCArPSBgPGxpIGNsYXNzPVwic2J5LXJlcGx5LWNvbW1lbnRcIiA+JHtjb21tZW50U2luZ2xlVGVtcGxhdGUoZ2V0U2luZ2xlQXBpRGF0YShyZXBseSwgJ2F1dGhvclByb2ZpbGVJbWFnZVVybCcpLCBnZXRTaW5nbGVBcGlEYXRhKHJlcGx5LCAnYXV0aG9yRGlzcGxheU5hbWUnKSwgZ2V0U2luZ2xlQXBpRGF0YShyZXBseSwgJ2F1dGhvckNoYW5uZWxVcmwnKSwgZ2V0U2luZ2xlQXBpRGF0YShyZXBseSwgJ3RleHREaXNwbGF5JyksIGdldFNpbmdsZUFwaURhdGEocmVwbHksICdsaWtlQ291bnQnKSwgZ2V0U2luZ2xlQXBpRGF0YShyZXBseSwgJ3B1Ymxpc2hlZEF0JykpfTwvbGk+YDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIENsb3NlIHRoZSBjb21tZW50IGNvbnRhaW5lclxuICAgICAgICAgICAgY29tbWVudEh0bWwgKz0gYDwvdWw+PC9saT5gO1xuICAgICAgICB9KTtcbiAgICAgICAgY29tbWVudEh0bWwgKz0gYDwvdWw+YDtcbiAgICAgICAgY29tbWVudEh0bWwgKz0gYDxhIGhyZWY9XCIke3ZpZGVvTGlua31cIiB0YXJnZXQ9XCJfYmxhbmtcIiBjbGFzcz1cInNieS12aWV3LWFsbC1idXR0b24gXCI+VmlldyBhbGwgY29tbWVudHMgb24gWW91VHViZTwvYT5gO1xuXG4gICAgICAgIHRhcmdldC5odG1sKGNvbW1lbnRIdG1sKS5mYWRlSW4oXCJmYXN0XCIpOyBcblxuICAgICAgICB0b2dnbGVSZWFkTW9yZSgpO1xuICAgICAgICB0b2dnbGVBY2NvcmRpb24oJ3NieS1hY3RpdmUnLCcuc2J5LXJlcGxpZXMnLCcuc2J5LWNvbW1lbnQnLCcuc2J5LXJlcGx5LWNvbW1lbnRzJyk7XG4gICAgfVxuXG4gICAgdG9nZ2xlUmVhZE1vcmUoKTtcbiAgICBzYnlBamF4KHN1Ym1pdERhdGEsb25TdWNjZXNzKVxuXG59XG5cbi8qKlxuICogVG9nZ2xlcyB0aGUgdGV4dCBvZiBhbiBlbGVtZW50IGJhc2VkIG9uIGl0cyBjdXJyZW50IGNvbnRlbnQuXG4gKlxuICogVGhpcyBmdW5jdGlvbiB1cGRhdGVzIHRoZSB0ZXh0IG9mIGFuIGVsZW1lbnQgaWYgdGhlIGVsZW1lbnQncyBjdXJyZW50IHRleHRcbiAqIG1hdGNoZXMgdGhlIHNwZWNpZmllZCBgY3VycmVudFRleHRgLiBJZiBpdCBtYXRjaGVzLCB0aGUgdGV4dCBpcyByZXBsYWNlZCB3aXRoXG4gKiB0aGUgcHJvdmlkZWQgYHJlcGxhY2VtZW50VGV4dGAuIElmIGl0IGRvZXMgbm90IG1hdGNoLCB0aGUgdGV4dCByZW1haW5zIGFzIGBjdXJyZW50VGV4dGAuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGN1cnJlbnRTdGF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IGN1cnJlbnRUZXh0XG4gKiBAcGFyYW0ge3N0cmluZ30gcmVwbGFjZW1lbnRUZXh0XG4gKiBcbiAqIEByZXR1cm5zIHt2b2lkfSBcbiAqL1xuXG5mdW5jdGlvbiBjaGFuZ2VUZXh0T25Ub2dnbGUoY3VycmVudFN0YXRlLCBjdXJyZW50VGV4dCwgcmVwbGFjZW1lbnRUZXh0ICkge1xuXG4gICAgaWYoIGN1cnJlbnRTdGF0ZSAmJiBjdXJyZW50VGV4dCAmJiByZXBsYWNlbWVudFRleHQgKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRTdGF0ZVRleHQgPSBjdXJyZW50VGV4dCA9PT0gY3VycmVudFN0YXRlLnRleHQoKSA/IHJlcGxhY2VtZW50VGV4dCA6IGN1cnJlbnRUZXh0O1xuICAgICAgICBjdXJyZW50U3RhdGUudGV4dChjdXJyZW50U3RhdGVUZXh0KTtcbiAgICB9XG59XG5cbi8qKlxuICogUmVzZXRzIHRoZSBjb21tZW50cyBvZiBhIHNwZWNpZmllZCBwYXJlbnQgZWxlbWVudC5cbiAqXG4gKiBAcGFyYW0ge2pRdWVyeX0gcGFyZW50XG4gKlxuICogQHJldHVybnMge3ZvaWR9IFxuICovXG5cbmZ1bmN0aW9uIHJlc2V0Q29tbWVudHMocGFyZW50KSB7XG4gICAgaWYoICdnYWxsZXJ5JyA9PT0gZ2V0TGF5b3V0KHBhcmVudCkgfHwgJ2xpc3QnID09PSBnZXRMYXlvdXQocGFyZW50KSApIHtcbiAgICAgICAgY29uc3QgdHJpZ2dlciA9IHBhcmVudC5maW5kKCcuc2J5LWNvbW1lbnRzLXRyaWdnZXInKTtcbiAgICAgICAgdHJpZ2dlci5maW5kKCdwJykudGV4dCgnU2hvdyBDb21tZW50cycpO1xuICAgICAgICBwYXJlbnQuZmluZCgnLnNieS1jb21tZW50cy13cmFwJykuaHRtbCgnJyk7XG4gICAgfVxufVxuXG4vKipcbiAqIEZvcm1hdHMgYSBsYXJnZSBudW1iZXIgaW50byBhIG1vcmUgcmVhZGFibGUgc3RyaW5nIHdpdGggYSBzdWZmaXguXG4gKiBUaGUgZnVuY3Rpb24gY29udmVydHMgbGFyZ2UgbnVtYmVycyBpbnRvIGEgc3RyaW5nIHdpdGggYSBzdWZmaXggdG8gZGVub3RlIHRoZSBzY2FsZSBvZiB0aGUgbnVtYmVyLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBudW1cbiAqIFxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuXG5mdW5jdGlvbiBmb3JtYXRMYXJnZU51bWJlcihudW0pIHtcbiAgICBpZiAobnVtID49IDFlOSkgcmV0dXJuIChudW0gLyAxZTkpLnRvRml4ZWQoMSkgKyAnQic7XG4gICAgaWYgKG51bSA+PSAxZTYpIHJldHVybiAobnVtIC8gMWU2KS50b0ZpeGVkKDEpICsgJ00nO1xuICAgIGlmIChudW0gPj0gMWUzKSByZXR1cm4gKG51bSAvIDFlMykudG9GaXhlZCgxKSArICdLJztcblxuICAgIHJldHVybiBudW07XG59XG5cbi8qKlxuICogQXBwbGllcyBhIHNldCBvZiBjb2xvcnMgdG8gdGhlIGNoYW5uZWwgaGVhZGVyLlxuICogXG4gKiBAcGFyYW0ge09iamVjdH0gY29sb3JBcnJheSAtIEFuIG9iamVjdCBjb250YWluaW5nIGNvbG9yIHByb3BlcnRpZXMgZm9yIHRoZSBjaGFubmVsIGhlYWRlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBjb2xvckFycmF5LmNoYW5uZWxOYW1lIC0gVGhlIHRleHQgY29sb3IgZm9yIHRoZSBjaGFubmVsIG5hbWUgZWxlbWVudC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBjb2xvckFycmF5LnN1YnNjcmliZUNvdW50IC0gVGhlIHRleHQgY29sb3IgZm9yIHRoZSBzdWJzY3JpYmUgY291bnQgZWxlbWVudC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBjb2xvckFycmF5LmJ1dHRvbkJhY2tncm91bmQgLSBUaGUgYmFja2dyb3VuZCBjb2xvciBmb3IgdGhlIGJ1dHRvbiBlbGVtZW50LlxuICogQHBhcmFtIHtzdHJpbmd9IGNvbG9yQXJyYXkuYnV0dG9uVGV4dCAtIFRoZSB0ZXh0IGNvbG9yIGZvciB0aGUgYnV0dG9uIGVsZW1lbnQuXG4gKiBcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5mdW5jdGlvbiBzZXRDb2xvcnNUb0NoYW5uZWxIZWFkZXIoY29sb3JBcnJheSkge1xuICAgIGNvbnN0IHtjaGFubmVsTmFtZSwgc3Vic2NyaWJlQ291bnQsIGJ1dHRvbkJhY2tncm91bmQsIGJ1dHRvblRleHR9ID0gY29sb3JBcnJheTtcbiAgICBjb25zdCBwYXJlbnQgPSBqUXVlcnkoJy5zYnlfbGItZGF0YUNvbnRhaW5lciAuc2J5LWxiLWNoYW5uZWwtaGVhZGVyJyk7XG4gICAgXG4gICAgaWYoICEgcGFyZW50ICkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYoIGNoYW5uZWxOYW1lICkge1xuICAgICAgICBwYXJlbnQuZmluZCgnLnNieS1sYi1jaGFubmVsLW5hbWUtd2l0aC1zdWJzIHNwYW46Zmlyc3QtY2hpbGQnKS5jc3MoJ2NvbG9yJywgY2hhbm5lbE5hbWUpO1xuICAgIH1cblxuICAgIGlmKCBzdWJzY3JpYmVDb3VudCApIHtcbiAgICAgICAgcGFyZW50LmZpbmQoJy5zYnktbGItY2hhbm5lbC1uYW1lLXdpdGgtc3VicyBzcGFuOm50aC1jaGlsZCgyKScpLmNzcygnY29sb3InLCBzdWJzY3JpYmVDb3VudCk7XG4gICAgfVxuXG4gICAgaWYoIGJ1dHRvbkJhY2tncm91bmQgKSB7XG4gICAgICAgIHBhcmVudC5maW5kKCcuc2J5LWxiLXN1YnNjcmliZS1idG4nKS5jc3MoJ2JhY2tncm91bmQnLCBidXR0b25CYWNrZ3JvdW5kKTtcbiAgICB9XG5cbiAgICBpZiggYnV0dG9uVGV4dCApIHtcbiAgICAgICAgcGFyZW50LmZpbmQoJy5zYnktbGItc3Vic2NyaWJlLWJ0bicpLmNzcygnY29sb3InLCBidXR0b25UZXh0KTtcbiAgICB9XG59XG4iXSwibmFtZXMiOlsiREVGQVVMVCIsInBhcnNlU3R5bGUiLCJpc051bGwiLCJvYmoiLCJGaWx0ZXJDU1MiLCJvcHRpb25zIiwicmV0IiwiaSIsInNoYWxsb3dDb3B5T2JqZWN0Iiwid2hpdGVMaXN0Iiwib25BdHRyIiwib25JZ25vcmVBdHRyIiwic2FmZUF0dHJWYWx1ZSIsInRoaXMiLCJwcm90b3R5cGUiLCJwcm9jZXNzIiwiY3NzIiwidG9TdHJpbmciLCJzb3VyY2VQb3NpdGlvbiIsInBvc2l0aW9uIiwibmFtZSIsInZhbHVlIiwic291cmNlIiwiY2hlY2siLCJpc1doaXRlIiwiUmVnRXhwIiwidGVzdCIsIm9wdHMiLCJtb2R1bGUiLCJleHBvcnRzIiwiZ2V0RGVmYXVsdFdoaXRlTGlzdCIsIlJFR0VYUF9VUkxfSkFWQVNDUklQVCIsImh0bWwiLCJ3aW5kb3ciLCJmaWx0ZXJDU1MiLCJfIiwidHJpbVJpZ2h0IiwibGVuZ3RoIiwiY3NzTGVuZ3RoIiwiaXNQYXJlbnRoZXNpc09wZW4iLCJsYXN0UG9zIiwicmV0Q1NTIiwiYWRkTmV3QXR0ciIsInRyaW0iLCJzbGljZSIsImoiLCJpbmRleE9mIiwiYyIsImFyciIsIml0ZW0iLCJBcnJheSIsImZvckVhY2giLCJmbiIsInNjb3BlIiwiY2FsbCIsInN0ciIsIlN0cmluZyIsInJlcGxhY2UiLCJnZXREZWZhdWx0Q1NTV2hpdGVMaXN0IiwiZGVmYXVsdENTU0ZpbHRlciIsImVzY2FwZUh0bWwiLCJSRUdFWFBfTFQiLCJSRUdFWFBfR1QiLCJSRUdFWFBfUVVPVEUiLCJSRUdFWFBfUVVPVEVfMiIsIlJFR0VYUF9BVFRSX1ZBTFVFXzEiLCJSRUdFWFBfQVRUUl9WQUxVRV9DT0xPTiIsIlJFR0VYUF9BVFRSX1ZBTFVFX05FV0xJTkUiLCJSRUdFWFBfREVGQVVMVF9PTl9UQUdfQVRUUl80IiwiUkVHRVhQX0RFRkFVTFRfT05fVEFHX0FUVFJfNyIsIlJFR0VYUF9ERUZBVUxUX09OX1RBR19BVFRSXzgiLCJlc2NhcGVRdW90ZSIsInVuZXNjYXBlUXVvdGUiLCJlc2NhcGVIdG1sRW50aXRpZXMiLCJjb2RlIiwiZnJvbUNoYXJDb2RlIiwicGFyc2VJbnQiLCJzdWJzdHIiLCJlc2NhcGVEYW5nZXJIdG1sNUVudGl0aWVzIiwiY2xlYXJOb25QcmludGFibGVDaGFyYWN0ZXIiLCJzdHIyIiwibGVuIiwiY2hhckNvZGVBdCIsImNoYXJBdCIsImZyaWVuZGx5QXR0clZhbHVlIiwiZXNjYXBlQXR0clZhbHVlIiwiYSIsImFiYnIiLCJhZGRyZXNzIiwiYXJlYSIsImFydGljbGUiLCJhc2lkZSIsImF1ZGlvIiwiYiIsImJkaSIsImJkbyIsImJpZyIsImJsb2NrcXVvdGUiLCJiciIsImNhcHRpb24iLCJjZW50ZXIiLCJjaXRlIiwiY29sIiwiY29sZ3JvdXAiLCJkZCIsImRlbCIsImRldGFpbHMiLCJkaXYiLCJkbCIsImR0IiwiZW0iLCJmaWdjYXB0aW9uIiwiZmlndXJlIiwiZm9udCIsImZvb3RlciIsImgxIiwiaDIiLCJoMyIsImg0IiwiaDUiLCJoNiIsImhlYWRlciIsImhyIiwiaW1nIiwiaW5zIiwia2JkIiwibGkiLCJtYXJrIiwibmF2Iiwib2wiLCJwIiwicHJlIiwicyIsInNlY3Rpb24iLCJzbWFsbCIsInNwYW4iLCJzdWIiLCJzdW1tYXJ5Iiwic3VwIiwic3Ryb25nIiwic3RyaWtlIiwidGFibGUiLCJ0Ym9keSIsInRkIiwidGZvb3QiLCJ0aCIsInRoZWFkIiwidHIiLCJ0dCIsInUiLCJ1bCIsInZpZGVvIiwib25UYWciLCJ0YWciLCJvbklnbm9yZVRhZyIsIm9uVGFnQXR0ciIsIm9uSWdub3JlVGFnQXR0ciIsImNzc0ZpbHRlciIsImxhc3RJbmRleCIsIm9uSWdub3JlVGFnU3RyaXBBbGwiLCJTdHJpcFRhZ0JvZHkiLCJ0YWdzIiwibmV4dCIsImlzUmVtb3ZlQWxsVGFnIiwiaXNBcnJheSIsInJlbW92ZUxpc3QiLCJwb3NTdGFydCIsImlzUmVtb3ZlVGFnIiwiaXNDbG9zaW5nIiwiZW5kIiwicHVzaCIsInJlbW92ZSIsInJldGh0bWwiLCJwb3MiLCJzdHJpcENvbW1lbnRUYWciLCJyZXRIdG1sIiwic3RyaXBCbGFua0NoYXIiLCJjaGFycyIsInNwbGl0IiwiZmlsdGVyIiwiY2hhciIsImpvaW4iLCJhdHRyaWJ1dGVXcmFwU2lnbiIsInBhcnNlciIsIkZpbHRlclhTUyIsImZpbHRlclhTUyIsInNlbGYiLCJEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSIsImdldFRhZ05hbWUiLCJ0YWdOYW1lIiwic3BhY2VJbmRleCIsInRvTG93ZXJDYXNlIiwiUkVHRVhQX0lMTEVHQUxfQVRUUl9OQU1FIiwiZmluZE5leHRFcXVhbCIsImZpbmROZXh0UXVvdGF0aW9uTWFyayIsImZpbmRCZWZvcmVFcXVhbCIsInN0cmlwUXVvdGVXcmFwIiwidGV4dCIsImlzUXVvdGVXcmFwU3RyaW5nIiwicGFyc2VUYWciLCJ0YWdTdGFydCIsInF1b3RlU3RhcnQiLCJjdXJyZW50UG9zIiwiY3VycmVudFRhZ05hbWUiLCJjdXJyZW50SHRtbCIsImNoYXJpdGVyYXRvciIsImljIiwicGFyc2VBdHRyIiwibGFzdE1hcmtQb3MiLCJyZXRBdHRycyIsInRtcE5hbWUiLCJhZGRBdHRyIiwibWF0Y2giLCJleGVjIiwiaW5kZXgiLCJzdHJpcElnbm9yZVRhZyIsImNvbnNvbGUiLCJlcnJvciIsImFsbG93TGlzdCIsIm1hcCIsImtleXNUb0xvd2VyQ2FzZSIsInNpbmdsZVF1b3RlZEF0dHJpYnV0ZVZhbHVlIiwibWUiLCJhbGxvd0NvbW1lbnRUYWciLCJzdHJpcElnbm9yZVRhZ0JvZHkiLCJpbmZvIiwiT2JqZWN0IiwiaGFzT3duUHJvcGVydHkiLCJhdHRycyIsImNsb3NpbmciLCJnZXRBdHRycyIsIndoaXRlQXR0ckxpc3QiLCJhdHRyc0h0bWwiLCJpc1doaXRlQXR0ciIsIl9fd2VicGFja19tb2R1bGVfY2FjaGVfXyIsIiQiLCJrIiwiZiIsImUiLCJtIiwibCIsImciLCJ4c3MiLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJjYWNoZWRNb2R1bGUiLCJ1bmRlZmluZWQiLCJfX3dlYnBhY2tfbW9kdWxlc19fIiwicmVxdWlyZSIsInNieV9qc19leGlzdHMiLCJzYnlFbmNvZGVJbnB1dCIsImlucHV0Iiwic2J5X3N1cHBvcnRzX3ZpZGVvIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiY2FuUGxheVR5cGUiLCJzYnlMaW5raWZ5IiwiY2FsbGJhY2siLCJxIiwicHVuY3RfcmVnZXhwIiwieiIsInciLCJ2IiwiQSIsIkUiLCJDIiwieSIsIkQiLCJCIiwiciIsIngiLCJ0IiwiRiIsImFwcGx5IiwiZCIsInNldHRpbmdzIiwiZXh0ZW5kIiwiRGVmYXVsdHMiLCIkZWxlbWVudCIsIl9oYW5kbGVycyIsIl9wbHVnaW5zIiwiX3N1cHJlc3MiLCJfY3VycmVudCIsIl9zcGVlZCIsIl9jb29yZGluYXRlcyIsIl9icmVha3BvaW50IiwiX3dpZHRoIiwiX2l0ZW1zIiwiX2Nsb25lcyIsIl9tZXJnZXJzIiwiX3dpZHRocyIsIl9pbnZhbGlkYXRlZCIsIl9waXBlIiwiX2RyYWciLCJ0aW1lIiwidGFyZ2V0IiwicG9pbnRlciIsInN0YWdlIiwic3RhcnQiLCJjdXJyZW50IiwiZGlyZWN0aW9uIiwiX3N0YXRlcyIsImluaXRpYWxpemluZyIsImFuaW1hdGluZyIsImRyYWdnaW5nIiwiZWFjaCIsInByb3h5IiwiUGx1Z2lucyIsIldvcmtlcnMiLCJydW4iLCJzZXR1cCIsImluaXRpYWxpemUiLCJpdGVtcyIsImxvb3AiLCJyZXdpbmQiLCJtb3VzZURyYWciLCJ0b3VjaERyYWciLCJwdWxsRHJhZyIsImZyZWVEcmFnIiwibWFyZ2luIiwic3RhZ2VQYWRkaW5nIiwibWVyZ2UiLCJtZXJnZUZpdCIsImF1dG9XaWR0aCIsInN0YXJ0UG9zaXRpb24iLCJydGwiLCJzbWFydFNwZWVkIiwiZmx1aWRTcGVlZCIsImRyYWdFbmRTcGVlZCIsInJlc3BvbnNpdmUiLCJyZXNwb25zaXZlUmVmcmVzaFJhdGUiLCJyZXNwb25zaXZlQmFzZUVsZW1lbnQiLCJmYWxsYmFja0Vhc2luZyIsIm5lc3RlZEl0ZW1TZWxlY3RvciIsIml0ZW1FbGVtZW50Iiwic3RhZ2VFbGVtZW50IiwicmVmcmVzaENsYXNzIiwibG9hZGVkQ2xhc3MiLCJsb2FkaW5nQ2xhc3MiLCJydGxDbGFzcyIsInJlc3BvbnNpdmVDbGFzcyIsImRyYWdDbGFzcyIsIml0ZW1DbGFzcyIsInN0YWdlQ2xhc3MiLCJzdGFnZU91dGVyQ2xhc3MiLCJncmFiQ2xhc3MiLCJXaWR0aCIsIkRlZmF1bHQiLCJJbm5lciIsIk91dGVyIiwiVHlwZSIsIkV2ZW50IiwiU3RhdGUiLCJ3aWR0aCIsInJlbGF0aXZlIiwiJHN0YWdlIiwiY2hpbGRyZW4iLCJ0b0ZpeGVkIiwiTWF0aCIsIm1pbiIsIm1heCIsImNlaWwiLCJoIiwibm9ybWFsaXplIiwib3V0ZXJIVE1MIiwiYWRkQ2xhc3MiLCJhcHBlbmRUbyIsInByZXBlbmRUbyIsImFicyIsImVxIiwicmVtb3ZlQXR0ciIsIm1pbmltdW0iLCJtYXhpbXVtIiwicmVzZXQiLCJhbmltYXRlIiwiY29vcmRpbmF0ZXMiLCJvcCIsInJlbW92ZUNsYXNzIiwiZW50ZXIiLCJ0cmlnZ2VyIiwidG9nZ2xlQ2xhc3MiLCJpcyIsImZpbmQiLCJwcmVsb2FkQXV0b1dpZHRoSW1hZ2VzIiwid3JhcCIsImFwcGVuZCIsInBhcmVudCIsIm5vdCIsInJlZnJlc2giLCJpbnZhbGlkYXRlIiwicmVnaXN0ZXJFdmVudEhhbmRsZXJzIiwibGVhdmUiLCJ2aWV3cG9ydCIsIk51bWJlciIsImF0dHIiLCJwcm9wZXJ0eSIsIm9wdGlvbnNMb2dpYyIsInByZXBhcmUiLCJjb250ZW50IiwiZGF0YSIsInVwZGF0ZSIsImFsbCIsImdyZXAiLCJvblRocm90dGxlZFJlc2l6ZSIsImNsZWFyVGltZW91dCIsInJlc2l6ZVRpbWVyIiwic2V0VGltZW91dCIsIm9uUmVzaXplIiwiaXNEZWZhdWx0UHJldmVudGVkIiwic3VwcG9ydCIsInRyYW5zaXRpb24iLCJvbiIsIm9uVHJhbnNpdGlvbkVuZCIsIm9uRHJhZ1N0YXJ0Iiwib25EcmFnRW5kIiwid2hpY2giLCJ0cmFuc2Zvcm0iLCJsZWZ0IiwidG9wIiwic3RvcCIsInR5cGUiLCJzcGVlZCIsIkRhdGUiLCJnZXRUaW1lIiwib25lIiwiZGlmZmVyZW5jZSIsIm9uRHJhZ01vdmUiLCJwcmV2ZW50RGVmYXVsdCIsIm9mZiIsImNsb3Nlc3QiLCJ0cmFuc2Zvcm0zZCIsInN1cHByZXNzIiwicmVsZWFzZSIsImlzTnVtZXJpYyIsIm1lcmdlcnMiLCJjbG9uZXMiLCJkdXJhdGlvbiIsInRvIiwicHJldiIsInN0b3BQcm9wYWdhdGlvbiIsInNyY0VsZW1lbnQiLCJvcmlnaW5hbFRhcmdldCIsImdldCIsImlubmVyV2lkdGgiLCJkb2N1bWVudEVsZW1lbnQiLCJjbGllbnRXaWR0aCIsIndhcm4iLCJlbXB0eSIsImpRdWVyeSIsIm5vZGVUeXBlIiwiYWRkQmFjayIsImFkZCIsImFmdGVyIiwiYmVmb3JlIiwic3BsaWNlIiwiSW1hZ2UiLCJzcmMiLCJkZXN0cm95IiwidW53cmFwIiwiY29udGVudHMiLCJyZW1vdmVEYXRhIiwiYWRkRXZlbnRMaXN0ZW5lciIsImF0dGFjaEV2ZW50IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImRldGFjaEV2ZW50IiwiY291bnQiLCJjYW1lbENhc2UiLCJyZWxhdGVkVGFyZ2V0Iiwib25UcmlnZ2VyIiwicmVnaXN0ZXIiLCJjb25jYXQiLCJldmVudCIsInNwZWNpYWwiLCJvd2wiLCJfZGVmYXVsdCIsIm5hbWVzcGFjZSIsImFyZ3VtZW50cyIsImluQXJyYXkiLCJvcmlnaW5hbEV2ZW50IiwidG91Y2hlcyIsImNoYW5nZWRUb3VjaGVzIiwicGFnZVgiLCJwYWdlWSIsImNsaWVudFgiLCJjbGllbnRZIiwiaXNOYU4iLCJwYXJzZUZsb2F0Iiwic2J5T3dsQ2Fyb3VzZWwiLCJfdHlwZW9mIiwiQ29uc3RydWN0b3IiLCJaZXB0byIsIl9jb3JlIiwiX2ludGVydmFsIiwiX3Zpc2libGUiLCJhdXRvUmVmcmVzaCIsIndhdGNoIiwiYXV0b1JlZnJlc2hJbnRlcnZhbCIsInNldEludGVydmFsIiwiY2xlYXJJbnRlcnZhbCIsImdldE93blByb3BlcnR5TmFtZXMiLCJBdXRvUmVmcmVzaCIsIl9sb2FkZWQiLCJsYXp5TG9hZCIsImxvYWQiLCJkZXZpY2VQaXhlbFJhdGlvIiwiZWxlbWVudCIsInVybCIsIm9ubG9hZCIsIm9wYWNpdHkiLCJoYW5kbGVycyIsIkxhenkiLCJhdXRvSGVpZ2h0IiwiYXV0b0hlaWdodENsYXNzIiwidG9BcnJheSIsImhlaWdodCIsIkF1dG9IZWlnaHQiLCJfdmlkZW9zIiwiX3BsYXlpbmciLCJpc0luRnVsbFNjcmVlbiIsImZldGNoIiwicGxheSIsInZpZGVvSGVpZ2h0IiwidmlkZW9XaWR0aCIsIkVycm9yIiwiaWQiLCJ0aHVtYm5haWwiLCJhamF4IiwianNvbnAiLCJkYXRhVHlwZSIsInN1Y2Nlc3MiLCJ0aHVtYm5haWxfbGFyZ2UiLCJmcmFtZWdyYWJfdXJsIiwiaW5zZXJ0QWZ0ZXIiLCJmdWxsc2NyZWVuRWxlbWVudCIsIm1vekZ1bGxTY3JlZW5FbGVtZW50Iiwid2Via2l0RnVsbHNjcmVlbkVsZW1lbnQiLCJoYXNDbGFzcyIsIlZpZGVvIiwiY29yZSIsInN3YXBwaW5nIiwicHJldmlvdXMiLCJhbmltYXRlT3V0IiwiYW5pbWF0ZUluIiwic3dhcCIsImFuaW1hdGlvbiIsImNsZWFyIiwiQW5pbWF0ZSIsIl90aW1lb3V0IiwiX3BhdXNlZCIsImF1dG9wbGF5IiwiX3NldEF1dG9QbGF5SW50ZXJ2YWwiLCJhdXRvcGxheUhvdmVyUGF1c2UiLCJwYXVzZSIsImF1dG9wbGF5VGltZW91dCIsImF1dG9wbGF5U3BlZWQiLCJfZ2V0TmV4dFRpbWVvdXQiLCJoaWRkZW4iLCJfaW5pdGlhbGl6ZWQiLCJfcGFnZXMiLCJfY29udHJvbHMiLCJfdGVtcGxhdGVzIiwiX292ZXJyaWRlcyIsImRvdHNEYXRhIiwiZG90Q2xhc3MiLCJwb3AiLCJkcmF3IiwibmF2VGV4dCIsIm5hdlNwZWVkIiwibmF2RWxlbWVudCIsIm5hdkNvbnRhaW5lciIsIm5hdkNvbnRhaW5lckNsYXNzIiwibmF2Q2xhc3MiLCJzbGlkZUJ5IiwiZG90c0NsYXNzIiwiZG90cyIsImRvdHNFYWNoIiwiZG90c1NwZWVkIiwiZG90c0NvbnRhaW5lciIsIiRyZWxhdGl2ZSIsIiRwcmV2aW91cyIsIiRuZXh0IiwicHJvcCIsIiRhYnNvbHV0ZSIsIm92ZXJpZGVzIiwicGFnZSIsInNpemUiLCJnZXRQb3NpdGlvbiIsIk5hdmlnYXRpb24iLCJfaGFzaGVzIiwibG9jYXRpb24iLCJoYXNoIiwic3Vic3RyaW5nIiwiVVJMaGFzaExpc3RlbmVyIiwiSGFzaCIsInRvVXBwZXJDYXNlIiwic3R5bGUiLCJXZWJraXRUcmFuc2l0aW9uIiwiTW96VHJhbnNpdGlvbiIsIk9UcmFuc2l0aW9uIiwiV2Via2l0QW5pbWF0aW9uIiwiTW96QW5pbWF0aW9uIiwiT0FuaW1hdGlvbiIsIk93bDJyb3ciLCJfT3dsMnJvdyIsIl94Iiwib3dsMnJvdyIsImJ1aWxkMnJvdyIsIm93bDJyb3dUYXJnZXQiLCJvd2wycm93Q29udGFpbmVyIiwib3dsMnJvd0RpcmVjdGlvbiIsInRoaXNTY29wZSIsImNhcm91c2VsIiwiY2Fyb3VzZWxJdGVtcyIsImFFdmVuRWxlbWVudHMiLCJhT2RkRWxlbWVudHMiLCJsZWZ0VG9yaWdodCIsInVwVG9kb3duIiwibzJ3Q29udGFpbmVyQ2xhc3MiLCJvd2xNYXJnaW4iLCJjYXJvdXNlbEl0ZW1zTGVuZ3RoIiwiZmlyc0FyciIsInNlY29uZEFyciIsInJvd0NvbnRhaW5lciIsImZpcnN0Um93RWxlbWVudCIsIm1hcmdpbkJvdHRvbSIsImV2ZW5FbGVtZW50IiwiU2J5IiwiZmVlZHMiLCJjdGFzIiwic2J5T3B0aW9ucyIsImlzVG91Y2giLCJTYnlGZWVkIiwiZWwiLCJwbGFjZWhvbGRlclVSTCIsInNieSIsInBsYWNlaG9sZGVyIiwibmFycm93UGxheWVyIiwicGxhY2Vob2xkZXJOYXJyb3ciLCJwbGF5ZXJBUElSZWFkeSIsImNvbnNlbnRHaXZlbiIsInBsYXllcnMiLCJtaW5JbWFnZVdpZHRoIiwiaW1hZ2VSZXNvbHV0aW9uIiwicmVzaXplZEltYWdlcyIsIm5lZWRzUmVzaXppbmciLCJvdXRPZlBhZ2VzIiwiaXNJbml0aWFsaXplZCIsIm1vc3RSZWNlbnRseUxvYWRlZFBvc3RzIiwiZW1iZWRVUkwiLCJhbGxvd0Nvb2tpZXMiLCJTYnlGZWVkUHJvIiwiQ1RBIiwiaW5pdExheW91dCIsImluaXRHYWxsZXJ5TGF5b3V0IiwiaW5pdEdyaWQiLCJpbml0Q2Fyb3VzZWxzIiwiZXZ0IiwiZmVlZCIsIm9wZW5Db21tZW50cyIsInNieVNlbWlFYWdlckxvYWRpbmciLCJwbGF5ZXJJRCIsImlzUHJvIiwidmlkZW9JRCIsImZpcnN0Iiwic2J5TGlnaHRib3hQbGF5ZXIiLCJhcmdzIiwiaG9zdCIsInByb3RvY29sIiwidmlkZW9JZCIsInBsYXllclZhcnMiLCJtb2Rlc3RicmFuZGluZyIsInJlbCIsImV2ZW50cyIsImdldFZpZGVvRGF0YSIsImFmdGVyU3RhdGVDaGFuZ2UiLCJtYXliZUFkZENUQSIsIllUIiwiUGxheWVyIiwiJHNlbGYiLCJnZW5lcmFsIiwiY29scyIsImNvbHNtb2JpbGUiLCJhcnJvd3MiLCJwYWdpbmF0aW9uIiwicm93cyIsIml0ZW1zVGFibGV0U21hbGwiLCJpdGVtc01vYmlsZSIsImhhczJyb3dzIiwiY2Fyb3VzZWxBcmdzIiwib25DaGFuZ2UiLCJhZnRlclJlc2l6ZSIsIm9uSW5pdGlhbGl6ZSIsImZhZGVJbiIsIiRuYXZFbGVtZW50c1dyYXBwZXIiLCIkZG90cyIsIiRwcmV2IiwiJG5hdiIsIiRkb3QiLCJ3aWR0aERvdHMiLCJoaWRlIiwic3RyaXBFbW9qaWh0bWwiLCIkZWwiLCJyZXBsYWNlV2l0aCIsImFmdGVySXRlbVJldmVhbGVkIiwiJGl0ZW0iLCIkY2FwdGlvbiIsIiRob3ZlckNhcHRpb24iLCJ0ZXh0X2xpbWl0IiwiZGVzY3JpcHRpb25sZW5ndGgiLCJjYXB0aW9uVGV4dCIsInNob3J0X3RleHQiLCJickFkanVzdCIsImxhc3RJbmRleE9mIiwiaG92ZXJDYXB0aW9uVGV4dCIsInNob3ciLCJjYXB0aW9udGV4dCIsInNldFVwQ1RBIiwiZGlzYWJsZWxpZ2h0Ym94IiwiY2FwdGlvbmxpbmtzIiwiY2FwIiwiJHNieV9waG90b193cmFwIiwiJHNieV9saW5rIiwiZmVlZE9wdGlvbnMiLCJob3ZlcmVmZmVjdCIsImFmdGVyRmVlZFNldCIsImN0YUluQ2FwdGlvbiIsImN0YURldGVjdCIsImdldERlZmF1bHRDVEEiLCJjdGEiLCJkZWZhdWx0TGluayIsImRlZmF1bHRUZXh0IiwicmVsYXRlZCIsImRlZmF1bHRQb3N0cyIsInNldEltYWdlSGVpZ2h0Iiwic2V0SW1hZ2VSZXNvbHV0aW9uIiwibWF5YmVSYWlzZUltYWdlUmVzb2x1dGlvbiIsInNldEltYWdlU2l6ZUNsYXNzIiwic2V0QWxsQ1RBRGltZW5zaW9ucyIsInNpemVQbGF5ZXIiLCJzaXplSXRlbXMiLCJDVEFPYmoiLCJzZXRDVEFTdHlsZXMiLCJhZnRlclNlbmRDaGVja1dQUG9zdHNUb1NlcnZlciIsInJlc3BvbnNlIiwic2J5X3ZpZXdfY291bnQiLCJzYnlfY29tbWVudF9jb3VudCIsInNieV9saWtlX2NvdW50Iiwic2J5X2xpdmVfYnJvYWRjYXN0IiwiYnJvYWRjYXN0X3R5cGUiLCJsaXZlX3N0cmVhbWluZ19zdHJpbmciLCJsaXZlX3N0cmVhbWluZ19kYXRlIiwibGl2ZV9zdHJlYW1pbmdfdGltZXN0YW1wIiwic2J5X2Rlc2NyaXB0aW9uIiwiJHBsYXllciIsInRvZ2dsZUNUQSIsImNoYW5nZVBsYXllckluZm8iLCIkbmV3SXRlbSIsImNsb25lIiwidmlkZW9UaXRsZSIsImNoZWNrVmFsdWUiLCJ2aWRlb1B1Ymxpc2hEYXRhIiwicmVzZXRDb21tZW50cyIsIlNieUNUQSIsIlNieUxpZ2h0Ym94QnVpbGRlciIsIlNieUxpZ2h0Ym94QnVpbGRlclBybyIsImdldERhdGEiLCJmZWVkUGFyZW50IiwiY2xvc2VzdEZlZWRJbmRleCIsInN1YnNjcmliZUJ0blRleHQiLCJzdWJzY3JpYmVCdG4iLCJjb2xvclNjaGVtZSIsImF0dHMiLCJsaXZlRGF0YUF0dHIiLCJjaGFubmVsSGVhZGVyQ29sb3JzQXR0ciIsIkpTT04iLCJwYXJzZSIsImZlZWRJbmRleCIsImxpbmsiLCJ0aXRsZSIsImF2YXRhciIsInVzZXIiLCJjaGFubmVsVVJMIiwiY2hhbm5lbElEIiwiY2hhbm5lbFN1YnNjcmliZXJzIiwicHVibGlzaGVkRGF0ZSIsImNvbW1lbnRDb3VudCIsInZpZXdzIiwibGl2ZURhdGEiLCJjaGFubmVsSGVhZGVyQ29sb3JzIiwidGVtcGxhdGUiLCJiZWZvcmVQbGF5ZXJTZXR1cCIsIiRsaWdodGJveCIsImFsYnVtIiwiYWZ0ZXJQbGF5ZXJTZXR1cCIsIl9kYXRhJGNoYW5uZWxTdWJzY3JpYiIsImF2YWlsYWJsZUF2YXRhclVybHMiLCJzdWJzY3JpYmVTZWN0aW9uIiwic2J5TGlnaHRib3hBY3Rpb24iLCJMaWdodGJveENvbG9yU2NoZW1lIiwiYXZhdGFySW1hZ2UiLCJnZXRTdGF0aWNTVkciLCJ0aW1lc3RhbXAiLCJhdmF0YXJJbWFnZUh0bWwiLCJ1c2VySHRtbCIsInN1YnNjcmliZUNsYXNzIiwiZGVzY3JpcHRpb24iLCJ0aW1lQWdvIiwidmlkZW9IZWFkZXJTZWN0aW9uIiwidmlkZW9EZXNjcmlwdGlvbmh0bWwiLCJ2aWRlb0Rlc2NyaXB0aW9uIiwiY3VycmVudENvbW1lbnRDb3VudCIsImdlbmVyYXRlQ29tbWVudFNlY3Rpb24iLCJ0b2dnbGVSZWFkTW9yZSIsImNvbG9yQXJyYXkiLCJjaGFubmVsTmFtZSIsInN1YnNjcmliZUNvdW50IiwiYnV0dG9uQmFja2dyb3VuZCIsImJ1dHRvblRleHQiLCJzZXRDb2xvcnNUb0NoYW5uZWxIZWFkZXIiLCJjYWxsYmFja0FyZ3MiLCJmZWVkT2JqSW5Db250ZXh0Iiwic3RhdGUiLCJudW1JdGVtcyIsIm51bUl0ZW1Db2x1bW5zIiwic2J5Q21wbHpHZXRDb29raWUiLCJjbmFtZSIsImNBcnIiLCJjb29raWUiLCJjcmVhdGVQYWdlIiwiY3JlYXRlRmVlZHMiLCJjcmVhdGVGZWVkc0FyZ3MiLCJzYnlhamF4dXJsIiwiaG9zdG5hbWUiLCJtYXliZUFkZFlUQVBJIiwieW91dHViZVNjcmlwdElkIiwiZ2V0RWxlbWVudEJ5SWQiLCJmaXJzdFNjcmlwdCIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwicGFyZW50Tm9kZSIsImluc2VydEJlZm9yZSIsImNyZWF0ZUxpZ2h0Ym94Iiwic2J5X3RpbWVyIiwibGJCdWlsZGVyIiwic2J5X2xiX2RlbGF5Iiwic2J5X2NhbGxiYWNrIiwic2J5X21zIiwiZmFkZUR1cmF0aW9uIiwiZml0SW1hZ2VzSW5WaWV3cG9ydCIsInJlc2l6ZUR1cmF0aW9uIiwicG9zaXRpb25Gcm9tVG9wIiwic2hvd0ltYWdlTnVtYmVyTGFiZWwiLCJhbHdheXNTaG93TmF2T25Ub3VjaERldmljZXMiLCJ3cmFwQXJvdW5kIiwiYWxidW1MYWJlbCIsImN1cnJlbnRJbWFnZUluZGV4IiwiaW5pdCIsImVuYWJsZSIsImJ1aWxkIiwiY3VycmVudFRhcmdldCIsIiRvdmVybGF5IiwiJG91dGVyQ29udGFpbmVyIiwiJGNvbnRhaW5lciIsImNvbnRhaW5lclRvcFBhZGRpbmciLCJjb250YWluZXJSaWdodFBhZGRpbmciLCJjb250YWluZXJCb3R0b21QYWRkaW5nIiwiY29udGFpbmVyTGVmdFBhZGRpbmciLCJsaWdodGJveE9uQ2xvc2UiLCJwYXVzZVBsYXllciIsImZhZGVPdXQiLCJjaGFuZ2VJbWFnZSIsInNpemVPdmVybGF5IiwidmlzaWJpbGl0eSIsInNjcm9sbFRvcCIsInNjcm9sbExlZnQiLCJkaXNhYmxlS2V5Ym9hcmROYXYiLCJzaXplQ29udGFpbmVyIiwic2hvd0ltYWdlIiwib3V0ZXJXaWR0aCIsIm91dGVySGVpZ2h0IiwidXBkYXRlTmF2IiwidXBkYXRlRGV0YWlscyIsInByZWxvYWROZWlnaGJvcmluZ0ltYWdlcyIsImVuYWJsZUtleWJvYXJkTmF2IiwiY3JlYXRlRXZlbnQiLCJsb2FkVmlkZW9CeUlkIiwiZnVsbEltYWdlIiwicHJlcGVuZCIsImtleWJvYXJkQWN0aW9uIiwia2V5Y29kZSIsImtleUNvZGUiLCJrZXkiLCJ0b2dnbGUiLCJsaWdodGJveENyZWF0ZWQiLCJpc0FkbWluIiwid2hlbkZlZWRzQ3JlYXRlZCIsImZsYWdzIiwidHJpZ2dlcmVkVGVzdCIsInNieUFqYXgiLCJsb2ciLCJudW0iLCJpbWdSZXMiLCJmZWVkSUQiLCJwb3N0SUQiLCJzaG9ydENvZGVBdHRzIiwicmVzaXppbmdFbmFibGVkIiwiaW1hZ2VMb2FkRW5hYmxlZCIsImRlYnVnRW5hYmxlZCIsImZhdm9yTG9jYWwiLCJhamF4UG9zdExvYWQiLCJjaGVja1dQUG9zdHMiLCJzaW5nbGVDaGVja1Bvc3RzIiwiZ2RwciIsIm5vQ0ROIiwibGlnaHRib3hFbmFibGVkIiwibG9jYXRvciIsImF1dG9NaW5SZXMiLCJzdWJzY3JpYmVCYXJFbmFibGVkIiwic2J5R2V0TmV3RmVlZCIsInNieUFQSVJlYWR5Iiwic2V0UmVzaXplZEltYWdlcyIsImFmdGVyRmVlZHNDcmVhdGVkIiwiJHRoaXNIZWFkZXIiLCJlbmNvZGVIVE1MIiwicmF3IiwidXJsRGV0ZWN0IiwiY3RhTWF0Y2hlcyIsInVybE1hdGNoZXMiLCJzaHVmZmxlIiwiYXJyYXkiLCJ0ZW1wb3JhcnlWYWx1ZSIsInJhbmRvbUluZGV4IiwiY3VycmVudEluZGV4IiwiZmxvb3IiLCJyYW5kb20iLCJjaGVja0NvbnNlbnQiLCJnZXROZXdQb3N0U2V0IiwiYWZ0ZXJJbml0aWFsSW1hZ2VzTG9hZGVkIiwic2J5X2RlbGF5IiwibWF5YmVSYWlzZVNpbmdsZUltYWdlUmVzb2x1dGlvbiIsIm9uVGh1bWJuYWlsQ2xpY2siLCJjYW5DcmVhdGVQbGF5ZXIiLCJwbGF5ZXIiLCJwbGF5ZXJFYWdlckxvYWRlZCIsImNyZWF0ZVBsYXllciIsImdldFZpZGVvSUQiLCJpc0N1c3RvbWl6ZXIiLCJmYWRlVG8iLCJfSlNPTiRwYXJzZSIsInNob3J0Y29kZUF0dHIiLCJnZXRBdHRyaWJ1dGUiLCJkaXNwYXRjaEV2ZW50IiwiQ3VzdG9tRXZlbnQiLCJkZXRhaWwiLCJpdGVtVmlkSUQiLCJwYXVzZVZpZGVvIiwic2J5RWFnZXJMb2FkaW5nIiwibmV3UGxheWVyIiwibG9hZE1vcmVCdXR0b25Jbml0IiwiaGlkZUV4dHJhSXRlbXNGb3JXaWR0aCIsImJlZm9yZU5ld0ltYWdlc1JldmVhbGVkIiwicmV2ZWFsTmV3SW1hZ2VzIiwiYWZ0ZXJOZXdJbWFnZXNSZXZlYWxlZCIsImFwcGx5RnVsbEZlYXR1cmVzIiwicmVtb3ZlRmVhdHVyZXMiLCJhZnRlckxvYWRNb3JlQ2xpY2tlZCIsIiRidXR0b24iLCJhZnRlck5ld0ltYWdlc0xvYWRlZCIsIiRwbGF5ZXJUaHVtYm5haWwiLCJwbGF5ZXJXaWR0aCIsIm5ld1BsYXllckhlaWdodCIsInRodW1iV2lkdGgiLCJuZXdUaHVtYkhlaWdodCIsImFwcGx5SW1hZ2VMaXF1aWQiLCJzYnlDdXN0b21KUyIsInZpZGVvSW50ZXJhY3Rpb25FdmVudCIsIm9uVGh1bWJuYWlsRW50ZXIiLCJvblRodW1ibmFpbExlYXZlIiwibGlnaHRib3hQbGFjZWhvbGRlciIsImxpZ2h0Ym94UGxhY2Vob2xkZXJOYXJyb3ciLCIkc2J5X2l0ZW1fdHJhbnNpdGlvbl9lbCIsImxpc3RlbkZvclZpc2liaWxpdHlDaGFuZ2UiLCJzZW5kTmVlZHNSZXNpemluZ1RvU2VydmVyIiwic2VuZENoZWNrV1BQb3N0c1RvU2VydmVyIiwiaXRlbU9mZnNldCIsImFjdGlvbiIsIm5lZWRzX3Jlc2l6aW5nIiwib2Zmc2V0IiwiZmVlZF9pZCIsImxvY2F0aW9uR3Vlc3MiLCJwb3N0X2lkIiwicG9zdHMiLCJjdXJyZW50X3Jlc29sdXRpb24iLCJmZWVkU3RhdHVzIiwiYXBwZW5kTmV3UG9zdHMiLCJhZGRSZXNpemVkSW1hZ2VzIiwic2hvdWxkUGFnaW5hdGUiLCJuZXdQb3N0c0h0bWwiLCJsYXN0IiwicmVzaXplZEltYWdlc1RvQWRkIiwiaW1hZ2VJRCIsImZvcmNlQ2hhbmdlIiwiaW1nU3JjU2V0IiwiZ2V0SW1hZ2VVcmxzIiwiY3VycmVudFVybCIsImN1cnJlbnRSZXMiLCJuZXdSZXMiLCJnZXRCZXN0UmVzb2x1dGlvbkZvckF1dG8iLCJyZWFzb24iLCJuZXdVcmwiLCJzcmNTZXQiLCJqdXN0TmV3IiwiaXRlbXNTZWxlY3RvciIsImNvbFdpZHRoIiwiYXNwZWN0UmF0aW8iLCJiZXN0V2lkdGgiLCJiZXN0V2lkdGhSb3VuZGVkIiwiY3VzdG9tU2l6ZXMiLCJkb25lIiwibGF5b3V0IiwibnVtbW9iaWxlIiwiZmVlZFdpZHRoIiwicGhvdG9QYWRkaW5nIiwiZ2V0Q29sdW1uQ291bnQiLCJzZXRNaW5JbWFnZVdpZHRoIiwiZm91bmRTaXplcyIsInJlc2l6ZWRfdXJsIiwiYWRkVG9OZWVkc1Jlc2l6aW5nIiwiJHRhcmdlRWwiLCJnZXRBdmF0YXJVcmwiLCJ1c2VybmFtZSIsImZhdm9yVHlwZSIsImF2YWlsYWJsZUF2YXRhcnMiLCJhdmF0YXJzIiwiaGVhZCIsInNieV9pbWdMaXF1aWQiLCJWRVIiLCJiZ3NfQXZhaWxhYmxlIiwiYmdzX0NoZWNrUnVubmVkIiwiZGVmYXVsdHMiLCJmaWxsIiwidmVydGljYWxBbGlnbiIsImhvcml6b250YWxBbGlnbiIsInVzZUJhY2tncm91bmRTaXplIiwidXNlRGF0YUh0bWxBdHRyIiwiZGVsYXkiLCJmYWRlSW5UaW1lIiwicmVtb3ZlQm94QmFja2dyb3VuZCIsImhhcmRQaXhlbHMiLCJyZXNwb25zaXZlQ2hlY2tUaW1lIiwidGltZWNoZWNrdmlzaWJpbGl0eSIsIm9uU3RhcnQiLCJvbkZpbmlzaCIsIm9uSXRlbVN0YXJ0Iiwib25JdGVtRmluaXNoIiwib25JdGVtRXJyb3IiLCJnZXRDb21wdXRlZFN0eWxlIiwiYmFja2dyb3VuZFNpemUiLCJhY3R1YWxTaXplIiwib2Zmc2V0V2lkdGgiLCJvZmZzZXRIZWlnaHQiLCJzaXplT2xkIiwibiIsIm8iLCJCb29sZWFuIiwiaXNJRSIsImllRmFkZUluRGlzYWJsZWQiLCJlbmNvZGVVUkkiLCJkaXNwbGF5Iiwib3ZlcmZsb3ciLCJvbmVycm9yIiwiY29tcGxldGUiLCJpbmplY3RDc3MiLCJzdHlsZVNoZWV0IiwiY3NzVGV4dCIsImFwcGVuZENoaWxkIiwiY3JlYXRlVGV4dE5vZGUiLCJzYnlBZGRJbWdMaXF1aWQiLCJydW5PbkxvYWQiLCJmcmVxdWVuY3kiLCJzYnlQcmV2aW91c1Zpc2liaWxpdHkiLCJjb250YWlucyIsInNieUNoZWNrVmlzaWJpbGl0eSIsInNieVZpc2liaWxpdHlDaGFuZ2VkIiwidmlzaWJsZSIsInJldHVybkNvbHMiLCJzYnlXaW5kb3dXaWR0aCIsIiRjbGlja2VkIiwiaXNQbGF5ZXIiLCJwbGF5VmlkZW9JblBsYXllciIsImFmdGVyVmlkZW9DaGFuZ2VkIiwidXBkYXRlR2FsbGVyeVBsYXllclN1YnNjcmliZUJ0biIsIiRzYnlJdGVtIiwiJGhvdmVyZWQiLCJjb25jZW50R2l2ZW4iLCJlbGVtZW50b3JDaGVjayIsInN1YnNjcmliZUJ0blVSTCIsIldQQ29uc2VudCIsImhhc0NvbnNlbnQiLCJDTElfQ29va2llIiwicmVhZCIsIkNMSV9BQ0NFUFRfQ09PS0lFX05BTUUiLCJjbkFyZ3MiLCJwYXJ0cyIsInZhbCIsInNoaWZ0IiwiY29tcGxpYW56IiwiQ29va2llYm90IiwiY29uc2VudGVkIiwiQm9ybGFic0Nvb2tpZSIsIkNvbnNlbnRzIiwiY2hlY2tDb29raWVDb25zZW50IiwibW9vdmVfZ2Rwcl9wb3B1cCIsImRlY29kZVVSSUNvbXBvbmVudCIsInRoaXJkcGFydHkiLCJhZnRlckNvbnNlbnRUb2dnbGVkIiwiJGZlZWQiLCJjcmVhdGUiLCJwbGF5ZXJIZWlnaHQiLCJoZWlnaHREaWYiLCJkYXRhTnVtIiwicmVzZXRDVEEiLCJjdGFPYmoiLCJnZXRSZWxhdGVkIiwiYWRkZWQiLCJjdXJyZW50VmlkZW9JZCIsIm5ld1ZpZGVvSUQiLCIkZmVlZEVsIiwicmVsYXRlZFZpZHMiLCJ0aGlzVmlkIiwic3R5bGVDbGFzcyIsImNvbG9yIiwidGV4dENvbG9yIiwib3BlbkF0dHMiLCJvcGVuVHlwZSIsImN0YU92ZXJsYXlIZWlnaHQiLCJudW1Sb3dzIiwidG90YWxWZXJ0aWNhbFBhZGRpbmciLCJtYXhDVEFJdGVtSGVpZ2h0Iiwic2J5X2luaXQiLCJzYnlfY2Fyb3VzZWxfaW5pdCIsImVhZ2VybG9hZCIsInlvdXR1YmVfdXJsIiwic2VtaUVhZ2VybG9hZCIsInJlYWR5IiwiX3dpbmRvdyRjb25zZW50QXBpIiwiY2F0ZWdvcnkiLCJjb25zZW50QXBpIiwiY29uc2VudCIsInRoZW4iLCJzbGlkZVVwIiwiYWRtaW5BamF4VXJsIiwibm9uY2UiLCJtc2ciLCJzYnlZU2NyaXB0SWQiLCJnZXRTaW5nbGVBcGlEYXRhIiwicm9vdFBhdGgiLCJhdHRyTmFtZSIsIl9yb290UGF0aCRzbmlwcGV0IiwiX3Jvb3RQYXRoJHNuaXBwZXQyIiwiX3Jvb3RQYXRoJHNuaXBwZXQzIiwiX3Jvb3RQYXRoJHNuaXBwZXQ0IiwiX3Jvb3RQYXRoJHNuaXBwZXQ1IiwiX3Jvb3RQYXRoJHNuaXBwZXQ2Iiwic25pcHBldCIsImF1dGhvclByb2ZpbGVJbWFnZVVybCIsImF1dGhvckRpc3BsYXlOYW1lIiwiYXV0aG9yQ2hhbm5lbFVybCIsInRleHREaXNwbGF5IiwibGlrZUNvdW50IiwicHVibGlzaGVkQXQiLCJ0b3RhbFJlcGx5Q291bnQiLCJjb21tZW50U2luZ2xlVGVtcGxhdGUiLCJkdW1teVByb2ZpbGVQaWMiLCJyZXBsaWVzIiwiZXJyb3JDb21tZW50VGVtcGxhdGUiLCJkaWZmTXMiLCJzZWNvbmRzIiwibWludXRlcyIsImhvdXJzIiwiZGF5cyIsIm1vbnRocyIsInllYXJzIiwidHJpZ2dlckNsYXNzTmFtZSIsInBhcmFncmFwaEhlaWdodCIsInNjcm9sbEhlaWdodCIsImNsaWVudEhlaWdodCIsInVuYmluZCIsImNsaWNrIiwiZmxhZyIsImNvbW1lbnRXcmFwIiwiY29sb3JTY2hlbWVDbGFzc05hbWUiLCJnZXRMYXlvdXQiLCJvcGVuQ29tbWVudFRyaWdnZXIiLCJjb21tZW50V3JhcENsYXNzIiwiY29tbWVudFNlY2lvbldyYXAiLCJjb21tZW50U2VjdGlvbiIsImN1cnJlbnRMYXlvdXQiLCJ0YXJnZXRQYXJlbnQiLCJjdXJyZW50VGV4dFN0YXRlIiwiY3VycmVudFN0YXRlIiwiY3VycmVudFRleHQiLCJyZXBsYWNlbWVudFRleHQiLCJjdXJyZW50U3RhdGVUZXh0IiwiY2hhbmdlVGV4dE9uVG9nZ2xlIiwic3VibWl0RGF0YSIsIm9uU3VjY2VzcyIsInZpZGVvX2lkIiwiX2NvbW1lbnRKc29uJGVycm9yIiwiY29tbWVudEpzb24iLCJtZXNzYWdlIiwiZXJyb3JNZXNzYWdlIiwiaW5jbHVkZXMiLCJub09mSXRlbXMiLCJ2aWRlb0xpbmsiLCJjb21tZW50SHRtbCIsImNvbW1lbnQiLCJfY29tbWVudCRzbmlwcGV0IiwiX2NvbW1lbnQkcmVwbGllcyIsInRvcExldmVsQ29tbWVudFBhdGgiLCJ0b3BMZXZlbENvbW1lbnQiLCJ0b3BMZXZlbENvbW1lbnRTbmlwcGV0IiwiY29tbWVudHMiLCJyZXBseUluZGV4IiwicmVwbHkiLCJjbGFzc05hbWUiLCJ0b2dnbGVBY2NvcmRpb24iLCJvbllvdVR1YmVJZnJhbWVBUElSZWFkeSIsIm51bUZlZWRzIiwiZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSIsImZsYWdMaWdodGJveCJdLCJzb3VyY2VSb290IjoiIn0=