/*! For license information please see main.4d0103e9.js.LICENSE.txt */ (()=>{"use strict";var e,t,r,n={6262:(e,t,r)=>{var n=r(6540),a=r(5338),i=(0,n.createContext)(),o=r(4976),s=r(7767),l=r(5556),u=r.n(l),c=r(7951),f=r(538),d=r(8239),m=r(8161),p=r(4073),h=r(3357);function g(e){return g="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},g(e)}function y(e,t){for(var r=0;re.length)&&(t=e.length);for(var r=0,n=Array(t);r=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){s=!0,i=e},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw i}}}}(o);try{for(l.s();!(n=l.n()).done;){var u=n.value;u?"string"==typeof u?s.appendChild(a.createTextNode(u)):s.appendChild(u):s.appendChild(a.createTextNode(""))}}catch(e){l.e(e)}finally{l.f()}return s}},{key:"constructXMLDocument",value:function(e,t,r,n,a){var i=document.implementation.createDocument("http://www.srspharmacy.com/XML/PatientRefillRequest","PatientRefillRequest",null),o=i.documentElement;return o.appendChild(this.entity(i,"To",this.state.tag)),o.appendChild(this.entity(i,"From","srsrfl")),o.appendChild(this.entity(i,"Auth",this.state.hash)),o.appendChild(this.entity(i,"SentTime",(new Date).toISOString())),o.appendChild(this.entity(i,"MessageID",(new Date).getTime().toString())),o.appendChild(this.entity(i,"RxNumbers",this.entity(i,"RxNumber",this.state.rxNumber))),o.appendChild(this.entity(i,"Contact",this.entity(i,"LastName",e),this.entity(i,"FirstName",t),this.entity(i,"Phone",r),this.entity(i,"Email",n))),o.appendChild(this.entity(i,"Comment",a)),i}},{key:"load",value:function(){var e=this,t={tag:this.getStoreNumber(),rx_number:this.getRxNumber(),auth:this.getHash()};S({method:"get",endpoint:"query",params:t}).then((function(t){var r=JSON.parse(t.data);e.setState({store_name:r.name,logo:r.logo,store_address:r.address1,store_address_two:r.address2,city:r.city,state:r.state,zip:r.zip,pharmacy_phone:r.phone,store_uuid:r.store_uuid,loaded:!0,register_enabled:r.srsrfl_register,showForm:"Y"==r.srsrfl_register,patient_user:!!(r.users&&r.users.length>0)}),r.patient_uuid&&e.context.setPatient(r.patient_uuid)})).catch((function(t){var r;console.log(t);var n=null!=t&&null!==(r=t.response)&&void 0!==r&&r.data?JSON.parse(t.response.data):"";if(n)if(n.redirect)e.setState({redirect:!0,loaded:!0});else{var a=n.message;e.setState({errors:j(a),loaded:!0})}else e.setState({errors:"Something unexpected happened",loaded:!0})}))}},{key:"componentDidMount",value:function(){this.load()}},{key:"componentDidUpdate",value:function(){this.state.loaded||this.load()}},{key:"requestRefill",value:function(){var e=this,t=''+(new XMLSerializer).serializeToString(this.constructXMLDocument());S({method:"post",endpoint:"submit",headers:{"Content-Type":"text/xml"},data:t}).then((function(t){e.setState({requested:"Refill requested successfully.",showRegisterButton:"O"==e.state.register_enabled})})).catch((function(t){console.log(t),e.setState({errors:j(t),loaded:!0})}))}},{key:"render",value:function(){var e=this,t=n.createElement(x,null);if(this.state.loaded)if(this.state.redirect){var r=this.getStoreNumber();window.location.href="webrefillform/"+r}else if(this.state.errors){var a="";"Invalid data format"==this.state.errors||"Unexpected value provide"==this.state.errors?a="Missing or invalid store tag in request":"Not enough parameters supplied in request"==this.state.errors||"Unexpected/Missing query string supplied"==this.state.errors?a="Missing store tag or Rx number in query string":"Invalid data supplied in the request"==this.state.errors&&(a="Invalid hash given in the query string");var i={message:a||this.state.errors};this.state.store_name&&(i.returnTo=function(){return e.setState({errors:null})}),t=O(i)}else this.state.patient_user?window.location.href="portal.html?store_uuid="+this.state.store_uuid+"#/":t=n.createElement(d.Ay,null,n.createElement(Q.A,{position:"static"},n.createElement(V.A,null,this.state.logo?n.createElement("img",{src:this.state.logo,alt:this.state.store_name,style:{margin:"5px",borderRadius:"5px",height:"5rem"}}):n.createElement(p.A,null,this.state.store_name))),n.createElement(d.Ay,{container:!0,justifyContent:"center"},n.createElement(d.Ay,{item:!0},n.createElement(m.A,null,n.createElement(p.A,{variant:"h6"},"Refill Request for Rx# ",this.state.rxNumber)))),n.createElement("br",null),n.createElement(d.Ay,{container:!0,direction:"column",justifyContent:"space-evenly",alignItems:"center",spacing:2},n.createElement(d.Ay,{item:!0},this.state.requested?n.createElement(c.A,{maxWidth:"lg"},n.createElement(f.A,{square:!1,elevation:0,variant:"outlined",sx:{color:"green",py:"0.5rem",px:"1rem"}},n.createElement(p.A,{variant:"h5",align:"center"}," ",this.state.requested))):n.createElement(n.Fragment,null)),n.createElement(d.Ay,{item:!0},this.state.showForm&&"N"!==this.state.register_enabled?n.createElement(G,{store_uuid:this.state.store_uuid,store_name:this.state.store_name,register_enabled:this.state.register_enabled}):n.createElement(n.Fragment,null)),n.createElement(d.Ay,{item:!0},this.state.showForm||this.state.showRegisterButton?n.createElement(n.Fragment,null):n.createElement("div",null,n.createElement(P.A,{variant:"contained",color:"primary",size:"large",disabled:this.state.disable_button,onClick:function(t){t.stopPropagation(),t.preventDefault(),e.requestRefill(t),e.setState({disable_button:!0})}},"Request Refill"),n.createElement("br",null),n.createElement("br",null),n.createElement("br",null),n.createElement("br",null))),this.state.showRegisterButton?n.createElement("div",null,n.createElement(d.Ay,{container:!0,direction:"column",alignItems:"center",width:"100%"},n.createElement(d.Ay,{item:!0},n.createElement(p.A,{sx:{textAlign:"center",margin:"2rem"}},"Optional: To make this process easier next time, press Continue to begin registering for ",this.state.store_name,"'s Patient Portal.")),n.createElement(d.Ay,{item:!0},n.createElement(P.A,{variant:"contained",color:"primary",size:"large",onClick:function(t){t.stopPropagation(),t.preventDefault(),e.setState({showRegisterButton:!1,showForm:!0})}},"Continue"))),n.createElement("br",null)):n.createElement(n.Fragment,null)),n.createElement(d.Ay,{container:!0,direction:"row",justifyContent:"space-around",alignItems:"center"},n.createElement(d.Ay,{item:!0},n.createElement(P.A,{variant:"outlined",size:"large",href:"/m/"+this.state.tag},"Mobile Site")),n.createElement(d.Ay,{item:!0},n.createElement(P.A,{href:"tel://+1"+this.state.pharmacy_phone.replace(/[^+\d]/g,""),variant:"outlined",size:"large"},"Call Pharmacy"))),n.createElement("hr",null),n.createElement(d.Ay,{container:!0,direction:"column",justifyContent:"flex-end",alignItems:"center"},n.createElement(p.A,null,this.state.store_name),n.createElement(p.A,null,this.state.store_address),n.createElement(p.A,null,this.state.city,", ",this.state.state," ",this.state.zip),n.createElement(p.A,null,this.state.pharmacy_phone)));else t=n.createElement(x,null);return n.createElement("div",null,t)}}],a&&Y(r.prototype,a),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,a}(n.Component);H(ee,"propTypes",{prescription:u().object,setRefillResponse:u().func,themeMode:u().string.isRequired}),H(ee,"contextType",i);const te=ee;var re=r(3478),ne=r(2363),ae=r(4519);function ie(e){return ie="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ie(e)}function oe(){oe=function(){return t};var e,t={},r=Object.prototype,n=r.hasOwnProperty,a=Object.defineProperty||function(e,t,r){e[t]=r.value},i="function"==typeof Symbol?Symbol:{},o=i.iterator||"@@iterator",s=i.asyncIterator||"@@asyncIterator",l=i.toStringTag||"@@toStringTag";function u(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{u({},"")}catch(e){u=function(e,t,r){return e[t]=r}}function c(e,t,r,n){var i=t&&t.prototype instanceof y?t:y,o=Object.create(i.prototype),s=new I(n||[]);return a(o,"_invoke",{value:O(e,r,s)}),o}function f(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}t.wrap=c;var d="suspendedStart",m="suspendedYield",p="executing",h="completed",g={};function y(){}function v(){}function b(){}var A={};u(A,o,(function(){return this}));var w=Object.getPrototypeOf,E=w&&w(w(U([])));E&&E!==r&&n.call(E,o)&&(A=E);var x=b.prototype=y.prototype=Object.create(A);function P(e){["next","throw","return"].forEach((function(t){u(e,t,(function(e){return this._invoke(t,e)}))}))}function k(e,t){function r(a,i,o,s){var l=f(e[a],e,i);if("throw"!==l.type){var u=l.arg,c=u.value;return c&&"object"==ie(c)&&n.call(c,"__await")?t.resolve(c.__await).then((function(e){r("next",e,o,s)}),(function(e){r("throw",e,o,s)})):t.resolve(c).then((function(e){u.value=e,o(u)}),(function(e){return r("throw",e,o,s)}))}s(l.arg)}var i;a(this,"_invoke",{value:function(e,n){function a(){return new t((function(t,a){r(e,n,t,a)}))}return i=i?i.then(a,a):a()}})}function O(t,r,n){var a=d;return function(i,o){if(a===p)throw Error("Generator is already running");if(a===h){if("throw"===i)throw o;return{value:e,done:!0}}for(n.method=i,n.arg=o;;){var s=n.delegate;if(s){var l=C(s,n);if(l){if(l===g)continue;return l}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(a===d)throw a=h,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);a=p;var u=f(t,r,n);if("normal"===u.type){if(a=n.done?h:m,u.arg===g)continue;return{value:u.arg,done:n.done}}"throw"===u.type&&(a=h,n.method="throw",n.arg=u.arg)}}}function C(t,r){var n=r.method,a=t.iterator[n];if(a===e)return r.delegate=null,"throw"===n&&t.iterator.return&&(r.method="return",r.arg=e,C(t,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),g;var i=f(a,t.iterator,r.arg);if("throw"===i.type)return r.method="throw",r.arg=i.arg,r.delegate=null,g;var o=i.arg;return o?o.done?(r[t.resultName]=o.value,r.next=t.nextLoc,"return"!==r.method&&(r.method="next",r.arg=e),r.delegate=null,g):o:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,g)}function S(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function j(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function I(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(S,this),this.reset(!0)}function U(t){if(t||""===t){var r=t[o];if(r)return r.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var a=-1,i=function r(){for(;++a=0;--i){var o=this.tryEntries[i],s=o.completion;if("root"===o.tryLoc)return a("end");if(o.tryLoc<=this.prev){var l=n.call(o,"catchLoc"),u=n.call(o,"finallyLoc");if(l&&u){if(this.prev=0;--r){var a=this.tryEntries[r];if(a.tryLoc<=this.prev&&n.call(a,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),j(r),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var a=n.arg;j(r)}return a}}throw Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:U(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),g}},t}function se(e,t,r,n,a,i,o){try{var s=e[i](o),l=s.value}catch(e){return void r(e)}s.done?t(l):Promise.resolve(l).then(n,a)}function le(e){return function(){var t=this,r=arguments;return new Promise((function(n,a){var i=e.apply(t,r);function o(e){se(i,n,a,o,s,"next",e)}function s(e){se(i,n,a,o,s,"throw",e)}o(void 0)}))}}function ue(e,t){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:null;e||(e=window.matchMedia("(prefers-color-scheme: dark)"));var t=e.matches?"dark":"light";this.setState({theme:t})}},{key:"setPatient",value:function(e){localStorage.setItem("patient_uuid",e)}},{key:"setUsername",value:function(e){localStorage.setItem("username",e)}},{key:"getUsername",value:function(){try{return localStorage.getItem("username")}catch(e){return null}}},{key:"getPatient",value:function(){try{return localStorage.getItem("patient_uuid")}catch(e){return null}}},{key:"setTokens",value:function(e){localStorage.setItem("tokens",JSON.stringify(e)),this.setState({authTokens:e})}},{key:"setPassword",value:function(e){localStorage.setItem("password",e)}},{key:"getPassword",value:function(){try{return localStorage.getItem("password")}catch(e){return null}}},{key:"setUserUUID",value:function(e){localStorage.setItem("user_uuid",e)}},{key:"getUserUUID",value:function(){try{return localStorage.getItem("user_uuid")}catch(e){return null}}},{key:"setFirstName",value:function(e){localStorage.setItem("first_name",e)}},{key:"getFirstName",value:function(){try{return localStorage.getItem("first_name")}catch(e){return null}}},{key:"setLastName",value:function(e){localStorage.setItem("last_name",e)}},{key:"getLastName",value:function(){try{return localStorage.getItem("last_name")}catch(e){return null}}},{key:"removeItem",value:function(e){localStorage.removeItem(e)}},{key:"render",value:function(){var e={authTokens:this.state.authTokens,setUsername:this.setUsername,getUsername:this.getUsername,setPatient:this.setPatient,getPatient:this.getPatient,setPassword:this.setPassword,getPassword:this.getPassword,setUserUUID:this.setUserUUID,getUserUUID:this.getUserUUID,setFirstName:this.setFirstName,getFirstName:this.getFirstName,setLastName:this.setLastName,getLastName:this.getLastName,removeItem:this.removeItem,setAuthTokens:this.setTokens};return n.createElement(i.Provider,{value:e},n.createElement(ne.A,{theme:"dark"===this.state.theme?this.themeDark:this.themeLight},n.createElement(ae.Ay,null),n.createElement("div",null,n.createElement(o.I9,null,n.createElement(s.BV,null,n.createElement(s.qh,{path:"/",element:n.createElement(te,{themeMode:this.state.theme})}))))))}}],a&&ue(r.prototype,a),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,a,l,u}(n.Component);a.createRoot(document.getElementById("container")).render(n.createElement(n.StrictMode,null,n.createElement(be,null)))}},a={};function i(e){var t=a[e];if(void 0!==t)return t.exports;var r=a[e]={exports:{}};return n[e](r,r.exports,i),r.exports}i.m=n,e=[],i.O=(t,r,n,a)=>{if(!r){var o=1/0;for(c=0;c=a)&&Object.keys(i.O).every((e=>i.O[e](r[l])))?r.splice(l--,1):(s=!1,a0&&e[c-1][2]>a;c--)e[c]=e[c-1];e[c]=[r,n,a]},i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},r=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,i.t=function(e,n){if(1&n&&(e=this(e)),8&n)return e;if("object"==typeof e&&e){if(4&n&&e.__esModule)return e;if(16&n&&"function"==typeof e.then)return e}var a=Object.create(null);i.r(a);var o={};t=t||[null,r({}),r([]),r(r)];for(var s=2&n&&e;"object"==typeof s&&!~t.indexOf(s);s=r(s))Object.getOwnPropertyNames(s).forEach((t=>o[t]=()=>e[t]));return o.default=()=>e,i.d(a,o),a},i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e={792:0};i.O.j=t=>0===e[t];var t=(t,r)=>{var n,a,[o,s,l]=r,u=0;if(o.some((t=>0!==e[t]))){for(n in s)i.o(s,n)&&(i.m[n]=s[n]);if(l)var c=l(i)}for(t&&t(r);ui(6262)));o=i.O(o)})(); //# sourceMappingURL=data:application/json;charset=utf-8;base64,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RUFHakMyQixFQUFxQkMsS0FBK0IseUJBQUlBLEtBQStCLDBCQUFLLEdBQ2hHRCxFQUFtQnZKLFFBQVFrSixFQUFxQmxVLEtBQUssS0FBTSxJQUMzRHVVLEVBQW1CaEksS0FBTzJILEVBQXFCbFUsS0FBSyxLQUFNdVUsRUFBbUJoSSxLQUFLdk0sS0FBS3VVLFFDN0N2RixJQUFJRSxFQUFzQnJDLEVBQW9CTyxPQUFFdFMsRUFBVyxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLE1BQU0sSUFBTytSLEVBQW9CLFFBQ2pJcUMsRUFBc0JyQyxFQUFvQk8sRUFBRThCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vc3JzcmZsLXJlYWN0L3dlYnBhY2svcnVudGltZS9jaHVuayBsb2FkZWQiLCJ3ZWJwYWNrOi8vc3JzcmZsLXJlYWN0L3dlYnBhY2svcnVudGltZS9jcmVhdGUgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL3Nyc3JmbC1yZWFjdC8uL3NyYy9jb250ZXh0L2NvbnRleHQuanMiLCJ3ZWJwYWNrOi8vc3JzcmZsLXJlYWN0Ly4uLy4uL2xpYi9sb2FkaW5nLmpzIiwid2VicGFjazovL3Nyc3JmbC1yZWFjdC8uLi8uLi9saWIvZXJyb3IuanMiLCJ3ZWJwYWNrOi8vc3JzcmZsLXJlYWN0Ly4uLy4uL2ltZy9Mb2FkaW5nQ2Fwc3VsZS5wbmciLCJ3ZWJwYWNrOi8vc3JzcmZsLXJlYWN0Ly4uLy4uL2xpYi9hcGlDYWxsLmpzIiwid2VicGFjazovL3Nyc3JmbC1yZWFjdC8uLi8uLi9saWIvZ2V0RXJyb3JNZXNzYWdlLmpzIiwid2VicGFjazovL3Nyc3JmbC1yZWFjdC8uL3NyYy9jb21wb25lbnRzL1JlZ2lzdHJhdGlvbkZvcm0uanMiLCJ3ZWJwYWNrOi8vc3JzcmZsLXJlYWN0Ly4vc3JjL3BhZ2VzL0hvbWUuanMiLCJ3ZWJwYWNrOi8vc3JzcmZsLXJlYWN0Ly4vc3JjL0FwcC5qcyIsIndlYnBhY2s6Ly9zcnNyZmwtcmVhY3QvLi9zcmMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vc3JzcmZsLXJlYWN0L3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL3Nyc3JmbC1yZWFjdC93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9zcnNyZmwtcmVhY3Qvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL3Nyc3JmbC1yZWFjdC93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL3Nyc3JmbC1yZWFjdC93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL3Nyc3JmbC1yZWFjdC93ZWJwYWNrL3J1bnRpbWUvanNvbnAgY2h1bmsgbG9hZGluZyIsIndlYnBhY2s6Ly9zcnNyZmwtcmVhY3Qvd2VicGFjay9zdGFydHVwIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBkZWZlcnJlZCA9IFtdO1xuX193ZWJwYWNrX3JlcXVpcmVfXy5PID0gKHJlc3VsdCwgY2h1bmtJZHMsIGZuLCBwcmlvcml0eSkgPT4ge1xuXHRpZihjaHVua0lkcykge1xuXHRcdHByaW9yaXR5ID0gcHJpb3JpdHkgfHwgMDtcblx0XHRmb3IodmFyIGkgPSBkZWZlcnJlZC5sZW5ndGg7IGkgPiAwICYmIGRlZmVycmVkW2kgLSAxXVsyXSA+IHByaW9yaXR5OyBpLS0pIGRlZmVycmVkW2ldID0gZGVmZXJyZWRbaSAtIDFdO1xuXHRcdGRlZmVycmVkW2ldID0gW2NodW5rSWRzLCBmbiwgcHJpb3JpdHldO1xuXHRcdHJldHVybjtcblx0fVxuXHR2YXIgbm90RnVsZmlsbGVkID0gSW5maW5pdHk7XG5cdGZvciAodmFyIGkgPSAwOyBpIDwgZGVmZXJyZWQubGVuZ3RoOyBpKyspIHtcblx0XHR2YXIgW2NodW5rSWRzLCBmbiwgcHJpb3JpdHldID0gZGVmZXJyZWRbaV07XG5cdFx0dmFyIGZ1bGZpbGxlZCA9IHRydWU7XG5cdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBjaHVua0lkcy5sZW5ndGg7IGorKykge1xuXHRcdFx0aWYgKChwcmlvcml0eSAmIDEgPT09IDAgfHwgbm90RnVsZmlsbGVkID49IHByaW9yaXR5KSAmJiBPYmplY3Qua2V5cyhfX3dlYnBhY2tfcmVxdWlyZV9fLk8pLmV2ZXJ5KChrZXkpID0+IChfX3dlYnBhY2tfcmVxdWlyZV9fLk9ba2V5XShjaHVua0lkc1tqXSkpKSkge1xuXHRcdFx0XHRjaHVua0lkcy5zcGxpY2Uoai0tLCAxKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGZ1bGZpbGxlZCA9IGZhbHNlO1xuXHRcdFx0XHRpZihwcmlvcml0eSA8IG5vdEZ1bGZpbGxlZCkgbm90RnVsZmlsbGVkID0gcHJpb3JpdHk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmKGZ1bGZpbGxlZCkge1xuXHRcdFx0ZGVmZXJyZWQuc3BsaWNlKGktLSwgMSlcblx0XHRcdHZhciByID0gZm4oKTtcblx0XHRcdGlmIChyICE9PSB1bmRlZmluZWQpIHJlc3VsdCA9IHI7XG5cdFx0fVxuXHR9XG5cdHJldHVybiByZXN1bHQ7XG59OyIsInZhciBnZXRQcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZiA/IChvYmopID0+IChPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKSkgOiAob2JqKSA9PiAob2JqLl9fcHJvdG9fXyk7XG52YXIgbGVhZlByb3RvdHlwZXM7XG4vLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3Rcbi8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuLy8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4vLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3Rcbi8vIG1vZGUgJiAxNjogcmV0dXJuIHZhbHVlIHdoZW4gaXQncyBQcm9taXNlLWxpa2Vcbi8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbl9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG5cdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IHRoaXModmFsdWUpO1xuXHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuXHRpZih0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlKSB7XG5cdFx0aWYoKG1vZGUgJiA0KSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG5cdFx0aWYoKG1vZGUgJiAxNikgJiYgdHlwZW9mIHZhbHVlLnRoZW4gPT09ICdmdW5jdGlvbicpIHJldHVybiB2YWx1ZTtcblx0fVxuXHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuXHR2YXIgZGVmID0ge307XG5cdGxlYWZQcm90b3R5cGVzID0gbGVhZlByb3RvdHlwZXMgfHwgW251bGwsIGdldFByb3RvKHt9KSwgZ2V0UHJvdG8oW10pLCBnZXRQcm90byhnZXRQcm90byldO1xuXHRmb3IodmFyIGN1cnJlbnQgPSBtb2RlICYgMiAmJiB2YWx1ZTsgdHlwZW9mIGN1cnJlbnQgPT0gJ29iamVjdCcgJiYgIX5sZWFmUHJvdG90eXBlcy5pbmRleE9mKGN1cnJlbnQpOyBjdXJyZW50ID0gZ2V0UHJvdG8oY3VycmVudCkpIHtcblx0XHRPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhjdXJyZW50KS5mb3JFYWNoKChrZXkpID0+IChkZWZba2V5XSA9ICgpID0+ICh2YWx1ZVtrZXldKSkpO1xuXHR9XG5cdGRlZlsnZGVmYXVsdCddID0gKCkgPT4gKHZhbHVlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBkZWYpO1xuXHRyZXR1cm4gbnM7XG59OyIsImltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5cbmV4cG9ydCBjb25zdCBDb250ZXh0ID0gY3JlYXRlQ29udGV4dCgpO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlQXV0aCgpIHtcbiAgcmV0dXJuIHVzZUNvbnRleHQoQ29udGV4dCk7XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtcbiAgQm94LFxuICBDaXJjdWxhclByb2dyZXNzLFxuICBHcmlkLFxuICBQYXBlcixcbiAgVHlwb2dyYXBoeSxcbiAgQ29udGFpbmVyLFxufSBmcm9tICdAbXVpL21hdGVyaWFsJztcbmNsYXNzIExvYWRpbmcgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCBib2R5ID0gKFxuICAgICAgPENvbnRhaW5lciBtYXhXaWR0aD0nbGcnPlxuICAgICAgICA8UGFwZXJcbiAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgcGFkZGluZzogJzVweCcsXG4gICAgICAgICAgICBtYXJnaW5Ub3A6ICcxMHB4JyxcbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPEdyaWQgY29udGFpbmVyPlxuICAgICAgICAgICAgPEdyaWQgaXRlbSB4cz17MTJ9PlxuICAgICAgICAgICAgICA8Qm94XG4gICAgICAgICAgICAgICAgZGlzcGxheT1cImZsZXhcIlxuICAgICAgICAgICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50PVwiY2VudGVyXCJcbiAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgcGFkZGluZ1RvcDogMTAwLFxuICAgICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbTogMTAsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9J2gzJz5Mb2FkaW5nLi4uPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgIDxHcmlkIGl0ZW0geHM9ezEyfT5cbiAgICAgICAgICAgICAgPEJveFxuICAgICAgICAgICAgICAgIGRpc3BsYXk9XCJmbGV4XCJcbiAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudD1cImNlbnRlclwiXG4gICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmdCb3R0b206IDEwLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Q2lyY3VsYXJQcm9ncmVzcyAvPlxuICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgIDxHcmlkIGl0ZW0geHM9ezEyfT5cbiAgICAgICAgICAgICAgPEJveFxuICAgICAgICAgICAgICAgIGRpc3BsYXk9XCJmbGV4XCJcbiAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudD1cImNlbnRlclwiXG4gICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmdCb3R0b206IDEwMCxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD0nc3VidGl0bGUxJz5UaGlzIG1heSB0YWtlIGEgbW9tZW50LjwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L1BhcGVyPlxuICAgICAgPC9Db250YWluZXI+XG4gICAgKTtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdj5cbiAgICAgICAge2JvZHl9XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IExvYWRpbmc7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgUHJvcFR5cGVzIH0gZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgeyBHcmlkLCBUeXBvZ3JhcGh5LCBCdXR0b24sIENvbnRhaW5lciB9IGZyb20gJ0BtdWkvbWF0ZXJpYWwnO1xuaW1wb3J0IExvYWRpbmdDYXBzdWxlSW1nIGZyb20gJy4uL2ltZy9Mb2FkaW5nQ2Fwc3VsZS5wbmcnO1xuXG5jb25zdCBFcnJvciA9IChwcm9wcykgPT4ge1xuICByZXR1cm4gKFxuICAgIDxDb250YWluZXIgbWF4V2lkdGg9J2xnJz5cbiAgICAgIDxHcmlkIGNvbnRhaW5lciBkaXJlY3Rpb249J2NvbHVtbicganVzdGlmeUNvbnRlbnQ9J2NlbnRlcicgYWxpZ25JdGVtcz0nY2VudGVyJz5cbiAgICAgICAgPEdyaWQgaXRlbT5cbiAgICAgICAgICA8aW1nIHNyYz17TG9hZGluZ0NhcHN1bGVJbWd9IC8+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgaXRlbT5cbiAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PSdoNic+XG4gICAgICAgICAgICBFcnJvcjoge3Byb3BzLm1lc3NhZ2V9XG4gICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgICAgeyBwcm9wcy5yZXR1cm5Ub1xuICAgICAgICAgICAgJiYgKFxuICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgdmFyaWFudD0nY29udGFpbmVkJ1xuICAgICAgICAgICAgICAgIHdpZHRoPSc1MCUnXG4gICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICBwcm9wcy5yZXR1cm5UbygpO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgQmFja1xuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgIClcbiAgICAgICAgICB9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgIDwvR3JpZD5cbiAgICA8L0NvbnRhaW5lcj5cbiAgKTtcbn07XG5cbkVycm9yLnByb3BUeXBlcyA9IHtcbiAgbWVzc2FnZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICByZXR1cm5UbzogUHJvcFR5cGVzLmZ1bmMsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBFcnJvcjtcbiIsImV4cG9ydCBkZWZhdWx0IFwiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJQUFBQUNKQ0FZQUFBRGtNVEFEQUFBS3htbERRMUJKUTBNZ1VISnZabWxzWlFBQVNJbVZsd2RZVTFrV2dPOTdMNzNRQWhHUUVub1RwRmNwb1ljdUhXeUVKSkJRWWt3SUtqWlVCa2R3TEtoSVV3UWNGRkZ3TElDTUJiRmdSVkVCK3dRWlZOUnhzQ0FxS3Z1QUpjenNmcnY3N1huZnlmM2ZlZWVlYys3OTd2MitFd0NvQkxaSWxBRXJBWkFwekJKSEJuZ3o0aE1TR2ZqZkFRd1FvQXdBd0xBNUVoRXpJaUlFWlRBMS9sMCs5Z0JvZkx4ak9SN3IzNy8vVjFIbThpUWNBS0FJbEpPNUVrNG15c2RSZmNNUmliTUFRUGFoZG9PbFdhSnh2b3l5cWhndEVPVkg0NXc2eVVQam5EekJHTXlFVDNTa0Q4cnFBQkFvYkxZNEZRQ0tJV3BuWkhOUzBUZ1VYNVN0aFZ5QkVHWDBIWGh3K0d3dXltaGVNQ3N6Yy9FNHkxQTJUZjVMbk5TL3hVeVd4MlN6VStVOHVaWUpJZmdLSktJTTl2TC9jenYrdDJSbVNLZHlHS05LNFlzREk5R1JqdTdadmZURndYSVdKb2VGVDdHQU8rRS93WHhwWU13VWN5UStpVlBNWmZzR3krZG1oSVZNY1lyQW55V1BrOFdLbm1LZXhDOXFpc1dMSStXNVVzUSt6Q2xtaTZmelN0Tmo1SFkranlXUG44T1BqcHZpYkVGczJCUkwwcU9DcDMxODVIYXhORkplUDA4WTREMmQxMSsrOWt6Slg5WXJZTW5uWnZHakErVnJaMC9YenhNeXAyTks0dVcxY1htK2Z0TStNWEovVVphM1BKY29JMEx1ejhzSWtOc2wyVkh5dVZub2daeWVHeUhmd3pSMlVNUVVBMS9nQjBMUWh3RmlnQzJ3Qnpib2J5Z0FXYnhsNDJjVStDd1dMUmNMVXZsWkRDWjZ5M2dNbHBCak5ZdGhhMjFyRGNENG5aMDhFdS92VGR4RmlFNll0b25RK0M3b21VZHFwbTNKbWdBMG8rZElnemh0TTl3UGdHSThBRTI1SEtrNGU5STJmcDBBRnBDQUlsQUZHa0FIR0FCVFlJbFc1Z2pjZ0JkYWNSQUlCOUVnQVN3RUhNQUhtVUFNbG9LVllDM0lCNFZnSzlnSnlrQWxxQUVId0dGd0ZEU0RVK0FjdUFTdWdWdWdHendFTWpBQVhvRWg4QkdNUWhDRWg2Z1FEZEtBZENFanlBS3loWndoRDhnUENvRWlvUVFvQ1VxRmhKQVVXZ210aHdxaElxZ01xb0xxb0YrZ2s5QTU2QXJVQmQySCtxQkI2QjMwQlVaZ0Nxd0thOFBHOEd6WUdXYkN3WEEwdkFCT2haZkFPWEFldkJrdWdhdmhRM0FUZkE2K0JuZkRNdmdWUEl3QWhJelFFVDNFRW5GR2ZKQndKQkZKUWNUSWFxUUFLVWFxa1Fha0ZlbEE3aUF5NURYeUdZUEQwREFNakNYR0RST0lpY0Z3TUVzd3F6R2JNR1dZQTVnbXpBWE1IVXdmWmdqekhVdkZhbUV0c0s1WUZqWWVtNHBkaXMzSEZtTnJzU2V3RjdIZDJBSHNSeHdPUjhlWjRKeHdnYmdFWEJwdUJXNFRiamV1RWRlRzY4TDE0NGJ4ZUx3RzNnTHZqZy9Icy9GWitIeDhLZjRRL2l6K05uNEEvNGxBSnVnU2JBbitoRVNDa0xDT1VFdzRTRGhEdUUxNFRoZ2xLaEdOaUs3RWNDS1h1Snk0aGJpUDJFcThTUndnanBLVVNTWWtkMUkwS1kyMGxsUkNhaUJkSkQwaXZTZVR5ZnBrRi9KY3NvQ2NTeTRoSHlGZkp2ZVJQMU5VS09ZVUg4cDhpcFN5bWJLZjBrYTVUM2xQcFZLTnFWN1VSR29XZFRPMWpucWUrb1Q2U1lHbVlLWEFVdUFxckZFb1YyaFN1SzN3UnBHb2FLVElWRnlvbUtOWXJIaE04YWJpYXlXaWtyR1NqeEpiYWJWU3VkSkpwVjZsWVdXYXNvMXl1SEttOGlibGc4cFhsRitvNEZXTVZmeFV1Q3A1S2pVcTUxWDZhUWpOZ09aRDQ5RFcwL2JSTHRJR1ZIR3FKcW9zMVRUVlF0WERxcDJxUTJvcWF2WnFzV3JMMU1yVlRxdko2QWpkbU02aVo5QzMwSS9TZStoZlptalBZTTdnemRnNG8ySEc3UmtqNmpQVnZkUjU2Z1hxamVyZDZsODBHQnArR3VrYTJ6U2FOUjVyWWpUTk5lZHFMdFhjbzNsUjgvVk0xWmx1TXprekMyWWVuZmxBQzlZeTE0clVXcUZWbzNWZGExaGJSenRBVzZSZHFuMWUrN1VPWGNkTEowMW5oODRablVGZG1xNkhya0IzaCs1WjNaY01OUWFUa2NFb1lWeGdET2xwNlFYcVNmV3E5RHIxUnZWTjlHUDAxK2szNmo4MklCazRHNlFZN0RCb054Z3kxRFVNTlZ4cFdHLzR3SWhvNUd6RU45cGwxR0UwWW14aUhHZTh3YmpaK0lXSnVnbkxKTWVrM3VTUktkWFUwM1NKYWJYcFhUT2NtYk5adXRsdXMxdm1zTG1ET2QrODNQeW1CV3poYUNHdzJHM1JOUXM3eTJXV2NGYjFyRjVMaWlYVE10dXkzckxQaW00VllyWE9xdG5xeld6RDJZbXp0ODN1bVAzZDJzRTZ3M3FmOVVNYkZac2dtM1UyclRidmJNMXRPYmJsdG5mdHFIYitkbXZzV3V6ZTJsdlk4K3ozMk45em9EbUVPbXh3YUhmNDV1amtLSFpzY0J4ME1uUktjcXB3Nm5WV2RZNXczdVI4MlFYcjR1Mnl4dVdVeTJkWFI5Y3MxNk91ZjdwWnVxVzdIWFI3TWNka0RtL092am45N3ZydWJQY3FkNWtId3lQSlk2K0h6RlBQaysxWjdmblV5OENMNjFYcjlaeHB4a3hqSG1LKzhiYjJGbnVmOEI3eGNmVlo1ZFBtaS9nRytCYjRkdnFwK01YNGxmazk4ZGYzVC9Xdjl4OEtjQWhZRWRBV2lBME1EdHdXMk12U1puRllkYXloSUtlZ1ZVRVhnaW5CVWNGbHdVOUR6RVBFSWEyaGNHaFE2UGJRUjJGR1ljS3c1bkFRemdyZkh2NDR3aVJpU2NTdmMzRnpJK2FXejMwV2FSTzVNcklqaWhhMUtPcGcxTWRvNytndDBROWpUR09rTWUyeGlySHpZK3RpUitKODQ0cmlaUEd6NDFmRlgwdlFUQkFrdENUaUUyTVRheE9INS9uTjJ6bHZZTDdEL1B6NVBRdE1GaXhiY0dXaDVzS01oYWNYS1M1aUx6cVdoRTJLU3pxWTlKVWR6cTVtRHllemtpdVNoemcrbkYyY1Yxd3Y3Zzd1SU0rZFY4UjdudUtlVXBUeUl0VTlkWHZxSU4rVFg4eC9MZkFSbEFuZXBnV21WYWFOcEllbjcwOGZ5NGpMYU13a1pDWmxuaFNxQ05PRkZ4YnJMRjYydUV0a0ljb1h5WmE0THRtNVpFZ2NMSzZWUUpJRmtwWXNWYlE1dWk0MWxmNGc3Y3YyeUM3UC9yUTBkdW14WmNyTGhNdXVMemRmdm5INTh4ei9uSjlYWUZad1ZyU3YxRnU1ZG1YZkt1YXFxdFhRNnVUVjdXc00xdVN0R2NnTnlEMndsclEyZmUyTmRkYnJpdFo5V0IrM3ZqVlBPeTgzci8rSGdCL3E4eFh5eGZtOUc5dzJWUDZJK1ZId1krZEd1NDJsRzc4WGNBdXVGbG9YRmhkKzNjVFpkUFVubTU5S2ZocmJuTEs1YzR2amxqMWJjVnVGVzN1MmVXNDdVS1JjbEZQVXZ6MTBlOU1PeG82Q0hSOTJMdHA1cGRpK3VISVhhWmQwbDZ3a3BLU2wxTEIwYStuWE1uNVpkN2wzZVdPRlZzWEdpcEhkM04yMzkzanRhYWpVcml5cy9MSlhzUGRlVlVCVlU3VnhkWEVOcmlhNzV0bSsySDBkUHp2L1hGZXJXVnRZKzIyL2NML3NRT1NCQzNWT2RYVUh0UTV1cVlmcnBmV0RoK1lmdW5YWTkzQkxnMlZEVlNPOXNmQUlPQ0k5OHZLWHBGOTZqZ1lmYlQvbWZLemh1Tkh4aWhPMEV3Vk5VTlB5cHFGbWZyT3NKYUdsNjJUUXlmWld0OVlUdjFyOXV2K1UzcW55MDJxbnQ1d2huY2s3TTNZMjUreHdtNmp0OWJuVWMvM3RpOW9mbm84L2YvZkMzQXVkRjRNdlhyN2tmK2w4QjdQajdHWDN5NmV1dUY0NWVkWDVhdk0xeDJ0TjF4MnVuN2poY09ORXAyTm4wMDJubXkyM1hHNjFkczNwT25QYjgvYTVPNzUzTHQxbDNiM1dIZGJkMVJQVGM2OTNmcS9zSHZmZWkvc1o5OTgreUg0dytqRDNFZlpSd1dPbHg4VlB0SjVVLzJiMlc2UE1VWGE2ejdmdit0T29wdy83T2YydmZwZjgvblVnN3huMVdmRnozZWQxTDJ4Zm5CcjBIN3oxY3Q3TGdWZWlWNk92OC85US9xUGlqZW1iNDM5Ni9YbDlLSDVvNEszNDdkaTdUZTgxM3UvL1lQK2hmVGhpK01uSHpJK2pJd1dmTkQ0ZCtPejh1ZU5MM0pmbm8wdS80citXZkRQNzF2bzkrUHVqc2N5eE1SRmJ6SjVvQlJCVTRaUVVBTjZoZlFJMUFRRGFMUUJJOHlaNzZnbUJKdjhIVEJENFR6elpkMCtJSXdBMWJRQkU1d0lRZ282bDZHaU1xcUlYQUJHb1Juc0IyTTVPcnY4VVNZcWQ3V1FzY2pQYW1oU1BqYjFIKzBlOEdRRGZlc2ZHUnB2SHhyN1Zvc1UrQUtEdDQyUXZQeTVLaHdEWXU4TEJLU3preGtqYk1QZ1grUWZXeUJJUDU4c2ttZ0FBQUZabFdFbG1UVTBBS2dBQUFBZ0FBWWRwQUFRQUFBQUJBQUFBR2dBQUFBQUFBNUtHQUFjQUFBQVNBQUFBUktBQ0FBUUFBQUFCQUFBQWdLQURBQVFBQUFBQkFBQUFpUUFBQUFCQlUwTkpTUUFBQUZOamNtVmxibk5vYjNUN25pSHZBQUFCMW1sVVdIUllUVXc2WTI5dExtRmtiMkpsTG5odGNBQUFBQUFBUEhnNmVHMXdiV1YwWVNCNGJXeHVjenA0UFNKaFpHOWlaVHB1Y3pwdFpYUmhMeUlnZURwNGJYQjBhejBpV0UxUUlFTnZjbVVnTlM0MExqQWlQZ29nSUNBOGNtUm1PbEpFUmlCNGJXeHVjenB5WkdZOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6RTVPVGt2TURJdk1qSXRjbVJtTFhONWJuUmhlQzF1Y3lNaVBnb2dJQ0FnSUNBOGNtUm1Pa1JsYzJOeWFYQjBhVzl1SUhKa1pqcGhZbTkxZEQwaUlnb2dJQ0FnSUNBZ0lDQWdJQ0I0Yld4dWN6cGxlR2xtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwyVjRhV1l2TVM0d0x5SStDaUFnSUNBZ0lDQWdJRHhsZUdsbU9sQnBlR1ZzV0VScGJXVnVjMmx2Ymo0eE1qZzhMMlY0YVdZNlVHbDRaV3hZUkdsdFpXNXphVzl1UGdvZ0lDQWdJQ0FnSUNBOFpYaHBaanBWYzJWeVEyOXRiV1Z1ZEQ1VFkzSmxaVzV6YUc5MFBDOWxlR2xtT2xWelpYSkRiMjF0Wlc1MFBnb2dJQ0FnSUNBZ0lDQThaWGhwWmpwUWFYaGxiRmxFYVcxbGJuTnBiMjQrTVRNM1BDOWxlR2xtT2xCcGVHVnNXVVJwYldWdWMybHZiajRLSUNBZ0lDQWdQQzl5WkdZNlJHVnpZM0pwY0hScGIyNCtDaUFnSUR3dmNtUm1PbEpFUmo0S1BDOTRPbmh0Y0cxbGRHRStDbnYxdUNVQUFCYk1TVVJCVkhnQjdWMEpjQlhuZmY4REFpUnVjVW5pRWtqaXhnWnhPQml3elkyZE9CN0hTV2FhZW94blBFMmF5YlJPM002a1NUc2V0MDZQVE51a0dYZnFacExZY1JMaXhyWGJTUnB6R0FIR0J6RUlqSVV3Nk9JUTRoUWdjUWtFUW9qK2Y3djczOTIzYjkvVDI3ZlgwOVArTlUvZjdyZmY4ZisrMys4NzlydTJ6MTBXaXFUWDVrRGZYcHZ5S09GS0RrUUU2T1ZFaUFnUUVhQ1g1MEF2VDM1VUEwUUU2T1U1ME11VEg5VUFFUUY2ZVE3MDh1UkhOVUJFZ0Y2ZUE3MDgrVGxCcHg4RHp5MVgydWxHeHgzSzZkdUhoZzBlUUVQeStnZXRSaFNmbGdPQkVHQkRSVDFWMXB5blQ0KzMwdkd6MTlTbyt4Z1lEQnMwZ01vbURLZjVaYU5veVp4Q1dsRSszbmdZWGZtYUEzMzhtZ3phdktlSmZyUGpDTDEvNEt5YUFCUGdraUxEeXJqQ3M1RkRCOUxqRDViUVUydktxTGhncURpUFRCOXl3SE1DdkZ0MWhsNTZxNXFxanJRUXhlS3FxRzlZR1ZkNnVpeFdkem1BWng2ZVJzOTkrZDZvbWRBenlkc0x6d2lBdHYzNVZ5dnAxOXNhNGpRMGNEV3VGRWVXVzlnQmRJaitlc0szQmZsNTlQejZCZlRJZlJPVlo5RS83M0xBRXdLY2FMNUd6Lzc3SDZqNjZFVmRNd05iNDBwNWFMbUZuUjNvZWtEYUJSWXRmT3VMOTlDelQ4eXhQb3J1WGVTQWF3TFVORjJtei83VlJrVUZBMXZqeXZKQVZ6VlYwSFVQdU9qVGg5YXZuVXAveTdWQkpON2tnS3UzZ0ZNWDJ1aFBmL0NlVm1rN0ExMXhiZkdDSk1VdFQyTFF6ZkxMclEwMHNGOWYrdTZUNVdicjZEck5ITkNiMm5UOC84WEx1K25VK2V2c1ZRTUpodnkwQUZIUzhjTWZJdU5YZnhzM0t2QTYrQUJkZmxvNGlsL042ODgyMTlFdnQ5WnJUeUxEVFE2a1RZQy8zN0NmOXRXZU44QUVzSnA0QWJvQURoTkJneHdHUVlqKzdsZjdsWEVGTGNySVNETUgwaUxBWGdiKzFVMjFLaklLTUdvcFQxYlNCVUF4RlgybGxHdlZ2QmwwY1djR1hXR0NpV2pmZitOQW1zbU92RWtPcEVXQWwvNzNVNlZhbDVLdUF3ZHc1TWVYY1NBaVZsZWdTK0NxK2RHaDgvVDJSMDBJTlpJMGM4QXhBVDQ0ZUk0Ky9MUlpiYzg1VW11YjdnUjB3QmpuM295eGtxZzRpeGdPdmZwTzFCZElFM3ZGbTJNQ3ZMbnpxR2VnNjRySFlSeG5FUU82N284dkRoeHJwZDA4enhCSmVqbmdpQUJ0N2JkcDQyNjF5bzBydVlnL1FmVU9PTVc5cm1ZY3huRVcxdUIwcjlMMHdJUzh2ZnVrL2l5NmNKWURqZ2lBaVowWUlNMkFXenB5Zm9PdUpGUGp6QnRjSzBXU1hnNDRJa0JsL1lXNFVvNW9FUWgrUVlLT3ZvY2FwL29HOG9mRHpWQWxFb2M1NElnQU5TY3U2Y0VuQkYwcmxlYTNBWlVhOGlDV1ExckZvWWRycmQ2VkI1cFhLK2pTQk1ETjlrKzBhV2M5cE9naWxSeHdSSUJUelczMkpWMndoYWxMcktXNXRkQ2RhQmRwZ1c0T25xOS9VUkUvQzJtTko3cVB6d0ZIQkRoMythYlNCMUNDTVFPZ2h4dHI2UWgwazllRUpkM2tScUtVUGduTXZRM0diS1E4ajh6a09aQXlBVG82dTZ3MXVSWnlMQ3BwZzg2aFFSbk1HVWlOb0VRUUc3eGlaUVlkRnZDSDM0NzlaM0FiaVlNY1NKa0FXTUJwU0N3cVlZTGUxeFQ1ejdaRWcwSUdScWxkcFV5QXZrd0FMTjVVcTRIWWpwdzFLaW5CZWlkTjQ0dFU3WWpVVFVrM2d5NXhTNjFRZmR6b3FNcXp5RXljQXlrVEFFRk1HRE5FSDV5eEJwa0s2SW5jS0c4TVdvQUNKRXdJRkZSK3BwS3VQT0IvVnJjSXArS1RxQm1RL0VuRmRFU0FxUk9HeFlTWkNGQnpTVS9rUmtBM2c1Z3U2RXBZV2d2MW4yL1h4T2dZM1NUUEFVY0VtRmM2U3UrZ0FWaEZMTlc3dVdxM3VoRXZadEJGUGFjbDNRdzZ3a0M4OGxkNzhvb0VHNW5kNUlBakFtRFRoaUpKUU5majA5d29RTEdsRTlETmJxVldVTUtSTURrOEFWdE1QVjYrMkZZVkRRcVo4eVBadFNNQ2xCVU5WV1lDNFFrWkw5VzdIb0VBQkpQRkRLUnFrN2hOdDNPYkRIUUpUOHk3SEtmOGZ2VGJRMklkbWQza2dDTUNJS3cvLzhJY0JYZzkzQXdCWGRYSFVPYW9iRUhURlkwdTdITEFNUUZXbFk5RDhUZCtmR2xYZWhHdzhyUDAzdTNjV3NPVGFoMm1WYVNVdzFURlVFYS80b3Z0VVRNZ0daVFVkRXlBMmNVamxBQ3RRT3FBODFQcmU3clZyUktBanBhcW54ZWc2MFRpSVAvNWZ6NVZBNDcrSjgwQnh3UkFhRjkvZElZU3FCbDBmWUFBSlo3Rkw5QlZvbWdWa0lWRTFqaWJMbURKZWlUSmNpQXRBcXllUDE2cDNyc0YzUXlReWdzdXBNYWZWYkZFMWJzWmRMMlVhK0ZaUVZmQzFKcWRiUWZPV2FPSTdpMDVrQllCNXBXTTVDS29JaEFIZ0JsMExUSURjZzAxa3hLZWdHN3VaMmg2SWFZZHZGTTVrdVE1a1BiV01HemJma1VtWCtKeFZjcTVYZFJHNTgzOFZBMUFEMGEvTU55QWFER2lBVzIyczNyYlUzZVJtbmtLdTJCRXJ0bFpZTmZ0N2UzVTJ0cEtWNjVjb2V2WHI5T3RXN2ZveXRXck5HVHdZTXJKeWFIYzNGd2FPblFvRFI4K25FYVBIazM5K3ZVTFREZUpLRzBDckM0dm9sY3NTN0pSMHUwa1NOQWxmb2x6RzljQ1R5NHZFV3ZmelR0Mzd0REpwcE4wNXV3WnVuVDVzbTE4YlV3R1JaZ1k1NXFOcFd5RkJRVTBidHc0S2lvcXN2WG5oNldyM2NGbHo3eVZFU1ZkTWtaQWwzdVlEODR1b0ZlL3VjUnM1ZHQxUTBNREhUdDJqRHFaQkc1bDN0eTVOSDY4LzBmbHBOVUhrTVE5dGFwTUxoVVRBTWpQZUlCYVFYb0JXdGRCdGRLZHhQY2oySUcwNjVvcjhRTFRMQkpmTFBpRzYvZDU5MUJyVzRmWmkrZlh6VnlLZCs3Y1NmVk1BQy9BaDRKVkJ3NVFaV1VsdGJXMWVhNnZPVUJYQkZqRGcwTEpBTkI3N3dZZWV0eCtnbzVJZFA3d2haK0RRdlgxOWJUdjQ0L3ArbzBiZXRxOHVyaHc4U0o5OE9FSGRPYU1mNTFaVndSWU1tdXNLYTBxeW9sQU53T3VkK2dFSlpnc1pwNm9Oa2J3eVlpbStvd0YzVHhQNGRmcllIVjFOVFVjT1dJbzZjTlZWOWRkK3FTcWlvNGRQKzVENk9wb3JhdUEvK2loRXEyQ1Z3SFFVZVJRemFEcmtTUUJYWGVqWGJnQkhVRkkvTnVxejlIMTlrNXI4Szd1RDNBVmZmTFVLVmRoT1BGY1UxTkR4eHNiblhoSnlhMnJHZ0F4cko3SFU4UlNkUGxlTWgybUxxNUFsOERGVEZ6U0VaODFmaUhSMW1ydnBvanI2dXJvMU9uVGV2S0N1amg4K0RDL05YZzd1T1dhQU12dkxZckxkQ1ZEUEFOZHpWNEpEbzI3dVhySDAwU2dnNWlnRGY1NzFReWNQWHVXamh3TmJ5c2FtcDJiTjI4cXFmTGluMnNDUUlrbmxoU3J1Z2hLTUZta3pLcDNxaFA1THlVVHBpcnhyaVU0SytobXdIRU5rZkRNb0p1SnNubi9XVktXdHF2TzAvcmYxZFZGTmJYaExqbTdmYnVUMEJ4NEpaNFFBSU5DU3JlYnRZcUgwVkJWUUhJTHVvUW80U1VDSGU3RURjd0tsM01EZU05dmIvZXU5RWs2bkpwbnVCYTZjTjZiTGZIZUVHQmVrUTY4TlRGbUFOUm44UlJKcGFSTHVCSmVxcUREbjlRWWJnaUFhamZNcWwvU0wrWlJIbkR5UWp3aEFPYi9QLzhaNHhSUEFRbW1Lc0dEdnBBUG5oYmdSWXZmN1QxRjZYNG04N2hQcjJHaW0xT3poZWNZRWcwMU93bkxFd0lnd3BWekMvWHFWbFVnRm5RcDVUQ1R0ZW1xWDZQcWRsTFNIK0dCcVI4OFhVN1ZQL3dzdmZtWFM1V2dSQXNsVG82OGdvKzRjU3FZMVBIclBkeXBMbWIzWnp4NEUwbDdNc2lzQ0s1WHo4VUVCckxiRUFWczdSWWRNck5JNXkzR1RuTWlvS21kT01PRlVhTVlkbzh0R2s5cjdpMmtOUnovd1A2eGZQN3FtbEw2NlRhanFrU2NhQWJXc25zbmttbWxYM1J2UHQ5TXMyZlBsdHUwVE04SWtEdWdINjJiWDBSYnRYMzZWdkNnblJWME02Qk9RUC9pL1pNWTlBSUd2VkJkZnBZZzZXdjRGZlVuSmdMQTJYOS9kSkwrNWFsNUNYekVXOS9nSVY0L0JtRGlZM0p1Z3c3cHRXdlhsQ2xsNTc1Vkg1NFJBTUd0bmp1TzN2a2t0b3J0RG5UNHM1TEZUQXc4aDN4bFdiRUMrSW81QmFwRkN2L3ZLK09GS3l6VzhON2xDYUlWczgzRDJJa0R5OVRTTHhwZjVmVUZXRk9Rcm5oTEFINGJnSGdGK3RNclNwU1N2blRHbUhUVFIrczVqRi9zbEdaQWJXTzI4dEJ3S2dUQUlvN0dFeWZTampzSWo5RFJqWGhLZ0tGNU9iU1MyOWZ0bk1GUzZxUnFoNUtwbFBTdnJpNVZTdm9pN3NWN0lXdnZLV0FDSEk4aDVZWVBtK2lmdm5KdnQ4Rm5ldWxIQXR5T0NucEtBQ2kwY200QmJlZWV0bHJXVk5CaEx5TEVrSHVZMzNoa0dxM21OcjE4Y3I3WjJwUHJCMmFNMXNHL2ErcVZmbGpmUXN1bUpTWVo1dUZQTkRWNW9vT2ZnWFIydXB2azhwd0E2STMvOVlicW1EUmJRVWNUOGExSHB5czk5OW1XSGNjeEhqMjYrV1B1UC94Nmx3RW00a2N6a0l3QVdOblRHOFJ6QW96aUR6NHRtem1HUHFqbEkrVk1na3ovenVNenVhUVhFdllZQmlscnVYYlpvQkZBbXFSWDNtdWtGNzlrL3dxRm5uV1FVNzF1OGdLTFM5MUk3SXV6bTVCTWZwVXBZcjRINlBKYlBHMDBmWDNkMU1EQmgxcXJ1TWV2TkVuOEQ3V1IxRWg3ajdiaWNaejBwTktQbGNWdXhCY0M0UDBid0lzZzgvZlVYeVNjTWhhV2ZHbnhCQ1hxTHFhQy9EWWZORmJraWw1NHJRcGpybC9pZDJvT0dUTEVxWmNZOTc0UW9DZy9WeWx4YXFuaitYdnVmT0ZYSWQ4UWpGRWhtQnMwQXdCZUJMWEF5enVPeTYxdTlxVFNENld4cDhDTitFSUFLUFEzM0w1S3IxdWFnUXFiRXVkR2VTZCtIK2JYUWFuK3BRbEE0cXVhak5ORXNJSGp0SThMTUozb200cmJ3WU1HMFdEZVpPSkdmQ01BeHVjRmVGRndaODBGMzVkb1MxeFdFek9XWDFnd1R0Mnl6ZzlSRjBBL2N6UFEwMHAvWWFHek9RMXJudURlTndJVWoxR1phUzExVzZ2ajIxMDd4Znl3VzNmUDJEaFMvbWlydXJ6ck11L2l3VUtMbmlUWVJlUldmQ01BRlBzMnYvYXBndkttcnVXcjRQZnZzQVROQUtTTGF3UDU0YjZHVHhQcGFhVi83Smd4Tkd4WTdLbHRTSXRUOFpVQW1IYVY0VjlVdDVDdDNBOW91K2x1OUVvTnlmbi8zUDc5NkdHZVFZUkk4d1J6NTRFbU9uc3VQR0lxQ2puOE4yWEtGSWMrN0ozN1NvQ3BoZW9yaXJ3RmlMa2x4RnJnSWRQUU1GY0V5bExHUGJYKzdieXh6M1ozdGdWanh5cTdpZDJGb3ZyMmxRQ0k0cm5QVGRmMWxGSzM5YUEzQ3hyMWdCMWN6SjgwWEFFZDRLdTFVeDlxYVBGMzc2QUQ5Vkp5NmxYcFIyUytFMkFkdjM5TDlZK2VBTHJmRy9rQUo3ZEx0QkZVT2xMQ25WTUJIdjZoMjVtYnZtZERPcXJhK3NFVzhsR2pFazlpMlhwS1l1bDd5cFhKSHBRMjdTZTZiQWxwVEdCSWJvNEN1dFJHME9kYXArL1pJTWwyYlhwWitxRk1JQ2wvZG0yWmtuQVpnb1dKMmJnd1Jmb2pNSkVKVWt1RnFWTjNjUmZ4ZS8vSWtlb3FwKzdjcHZvOEVBS1loMkdsSm5qclkvNENXUWk1ZnIzakR2Y0J0QTlaY3k2aFdZSWFNRE5kdkM3OVNHOGdCQ2puc3dVRmVJa1VFYi9EWHlBTldrNjB0TWMxQVFXNTdrLzA4RHNkNC9qWW1QeDg3eGZNQkVJQVpNNDNWazVSMkNZbERxVnVjd2h2QXdlMGs4U0ZrREFuRHVyeUd6L1g0ZnRSK3FGVVlBUlloOGtZVXpaZ0pPNDNlMDZaYklLNTNOblFvdFJHaUUzNkpLWERNcnNHR005RHZpTkdxQ2UwZXAxTGdSSGdNNlVqOWVGWGdBOEJJVGE1M0xDcEJKVGl2M1p1LzkvOCtKd092SGlibXAvWlBZQ1NraEpSMVhNek1BSkE4ejk1c0RpdS9mMFZiOVFJU2w3N3lLaHhrSEQ4QnZMUmZDV2ozQzJyOGxQL0NYeFNtQmRqL29sMERKUUFqMk1idVNhb0JQRGJYdHRDRllkajF3K0tHeS9ORzdmdjBQTy9xMVA3SVJ5djlBSFdGdHhTdjRidVpXUWVodVZuNlllYWdSSmdVVWsrTGVhbUFNaWJSK1ArNGZmMXZyOFN2b2c0Tk9DUmNEUS8rSDF1OWdoYXZXb1ZsVXlaQXV1TWtva1RKcmphOVpOS1lnSWxBQlQ2MnZMSmlsNENBTXhEUEIzNzNCditIZS8rZXVWcCt1bXVrenJvaUJPeWZFd0hyVncwa3dZT0hFZ3paODZrVlN0WDBwVEprNVZubWZEUDc5S1BOQVpPZ0VkNWJtQ050aS9QUEJyMytwN1Q5TDNmMTNtZTcyL3pxK2FmdlhGSUFWOENsM2pYTDhpUG1WWERDdHRaczJiUnloVXJhSEp4c1RnUHhadzBjU0s1WGZDWml1S0JFd0JLdmZENWFkUzNYL3hvM0VzN0d1bmJieDVPUmUrVTNHeGdVcTEvcllxcmZtTmhLcTRoejB4cHA0Y1d5b0tWMk9EeTh2S1ViZGNybGkrbjRrbVRZaDhHZEJkRTZVZFNYSjBWN0NZdlh0OTlpcjdKSlZNRTdiUEl3c2tqNk1YSHB0TjliS1lqbC9sTXdCYzNOZERQVGIxK2hLTmhUOHZ5YjlFTDY0cG93WUlGS1FXUERaaFlNZFIwTXBnM0ZwQnV6cHc1S2VubTFsRm9CSURpMzk5OGhQNjFRbDJUSndreEw5MSs4ajQrL0dIMkdIcU0xL0tsSWhmNVRPRFhtRmd2djNlQ0xta0hRd3JvNG4vcTRFNzZ6b0s3dFB5QkpaVHZjSEFGK3dWQkJMOTNEYUhtR2NRcmZvT1FVQW1BQkg1dll6MzkyL2JHbUxSS3V5UzF3b0tKdzJnRnIrU1p6MmJwMkNFMGVuQi93cmVNcnpMSUoxcmJxZnIwVlhyL1NDdHRPYXgrUHQ0S3VnU09ONDhmTDdsRlU0dUxhUDc4K1dMdDJNVFdNUkRCancwazZIdTRQZlhEU1lKQ0p3Q1UvWStkamZUQy85VXJlZ3ZvNWtSSXIxM3NwQjJYZTVqSlFNZnp4ZmtkOUxVNWQybEFUaDlhdW1TSkowT3IyRVVFSW5pNWx3QWRVUFJCZ3BLTUlBQVMrMjVkQzMzM3Q3WFVjRjQ5OE1BTDBDVVRueTV1cHpVbDZ0YzRNS3RXWGw0dWp6d3hyMTY5UWtlUEhuTzlyQnl2b0hnTENWSXloZ0NTNkgvY2duNkJ1alhiV3RJVGxYTDRSZlZ1bGZ0SGR0QVRKVjFVTkZRYUZhSmxTNWU2M2s1bGpVZnVzYmNBTlVLNks0d3hEdUYyczZmb2txcVpjUVNBNHVqTS9aem5DUDVyMzFscTVEWStrZGlCam9uZEovaVFpc1g5VHRDRTRRYndDQU96YXZQbXBYNUFWS0o0dTdQSCtYM0grRHhoOCtkZ3V2T0RrVWdNUmdVdEdVa0FjeVpVTmw2bWR4dGFhZi9KcTFSM3JvMU9YYmxGZC9nTWZaSGhnL3BUNmVnOG1qdCtHTjAvWlFSOXVieFFlVjA3ZVBDZ09OSE5CNVl0ODNWaVJZOUl1MmhwYVNFY005T2N3ckd1R0k3R2lHVFFrdkVFc011UXRsdWQxTWtrR01RYlBRYmt4Slp5dU4rNGFWT2NOOHlxemVYdjhJUWhGL25MSHlEQytRdjJrMTZsUE4wN1k4YU1NRlFMZmlqWWkxUU9HWmhESS9MNjI0TGZsT0JjbjZCRzF1elNoMC9DTFZxMGlFWW5XTTRkcG03eHhjY3VCVDNJenU1a3J5Qm0xYnJMSWh6bWRKR2JCS3VVbFpiU2dBRURyTmFCM1djVkFjNXpXNnQvazgrVWhXR1dNRkVEYndkMkVyWnVXVVdBY3pZYlBOSHpEMkpXelE1Y3Nldm82TEQ5dU5UVXNqTHEzNysvT0F2RnpDb0NvQWF3U2hBZlg3VEdhYjIzYTViZ0p1elNEeDJ5aGdBWW43L0ZKYzBzT2Z3dDNqRzhqejVNd2ZlQzdUNDBNWDNhTk9YN3dXSHFocml6aWdEV3pQUjZHNVUxL0ZUdUU1WCtLVHp3a3dtU05RVEFzZTVXQ2J2dHh6bStkcDkybVRGOWVpaGZDcmZtRCs2emhnRG9hRmtsakpFMXN3NlpYdnFoYTlZUUFKOTBzMHFmdnVFbEw5Rm5abWJ5aUYvZkVQV3k1bEY0T1dUVnhPVzlYYWJlY1htU3RodVZla0xwUi9xeWhnQjJvMmx1ejlKUGx3Q0pQak16aTJmN3NEVTlreVJyQ0dDM2lnYXZobUZJVHluOXlKdXNJWURkZDNOYUwxMmlPM2VDM2ZtYjZETXpRYS8wU1pYNFdVTUFiS0RFd0k5Vm1wdURQWVFpWWVubjVWNlpLRmxEQUdUdVdENC96eW9uQTFyTGozZ1RmV1ptanN0disxblQ1T1Y5VmhIQWJyRW5wbUR0NWdpOHpFUUpLOUdNWDNISTI4eEVQenN6cXdpQUJPYmw1Y2FsYysrK2ZYRjJYbHRjNE5VK2RodEc3Z2xvaDArNjZjazZBaVRhMUZsYlc1dHVIblhyNy9idDIzVG9rTEhOemV4aFVraDdDODA2Skx2T09nS1VsSlFTUHFSZ0ZZekpOeDV2dEZwN2NsOVZWVVhYYmVZaTVvVzBCdEZKb3JLT0FFajhkSjVzc1pORE5ZZDUzWDdzWGtRN2Q2bmE0UlZ6Nzk2OXRvczljYVJySnF4RjZDNHRXVW1BSXQ3OWcxMDJkbEpUVzBmVjFkWGs5b09MV1BLOWE5Y3VXL0FIOENxZlRIM3Z0K1pKajF3V2JrMUVvdnRFcFZQY280UG10STNHUUEvZTlaTjlWWFRSd29XMnI2UVNieWFaV1UwQVZOR1ZsWldFRWNGa2dsMDVXRG1FQlNSMmswcVlVMENKeDVyRDduYjdsUFBPSXk4KzVaSk1YeStmWlRVQmtGR1lKdDYvZjM5S3UzUGdIaDFJVEN5QkNDMnQ5aCtXaERzN1diQmdQaFVXdVArUWsxM1lmdGxsUFFFazQrcnE2bXpYNXNsek55WU9tc0NKSG42ZTUrZEd2MlIrZXcwQmtBbllvbFZmWDAvWXZPbUZZR0ozR2kvdUxPUGwzVDFWZWhVQkJLUXovSEhJeHNaR1YwVEFmcjdKL0tZUjlIWnVTWU5YWnE4a2dHUWV2aFNLMlVJTTQxN202MlNTeDBmSTRWTXRZM2pDQ1lkTVpJdjBhZ0tZUWJ6TFg2OVE5aFp3ai84Mkx5WERmYitjZnJ4bE81Y0c4WkV0WVM4d05ldnE1WFZFQUM5enN3ZUdsWlVqZ1QwUWg5QlVqZ2dRV3RablJzUVJBVElEaDlDMGlBZ1FXdFpuUnNRUkFUSURoOUMwaUFnUVd0Wm5Sc1QvRC94b2xxNTZqUnBsQUFBQUFFbEZUa1N1UW1DQ1wiIiwiaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcblxuY29uc3QgYXBpQ2FsbCA9IChvcHRzKSA9PiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgb3B0cyA9IG9wdHMgfHwge307XG4gICAgb3B0cy5jb250ZXh0ID0gb3B0cy5jb250ZXh0IHx8IG51bGw7XG4gICAgb3B0cy5yZXNwb25zZVR5cGUgPSBvcHRzLnJlc3BvbnNlVHlwZSB8fCAnYXBwbGljYXRpb24vanNvbic7XG4gICAgbGV0IHVybCA9ICcnO1xuICAgIGlmIChvcHRzLnVybCkge1xuICAgICAgdXJsID0gb3B0cy51cmw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHVybCA9IHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PSAnbG9jYWxob3N0JyA/IGBodHRwczovL3Nyc3JmbC1zdGFnaW5nLmNvbS9gIDogJy8nO1xuICAgIH1cbiAgICBjb25zdCBoZWFkZXJzID0gb3B0cy5oZWFkZXJzIHx8IHt9O1xuICAgIGF4aW9zKHtcbiAgICAgIG1ldGhvZDogb3B0cy5tZXRob2QudG9Mb3dlckNhc2UoKSxcbiAgICAgIHVybDogYCR7dXJsfSR7b3B0cy5lbmRwb2ludH1gLFxuICAgICAgcmVzcG9uc2VUeXBlOiBvcHRzLnJlc3BvbnNlVHlwZSxcbiAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4gICAgICBwYXJhbXM6IG9wdHMucGFyYW1zLFxuICAgICAgZGF0YTogb3B0cy5kYXRhLFxuICAgIH0pLnRoZW4ocmVzb2x2ZSkuY2F0Y2gocmVqZWN0KTtcbiAgfSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBhcGlDYWxsO1xuIiwiY29uc3QgZ2V0RXJyb3JNZXNzYWdlID0gKGVycikgPT4ge1xuICBsZXQgZXJyb3IgPSAnJztcbiAgaWYgKGVyci5yZXNwb25zZSAmJiBlcnIucmVzcG9uc2UuZGF0YSkge1xuICAgIGlmIChlcnIucmVzcG9uc2UuZGF0YS5tZXNzYWdlKSB7XG4gICAgICBpZiAoZXJyLnJlc3BvbnNlLmRhdGEubWVzc2FnZSA9PSAnc3RyaW5nJykge1xuICAgICAgICBlcnJvciA9IGVyci5yZXNwb25zZS5kYXRhLm1lc3NhZ2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlcnJvciA9IEpTT04uc3RyaW5naWZ5KGVyci5yZXNwb25zZS5kYXRhLm1lc3NhZ2UpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGVyci5yZXNwb25zZS5kYXRhID09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAoZXJyLnJlc3BvbnNlLmRhdGEuaW5jbHVkZXMoJ21lc3NhZ2UnKSkge1xuICAgICAgICBlcnJvciA9IGVyci5yZXNwb25zZS5kYXRhLnN1YnN0cmluZygxMiwgKGVyci5yZXNwb25zZS5kYXRhLmxlbmd0aCAtIDIpKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZXJyb3IgPSBKU09OLnN0cmluZ2lmeShlcnIucmVzcG9uc2UuZGF0YSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGVycm9yID0gZXJyLm1lc3NhZ2UgPyBlcnIubWVzc2FnZSA6IEpTT04uc3RyaW5naWZ5KGVycik7XG4gIH1cbiAgcmV0dXJuIGVycm9yO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZ2V0RXJyb3JNZXNzYWdlO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBhcGlDYWxsIGZyb20gJy4uLy4uLy4uLy4uL2xpYi9hcGlDYWxsLmpzJztcbmltcG9ydCBFcnJvciBmcm9tICcuLi8uLi8uLi8uLi9saWIvZXJyb3IuanMnO1xuaW1wb3J0IExvYWRpbmcgZnJvbSAnLi4vLi4vLi4vLi4vbGliL2xvYWRpbmcnO1xuaW1wb3J0IGdldEVycm9yTWVzc2FnZSBmcm9tICcuLi8uLi8uLi8uLi9saWIvZ2V0RXJyb3JNZXNzYWdlLmpzJztcbmltcG9ydCBwcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgeyBDb250ZXh0IH0gZnJvbSAnLi4vY29udGV4dC9jb250ZXh0LmpzJztcbmltcG9ydCB7IFR5cG9ncmFwaHksIEdyaWQsIENvbnRhaW5lciwgUGFwZXIsIFRleHRGaWVsZCwgQnV0dG9uIH0gZnJvbSAnQG11aS9tYXRlcmlhbCc7XG5cbmNsYXNzIFJlZ2lzdHJhdGlvbkZvcm0gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgZXJyb3JzOiBudWxsLFxuICAgICAgbG9hZGVkOiB0cnVlLFxuICAgICAgdmlldzogJ1JlZ2lzdGVyJyxcbiAgICAgIHN0b3JlX25hbWU6IG51bGwsXG4gICAgICBzdG9yZV91dWlkOiBudWxsLFxuICAgICAgcGF0aWVudF91dWlkOiBudWxsLFxuICAgICAgbmV3X3BhdGllbnRfdXVpZDogbnVsbCxcbiAgICAgIHVzZXJfdXVpZDogbnVsbCxcbiAgICAgIHVzZXJuYW1lOiBudWxsLFxuICAgICAgcGFzc3dvcmQ6IG51bGwsXG4gICAgICBmaXJzdF9uYW1lOiBudWxsLFxuICAgICAgbGFzdF9uYW1lOiBudWxsLFxuICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgZmllbGRzOiBmaWVsZHMsXG4gICAgICBmaWVsZHMyOiBmaWVsZHMyLFxuICAgIH07XG4gICAgY29uc3QgZmllbGRzID0ge1xuICAgICAgZmlyc3RfbmFtZToge1xuICAgICAgICB0aXRsZTogJ0ZpcnN0IE5hbWUnLFxuICAgICAgICB0eXBlOiB7XG4gICAgICAgICAgdHlwZW5hbWU6ICd0ZXh0JyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIGVycm9yOiB0cnVlLFxuICAgICAgICBvbkNoYW5nZTogKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgY29weSA9IHsgLi4udGhpcy5zdGF0ZSB9O1xuICAgICAgICAgIGlmICghL15bIC1+XXsxLDIwfSQvLnRlc3QodmFsdWUudHJpbSgpKSkge1xuICAgICAgICAgICAgZmllbGRzLmZpcnN0X25hbWUuZXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgZmllbGRzLmZpcnN0X25hbWUuZmVlZGJhY2sgPSAnSW52YWxpZCBGaXJzdCBOYW1lIEZvcm1hdCc7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZpZWxkcy5maXJzdF9uYW1lLmVycm9yID0gZmFsc2U7XG4gICAgICAgICAgICBmaWVsZHMuZmlyc3RfbmFtZS5mZWVkYmFjayA9ICcnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb3B5LmZpZWxkcy5maXJzdF9uYW1lLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZShjb3B5KTtcbiAgICAgICAgfSxcbiAgICAgICAgZnVsbHdpZHRoOiB0cnVlLFxuICAgICAgICBmZWVkYmFjazogJycsXG4gICAgICAgIHZhbHVlOiAnJyxcbiAgICAgIH0sXG4gICAgICBsYXN0X25hbWU6IHtcbiAgICAgICAgdGl0bGU6ICdMYXN0IE5hbWUnLFxuICAgICAgICB0eXBlOiB7XG4gICAgICAgICAgdHlwZW5hbWU6ICd0ZXh0JyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIGVycm9yOiB0cnVlLFxuICAgICAgICBvbkNoYW5nZTogKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgY29weSA9IHsgLi4udGhpcy5zdGF0ZSB9O1xuICAgICAgICAgIGlmICghL15bIC1+XXsxLDIwfSQvLnRlc3QodmFsdWUudHJpbSgpKSkge1xuICAgICAgICAgICAgZmllbGRzLmxhc3RfbmFtZS5lcnJvciA9IHRydWU7XG4gICAgICAgICAgICBmaWVsZHMubGFzdF9uYW1lLmZlZWRiYWNrID0gJ0ludmFsaWQgTGFzdCBOYW1lIEZvcm1hdCc7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZpZWxkcy5sYXN0X25hbWUuZXJyb3IgPSBmYWxzZTtcbiAgICAgICAgICAgIGZpZWxkcy5sYXN0X25hbWUuZmVlZGJhY2sgPSAnJztcbiAgICAgICAgICB9XG4gICAgICAgICAgY29weS5maWVsZHMubGFzdF9uYW1lLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZShjb3B5KTtcbiAgICAgICAgfSxcbiAgICAgICAgZnVsbHdpZHRoOiB0cnVlLFxuICAgICAgICBmZWVkYmFjazogJycsXG4gICAgICAgIHZhbHVlOiAnJyxcbiAgICAgIH0sXG4gICAgICBlbWFpbDoge1xuICAgICAgICB0aXRsZTogJ0VtYWlsIEFkZHJlc3MnLFxuICAgICAgICB0eXBlOiB7XG4gICAgICAgICAgdHlwZW5hbWU6ICd0ZXh0JyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIGVycm9yOiB0cnVlLFxuICAgICAgICBvbkNoYW5nZTogKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgY29weSA9IHsgLi4udGhpcy5zdGF0ZSB9O1xuICAgICAgICAgIGlmICghL14uK0AoLitcXC4pKy4rJC8udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIGZpZWxkcy5lbWFpbC5lcnJvciA9IHRydWU7XG4gICAgICAgICAgICBmaWVsZHMuZW1haWwuZmVlZGJhY2sgPSAnSW52YWxpZCBFbWFpbCBBZGRyZXNzIEZvcm1hdCc7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZpZWxkcy5lbWFpbC5lcnJvciA9IGZhbHNlO1xuICAgICAgICAgICAgZmllbGRzLmVtYWlsLmZlZWRiYWNrID0gJyc7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvcHkuZmllbGRzLmVtYWlsLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZShjb3B5KTtcbiAgICAgICAgfSxcbiAgICAgICAgZnVsbHdpZHRoOiB0cnVlLFxuICAgICAgICBmZWVkYmFjazogJycsXG4gICAgICAgIHZhbHVlOiAnJyxcbiAgICAgIH0sXG4gICAgICBwYXNzd29yZDoge1xuICAgICAgICB0aXRsZTogJ1Bhc3N3b3JkJyxcbiAgICAgICAgdHlwZToge1xuICAgICAgICAgIHR5cGVuYW1lOiAncGFzc3dvcmQnLFxuICAgICAgICB9LFxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgZXJyb3I6IHRydWUsXG4gICAgICAgIG9uQ2hhbmdlOiAodmFsdWUpID0+IHtcbiAgICAgICAgICBjb25zdCBjb3B5ID0geyAuLi50aGlzLnN0YXRlIH07XG4gICAgICAgICAgY29weS5maWVsZHMucGFzc3dvcmQudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoID09IDApIHtcbiAgICAgICAgICAgIGZpZWxkcy5wYXNzd29yZC5lcnJvciA9IHRydWU7XG4gICAgICAgICAgICBmaWVsZHMucGFzc3dvcmQuZmVlZGJhY2sgPSAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPGxpPkF0IGxlYXN0IDggY2hhcmFjdGVycyBsb25nPC9saT5cbiAgICAgICAgICAgICAgICA8bGk+QXQgbGVhc3Qgb25lIHNwZWNpYWwgY2hhcmFjdGVyPC9saT5cbiAgICAgICAgICAgICAgICA8bGk+QXQgbGVhc3Qgb25lIGNhcGl0YWwgbGV0dGVyPC9saT5cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIS9bIC0vOi1AWy1gey1+XS8udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgZmllbGRzLnBhc3N3b3JkLmVycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgICAgZmllbGRzLnBhc3N3b3JkLmZlZWRiYWNrID0gJ0F0IGxlYXN0IDEgc3BlY2lhbCBjaGFyYWN0ZXIgaXMgcmVxdWlyZWQnO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghL1tBLVpdLy50ZXN0KHZhbHVlKSkge1xuICAgICAgICAgICAgICBmaWVsZHMucGFzc3dvcmQuZXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgICBmaWVsZHMucGFzc3dvcmQuZmVlZGJhY2sgPSAnQXQgbGVhc3QgMSBjYXBpdGFsIGxldHRlciBpcyByZXF1aXJlZCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlLmxlbmd0aCA8IDgpIHtcbiAgICAgICAgICAgICAgZmllbGRzLnBhc3N3b3JkLmVycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgICAgZmllbGRzLnBhc3N3b3JkLmZlZWRiYWNrID0gJ0F0IGxlYXN0IDggY2hhcmFjdGVycyBpcyByZXF1aXJlZCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBmaWVsZHMucGFzc3dvcmQuZXJyb3IgPSBmYWxzZTtcbiAgICAgICAgICAgICAgZmllbGRzLnBhc3N3b3JkLmZlZWRiYWNrID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY29weS5maWVsZHMuY29uZmlybS52YWx1ZSAhPT0gY29weS5maWVsZHMucGFzc3dvcmQudmFsdWUpIHtcbiAgICAgICAgICAgICAgY29weS5maWVsZHMuY29uZmlybS5lcnJvciA9IHRydWU7XG4gICAgICAgICAgICAgIGNvcHkuZmllbGRzLmNvbmZpcm0uZmVlZGJhY2sgPSAnUGFzc3dvcmRzIG11c3QgbWF0Y2gnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29weS5maWVsZHMuY29uZmlybS5lcnJvciA9IGZhbHNlO1xuICAgICAgICAgICAgICBjb3B5LmZpZWxkcy5jb25maXJtLmZlZWRiYWNrID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoY29weSk7XG4gICAgICAgIH0sXG4gICAgICAgIGZ1bGx3aWR0aDogdHJ1ZSxcbiAgICAgICAgZmVlZGJhY2s6IChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPGxpPkF0IGxlYXN0IDggY2hhcmFjdGVycyBsb25nPC9saT5cbiAgICAgICAgICAgIDxsaT5BdCBsZWFzdCBvbmUgc3BlY2lhbCBjaGFyYWN0ZXI8L2xpPlxuICAgICAgICAgICAgPGxpPkF0IGxlYXN0IG9uZSBjYXBpdGFsIGxldHRlcjwvbGk+XG4gICAgICAgICAgPC8+XG4gICAgICAgICksXG4gICAgICAgIHZhbHVlOiAnJyxcbiAgICAgIH0sXG4gICAgICBjb25maXJtOiB7XG4gICAgICAgIHRpdGxlOiAnQ29uZmlybSBQYXNzd29yZCcsXG4gICAgICAgIHR5cGU6IHtcbiAgICAgICAgICB0eXBlbmFtZTogJ3Bhc3N3b3JkJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIGVycm9yOiB0cnVlLFxuICAgICAgICBvbkNoYW5nZTogKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc3QgY29weSA9IHsgLi4udGhpcy5zdGF0ZSB9O1xuICAgICAgICAgIGNvcHkuZmllbGRzLmNvbmZpcm0udmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICBpZiAoY29weS5maWVsZHMuY29uZmlybS52YWx1ZS5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgY29weS5maWVsZHMuY29uZmlybS5lcnJvciA9IHRydWU7XG4gICAgICAgICAgICBjb3B5LmZpZWxkcy5jb25maXJtLmZlZWRiYWNrID0gJ1Bhc3N3b3JkcyBtdXN0IG1hdGNoJztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGNvcHkuZmllbGRzLmNvbmZpcm0udmFsdWUgIT09IGNvcHkuZmllbGRzLnBhc3N3b3JkLnZhbHVlKSB7XG4gICAgICAgICAgICAgIGNvcHkuZmllbGRzLmNvbmZpcm0uZXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgICBjb3B5LmZpZWxkcy5jb25maXJtLmZlZWRiYWNrID0gJ1Bhc3N3b3JkcyBtdXN0IG1hdGNoJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvcHkuZmllbGRzLmNvbmZpcm0uZXJyb3IgPSBmYWxzZTtcbiAgICAgICAgICAgICAgY29weS5maWVsZHMuY29uZmlybS5mZWVkYmFjayA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnNldFN0YXRlKGNvcHkpO1xuICAgICAgICB9LFxuICAgICAgICBmdWxsd2lkdGg6IHRydWUsXG4gICAgICAgIGZlZWRiYWNrOiAnJyxcbiAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgfSxcbiAgICAgIHZhbHVlOiAnJyxcbiAgICAgIGVycm9yOiBmYWxzZSxcbiAgICAgIGZlZWRiYWNrOiAnJyxcbiAgICB9O1xuICAgIGNvbnN0IGZpZWxkczIgPSB7XG4gICAgICBjb25maXJtYXRpb246IHtcbiAgICAgICAgdGl0bGU6ICdDb25maXJtYXRpb24gQ29kZScsXG4gICAgICAgIHR5cGU6IHtcbiAgICAgICAgICB0eXBlbmFtZTogJ3RleHQnLFxuICAgICAgICB9LFxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgZXJyb3I6IHRydWUsXG4gICAgICAgIG9uQ2hhbmdlOiAodmFsdWUpID0+IHtcbiAgICAgICAgICBjb25zdCBjb3B5ID0geyAuLi50aGlzLnN0YXRlIH07XG4gICAgICAgICAgaWYgKCEvXlsgLX5dezEsMjB9JC8udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIGZpZWxkczIuY29uZmlybWF0aW9uLmVycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgIGZpZWxkczIuY29uZmlybWF0aW9uLmZlZWRiYWNrID0gJ0ludmFsaWQgQ29uZmlybWF0aW9uIENvZGUgRm9ybWF0JztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZmllbGRzMi5jb25maXJtYXRpb24uZXJyb3IgPSBmYWxzZTtcbiAgICAgICAgICAgIGZpZWxkczIuY29uZmlybWF0aW9uLmZlZWRiYWNrID0gJyc7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvcHkuZmllbGRzMi5jb25maXJtYXRpb24udmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKGNvcHkpO1xuICAgICAgICB9LFxuICAgICAgICBmdWxsd2lkdGg6IHRydWUsXG4gICAgICAgIGZlZWRiYWNrOiAnJyxcbiAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgfSxcbiAgICB9O1xuICAgIHRoaXMuc3RhdGUuZmllbGRzID0gZmllbGRzO1xuICAgIHRoaXMuc3RhdGUuZmllbGRzMiA9IGZpZWxkczI7XG4gICAgdGhpcy5jbGVhckZpZWxkcyA9IHRoaXMuY2xlYXJGaWVsZHMuYmluZCh0aGlzKTtcbiAgICB0aGlzLmNoYW5nZVZpZXcgPSB0aGlzLmNoYW5nZVZpZXcuYmluZCh0aGlzKTtcbiAgICB0aGlzLnJlZ2lzdGVyVXNlciA9IHRoaXMucmVnaXN0ZXJVc2VyLmJpbmQodGhpcyk7XG4gICAgdGhpcy5jbGVhclN0YXRlID0gdGhpcy5jbGVhclN0YXRlLmJpbmQodGhpcyk7XG4gIH1cblxuICBzdGF0aWMgY29udGV4dFR5cGUgPSBDb250ZXh0O1xuXG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgc3RvcmVfdXVpZDogcHJvcFR5cGVzLnN0cmluZyxcbiAgICBzdG9yZV9uYW1lOiBwcm9wVHlwZXMuc3RyaW5nLFxuICAgIHJlZ2lzdGVyX2VuYWJsZWQ6IHByb3BUeXBlcy5zdHJpbmcsXG4gIH07XG5cbiAgY2xlYXJGaWVsZHMoKSB7XG4gICAgY29uc3QgY29weSA9IHsgLi4udGhpcy5zdGF0ZSB9O1xuICAgIGZvciAoY29uc3Qga2V5IGluIGNvcHkuZmllbGRzKSB7XG4gICAgICBpZiAoY29weS5maWVsZHNba2V5XS52YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvcHkuZmllbGRzW2tleV0udmFsdWUgPSAnJztcbiAgICAgICAgaWYgKGNvcHkuZmllbGRzW2tleV0ucmVxdWlyZWQpIHtcbiAgICAgICAgICBjb3B5LmZpZWxkc1trZXldLmVycm9yID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY29weS5maWVsZHMucGFzc3dvcmQudmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29weS5maWVsZHMucGFzc3dvcmQuZmVlZGJhY2sgPSAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPGxpPkF0IGxlYXN0IDggY2hhcmFjdGVycyBsb25nPC9saT5cbiAgICAgICAgICA8bGk+QXQgbGVhc3Qgb25lIHNwZWNpYWwgY2hhcmFjdGVyPC9saT5cbiAgICAgICAgICA8bGk+QXQgbGVhc3Qgb25lIGNhcGl0YWwgbGV0dGVyPC9saT5cbiAgICAgICAgPC8+XG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLnNldFN0YXRlKGNvcHkpO1xuICB9XG5cbiAgY2hhbmdlVmlldyh2aWV3KSB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7IHZpZXc6IHZpZXcgfSk7XG4gIH1cblxuICBjbGVhclN0YXRlKCkge1xuICAgIGNvbnN0IGNvcHkgPSB7IC4uLnRoaXMuc3RhdGUgfTtcbiAgICBjb3B5LmVycm9ycyA9IG51bGw7XG4gICAgY29weS5sb2FkZWQgPSB0cnVlO1xuICAgIGNvcHkudmlldyA9ICdSZWdpc3Rlcic7XG4gICAgY29weS5zdG9yZV9uYW1lID0gbnVsbDtcbiAgICBjb3B5LnN0b3JlX3V1aWQgPSBudWxsO1xuICAgIGNvcHkucGF0aWVudF91dWlkID0gbnVsbDtcbiAgICBjb3B5Lm5ld19wYXRpZW50X3V1aWQgPSBudWxsO1xuICAgIGNvcHkudXNlcl91dWlkID0gbnVsbDtcbiAgICBjb3B5LnVzZXJuYW1lID0gbnVsbDtcbiAgICBjb3B5LnBhc3N3b3JkID0gbnVsbDtcbiAgICB0aGlzLmNvbnRleHQucmVtb3ZlSXRlbSgncGFzc3dvcmQnKTtcbiAgICB0aGlzLmNvbnRleHQucmVtb3ZlSXRlbSgndXNlcl91dWlkJyk7XG4gICAgdGhpcy5jb250ZXh0LnJlbW92ZUl0ZW0oJ3BhdGllbnRfdXVpZCcpO1xuICAgIHRoaXMuY29udGV4dC5yZW1vdmVJdGVtKCdmaXJzdF9uYW1lJyk7XG4gICAgdGhpcy5jb250ZXh0LnJlbW92ZUl0ZW0oJ2xhc3RfbmFtZScpO1xuICAgIHRoaXMuc2V0U3RhdGUoY29weSk7XG4gIH1cblxuICByZWdpc3RlclVzZXIoKSB7XG4gICAgY29uc3QgY29weSA9IHsgLi4udGhpcy5zdGF0ZSB9O1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGZpcnN0X25hbWU6IHRoaXMuc3RhdGUuZmllbGRzLmZpcnN0X25hbWUudmFsdWUsXG4gICAgICBsYXN0X25hbWU6IHRoaXMuc3RhdGUuZmllbGRzLmxhc3RfbmFtZS52YWx1ZSxcbiAgICAgIGVtYWlsOiB0aGlzLnN0YXRlLmZpZWxkcy5lbWFpbC52YWx1ZSxcbiAgICAgIHBhdGllbnRfdXVpZDogdGhpcy5jb250ZXh0LmdldFBhdGllbnQoKSxcbiAgICAgIHN0b3JlX3V1aWQ6IHRoaXMucHJvcHMuc3RvcmVfdXVpZCxcbiAgICB9O1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICBtZXRob2Q6ICdwb3N0JyxcbiAgICAgIHVybDogJ2h0dHBzOi8vYXBpLXN0YWdpbmcuc3JzcGhhcm1hY3kuY29tLycsXG4gICAgICBlbmRwb2ludDogJ3B1YmxpYy92MS9hdXRoL3JlZ2lzdGVyJyxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgIH0sXG4gICAgICBkYXRhOiBwYXJhbXMsXG4gICAgfTtcbiAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGVkOiBmYWxzZSB9KTtcbiAgICBhcGlDYWxsKG9wdGlvbnMpLnRoZW4oIChyZXNwKSA9PiB7XG4gICAgICBjb25zdCByID0gSlNPTi5wYXJzZShyZXNwLmRhdGEpO1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIHVzZXJuYW1lOiBjb3B5LmZpZWxkcy5lbWFpbC52YWx1ZSxcbiAgICAgICAgcGFzc3dvcmQ6IGNvcHkuZmllbGRzLnBhc3N3b3JkLnZhbHVlLFxuICAgICAgICBmaXJzdF9uYW1lOiBjb3B5LmZpZWxkcy5maXJzdF9uYW1lLnZhbHVlLFxuICAgICAgICBsYXN0X25hbWU6IGNvcHkuZmllbGRzLmxhc3RfbmFtZS52YWx1ZSxcbiAgICAgICAgdXNlcl91dWlkOiByLnVzZXIudXNlcl91dWlkLFxuICAgICAgICBuZXdfcGF0aWVudF91dWlkOiByLnBhdGllbnRfdXNlci5wYXRpZW50X3V1aWQsXG4gICAgICAgIGxvYWRlZDogdHJ1ZSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5jb250ZXh0LnNldFVzZXJVVUlEKHIudXNlci51c2VyX3V1aWQpO1xuICAgICAgdGhpcy5jb250ZXh0LnNldFBhc3N3b3JkKHRoaXMuc3RhdGUuZmllbGRzLnBhc3N3b3JkLnZhbHVlKTtcbiAgICAgIHRoaXMuY29udGV4dC5zZXRVc2VybmFtZSh0aGlzLnN0YXRlLmZpZWxkcy5lbWFpbC52YWx1ZSk7XG4gICAgICB0aGlzLmNvbnRleHQuc2V0UGF0aWVudChyLnBhdGllbnRfdXNlci5wYXRpZW50X3V1aWQpO1xuICAgICAgdGhpcy5jb250ZXh0LnNldEZpcnN0TmFtZSh0aGlzLnN0YXRlLmZpZWxkcy5maXJzdF9uYW1lLnZhbHVlKTtcbiAgICAgIHRoaXMuY29udGV4dC5zZXRMYXN0TmFtZSh0aGlzLnN0YXRlLmZpZWxkcy5sYXN0X25hbWUudmFsdWUpO1xuICAgICAgdGhpcy5jaGFuZ2VWaWV3KCdDb25maXJtYXRpb24nKTtcbiAgICB9KS5jYXRjaCggKGVycikgPT4ge1xuICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBlcnJvcnM6IGdldEVycm9yTWVzc2FnZShlcnIpLCBsb2FkZWQ6IHRydWUgfSk7XG4gICAgfSk7XG4gIH1cblxuICBjb25maXJtQ29kZSgpIHtcbiAgICBjb25zdCBjb3B5ID0geyAuLi50aGlzLnN0YXRlIH07XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgdXNlcm5hbWU6IHRoaXMuY29udGV4dC5nZXRVc2VybmFtZSgpLFxuICAgICAgcGFzc3dvcmQ6IHRoaXMuY29udGV4dC5nZXRQYXNzd29yZCgpLFxuICAgICAgc3RvcmVfdXVpZDogdGhpcy5wcm9wcy5zdG9yZV91dWlkLFxuICAgICAgdXNlcl91dWlkOiB0aGlzLmNvbnRleHQuZ2V0VXNlclVVSUQoKSxcbiAgICAgIHBhdGllbnRfdXVpZDogdGhpcy5jb250ZXh0LmdldFBhdGllbnQoKSxcbiAgICAgIGNvZGU6IHRoaXMuc3RhdGUuZmllbGRzMi5jb25maXJtYXRpb24udmFsdWUsXG4gICAgICBmaXJzdF9uYW1lOiB0aGlzLmNvbnRleHQuZ2V0Rmlyc3ROYW1lKCksXG4gICAgICBsYXN0X25hbWU6IHRoaXMuY29udGV4dC5nZXRMYXN0TmFtZSgpLFxuICAgIH07XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgICAgdXJsOiAnaHR0cHM6Ly9hcGktc3RhZ2luZy5zcnNwaGFybWFjeS5jb20vJyxcbiAgICAgIGVuZHBvaW50OiAnYXV0aC9wYXRpZW50L2xvZ2luJyxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgIH0sXG4gICAgICBkYXRhOiBwYXJhbXMsXG4gICAgfTtcbiAgICBhcGlDYWxsKG9wdGlvbnMpLnRoZW4oIChyZXNwKSA9PiB7XG4gICAgICBjb25zdCByID0gSlNPTi5wYXJzZShyZXNwLmRhdGEpO1xuICAgICAgdGhpcy5jb250ZXh0LnNldEF1dGhUb2tlbnMocik7XG4gICAgICB0aGlzLmNsZWFyU3RhdGUoKTtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJ3BvcnRhbC5odG1sP3N0b3JlX3V1aWQ9JyArIHRoaXMucHJvcHMuc3RvcmVfdXVpZDtcbiAgICB9KS5jYXRjaCggKGVycikgPT4ge1xuICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgIGNvcHkuZmllbGRzMi5jb25maXJtYXRpb24uZXJyb3IgPSB0cnVlO1xuICAgICAgY29weS5maWVsZHMyLmNvbmZpcm1hdGlvbi5mZWVkYmFjayA9ICdJbmNvcnJlY3QgQ29uZmlybWF0aW9uIENvZGUnO1xuICAgICAgY29weS5kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5zZXRTdGF0ZShjb3B5KTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBsZXQgcmVnaXN0ZXJTdWJ0aXRsZSA9ICcnO1xuICAgIGlmICh0aGlzLnByb3BzLnJlZ2lzdGVyX2VuYWJsZWQgPT0gJ1knKSB7XG4gICAgICByZWdpc3RlclN1YnRpdGxlID0gYFRvIHN1Ym1pdCB5b3VyIHJlZmlsbCByZXF1ZXN0LCByZWdpc3RlciBmb3IgJHt0aGlzLnByb3BzLnN0b3JlX25hbWV9J3MgUGF0aWVudCBQb3J0YWwuYDtcbiAgICB9XG4gICAgbGV0IGJvZHkgPSAoXG4gICAgICA8cD5Ob3QgSW1wbGVtZW50ZWQgWWV0PC9wPlxuICAgICk7XG4gICAgaWYgKCF0aGlzLnN0YXRlLmxvYWRlZCkge1xuICAgICAgYm9keSA9IChcbiAgICAgICAgPENvbnRhaW5lciBtYXhXaWR0aD0nbGcnIHN4PXt7IHBhZGRpbmc6ICcyMHB4ICcgfX0+XG4gICAgICAgICAgPExvYWRpbmcvPlxuICAgICAgICA8L0NvbnRhaW5lcj5cbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnN0YXRlLmVycm9ycykge1xuICAgICAgbGV0IGVycm9yID0gJyc7XG4gICAgICBpZiAodGhpcy5zdGF0ZS5lcnJvcnMgPT0gJ0ludmFsaWQgZGF0YSBmb3JtYXQnIHx8IHRoaXMuc3RhdGUuZXJyb3JzID09ICdVbmV4cGVjdGVkIHZhbHVlIHByb3ZpZGUnKSB7XG4gICAgICAgIGVycm9yID0gJ01pc3Npbmcgb3IgaW52YWxpZCBzdG9yZSB0YWcgaW4gcmVxdWVzdCc7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc3RhdGUuZXJyb3JzXG4gICAgICAgID09ICdOb3QgZW5vdWdoIHBhcmFtZXRlcnMgc3VwcGxpZWQgaW4gcmVxdWVzdCdcbiAgICAgICAgfHwgdGhpcy5zdGF0ZS5lcnJvcnNcbiAgICAgICAgPT0gJ1VuZXhwZWN0ZWQvTWlzc2luZyBxdWVyeSBzdHJpbmcgc3VwcGxpZWQnKSB7XG4gICAgICAgIGVycm9yID0gJ01pc3Npbmcgc3RvcmUgdGFnIG9yIFJ4IG51bWJlciBpbiBxdWVyeSBzdHJpbmcnO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnN0YXRlLmVycm9ycyA9PSAnSW52YWxpZCBkYXRhIHN1cHBsaWVkIGluIHRoZSByZXF1ZXN0Jykge1xuICAgICAgICBlcnJvciA9ICdJbnZhbGlkIGhhc2ggZ2l2ZW4gaW4gdGhlIHF1ZXJ5IHN0cmluZyc7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc3RhdGUuZXJyb3JzLmluY2x1ZGVzKCdVc2VyIGFscmVhZHkgZXhpc3QnKSkge1xuICAgICAgICBlcnJvciA9ICdBIHVzZXIgd2l0aCB0aGF0IGVtYWlsIGFscmVhZHkgZXhpc3RzLic7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc3RhdGUuZXJyb3JzLmluY2x1ZGVzKCdFbWFpbCBkb2VzIG5vdCBtYXRjaCB3aGF0IGlzIGFzc29jaWF0ZWQgdG8gdGhlIHBhdGllbnQuJykpIHtcbiAgICAgICAgZXJyb3IgPSAnRW1haWwgZG9lcyBub3QgbWF0Y2ggd2hhdCBpcyBhc3NvY2lhdGVkIHRvIHRoZSBwYXRpZW50LiAnXG4gICAgICAgICsgJ1BsZWFzZSBjb250YWN0ICcgKyB0aGlzLnByb3BzLnN0b3JlX25hbWUgKyAnIHRvIHJlZ2lzdGVyLic7XG4gICAgICB9XG4gICAgICBjb25zdCBwcm9wcyA9IHtcbiAgICAgICAgbWVzc2FnZTogZXJyb3IgPyBlcnJvciA6IHRoaXMuc3RhdGUuZXJyb3JzLFxuICAgICAgfTtcbiAgICAgIGJvZHkgPSAoXG4gICAgICAgIDxDb250YWluZXIgbWF4V2lkdGg9J2xnJyBzeD17eyBwYWRkaW5nOiAnMjBweCAnIH19PlxuICAgICAgICAgIHtFcnJvcihwcm9wcyl9XG4gICAgICAgICAgPEdyaWQgY29udGFpbmVyIGRpcmVjdGlvbj0ncm93JyBqdXN0aWZ5Q29udGVudD0nc3BhY2UtYXJvdW5kJyBhbGlnbkl0ZW1zPSdjZW50ZXInPlxuICAgICAgICAgICAgPEdyaWQgaXRlbT5cbiAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgIHZhcmlhbnQ9J2NvbnRhaW5lZCdcbiAgICAgICAgICAgICAgICBjb2xvcj0ncHJpbWFyeSdcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlVmlldyh0aGlzLnN0YXRlLnZpZXcpO1xuICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGVycm9yczogZmFsc2UgfSk7XG4gICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICBCYWNrXG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBlcnJvciA9PSAnQSB1c2VyIHdpdGggdGhhdCBlbWFpbCBhbHJlYWR5IGV4aXN0cy4nXG4gICAgICAgICAgICAgID8gPEdyaWQgaXRlbT5cbiAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICB2YXJpYW50PSdjb250YWluZWQnXG4gICAgICAgICAgICAgICAgICBjb2xvcj0ncHJpbWFyeSdcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAncG9ydGFsLmh0bWw/c3RvcmVfdXVpZD0nICsgdGhpcy5wcm9wcy5zdG9yZV91dWlkO1xuICAgICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICBMb2cgSW5cbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgICA6IDw+PC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0NvbnRhaW5lcj5cbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN3aXRjaCAodGhpcy5zdGF0ZS52aWV3KSB7XG4gICAgICAgIGNhc2UgJ1JlZ2lzdGVyJzpcbiAgICAgICAgICBpZiAodGhpcy5jb250ZXh0LmdldFBhc3N3b3JkKCkpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlVmlldygnQ29uZmlybWF0aW9uJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJvZHkgPSAoXG4gICAgICAgICAgICA8Zm9ybSBpZD0ncmVnaXN0ZXInPlxuICAgICAgICAgICAgICA8R3JpZCBjb250YWluZXIgc3BhY2luZz17MX0gc3g9e3sgcGFkZGluZzogJzIwcHggJyB9fT5cbiAgICAgICAgICAgICAgICA8R3JpZCBpdGVtIHhzPXsxMn0+XG4gICAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PSdoNCc+XG4gICAgICAgICAgICAgICAgICAgICAgVXNlciBSZWdpc3RyYXRpb25cbiAgICAgICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9J3N1YnRpdGxlMSc+XG4gICAgICAgICAgICAgICAgICAgIHtyZWdpc3RlclN1YnRpdGxlfVxuICAgICAgICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICAgICAgPGhyLz5cbiAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgICAgPEdyaWQgaXRlbSB4cz17MTJ9PlxuICAgICAgICAgICAgICAgICAgPEdyaWQgY29udGFpbmVyIHNwYWNpbmc9ezJ9PlxuICAgICAgICAgICAgICAgICAgICA8R3JpZCBpdGVtIHhzPXsxMn0+XG4gICAgICAgICAgICAgICAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcj17dGhpcy5zdGF0ZS5maWVsZHMuZmlyc3RfbmFtZS5lcnJvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkPXt0aGlzLnN0YXRlLmZpZWxkcy5maXJzdF9uYW1lLnJlcXVpcmVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT0nc21hbGwnXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSd0ZXh0J1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e3RoaXMuc3RhdGUuZmllbGRzLmZpcnN0X25hbWUudGl0bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlICYmIHRoaXMuc3RhdGUuZmllbGRzLmZpcnN0X25hbWUuZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5zdGF0ZS5maWVsZHMuZmlyc3RfbmFtZS5mZWVkYmFja1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3RoaXMuc3RhdGUuZmllbGRzLmZpcnN0X25hbWUudmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBlLnRhcmdldC52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5maWVsZHMuZmlyc3RfbmFtZS5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgICAgICAgPEdyaWQgaXRlbSB4cz17MTJ9PlxuICAgICAgICAgICAgICAgICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I9e3RoaXMuc3RhdGUuZmllbGRzLmxhc3RfbmFtZS5lcnJvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkPXt0aGlzLnN0YXRlLmZpZWxkcy5sYXN0X25hbWUucmVxdWlyZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPSdzbWFsbCdcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J3RleHQnXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17dGhpcy5zdGF0ZS5maWVsZHMubGFzdF9uYW1lLnRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSAmJiB0aGlzLnN0YXRlLmZpZWxkcy5sYXN0X25hbWUuZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5zdGF0ZS5maWVsZHMubGFzdF9uYW1lLmZlZWRiYWNrXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17dGhpcy5zdGF0ZS5maWVsZHMubGFzdF9uYW1lLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZS50YXJnZXQudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuZmllbGRzLmxhc3RfbmFtZS5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgICAgICAgPEdyaWQgaXRlbSB4cz17MTJ9PlxuICAgICAgICAgICAgICAgICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I9e3RoaXMuc3RhdGUuZmllbGRzLmVtYWlsLmVycm9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ9e3RoaXMuc3RhdGUuZmllbGRzLmVtYWlsLnJlcXVpcmVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT0nc21hbGwnXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSd0ZXh0J1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e3RoaXMuc3RhdGUuZmllbGRzLmVtYWlsLnRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSAmJiB0aGlzLnN0YXRlLmZpZWxkcy5lbWFpbC5lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLnN0YXRlLmZpZWxkcy5lbWFpbC5mZWVkYmFja1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3RoaXMuc3RhdGUuZmllbGRzLmVtYWlsLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZS50YXJnZXQudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuZmllbGRzLmVtYWlsLm9uQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgICAgICAgICA8R3JpZCBpdGVtIHhzPXsxMn0gc3g9e3sgZGlzcGxheTogJ2ZsZXgnLCBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcj17dGhpcy5zdGF0ZS5maWVsZHMucGFzc3dvcmQuZXJyb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZD17dGhpcy5zdGF0ZS5maWVsZHMucGFzc3dvcmQucmVxdWlyZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPSdzbWFsbCdcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J3Bhc3N3b3JkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e3RoaXMuc3RhdGUuZmllbGRzLnBhc3N3b3JkLnRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSAmJiB0aGlzLnN0YXRlLmZpZWxkcy5wYXNzd29yZC5lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLnN0YXRlLmZpZWxkcy5wYXNzd29yZC5mZWVkYmFja1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3RoaXMuc3RhdGUuZmllbGRzLnBhc3N3b3JkLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZS50YXJnZXQudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuZmllbGRzLnBhc3N3b3JkLm9uQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgICAgICAgICA8R3JpZCBpdGVtIHhzPXsxMn0gc3g9e3sgZGlzcGxheTogJ2ZsZXgnLCBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcj17dGhpcy5zdGF0ZS5maWVsZHMuY29uZmlybS5lcnJvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkPXt0aGlzLnN0YXRlLmZpZWxkcy5jb25maXJtLnJlcXVpcmVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT0nc21hbGwnXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSdwYXNzd29yZCdcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXt0aGlzLnN0YXRlLmZpZWxkcy5jb25maXJtLnRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSAmJiB0aGlzLnN0YXRlLmZpZWxkcy5jb25maXJtLmVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMuc3RhdGUuZmllbGRzLmNvbmZpcm0uZmVlZGJhY2tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJydcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXt0aGlzLnN0YXRlLmZpZWxkcy5jb25maXJtLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZS50YXJnZXQudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuZmllbGRzLmNvbmZpcm0ub25DaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgICAgICAgIDxHcmlkIGl0ZW0geHM9ezEyfSBzeD17eyBwYWRkaW5nVG9wOiAnNXB4JywgYmdjb2xvcjogJ3JnYmEoMCwwLDAsLjA1JyB9fT5cbiAgICAgICAgICAgICAgICAgICAgICA8R3JpZCBjb250YWluZXIgc3BhY2luZz17Mn0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8R3JpZCBpdGVtIHhzPXs2fSBzeD17eyBkaXNwbGF5OiAnZmxleCcsIGp1c3RpZnlDb250ZW50OiAnZmxleC1zdGFydCcgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9J3Jlc2V0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9J2NvbnRhaW5lZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj0nZXJyb3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNsZWFyRmllbGRzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzZXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8R3JpZCBpdGVtIHhzPXs2fSBzeD17eyBkaXNwbGF5OiAnZmxleCcsIGp1c3RpZnlDb250ZW50OiAnZmxleC1lbmQnIH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPSdzYXZlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9J2NvbnRhaW5lZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj0ncHJpbWFyeSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMuc3RhdGUuZmllbGRzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHN1Ym1pdCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGZpZWxkIGluIGZpZWxkcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGRzW2ZpZWxkXS5lcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Ym1pdCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3VibWl0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJVc2VyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3VibWl0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICAgICk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0NvbmZpcm1hdGlvbic6XG4gICAgICAgICAgYm9keSA9IChcbiAgICAgICAgICAgIDxmb3JtIGlkPSdjb25maXJtYXRpb24nPlxuICAgICAgICAgICAgICA8R3JpZCBjb250YWluZXIgc3BhY2luZz17MX0gc3g9e3sgcGFkZGluZzogJzIwcHgnIH19PlxuICAgICAgICAgICAgICAgIDxHcmlkIGl0ZW0geHM9ezEyfT5cbiAgICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9J2g0Jz5FbWFpbCBDb25maXJtYXRpb248L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PSdzdWJ0aXRsZTEnPkNoZWNrIHlvdXIgZW1haWwgZm9yIHlvdXIgY29uZmlybWF0aW9uIGNvZGUuPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICAgICAgPGhyLz5cbiAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgICAgPEdyaWQgaXRlbSB4cz17MTJ9PlxuICAgICAgICAgICAgICAgICAgPEdyaWQgY29udGFpbmVyIHNwYWNpbmc9ezJ9PlxuICAgICAgICAgICAgICAgICAgICA8R3JpZCBpdGVtIHhzPXsxMn0+XG4gICAgICAgICAgICAgICAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcj17dGhpcy5zdGF0ZS5maWVsZHMyLmNvbmZpcm1hdGlvbi5lcnJvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkPXt0aGlzLnN0YXRlLmZpZWxkczIuY29uZmlybWF0aW9uLnJlcXVpcmVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT0nc21hbGwnXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSd0ZXh0J1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e3RoaXMuc3RhdGUuZmllbGRzMi5jb25maXJtYXRpb24udGl0bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlICYmIHRoaXMuc3RhdGUuZmllbGRzMi5jb25maXJtYXRpb24uZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5zdGF0ZS5maWVsZHMyLmNvbmZpcm1hdGlvbi5mZWVkYmFja1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3RoaXMuc3RhdGUuZmllbGRzMi5jb25maXJtYXRpb24udmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBlLnRhcmdldC52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5maWVsZHMyLmNvbmZpcm1hdGlvbi5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgICAgICAgPEdyaWQgaXRlbSB4cz17MTJ9IHN4PXt7IHBhZGRpbmdUb3A6ICc1cHgnLCBiZ2NvbG9yOiAncmdiYSgwLDAsMCwuMDUnIH19PlxuICAgICAgICAgICAgICAgICAgICAgIDxHcmlkIGNvbnRhaW5lciBzcGFjaW5nPXsyfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxHcmlkIGl0ZW0geHM9ezEyfSBzeD17eyBkaXNwbGF5OiAnZmxleCcsIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT0nc2F2ZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PSdjb250YWluZWQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9J3ByaW1hcnknXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e3RoaXMuc3RhdGUuZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWVsZHMyID0gdGhpcy5zdGF0ZS5maWVsZHMyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHN1Ym1pdCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGZpZWxkIGluIGZpZWxkczIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkczJbZmllbGRdLmVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VibWl0ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdWJtaXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGRpc2FibGVkOiB0cnVlIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbmZpcm1Db2RlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN1Ym1pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gKFxuICAgICAgPENvbnRhaW5lciBtYXhXaWR0aD0nbGcnPlxuICAgICAgICA8UGFwZXIgdmFyaWFudD0nb3V0bGluZWQnPlxuICAgICAgICAgIHtib2R5fVxuICAgICAgICA8L1BhcGVyPlxuICAgICAgPC9Db250YWluZXI+XG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBSZWdpc3RyYXRpb25Gb3JtO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgTG9hZGluZyBmcm9tICcuLi8uLi8uLi8uLi9saWIvbG9hZGluZy5qcyc7XG5pbXBvcnQgRXJyb3IgZnJvbSAnLi4vLi4vLi4vLi4vbGliL2Vycm9yLmpzJztcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tICcuLi9jb250ZXh0L2NvbnRleHQuanMnO1xuaW1wb3J0IGFwaUNhbGwgZnJvbSAnLi4vLi4vLi4vLi4vbGliL2FwaUNhbGwuanMnO1xuaW1wb3J0IGdldEVycm9yTWVzc2FnZSBmcm9tICcuLi8uLi8uLi8uLi9saWIvZ2V0RXJyb3JNZXNzYWdlLmpzJztcbmltcG9ydCBSZWdpc3RyYXRpb25Gb3JtIGZyb20gJy4uL2NvbXBvbmVudHMvUmVnaXN0cmF0aW9uRm9ybS5qcyc7XG5pbXBvcnQgeyBBcHBCYXIsIFRvb2xiYXIsIEJ1dHRvbiwgVHlwb2dyYXBoeSwgR3JpZCwgQm94LCBQYXBlciwgQ29udGFpbmVyIH0gZnJvbSAnQG11aS9tYXRlcmlhbCc7XG5cblxuY2xhc3MgSG9tZSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBlcnJvcnM6IG51bGwsXG4gICAgICBsb2FkZWQ6IGZhbHNlLFxuICAgICAgc3VibWl0OiBmYWxzZSxcbiAgICAgIHJlZGlyZWN0OiBmYWxzZSxcbiAgICAgIHRhZzogdGhpcy5nZXRTdG9yZU51bWJlcigpLFxuICAgICAgcnhOdW1iZXI6IHRoaXMuZ2V0UnhOdW1iZXIoKSxcbiAgICAgIGhhc2g6IHRoaXMuZ2V0SGFzaCgpLFxuICAgICAgcGF0aWVudF91c2VyOiBmYWxzZSxcbiAgICAgIHN0b3JlX25hbWU6ICcnIHx8IG51bGwsXG4gICAgICBsb2dvOiBudWxsLFxuICAgICAgc3RvcmVfYWRkcmVzczogJycgfHwgbnVsbCxcbiAgICAgIHN0b3JlX2FkZHJlc3NfdHdvOiAnJyB8fCBudWxsLFxuICAgICAgY2l0eTogJycgfHwgbnVsbCxcbiAgICAgIHN0YXRlOiAnJyB8fCBudWxsLFxuICAgICAgemlwOiAnJyB8fCBudWxsLFxuICAgICAgcGhhcm1hY3lfcGhvbmU6ICcnIHx8IG51bGwsXG4gICAgICBzdG9yZV91dWlkOiAnJyB8fCBudWxsLFxuICAgICAgcmVxdWVzdGVkOiAnJyB8fCBudWxsLFxuICAgICAgZGlzYWJsZV9idXR0b246IGZhbHNlLFxuICAgICAgc2hvd0Zvcm06IGZhbHNlLFxuICAgICAgcmVnaXN0ZXJfZW5hYmxlZDogJ04nLFxuICAgICAgc2hvd1JlZ2lzdGVyQnV0dG9uOiBmYWxzZSxcbiAgICB9O1xuICAgIHRoaXMucmVxdWVzdFJlZmlsbCA9IHRoaXMucmVxdWVzdFJlZmlsbC5iaW5kKHRoaXMpO1xuICAgIHRoaXMuZ2V0RnVsbEF1dGggPSB0aGlzLmdldEZ1bGxBdXRoLmJpbmQodGhpcyk7XG4gICAgdGhpcy5nZXRIYXNoID0gdGhpcy5nZXRIYXNoLmJpbmQodGhpcyk7XG4gICAgdGhpcy5nZXRTdG9yZU51bWJlciA9IHRoaXMuZ2V0U3RvcmVOdW1iZXIuYmluZCh0aGlzKTtcbiAgICB0aGlzLmdldFJ4TnVtYmVyID0gdGhpcy5nZXRSeE51bWJlci5iaW5kKHRoaXMpO1xuICAgIHRoaXMuY29uc3RydWN0WE1MRG9jdW1lbnQgPSB0aGlzLmNvbnN0cnVjdFhNTERvY3VtZW50LmJpbmQodGhpcyk7XG4gICAgdGhpcy5lbnRpdHkgPSB0aGlzLmVudGl0eS5iaW5kKHRoaXMpO1xuICAgIHRoaXMubG9hZCA9IHRoaXMubG9hZC5iaW5kKHRoaXMpO1xuICB9XG5cbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBwcmVzY3JpcHRpb246IFByb3BUeXBlcy5vYmplY3QsXG4gICAgc2V0UmVmaWxsUmVzcG9uc2U6IFByb3BUeXBlcy5mdW5jLFxuICAgIHRoZW1lTW9kZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICB9O1xuXG4gIHN0YXRpYyBjb250ZXh0VHlwZSA9IENvbnRleHQ7XG5cbiAgZ2V0RnVsbEF1dGgoKSB7XG4gICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2guc3Vic3RyaW5nKDEpID09ICdkZW1vJ1xuICAgIHx8IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2guc3Vic3RyaW5nKDEpID09ICd0PWRlbW8nKSB7XG4gICAgICByZXR1cm4gd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnaHR0cHM6Ly9zcnNyZmwtc3RhZ2luZy5jb20vP3Q9MUhzMUYyeTc3MTAyNzEwMTA4Nic7XG4gICAgfSBlbHNlIGlmICh3aW5kb3cubG9jYXRpb24uc2VhcmNoLnN1YnN0cmluZygxLCAzKSA9PSAndD0nKSB7XG4gICAgICByZXR1cm4gd2luZG93LmxvY2F0aW9uLnNlYXJjaC5zdWJzdHJpbmcoMyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24uc2VhcmNoLnN1YnN0cmluZygxKTtcbiAgICB9XG4gIH1cblxuICBnZXRIYXNoKCkge1xuICAgIHJldHVybiB0aGlzLmdldEZ1bGxBdXRoKCkuc3Vic3RyaW5nKDAsIDcpO1xuICB9XG5cbiAgZ2V0U3RvcmVOdW1iZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RnVsbEF1dGgoKS5zdWJzdHJpbmcoNywgMTMpO1xuICB9XG5cbiAgZ2V0UnhOdW1iZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RnVsbEF1dGgoKS5zdWJzdHJpbmcoMTMpLnJlcGxhY2UoL1teMC05XS9nLCAnJyk7XG4gIH1cblxuICBlbnRpdHkoLi4uYXJncykge1xuICAgIGNvbnN0IFtkb2MsIGVudGl0eU5hbWUsIC4uLmV4dHJhXSA9IGFyZ3M7XG4gICAgY29uc3Qgbm9kZSA9IGRvYy5jcmVhdGVFbGVtZW50KGVudGl0eU5hbWUpO1xuICAgIGZvciAoY29uc3QgYXJnIG9mIGV4dHJhKSB7XG4gICAgICBpZiAoIWFyZykge1xuICAgICAgICBub2RlLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZSgnJykpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgYXJnID09PSAnc3RyaW5nJykge1xuICAgICAgICBub2RlLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVUZXh0Tm9kZShhcmcpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5vZGUuYXBwZW5kQ2hpbGQoYXJnKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBjb25zdHJ1Y3RYTUxEb2N1bWVudChsYXN0bmFtZSwgZmlyc3RuYW1lLCBwaG9uZSwgZW1haWwsIG1lc3NhZ2UpIHtcbiAgICBjb25zdCBkb2MgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVudCgnaHR0cDovL3d3dy5zcnNwaGFybWFjeS5jb20vWE1ML1BhdGllbnRSZWZpbGxSZXF1ZXN0JyxcbiAgICAgICAgJ1BhdGllbnRSZWZpbGxSZXF1ZXN0JyxcbiAgICAgICAgbnVsbCk7XG5cbiAgICBjb25zdCByb290ID0gZG9jLmRvY3VtZW50RWxlbWVudDtcbiAgICByb290LmFwcGVuZENoaWxkKHRoaXMuZW50aXR5KGRvYywgJ1RvJywgdGhpcy5zdGF0ZS50YWcpKTtcbiAgICByb290LmFwcGVuZENoaWxkKHRoaXMuZW50aXR5KGRvYywgJ0Zyb20nLCAnc3JzcmZsJykpO1xuICAgIHJvb3QuYXBwZW5kQ2hpbGQodGhpcy5lbnRpdHkoZG9jLCAnQXV0aCcsIHRoaXMuc3RhdGUuaGFzaCkpO1xuICAgIHJvb3QuYXBwZW5kQ2hpbGQodGhpcy5lbnRpdHkoZG9jLCAnU2VudFRpbWUnLCBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkpKTtcbiAgICByb290LmFwcGVuZENoaWxkKHRoaXMuZW50aXR5KGRvYywgJ01lc3NhZ2VJRCcsIG5ldyBEYXRlKCkuZ2V0VGltZSgpLnRvU3RyaW5nKCkpKTtcbiAgICByb290LmFwcGVuZENoaWxkKHRoaXMuZW50aXR5KGRvYywgJ1J4TnVtYmVycycsXG4gICAgICAgIHRoaXMuZW50aXR5KGRvYywgJ1J4TnVtYmVyJywgdGhpcy5zdGF0ZS5yeE51bWJlcikpKTtcbiAgICByb290LmFwcGVuZENoaWxkKHRoaXMuZW50aXR5KGRvYywgJ0NvbnRhY3QnLFxuICAgICAgICB0aGlzLmVudGl0eShkb2MsICdMYXN0TmFtZScsIGxhc3RuYW1lKSxcbiAgICAgICAgdGhpcy5lbnRpdHkoZG9jLCAnRmlyc3ROYW1lJywgZmlyc3RuYW1lKSxcbiAgICAgICAgdGhpcy5lbnRpdHkoZG9jLCAnUGhvbmUnLCBwaG9uZSksXG4gICAgICAgIHRoaXMuZW50aXR5KGRvYywgJ0VtYWlsJywgZW1haWwpKSk7XG4gICAgcm9vdC5hcHBlbmRDaGlsZCh0aGlzLmVudGl0eShkb2MsICdDb21tZW50JywgbWVzc2FnZSkpO1xuICAgIHJldHVybiBkb2M7XG4gIH1cblxuICBsb2FkKCkge1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIHRhZzogdGhpcy5nZXRTdG9yZU51bWJlcigpLFxuICAgICAgcnhfbnVtYmVyOiB0aGlzLmdldFJ4TnVtYmVyKCksXG4gICAgICBhdXRoOiB0aGlzLmdldEhhc2goKSxcbiAgICB9O1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICBtZXRob2Q6ICdnZXQnLFxuICAgICAgZW5kcG9pbnQ6ICdxdWVyeScsXG4gICAgICBwYXJhbXM6IHBhcmFtcyxcbiAgICB9O1xuICAgIGFwaUNhbGwob3B0aW9ucykudGhlbiggKHJlc3ApID0+IHtcbiAgICAgIGNvbnN0IHIgPSBKU09OLnBhcnNlKHJlc3AuZGF0YSk7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgc3RvcmVfbmFtZTogci5uYW1lLFxuICAgICAgICBsb2dvOiByLmxvZ28sXG4gICAgICAgIHN0b3JlX2FkZHJlc3M6IHIuYWRkcmVzczEsXG4gICAgICAgIHN0b3JlX2FkZHJlc3NfdHdvOiByLmFkZHJlc3MyLFxuICAgICAgICBjaXR5OiByLmNpdHksXG4gICAgICAgIHN0YXRlOiByLnN0YXRlLFxuICAgICAgICB6aXA6IHIuemlwLFxuICAgICAgICBwaGFybWFjeV9waG9uZTogci5waG9uZSxcbiAgICAgICAgc3RvcmVfdXVpZDogci5zdG9yZV91dWlkLFxuICAgICAgICBsb2FkZWQ6IHRydWUsXG4gICAgICAgIHJlZ2lzdGVyX2VuYWJsZWQ6IHIuc3JzcmZsX3JlZ2lzdGVyLFxuICAgICAgICBzaG93Rm9ybTogci5zcnNyZmxfcmVnaXN0ZXIgPT0gJ1knID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgICBwYXRpZW50X3VzZXI6IHIudXNlcnMgJiYgci51c2Vycy5sZW5ndGggPiAwID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgICBpZiAoci5wYXRpZW50X3V1aWQpIHtcbiAgICAgICAgdGhpcy5jb250ZXh0LnNldFBhdGllbnQoci5wYXRpZW50X3V1aWQpO1xuICAgICAgfVxuICAgIH0pLmNhdGNoKCAoZXJyKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAgY29uc3QgZGF0YSA9IGVycj8ucmVzcG9uc2U/LmRhdGEgPyBKU09OLnBhcnNlKGVyci5yZXNwb25zZS5kYXRhKSA6ICcnO1xuICAgICAgaWYgKCFkYXRhKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBlcnJvcnM6ICdTb21ldGhpbmcgdW5leHBlY3RlZCBoYXBwZW5lZCcsIGxvYWRlZDogdHJ1ZSB9KTtcbiAgICAgIH0gZWxzZSBpZiAoZGF0YS5yZWRpcmVjdCkge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgcmVkaXJlY3Q6IHRydWUsIGxvYWRlZDogdHJ1ZSB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBkYXRhLm1lc3NhZ2U7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBlcnJvcnM6IGdldEVycm9yTWVzc2FnZShtZXNzYWdlKSwgbG9hZGVkOiB0cnVlIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgdGhpcy5sb2FkKCk7XG4gIH1cblxuICBjb21wb25lbnREaWRVcGRhdGUoKSB7XG4gICAgaWYgKCF0aGlzLnN0YXRlLmxvYWRlZCkge1xuICAgICAgdGhpcy5sb2FkKCk7XG4gICAgfVxuICB9XG5cbiAgcmVxdWVzdFJlZmlsbCgpIHtcbiAgICBjb25zdCByZWZpbGwgPSAnPD94bWwgdmVyc2lvbj1cIjEuMFwiPz4nICsgbmV3IFhNTFNlcmlhbGl6ZXIoKS5zZXJpYWxpemVUb1N0cmluZyh0aGlzLmNvbnN0cnVjdFhNTERvY3VtZW50KCkpO1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICBtZXRob2Q6ICdwb3N0JyxcbiAgICAgIGVuZHBvaW50OiAnc3VibWl0JyxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICd0ZXh0L3htbCcsXG4gICAgICB9LFxuICAgICAgZGF0YTogcmVmaWxsLFxuICAgIH07XG4gICAgYXBpQ2FsbChvcHRpb25zKS50aGVuKCAocmVzcCkgPT4ge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIHJlcXVlc3RlZDogJ1JlZmlsbCByZXF1ZXN0ZWQgc3VjY2Vzc2Z1bGx5LicsXG4gICAgICAgIHNob3dSZWdpc3RlckJ1dHRvbjogdGhpcy5zdGF0ZS5yZWdpc3Rlcl9lbmFibGVkID09ICdPJyA/IHRydWUgOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgIH0pLmNhdGNoKCAoZXJyKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7IGVycm9yczogZ2V0RXJyb3JNZXNzYWdlKGVyciksIGxvYWRlZDogdHJ1ZSB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBsZXQgYm9keSA9IChcbiAgICAgIDxMb2FkaW5nLz5cbiAgICApO1xuICAgIGlmICghdGhpcy5zdGF0ZS5sb2FkZWQpIHtcbiAgICAgIGJvZHkgPSAoXG4gICAgICAgIDxMb2FkaW5nLz5cbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnN0YXRlLnJlZGlyZWN0KSB7XG4gICAgICBjb25zdCBzdG9yZXRhZyA9IHRoaXMuZ2V0U3RvcmVOdW1iZXIoKTtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJ3dlYnJlZmlsbGZvcm0vJyArIHN0b3JldGFnO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zdGF0ZS5lcnJvcnMpIHtcbiAgICAgIGxldCBlcnJvciA9ICcnO1xuICAgICAgaWYgKHRoaXMuc3RhdGUuZXJyb3JzID09ICdJbnZhbGlkIGRhdGEgZm9ybWF0JyB8fCB0aGlzLnN0YXRlLmVycm9ycyA9PSAnVW5leHBlY3RlZCB2YWx1ZSBwcm92aWRlJykge1xuICAgICAgICBlcnJvciA9ICdNaXNzaW5nIG9yIGludmFsaWQgc3RvcmUgdGFnIGluIHJlcXVlc3QnO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW11bHRpLXNwYWNlc1xuICAgICAgfSBlbHNlIGlmICggICB0aGlzLnN0YXRlLmVycm9ycyA9PSAnTm90IGVub3VnaCBwYXJhbWV0ZXJzIHN1cHBsaWVkIGluIHJlcXVlc3QnXG4gICAgICAgICAgICAgICAgIHx8IHRoaXMuc3RhdGUuZXJyb3JzID09ICdVbmV4cGVjdGVkL01pc3NpbmcgcXVlcnkgc3RyaW5nIHN1cHBsaWVkJykge1xuICAgICAgICBlcnJvciA9ICdNaXNzaW5nIHN0b3JlIHRhZyBvciBSeCBudW1iZXIgaW4gcXVlcnkgc3RyaW5nJztcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zdGF0ZS5lcnJvcnMgPT0gJ0ludmFsaWQgZGF0YSBzdXBwbGllZCBpbiB0aGUgcmVxdWVzdCcpIHtcbiAgICAgICAgZXJyb3IgPSAnSW52YWxpZCBoYXNoIGdpdmVuIGluIHRoZSBxdWVyeSBzdHJpbmcnO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvcHMgPSB7XG4gICAgICAgIG1lc3NhZ2U6IGVycm9yID8gZXJyb3IgOiB0aGlzLnN0YXRlLmVycm9ycyxcbiAgICAgIH07XG4gICAgICBpZiAodGhpcy5zdGF0ZS5zdG9yZV9uYW1lKSB7XG4gICAgICAgIHByb3BzLnJldHVyblRvID0gKCkgPT4gdGhpcy5zZXRTdGF0ZSh7IGVycm9yczogbnVsbCB9KTtcbiAgICAgIH1cbiAgICAgIGJvZHkgPSAoXG4gICAgICAgIEVycm9yKHByb3BzKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuc3RhdGUucGF0aWVudF91c2VyKSB7XG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJ3BvcnRhbC5odG1sP3N0b3JlX3V1aWQ9JyArIHRoaXMuc3RhdGUuc3RvcmVfdXVpZCArICcjLyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBib2R5ID0gKFxuICAgICAgICAgIDxHcmlkPlxuICAgICAgICAgICAgPEFwcEJhciBwb3NpdGlvbj1cInN0YXRpY1wiPlxuICAgICAgICAgICAgICA8VG9vbGJhcj5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmxvZ28gPyAoXG4gICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICBzcmM9e3RoaXMuc3RhdGUubG9nb31cbiAgICAgICAgICAgICAgICAgICAgICBhbHQ9e3RoaXMuc3RhdGUuc3RvcmVfbmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBtYXJnaW46ICc1cHgnLCBib3JkZXJSYWRpdXM6ICc1cHgnLCBoZWlnaHQ6ICc1cmVtJyB9fVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgPFR5cG9ncmFwaHk+e3RoaXMuc3RhdGUuc3RvcmVfbmFtZX08L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L1Rvb2xiYXI+XG4gICAgICAgICAgICA8L0FwcEJhcj5cbiAgICAgICAgICAgIDxHcmlkIGNvbnRhaW5lciBqdXN0aWZ5Q29udGVudD0nY2VudGVyJz5cbiAgICAgICAgICAgICAgPEdyaWQgaXRlbT5cbiAgICAgICAgICAgICAgICA8Qm94PlxuICAgICAgICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgICAgICAgdmFyaWFudD0naDYnXG4gICAgICAgICAgICAgICAgICA+UmVmaWxsIFJlcXVlc3QgZm9yIFJ4IyB7dGhpcy5zdGF0ZS5yeE51bWJlcn1cbiAgICAgICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICA8R3JpZCBjb250YWluZXIgZGlyZWN0aW9uPSdjb2x1bW4nIGp1c3RpZnlDb250ZW50PSdzcGFjZS1ldmVubHknIGFsaWduSXRlbXM9J2NlbnRlcicgc3BhY2luZz17Mn0+XG4gICAgICAgICAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLnJlcXVlc3RlZFxuICAgICAgICAgICAgICAgICAgICA/IChcbiAgICAgICAgICAgICAgICAgICAgICA8Q29udGFpbmVyIG1heFdpZHRoPSdsZyc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8UGFwZXIgc3F1YXJlPXtmYWxzZX0gZWxldmF0aW9uPXswfSB2YXJpYW50PSdvdXRsaW5lZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3g9e3sgY29sb3I6ICdncmVlbicsIHB5OiAnMC41cmVtJywgcHg6ICcxcmVtJyB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD0naDUnIGFsaWduPSdjZW50ZXInPiB7dGhpcy5zdGF0ZS5yZXF1ZXN0ZWR9PC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9QYXBlcj5cbiAgICAgICAgICAgICAgICAgICAgICA8L0NvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIDogPD48Lz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgPEdyaWQgaXRlbT5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLnNob3dGb3JtICYmIHRoaXMuc3RhdGUucmVnaXN0ZXJfZW5hYmxlZCAhPT0gJ04nXG4gICAgICAgICAgICAgICAgICAgID8gPFJlZ2lzdHJhdGlvbkZvcm1cbiAgICAgICAgICAgICAgICAgICAgICBzdG9yZV91dWlkPXt0aGlzLnN0YXRlLnN0b3JlX3V1aWR9XG4gICAgICAgICAgICAgICAgICAgICAgc3RvcmVfbmFtZT17dGhpcy5zdGF0ZS5zdG9yZV9uYW1lfVxuICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyX2VuYWJsZWQ9e3RoaXMuc3RhdGUucmVnaXN0ZXJfZW5hYmxlZH0vPlxuICAgICAgICAgICAgICAgICAgICA6IDw+PC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgIXRoaXMuc3RhdGUuc2hvd0Zvcm0gJiYgIXRoaXMuc3RhdGUuc2hvd1JlZ2lzdGVyQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgID8gPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e3RoaXMuc3RhdGUuZGlzYWJsZV9idXR0b259XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVxdWVzdFJlZmlsbChlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZV9idXR0b246IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICBSZXF1ZXN0IFJlZmlsbFxuICAgICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgOiA8PjwvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLnNob3dSZWdpc3RlckJ1dHRvblxuICAgICAgICAgICAgICAgICAgPyA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICA8R3JpZCBjb250YWluZXIgZGlyZWN0aW9uPVwiY29sdW1uXCIgYWxpZ25JdGVtcz1cImNlbnRlclwiIHdpZHRoPVwiMTAwJVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeSBzeD17eyB0ZXh0QWxpZ246ICdjZW50ZXInLCBtYXJnaW46ICcycmVtJyB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25hbDogVG8gbWFrZSB0aGlzIHByb2Nlc3MgZWFzaWVyIG5leHQgdGltZSwgcHJlc3MgQ29udGludWUgdG8gYmVnaW4gcmVnaXN0ZXJpbmcgZm9yIHt0aGlzLnN0YXRlLnN0b3JlX25hbWV9JmFwb3M7cyBQYXRpZW50IFBvcnRhbC5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgICAgICAgICAgPEdyaWQgaXRlbSA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1JlZ2lzdGVyQnV0dG9uOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dGb3JtOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGludWVcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgOiA8PjwvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICA8R3JpZCBjb250YWluZXIgZGlyZWN0aW9uPSdyb3cnIGp1c3RpZnlDb250ZW50PSdzcGFjZS1hcm91bmQnIGFsaWduSXRlbXM9J2NlbnRlcic+XG4gICAgICAgICAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICBocmVmPXsgJy9tLycgKyB0aGlzLnN0YXRlLnRhZyB9XG4gICAgICAgICAgICAgICAgPk1vYmlsZSBTaXRlPC9CdXR0b24+XG4gICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgPEdyaWQgaXRlbT5cbiAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICBocmVmPXsndGVsOi8vKzEnICsgdGhpcy5zdGF0ZS5waGFybWFjeV9waG9uZS5yZXBsYWNlKC9bXitcXGRdL2csICcnKX1cbiAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIj5cbiAgICAgICAgICAgICAgICAgIENhbGwgUGhhcm1hY3lcbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgPGhyLz5cbiAgICAgICAgICAgIDxHcmlkIGNvbnRhaW5lciBkaXJlY3Rpb249J2NvbHVtbicganVzdGlmeUNvbnRlbnQ9J2ZsZXgtZW5kJyBhbGlnbkl0ZW1zPSdjZW50ZXInPlxuICAgICAgICAgICAgICA8VHlwb2dyYXBoeT57dGhpcy5zdGF0ZS5zdG9yZV9uYW1lfTwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAgPFR5cG9ncmFwaHk+e3RoaXMuc3RhdGUuc3RvcmVfYWRkcmVzc308L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgIDxUeXBvZ3JhcGh5Pnt0aGlzLnN0YXRlLmNpdHl9LCB7dGhpcy5zdGF0ZS5zdGF0ZX0ge3RoaXMuc3RhdGUuemlwfTwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAgPFR5cG9ncmFwaHk+e3RoaXMuc3RhdGUucGhhcm1hY3lfcGhvbmV9PC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXY+XG4gICAgICAgIHtib2R5fVxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBIb21lO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tICcuL2NvbnRleHQvY29udGV4dC5qcyc7XG5pbXBvcnQgeyBIYXNoUm91dGVyLCBSb3V0ZXMsIFJvdXRlIH0gZnJvbSAncmVhY3Qtcm91dGVyLWRvbSc7XG5pbXBvcnQgSG9tZSBmcm9tICcuL3BhZ2VzL0hvbWUuanMnO1xuaW1wb3J0IHsgVGhlbWVQcm92aWRlciwgY3JlYXRlVGhlbWUgfSBmcm9tICdAbXVpL21hdGVyaWFsL3N0eWxlcyc7XG5pbXBvcnQgeyBDc3NCYXNlbGluZSB9IGZyb20gJ0BtdWkvbWF0ZXJpYWwnO1xuXG5jbGFzcyBBcHAgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICAjZGFya01vZGUgPSBudWxsO1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgZXJyb3JzOiBudWxsLFxuICAgICAgdGhlbWU6ICdsaWdodCcsXG4gICAgfTtcbiAgICB0aGlzLnRoZW1lTGlnaHQgPSBjcmVhdGVUaGVtZSh7XG4gICAgICBwYWxldHRlOiB7XG4gICAgICAgIG1vZGU6ICdsaWdodCcsXG4gICAgICAgIGJhY2tncm91bmQ6IHtcbiAgICAgICAgICBkZWZhdWx0OiAnI2VmZWZlZicsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICAgIHRoaXMudGhlbWVEYXJrID0gY3JlYXRlVGhlbWUoe1xuICAgICAgcGFsZXR0ZToge1xuICAgICAgICBtb2RlOiAnZGFyaycsXG4gICAgICB9LFxuICAgIH0pO1xuICAgIHRoaXMudXBkYXRlVGhlbWUgPSB0aGlzLnVwZGF0ZVRoZW1lLmJpbmQodGhpcyk7XG4gICAgdGhpcy5wcmVmZXJzRGFya01vZGUgPSB0aGlzLnByZWZlcnNEYXJrTW9kZS5iaW5kKHRoaXMpO1xuICAgIHRoaXMuc2V0UGF0aWVudCA9IHRoaXMuc2V0UGF0aWVudC5iaW5kKHRoaXMpO1xuICAgIHRoaXMuc2V0VXNlcm5hbWUgPSB0aGlzLnNldFVzZXJuYW1lLmJpbmQodGhpcyk7XG4gICAgdGhpcy5nZXRVc2VybmFtZSA9IHRoaXMuZ2V0VXNlcm5hbWUuYmluZCh0aGlzKTtcbiAgICB0aGlzLmdldFBhdGllbnQgPSB0aGlzLmdldFBhdGllbnQuYmluZCh0aGlzKTtcbiAgICB0aGlzLnNldFBhc3N3b3JkID0gdGhpcy5zZXRQYXNzd29yZC5iaW5kKHRoaXMpO1xuICAgIHRoaXMuZ2V0UGFzc3dvcmQgPSB0aGlzLmdldFBhc3N3b3JkLmJpbmQodGhpcyk7XG4gICAgdGhpcy5zZXRVc2VyVVVJRCA9IHRoaXMuc2V0VXNlclVVSUQuYmluZCh0aGlzKTtcbiAgICB0aGlzLmdldFVzZXJVVUlEID0gdGhpcy5nZXRVc2VyVVVJRC5iaW5kKHRoaXMpO1xuICAgIHRoaXMuc2V0Rmlyc3ROYW1lID0gdGhpcy5zZXRGaXJzdE5hbWUuYmluZCh0aGlzKTtcbiAgICB0aGlzLmdldEZpcnN0TmFtZSA9IHRoaXMuZ2V0Rmlyc3ROYW1lLmJpbmQodGhpcyk7XG4gICAgdGhpcy5zZXRMYXN0TmFtZSA9IHRoaXMuc2V0TGFzdE5hbWUuYmluZCh0aGlzKTtcbiAgICB0aGlzLmdldExhc3ROYW1lID0gdGhpcy5nZXRMYXN0TmFtZS5iaW5kKHRoaXMpO1xuICAgIHRoaXMucmVtb3ZlSXRlbSA9IHRoaXMucmVtb3ZlSXRlbS5iaW5kKHRoaXMpO1xuICAgIHRoaXMuc2V0VG9rZW5zID0gdGhpcy5zZXRUb2tlbnMuYmluZCh0aGlzKTtcbiAgfVxuXG4gIGFzeW5jIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIHRoaXMucHJlZmVyc0RhcmtNb2RlKCk7XG4gIH1cblxuICBhc3luYyBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICBpZiAodGhpcy4jZGFya01vZGUpIHtcbiAgICAgIHRoaXMuI2RhcmtNb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIHRoaXMudXBkYXRlVGhlbWUpO1xuICAgICAgdGhpcy4jZGFya01vZGUgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByZWZlcnNEYXJrTW9kZSgpIHtcbiAgICB0aGlzLnVwZGF0ZVRoZW1lKCk7XG4gICAgdGhpcy4jZGFya01vZGUgPSB3aW5kb3cubWF0Y2hNZWRpYSgnKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKScpO1xuICAgIHRoaXMuI2RhcmtNb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIHRoaXMudXBkYXRlVGhlbWUpO1xuICB9XG5cbiAgdXBkYXRlVGhlbWUoZSA9IG51bGwpIHtcbiAgICBpZiAoIWUpIHtcbiAgICAgIGUgPSB3aW5kb3cubWF0Y2hNZWRpYSgnKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKScpO1xuICAgIH1cbiAgICBjb25zdCB0aGVtZSA9IGUubWF0Y2hlcyA/ICdkYXJrJyA6ICdsaWdodCc7XG4gICAgdGhpcy5zZXRTdGF0ZSh7IHRoZW1lIH0pO1xuICB9XG5cbiAgc2V0UGF0aWVudChkYXRhKSB7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3BhdGllbnRfdXVpZCcsIGRhdGEpO1xuICB9XG5cbiAgc2V0VXNlcm5hbWUoZGF0YSkge1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd1c2VybmFtZScsIGRhdGEpO1xuICB9XG5cbiAgZ2V0VXNlcm5hbWUoKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndXNlcm5hbWUnKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBnZXRQYXRpZW50KCkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3BhdGllbnRfdXVpZCcpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHNldFRva2VucyhkYXRhKSB7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3Rva2VucycsIEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcbiAgICB0aGlzLnNldFN0YXRlKHsgYXV0aFRva2VuczogZGF0YSB9KTtcbiAgfVxuXG4gIHNldFBhc3N3b3JkKGRhdGEpIHtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgncGFzc3dvcmQnLCBkYXRhKTtcbiAgfVxuXG4gIGdldFBhc3N3b3JkKCkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3Bhc3N3b3JkJyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgc2V0VXNlclVVSUQoZGF0YSkge1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd1c2VyX3V1aWQnLCBkYXRhKTtcbiAgfVxuXG4gIGdldFVzZXJVVUlEKCkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3VzZXJfdXVpZCcpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHNldEZpcnN0TmFtZShkYXRhKSB7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2ZpcnN0X25hbWUnLCBkYXRhKTtcbiAgfVxuXG4gIGdldEZpcnN0TmFtZSgpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdmaXJzdF9uYW1lJyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgc2V0TGFzdE5hbWUoZGF0YSkge1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdsYXN0X25hbWUnLCBkYXRhKTtcbiAgfVxuXG4gIGdldExhc3ROYW1lKCkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhc3RfbmFtZScpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZUl0ZW0oZGF0YSkge1xuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGRhdGEpO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHZhbHMgPSB7XG4gICAgICBhdXRoVG9rZW5zOiB0aGlzLnN0YXRlLmF1dGhUb2tlbnMsXG4gICAgICBzZXRVc2VybmFtZTogdGhpcy5zZXRVc2VybmFtZSxcbiAgICAgIGdldFVzZXJuYW1lOiB0aGlzLmdldFVzZXJuYW1lLFxuICAgICAgc2V0UGF0aWVudDogdGhpcy5zZXRQYXRpZW50LFxuICAgICAgZ2V0UGF0aWVudDogdGhpcy5nZXRQYXRpZW50LFxuICAgICAgc2V0UGFzc3dvcmQ6IHRoaXMuc2V0UGFzc3dvcmQsXG4gICAgICBnZXRQYXNzd29yZDogdGhpcy5nZXRQYXNzd29yZCxcbiAgICAgIHNldFVzZXJVVUlEOiB0aGlzLnNldFVzZXJVVUlELFxuICAgICAgZ2V0VXNlclVVSUQ6IHRoaXMuZ2V0VXNlclVVSUQsXG4gICAgICBzZXRGaXJzdE5hbWU6IHRoaXMuc2V0Rmlyc3ROYW1lLFxuICAgICAgZ2V0Rmlyc3ROYW1lOiB0aGlzLmdldEZpcnN0TmFtZSxcbiAgICAgIHNldExhc3ROYW1lOiB0aGlzLnNldExhc3ROYW1lLFxuICAgICAgZ2V0TGFzdE5hbWU6IHRoaXMuZ2V0TGFzdE5hbWUsXG4gICAgICByZW1vdmVJdGVtOiB0aGlzLnJlbW92ZUl0ZW0sXG4gICAgICBzZXRBdXRoVG9rZW5zOiB0aGlzLnNldFRva2VucyxcbiAgICB9O1xuICAgIHJldHVybiAoXG4gICAgICA8Q29udGV4dC5Qcm92aWRlciB2YWx1ZT17dmFsc30+XG4gICAgICAgIDxUaGVtZVByb3ZpZGVyIHRoZW1lPXt0aGlzLnN0YXRlLnRoZW1lID09PSAnZGFyaycgPyB0aGlzLnRoZW1lRGFyayA6IHRoaXMudGhlbWVMaWdodH0+XG4gICAgICAgICAgPENzc0Jhc2VsaW5lLz5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPEhhc2hSb3V0ZXI+XG4gICAgICAgICAgICAgIDxSb3V0ZXM+XG4gICAgICAgICAgICAgICAgPFJvdXRlIHBhdGg9Jy8nIGVsZW1lbnQ9ezxIb21lIHRoZW1lTW9kZT17dGhpcy5zdGF0ZS50aGVtZX0gLz59IC8+XG4gICAgICAgICAgICAgIDwvUm91dGVzPlxuICAgICAgICAgICAgPC9IYXNoUm91dGVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L1RoZW1lUHJvdmlkZXI+XG4gICAgICA8L0NvbnRleHQuUHJvdmlkZXI+XG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBBcHA7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbS9jbGllbnQnO1xuaW1wb3J0IEFwcCBmcm9tICcuL0FwcCc7XG5cbmNvbnN0IHJvb3QgPSBSZWFjdERPTS5jcmVhdGVSb290KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKSk7XG5yb290LnJlbmRlcihcbiAgICA8UmVhY3QuU3RyaWN0TW9kZT5cbiAgICAgIDxBcHAgLz5cbiAgICA8L1JlYWN0LlN0cmljdE1vZGU+XG4pO1xuIiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbi8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBfX3dlYnBhY2tfbW9kdWxlc19fO1xuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCIvLyBubyBiYXNlVVJJXG5cbi8vIG9iamVjdCB0byBzdG9yZSBsb2FkZWQgYW5kIGxvYWRpbmcgY2h1bmtzXG4vLyB1bmRlZmluZWQgPSBjaHVuayBub3QgbG9hZGVkLCBudWxsID0gY2h1bmsgcHJlbG9hZGVkL3ByZWZldGNoZWRcbi8vIFtyZXNvbHZlLCByZWplY3QsIFByb21pc2VdID0gY2h1bmsgbG9hZGluZywgMCA9IGNodW5rIGxvYWRlZFxudmFyIGluc3RhbGxlZENodW5rcyA9IHtcblx0NzkyOiAwXG59O1xuXG4vLyBubyBjaHVuayBvbiBkZW1hbmQgbG9hZGluZ1xuXG4vLyBubyBwcmVmZXRjaGluZ1xuXG4vLyBubyBwcmVsb2FkZWRcblxuLy8gbm8gSE1SXG5cbi8vIG5vIEhNUiBtYW5pZmVzdFxuXG5fX3dlYnBhY2tfcmVxdWlyZV9fLk8uaiA9IChjaHVua0lkKSA9PiAoaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdID09PSAwKTtcblxuLy8gaW5zdGFsbCBhIEpTT05QIGNhbGxiYWNrIGZvciBjaHVuayBsb2FkaW5nXG52YXIgd2VicGFja0pzb25wQ2FsbGJhY2sgPSAocGFyZW50Q2h1bmtMb2FkaW5nRnVuY3Rpb24sIGRhdGEpID0+IHtcblx0dmFyIFtjaHVua0lkcywgbW9yZU1vZHVsZXMsIHJ1bnRpbWVdID0gZGF0YTtcblx0Ly8gYWRkIFwibW9yZU1vZHVsZXNcIiB0byB0aGUgbW9kdWxlcyBvYmplY3QsXG5cdC8vIHRoZW4gZmxhZyBhbGwgXCJjaHVua0lkc1wiIGFzIGxvYWRlZCBhbmQgZmlyZSBjYWxsYmFja1xuXHR2YXIgbW9kdWxlSWQsIGNodW5rSWQsIGkgPSAwO1xuXHRpZihjaHVua0lkcy5zb21lKChpZCkgPT4gKGluc3RhbGxlZENodW5rc1tpZF0gIT09IDApKSkge1xuXHRcdGZvcihtb2R1bGVJZCBpbiBtb3JlTW9kdWxlcykge1xuXHRcdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1vcmVNb2R1bGVzLCBtb2R1bGVJZCkpIHtcblx0XHRcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tW21vZHVsZUlkXSA9IG1vcmVNb2R1bGVzW21vZHVsZUlkXTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYocnVudGltZSkgdmFyIHJlc3VsdCA9IHJ1bnRpbWUoX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cdH1cblx0aWYocGFyZW50Q2h1bmtMb2FkaW5nRnVuY3Rpb24pIHBhcmVudENodW5rTG9hZGluZ0Z1bmN0aW9uKGRhdGEpO1xuXHRmb3IoO2kgPCBjaHVua0lkcy5sZW5ndGg7IGkrKykge1xuXHRcdGNodW5rSWQgPSBjaHVua0lkc1tpXTtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oaW5zdGFsbGVkQ2h1bmtzLCBjaHVua0lkKSAmJiBpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0pIHtcblx0XHRcdGluc3RhbGxlZENodW5rc1tjaHVua0lkXVswXSgpO1xuXHRcdH1cblx0XHRpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0gPSAwO1xuXHR9XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fLk8ocmVzdWx0KTtcbn1cblxudmFyIGNodW5rTG9hZGluZ0dsb2JhbCA9IHNlbGZbXCJ3ZWJwYWNrQ2h1bmtzcnNyZmxfcmVhY3RcIl0gPSBzZWxmW1wid2VicGFja0NodW5rc3JzcmZsX3JlYWN0XCJdIHx8IFtdO1xuY2h1bmtMb2FkaW5nR2xvYmFsLmZvckVhY2god2VicGFja0pzb25wQ2FsbGJhY2suYmluZChudWxsLCAwKSk7XG5jaHVua0xvYWRpbmdHbG9iYWwucHVzaCA9IHdlYnBhY2tKc29ucENhbGxiYWNrLmJpbmQobnVsbCwgY2h1bmtMb2FkaW5nR2xvYmFsLnB1c2guYmluZChjaHVua0xvYWRpbmdHbG9iYWwpKTsiLCIvLyBzdGFydHVwXG4vLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbi8vIFRoaXMgZW50cnkgbW9kdWxlIGRlcGVuZHMgb24gb3RoZXIgbG9hZGVkIGNodW5rcyBhbmQgZXhlY3V0aW9uIG5lZWQgdG8gYmUgZGVsYXllZFxudmFyIF9fd2VicGFja19leHBvcnRzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fLk8odW5kZWZpbmVkLCBbNzIzLDgxNCw2MTYsNDU2LDg3Nyw2OTYsNDcyLDIyMSw4MjgsNTE2XSwgKCkgPT4gKF9fd2VicGFja19yZXF1aXJlX18oNjI2MikpKVxuX193ZWJwYWNrX2V4cG9ydHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18uTyhfX3dlYnBhY2tfZXhwb3J0c19fKTtcbiJdLCJuYW1lcyI6WyJkZWZlcnJlZCIsImxlYWZQcm90b3R5cGVzIiwiZ2V0UHJvdG8iLCJDb250ZXh0IiwiY3JlYXRlQ29udGV4dCIsIl9SZWFjdCRDb21wb25lbnQiLCJMb2FkaW5nIiwicHJvcHMiLCJfY2xhc3NDYWxsQ2hlY2siLCJfY2FsbFN1cGVyIiwiX2luaGVyaXRzIiwia2V5IiwidmFsdWUiLCJib2R5IiwiUmVhY3QiLCJDb250YWluZXIiLCJtYXhXaWR0aCIsIlBhcGVyIiwic3R5bGUiLCJwYWRkaW5nIiwibWFyZ2luVG9wIiwiR3JpZCIsImNvbnRhaW5lciIsIml0ZW0iLCJ4cyIsIkJveCIsImRpc3BsYXkiLCJhbGlnbkl0ZW1zIiwianVzdGlmeUNvbnRlbnQiLCJwYWRkaW5nVG9wIiwicGFkZGluZ0JvdHRvbSIsIlR5cG9ncmFwaHkiLCJ2YXJpYW50IiwiQ2lyY3VsYXJQcm9ncmVzcyIsIkVycm9yIiwiZGlyZWN0aW9uIiwic3JjIiwibWVzc2FnZSIsInJldHVyblRvIiwiQnV0dG9uIiwid2lkdGgiLCJvbkNsaWNrIiwiZSIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwic3RyaW5nIiwiaXNSZXF1aXJlZCIsImZ1bmMiLCJvcHRzIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJjb250ZXh0IiwicmVzcG9uc2VUeXBlIiwidXJsIiwid2luZG93IiwibG9jYXRpb24iLCJob3N0bmFtZSIsImhlYWRlcnMiLCJheGlvcyIsIm1ldGhvZCIsInRvTG93ZXJDYXNlIiwiY29uY2F0IiwiZW5kcG9pbnQiLCJwYXJhbXMiLCJkYXRhIiwidGhlbiIsImVyciIsImVycm9yIiwicmVzcG9uc2UiLCJKU09OIiwic3RyaW5naWZ5IiwiaW5jbHVkZXMiLCJzdWJzdHJpbmciLCJsZW5ndGgiLCJSZWdpc3RyYXRpb25Gb3JtIiwiX3RoaXMiLCJzdGF0ZSIsImVycm9ycyIsImxvYWRlZCIsInZpZXciLCJzdG9yZV9uYW1lIiwic3RvcmVfdXVpZCIsInBhdGllbnRfdXVpZCIsIm5ld19wYXRpZW50X3V1aWQiLCJ1c2VyX3V1aWQiLCJ1c2VybmFtZSIsInBhc3N3b3JkIiwiZmlyc3RfbmFtZSIsImxhc3RfbmFtZSIsImRpc2FibGVkIiwiZmllbGRzIiwiZmllbGRzMiIsInRpdGxlIiwidHlwZSIsInR5cGVuYW1lIiwicmVxdWlyZWQiLCJvbkNoYW5nZSIsImNvcHkiLCJfb2JqZWN0U3ByZWFkIiwidGVzdCIsInRyaW0iLCJmZWVkYmFjayIsInNldFN0YXRlIiwiZnVsbHdpZHRoIiwiZW1haWwiLCJjb25maXJtIiwiY29uZmlybWF0aW9uIiwiY2xlYXJGaWVsZHMiLCJiaW5kIiwiY2hhbmdlVmlldyIsInJlZ2lzdGVyVXNlciIsImNsZWFyU3RhdGUiLCJ0aGlzIiwidW5kZWZpbmVkIiwicmVtb3ZlSXRlbSIsIl90aGlzMiIsIm9wdGlvbnMiLCJnZXRQYXRpZW50IiwiYXBpQ2FsbCIsInJlc3AiLCJyIiwicGFyc2UiLCJ1c2VyIiwicGF0aWVudF91c2VyIiwic2V0VXNlclVVSUQiLCJzZXRQYXNzd29yZCIsInNldFVzZXJuYW1lIiwic2V0UGF0aWVudCIsInNldEZpcnN0TmFtZSIsInNldExhc3ROYW1lIiwiY29uc29sZSIsImxvZyIsImdldEVycm9yTWVzc2FnZSIsIl90aGlzMyIsImdldFVzZXJuYW1lIiwiZ2V0UGFzc3dvcmQiLCJnZXRVc2VyVVVJRCIsImNvZGUiLCJnZXRGaXJzdE5hbWUiLCJnZXRMYXN0TmFtZSIsInNldEF1dGhUb2tlbnMiLCJocmVmIiwiX3RoaXM0IiwicmVnaXN0ZXJTdWJ0aXRsZSIsInJlZ2lzdGVyX2VuYWJsZWQiLCJzeCIsImNvbG9yIiwiaWQiLCJzcGFjaW5nIiwiVGV4dEZpZWxkIiwiZnVsbFdpZHRoIiwic2l6ZSIsImxhYmVsIiwiaGVscGVyVGV4dCIsInRhcmdldCIsImJnY29sb3IiLCJjbGFzc05hbWUiLCJzdWJtaXQiLCJmaWVsZCIsImNvbmZpcm1Db2RlIiwiX2RlZmluZVByb3BlcnR5IiwiSG9tZSIsInJlZGlyZWN0IiwidGFnIiwiZ2V0U3RvcmVOdW1iZXIiLCJyeE51bWJlciIsImdldFJ4TnVtYmVyIiwiaGFzaCIsImdldEhhc2giLCJsb2dvIiwic3RvcmVfYWRkcmVzcyIsInN0b3JlX2FkZHJlc3NfdHdvIiwiY2l0eSIsInppcCIsInBoYXJtYWN5X3Bob25lIiwicmVxdWVzdGVkIiwiZGlzYWJsZV9idXR0b24iLCJzaG93Rm9ybSIsInNob3dSZWdpc3RlckJ1dHRvbiIsInJlcXVlc3RSZWZpbGwiLCJnZXRGdWxsQXV0aCIsImNvbnN0cnVjdFhNTERvY3VtZW50IiwiZW50aXR5IiwibG9hZCIsInNlYXJjaCIsInJlcGxhY2UiLCJfbGVuIiwiYXJndW1lbnRzIiwiYXJncyIsIkFycmF5IiwiX2tleSIsIl9zdGVwIiwiZG9jIiwiZW50aXR5TmFtZSIsImV4dHJhIiwic2xpY2UiLCJub2RlIiwiY3JlYXRlRWxlbWVudCIsIl9pdGVyYXRvciIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwicyIsIm4iLCJkb25lIiwiYXJnIiwiYXBwZW5kQ2hpbGQiLCJjcmVhdGVUZXh0Tm9kZSIsImYiLCJsYXN0bmFtZSIsImZpcnN0bmFtZSIsInBob25lIiwiZG9jdW1lbnQiLCJpbXBsZW1lbnRhdGlvbiIsImNyZWF0ZURvY3VtZW50Iiwicm9vdCIsImRvY3VtZW50RWxlbWVudCIsIkRhdGUiLCJ0b0lTT1N0cmluZyIsImdldFRpbWUiLCJ0b1N0cmluZyIsInJ4X251bWJlciIsImF1dGgiLCJuYW1lIiwiYWRkcmVzczEiLCJhZGRyZXNzMiIsInNyc3JmbF9yZWdpc3RlciIsInVzZXJzIiwiX2VyciRyZXNwb25zZSIsInJlZmlsbCIsIlhNTFNlcmlhbGl6ZXIiLCJzZXJpYWxpemVUb1N0cmluZyIsInN0b3JldGFnIiwiQXBwQmFyIiwicG9zaXRpb24iLCJUb29sYmFyIiwiYWx0IiwibWFyZ2luIiwiYm9yZGVyUmFkaXVzIiwiaGVpZ2h0Iiwic3F1YXJlIiwiZWxldmF0aW9uIiwicHkiLCJweCIsImFsaWduIiwidGV4dEFsaWduIiwicHJlc2NyaXB0aW9uIiwic2V0UmVmaWxsUmVzcG9uc2UiLCJ0aGVtZU1vZGUiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwidCIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwibyIsImRlZmluZVByb3BlcnR5IiwiaSIsIlN5bWJvbCIsImEiLCJpdGVyYXRvciIsImMiLCJhc3luY0l0ZXJhdG9yIiwidSIsInRvU3RyaW5nVGFnIiwiZGVmaW5lIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwid3JhcCIsIkdlbmVyYXRvciIsImNyZWF0ZSIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsImNhbGwiLCJoIiwibCIsInkiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwicCIsImQiLCJnZXRQcm90b3R5cGVPZiIsInYiLCJ2YWx1ZXMiLCJnIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiaW52b2tlIiwiX3R5cGVvZiIsIl9fYXdhaXQiLCJjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZyIsImRlbGVnYXRlIiwibWF5YmVJbnZva2VEZWxlZ2F0ZSIsInNlbnQiLCJfc2VudCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiYWJydXB0IiwiVHlwZUVycm9yIiwicmVzdWx0TmFtZSIsIm5leHQiLCJuZXh0TG9jIiwicHVzaFRyeUVudHJ5IiwidHJ5TG9jIiwiY2F0Y2hMb2MiLCJmaW5hbGx5TG9jIiwiYWZ0ZXJMb2MiLCJ0cnlFbnRyaWVzIiwicHVzaCIsInJlc2V0VHJ5RW50cnkiLCJjb21wbGV0aW9uIiwicmVzZXQiLCJpc05hTiIsImRpc3BsYXlOYW1lIiwiaXNHZW5lcmF0b3JGdW5jdGlvbiIsImNvbnN0cnVjdG9yIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsImtleXMiLCJyZXZlcnNlIiwicG9wIiwicHJldiIsImNoYXJBdCIsInN0b3AiLCJydmFsIiwiaGFuZGxlIiwiY29tcGxldGUiLCJmaW5pc2giLCJkZWxlZ2F0ZVlpZWxkIiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJhcHBseSIsIl9uZXh0IiwiX3Rocm93IiwiX2RlZmluZVByb3BlcnRpZXMiLCJfdG9Qcm9wZXJ0eUtleSIsInRvUHJpbWl0aXZlIiwiU3RyaW5nIiwiX3RvUHJpbWl0aXZlIiwiX2dldFByb3RvdHlwZU9mIiwiUmVmZXJlbmNlRXJyb3IiLCJfYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsIkJvb2xlYW4iLCJ2YWx1ZU9mIiwiX3NldFByb3RvdHlwZU9mIiwiX2NsYXNzUHJpdmF0ZUZpZWxkU2V0Iiwic2V0IiwiX2Fzc2VydENsYXNzQnJhbmQiLCJfY2xhc3NQcml2YXRlRmllbGRHZXQiLCJnZXQiLCJoYXMiLCJfZGFya01vZGUiLCJXZWFrTWFwIiwiQXBwIiwiX2NoZWNrUHJpdmF0ZVJlZGVjbGFyYXRpb24iLCJfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyIsInRoZW1lIiwidGhlbWVMaWdodCIsImNyZWF0ZVRoZW1lIiwicGFsZXR0ZSIsIm1vZGUiLCJiYWNrZ3JvdW5kIiwiZGVmYXVsdCIsInRoZW1lRGFyayIsInVwZGF0ZVRoZW1lIiwicHJlZmVyc0RhcmtNb2RlIiwic2V0VG9rZW5zIiwiX2NvbXBvbmVudERpZE1vdW50IiwiX2NhbGxlZSIsIl9jb250ZXh0IiwiX2NvbXBvbmVudFdpbGxVbm1vdW50IiwiX2NhbGxlZTIiLCJfY29udGV4dDIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwibWF0Y2hNZWRpYSIsImFkZEV2ZW50TGlzdGVuZXIiLCJtYXRjaGVzIiwibG9jYWxTdG9yYWdlIiwic2V0SXRlbSIsImdldEl0ZW0iLCJhdXRoVG9rZW5zIiwidmFscyIsIlByb3ZpZGVyIiwiVGhlbWVQcm92aWRlciIsIkNzc0Jhc2VsaW5lIiwiSGFzaFJvdXRlciIsIlJvdXRlcyIsIlJvdXRlIiwicGF0aCIsImVsZW1lbnQiLCJSZWFjdERPTSIsImdldEVsZW1lbnRCeUlkIiwicmVuZGVyIiwiX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiY2FjaGVkTW9kdWxlIiwiZXhwb3J0cyIsIm1vZHVsZSIsIl9fd2VicGFja19tb2R1bGVzX18iLCJtIiwiTyIsInJlc3VsdCIsImNodW5rSWRzIiwiZm4iLCJwcmlvcml0eSIsIm5vdEZ1bGZpbGxlZCIsIkluZmluaXR5IiwiZnVsZmlsbGVkIiwiaiIsImV2ZXJ5Iiwic3BsaWNlIiwiZ2V0dGVyIiwiX19lc01vZHVsZSIsIm9iaiIsIm5zIiwiZGVmIiwiY3VycmVudCIsImluZGV4T2YiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwiZGVmaW5pdGlvbiIsInByb3AiLCJpbnN0YWxsZWRDaHVua3MiLCJjaHVua0lkIiwid2VicGFja0pzb25wQ2FsbGJhY2siLCJwYXJlbnRDaHVua0xvYWRpbmdGdW5jdGlvbiIsIm1vcmVNb2R1bGVzIiwicnVudGltZSIsInNvbWUiLCJjaHVua0xvYWRpbmdHbG9iYWwiLCJzZWxmIiwiX193ZWJwYWNrX2V4cG9ydHNfXyJdLCJzb3VyY2VSb290IjoiIn0=